Mudanças entre as edições de "Máquina Associadora de Eventos - MAE"

De LCAD
Ir para: navegação, pesquisa
Linha 2: Linha 2:
  
 
=== Introdução ===
 
=== Introdução ===
==== O que é a MAE? ====
+
;O que é a MAE? :
==== Histórico ====
+
;Histórico :
  
 
=== Instalando a MAE ===
 
=== Instalando a MAE ===
 +
 +
Nesta seção descreveremos o roteiro de instalação da MAE passo-a-passo nos ambientes utilizados no LCAD (Windows Xp, Ubuntu, Fedora). No entanto ainda é possível instalá-la em qualquer sistema LINUX/WINDOWS seguindo os passos aqui citados, porém algumas diferenças na instação entre distribuições diferentes podem surgir, ficando a cargo do usuário resolvê-las.
 +
 
==== No Windows ====
 
==== No Windows ====
 
; Baixando a MAE :  
 
; Baixando a MAE :  
 +
 +
*Baixe um cliente SVN. Recomendamos o TortoiseVN.
 +
*Faça checkout do repositório http://www.lcad.inf.ufes.br/svn/MAE no diretório 'C:\MAE'. É necessário ter permissão de acesso ao repositório. Caso você não tenha, entre em contato com a administração do LCAD.
 +
 
; Dependências (bibliotecas) :
 
; Dependências (bibliotecas) :
 +
 +
Instale os seguintes pacotes para o Windows (caso o link não seja mais válido, procure no Google):
 +
* [http://sourceforge.net/projects/gnuwin32/files/bison/ Bison-1.875-4]
 +
* [http://sourceforge.net/projects/gnuwin32/files/flex/ Flex-2.5.4a-1]
 +
* [http://gnuwin32.sourceforge.net/packages.html Libgw32c-0.4]
 +
* [http://www.bloodshed.net/dev/devcpp.html DevCpp 4.9.9.2]
 +
 +
'''Obs.: Manter os parâmetros default dos instaladores.
 +
 +
Baixe o arquivo zip [[Media:WINGLUT.zip|WINGLUT.zip]]
 +
Abra o zip e:
 +
* Copie os arquivos libglu32.a, libglut.a e libglut32.a para o diretório C:\Dev-Cpp\lib
 +
* Copie o arquivo glut.h para o diretório C:\Dev-Cpp\include\GL
 +
* Copie os arquivos glu32.dll, glut32.dll e opengl32.dll para o diretório C:\Windows\System32 (se o Windows disser que eles já existem lá, mande sobreescrever; é recomendado fazer um backup das cópias das dlls no diretório para que o caso de erros acontecerem).
 +
 +
 
; Compilando a MAE :
 
; Compilando a MAE :
 +
 +
Setar a variável de ambiente PATH para apontar para os diretórios C:\Dev-Cpp\bin,  MAE\bin e C:\Program Files\GnuWin32\bin (caso esse path seja diferente na sua máquina, mudar os scripts Makefile.win).
 +
 +
# Entrar no prompt de comando do DOS;
 +
# Acessar o diretório raiz da MAE;
 +
# Executar o script de compilação da MAE via os comandos:
 +
## make –f Makefile.win clean
 +
## make –f Makefile.win
 +
 +
* Saída
 +
** A libnet_conn.a gerada no diretório MAE\lib;
 +
** O netcomp.exe no diretório MAE\bin.
 +
 
; Compilando os Exemplos :
 
; Compilando os Exemplos :
 +
 +
# Entrar no prompt de comando do DOS;
 +
# Acessar o diretório raiz do exemplo da MAE;
 +
# Executar o script de compilação do exemplo via os comandos:
 +
## make –f Makefile.win clean
 +
## make –f Makefile.win
 +
 +
* Saída
 +
** A DLL do exemplo é gerada no diretório MAE\lib;
 +
** O EXE do exemplo é gerado no diretório do exemplo.
 +
 
; Gerando DLLs de Aplicações MAE :
 
; Gerando DLLs de Aplicações MAE :
 
==== No Linux ====
 
==== No Linux ====

Edição das 07h07min de 20 de setembro de 2010

Manual da MAE

Introdução

O que é a MAE? 
Histórico 

Instalando a MAE

Nesta seção descreveremos o roteiro de instalação da MAE passo-a-passo nos ambientes utilizados no LCAD (Windows Xp, Ubuntu, Fedora). No entanto ainda é possível instalá-la em qualquer sistema LINUX/WINDOWS seguindo os passos aqui citados, porém algumas diferenças na instação entre distribuições diferentes podem surgir, ficando a cargo do usuário resolvê-las.

No Windows

Baixando a MAE 
  • Baixe um cliente SVN. Recomendamos o TortoiseVN.
  • Faça checkout do repositório http://www.lcad.inf.ufes.br/svn/MAE no diretório 'C:\MAE'. É necessário ter permissão de acesso ao repositório. Caso você não tenha, entre em contato com a administração do LCAD.
Dependências (bibliotecas) 

Instale os seguintes pacotes para o Windows (caso o link não seja mais válido, procure no Google):

Obs.: Manter os parâmetros default dos instaladores.

Baixe o arquivo zip WINGLUT.zip Abra o zip e:

  • Copie os arquivos libglu32.a, libglut.a e libglut32.a para o diretório C:\Dev-Cpp\lib
  • Copie o arquivo glut.h para o diretório C:\Dev-Cpp\include\GL
  • Copie os arquivos glu32.dll, glut32.dll e opengl32.dll para o diretório C:\Windows\System32 (se o Windows disser que eles já existem lá, mande sobreescrever; é recomendado fazer um backup das cópias das dlls no diretório para que o caso de erros acontecerem).


Compilando a MAE 

Setar a variável de ambiente PATH para apontar para os diretórios C:\Dev-Cpp\bin, MAE\bin e C:\Program Files\GnuWin32\bin (caso esse path seja diferente na sua máquina, mudar os scripts Makefile.win).

  1. Entrar no prompt de comando do DOS;
  2. Acessar o diretório raiz da MAE;
  3. Executar o script de compilação da MAE via os comandos:
    1. make –f Makefile.win clean
    2. make –f Makefile.win
  • Saída
    • A libnet_conn.a gerada no diretório MAE\lib;
    • O netcomp.exe no diretório MAE\bin.
Compilando os Exemplos 
  1. Entrar no prompt de comando do DOS;
  2. Acessar o diretório raiz do exemplo da MAE;
  3. Executar o script de compilação do exemplo via os comandos:
    1. make –f Makefile.win clean
    2. make –f Makefile.win
  • Saída
    • A DLL do exemplo é gerada no diretório MAE\lib;
    • O EXE do exemplo é gerado no diretório do exemplo.
Gerando DLLs de Aplicações MAE 

No Linux

Baixando a MAE 
Dependências (bibliotecas) 
Compilando a MAE 
Compilando os Exemplos 

Framework MAE

Arquitetura da MAE

Network Architecture Description Language

==== Control Script Language

Tutorial

Uma Aplicação Exemplo – Reconhecimento de Faces

Base de Dados de Entrada – AR Face Database

Arquitetura da Aplicação MAE face_recog_planar

Descrição da face_recog_planar em NADL

Compilando e Rodando a face_recog_planar

Interface do Usuário com a face_recog_planar

Funções do Usuário Associadas à Aplicação face_recog_planar

Controlando a face_recog_planar via CSL

Especificação da NADL

O conteúdo dos arquivos com a definição léxica e sintática da linguagem NADL se encontra nos arquivos netcomp_lex.l e netcomp_yacc.y no diretório <diretório da MAE>/src. Nesta seção será descrita resumidamente os comandos da linguagem utilizados.

Variáveis

Constantes

Camadas Neurais

Uma neuron_layer é, basicamente, uma matriz de neurônios que são utilizadas para implementar as camadas de neurônios (células simples, células complexas, células de MT, etc.). A sintaxe para especificar uma neuron_layer é mostrada abaixo:

neuron_layer <nome><dimensão> with <tipo de saída> outputs;

<nome> : Nome pelo qual a neuron_layer poderá ser referenciada. <dimensão> : Dimensão da neuron_layer. Definida entre colchetes. Exemplo da dimensão de uma neuron_layer bidimensional 10x10 com um total de 100 neurônios: [10][10].

<tipo de saída> : Define o tipo de saída dos neurônios de uma neuron_layer. Pode ser: b&w, grayscale, grayscale_float e color. Quando as saídas são definidas como b&w elas podem assumir os valores 0 ou 1 apenas, representando, o preto e o branco. Quando as saídas são definidas como grayscale elas podem assumir valores inteiros de 0 à 255, representando uma escala de cinza com 256 valores. Quando as saídas são definidas como grayscale_float elas podem assumir qualquer valor de ponto flutuante, entretanto para a visualização, é selecionado o maior valor em módulo (|s_max|) da saída dos neurônios desta neuron_layer, e este valor é utilizado para realizar uma discretização na visualização: a parte positiva, definida pelo intervalo [0, |s_max|], é discretizada e visualizada como 256 níveis de verde, enquanto que a parte negativa, definida pelo intervalo [-|s_max|, 0[, é discretizada e visualizada como 256 níveis de vermelho. Caso só possua valores positivos, a visualização é feita em escala de cinza. Quando as saídas são definidas como color, elas podem assumir um valor RGB de 24 bits, com 8 bits por cor.

Entrada

Através do comando input, é criada uma neuron_layer com nome, dimensão e saída especificadas, entretanto, um tratamento especial é dada nestas neuron_layer’s. É criada uma janela para cada input gerada que mostra o estado dos neurônios desta input, e podem ser associadas duas funções, uma para geração e outra para manipulação da input. A neron_layer criada pela input pode ser manipulada por eventos de mouse e teclado. A sintaxe para especificar uma input é mostrada abaixo:

input <nome><dimensão> with <tipo de saída> outputs [produced by <função geradora>] [controled by <função de controle>];

<nome> : Nome pelo qual a input poderá ser referenciada.

<dimensão> : Dimensão da input. Possui a mesma descrição do parâmetro <dimensão> da neuron_layer, citado anteriormente.

<tipo de saída> : Define o tipo de saída dos neurônios de uma input. Podem ser: b&w, grayscale, grayscale_float e color. Possui a mesma descrição do parâmetro <tipo de saída> da neuron_layer, citado anteriormente.

<função geradora> : O objetivo da função de geração é inicializar parâmetros da input, criar sua janela, associá-la às funções de controle de mouse, teclado, além do controle de atualização do conteúdo da janela. Podem-se passar quantos parâmetros forem necessários para a função de geração, desde que sejam constantes, expressões aritméticas ou nomes de objetos já definidos no arquivo de definição. Nesta função, normalmente é definida como a input receberá as informações de entrada, por exemplo, de um arquivo de entrada. A declaração de uma função de geração é opcional. Se não for definida, a função pré-estabelecida na biblioteca MAE será utilizada, que é a que trata de imagens estáticas. Esta função procura no diretório em que está sendo executada a aplicação MAE, um arquivo com o mesmo nome da input com extensão .in. Uma string na primeira linha deste arquivo deve informar o nome de um arquivo .bmp contendo a imagem estática a ser usada como entrada. Os valores de cada pixel deste arquivo são passados para os neurônios da input.

<função de controle> : Também é opcional. O objetivo da função de controle é fornecer o código necessário para tratar a interação da input com o usuário, por exemplo, eventos de clique de mouse sobre a janela de visualização da input. Podem-se passar quantos parâmetros quiser, desde que sejam constantes, expressões aritméticas ou nomes de objetos já definidos no arquivo de definição.

Saida

Uma output é apenas uma visualização das saídas de uma neuron_layer. Através de uma output, pode-se fornecer uma interação do usuário com uma determinada neuron_layer, semelhante a input. A sintaxe para especificar uma output é mostrada abaixo:

output <nome><dimensão> [handled by <função manipuladora>];

<nome> : Nome pelo qual a output poderá ser referenciada.

<dimensão> : Dimensão da output. Possui a mesma descrição do parâmetro <dimensão> da neuron_layer, citado anteriormente.

<função manipuladora> : A declaração desta função é opcional. O objetivo da função manipuladora é fornecer o código necessário para tratar a interação da output, e portanto com a neuron_layer na qual está associada (vide comando output_connect), com o usuário. Podem-se passar quantos parâmetros quiser, desde que sejam constantes, expressões aritméticas ou nomes de objetos já definidos no arquivo de definição.

Filtros

Este comando define que uma ou mais neuron_layers, terão suas saídas processadas e, o resultado deste processamento será a entrada de uma outra neuron_layer. Esta é a definição de filtro para a MAE. Alguns filtros mais utilizados, por exemplo, um filtro que computa a soma da saída de um conjunto de neuron_layer’s colocando o resultado numa outra neuron_layer, estão implementados no arquivo <diretório da MAE>/src/filter.c, entretanto podem ser implementados filtros específicos para uma determinada aplicação, bastando que seja codificada no arquivo de funções do usuário que será descrito posteriormente. A sintaxe do comando filter é mostrada abaixo:

filter <neuron_layer’s de entrada> with <nome do filtro><parâmetros> producing <neuron_layer de saída>;

<neuron_layer’s de entrada> : Nome das neuron_layer’s que são entrada para o filtro. Caso tenha mais de uma neuron_layer, deverão ser separadas por vírgula.

<nome do filtro> : Nome do filtro, que deve ser o mesmo nome da função que o implementa.

<parâmetros> : Conjunto de parâmetros passado para a função que implementa o filtro, cuja sintaxe é semelhante à sintaxe do comando printf da linguagem C.

<neuron_layer de saída> : Nome da neuron_layer que receberá a saída do processamento do filtro.

Associações

O comando set atribui um valor a uma variável global qualquer da aplicação MAE, definida em seu código fonte. A sintaxe do comando set é mostrada abaixo:

set <variável> = <valor>;

<variável> : Nome da variável global.

<valor> : Valor a ser atribuído na variável global.

Conexão entre Camadas Neurais

Conexão com Saídas

Comando utilizado para associar uma output com uma neuron_layer que, para isto, devem possuir as mesmas dimensões. A sintaxe do comando output_connect é mostrada abaixo:

output_connect <nome da neuro_layer> to <nome da output>;

<nome da neuron_layer> : Nome da neuron_layer que terá a saída de seus neurônios mostrada na output.

<nome da output> : Nome da output que mostrará a saída dos neurônios da neuron_layer.

Funções do Usuário

Especificação da CSL

Tipos

Variáveis

Constantes

Expressões e Atribuições

Controles de Fluxo de Execução

Funções do Usuário

Funções do Usuário

Especificação dos diretórios

Função Init()

Função InputGenerator() e InputController()

Função OutputHandler()

Filtros

Funções do Usuário Invocadas Via CSL

Implementação da MAE

Netcompiler

Estruturas de Dados Principais

LibNet

DLLs de Aplicações MAE