SUMÁRIO
CAPÍTULO 2 FERRAMENTA PARA APRENDIZADO DE CNN COM INTERFACE GRÁFICA
2.1 - Implementação do CMA
O CMA foi implementado em código executável no ambiente do Matlab, a princípio sem adaptações. O treinamento foi realizado numa CNN do tipo FSR, cuja simulação foi realizada com o uso da técnica de integração numérica a partir da fórmula de Euller. Dessa forma o estado da rede é variado a cada intervalo de tempo ∆𝑡 de acordo com a equação (2.1).
𝑥(𝑡 + ∆𝑡) ≅ 𝑥(𝑡) + ∆𝑡𝑥̇(𝑡) (2.1)
onde 𝑥̇(𝑡) é dada por (1.1). A relação (2.1) é qualitativamente correta e precisa o suficiente se utilizarmos um passo temporal ∆𝑡 pequeno, sendo ∆𝑡 = 0,1 𝑠 um valor adequado para a maioria dos casos práticos, de acordo com [14].
Durante este trabalho, o uso da CNN foi inteiramente destinado ao processamento de imagens. Nos testes iniciais, com funções simples, a implementação funcionou de forma satisfatória, mas nas tentativas de obter os parâmetros da rede para a realização de filtragem, algumas dificuldades foram observadas quanto à velocidade e à convergência, em parte pelo fato de não serem funções bipolares, ou seja, pelo fato de a saída de cada célula poder se estabilizar em qualquer valor entre -1 e 1, correspondendo a tons de cinza. Essa faixa contínua de valores tende a restringir o conjunto de soluções para a maioria dessas funções e, acompanhada da grande quantidade de parâmetros ajustáveis, contribui para demandar um maior esforço no aprendizado. Adicionalmente, limitações inerentes aos métodos numéricos podem impedir que se anule totalmente o erro, exigindo uma tolerância. Além disso, o conjunto de soluções pode ser mais restrito. Para contornar tais empecilhos, foram idealizadas algumas modificações no algoritmo, culminando numa versão que apresentou um bom desempenho nos primeiros treinamentos com filtros. Estes resultados foram objetos de abordagem em [25], onde foi aplicada uma metodologia semelhante à descrita no capítulo 3 deste trabalho para simular algumas funções de filtragem na CNN.
Um problema crítico neste caso era a baixa velocidade nas variações dos parâmetros, exigindo do CMA uma exagerada quantidade de iterações, se comparada às
30
funções binárias (na ordem de 100 vezes mais iterações). A medida mais direta para sanar esta questão seria o aumento da taxa de aprendizado 𝜂; contudo, isto acarretaria uma redução da precisão de busca pela solução, o que poderia resultar numa trajetória que se deslocaria para além da região de convergência. O desempenho nesse aspecto foi melhorado, ao ser introduzida uma opção para a taxa ser variável a partir de um valor inicial inserido pelo usuário. A taxa então variará de forma linear e decrescente, chegando a um valor final resultante da divisão entre o valor inicial e uma constante definida no código. Esta abordagem permite o uso de taxas altas nos passos iniciais da otimização, acelerando esta parte do processo, enquanto mantem simultaneamente um aumento gradual da precisão de busca a cada passo.
Mesmo com a aplicação desta medida, ainda há casos em que a busca pela solução fica perdida, dando voltas na mesma região enquanto o erro se mantém acima da tolerância. Isto pode acontecer com o treinamento de funções cuja complexidade impede a rede de reproduzi-las precisamente. Sendo assim, como o erro não pode ser reduzido para um valor desprezível, o algoritmo pode seguir tentando sem sucesso encontrar este resultado ideal, preso a um limitado espaço de busca. Demanda-se, portanto, um aprimoramento nas condições de parada do algoritmo. Além do critério tradicional que verifica o erro de cada célula com uma tolerância determinada, incluiu-se uma segunda condição para interrupção das iterações do treinamento, a qual verifica se há uma trajetória cíclica em cada uma das matrizes de parâmetros e no limiar. Neste caso a interrupção será acionada quando todos os parâmetros em um passo forem muito próximos aos de um passo anterior, ocorrido a um número de ciclos determinado. Nos treinamentos mostrados no capítulo 3, a tolerância para estes parâmetros foi 5𝑥10−5, e a verificação foi feita com base no valor de 10 ciclos atrás.
Adicionalmente, foi inserida a possibilidade de manter a matriz A com um padrão fixo durante o treinamento, de forma análoga ao já sugerido para a matriz B em [18] e ilustrado em (1.8), o que é conveniente para muitas funções, incluindo os filtros espaciais. E, por último, a programação permite a aplicação automática de mais de um conjunto de imagens, sendo que o treinamento é executado para cada conjunto e o resultado é utilizado como condição inicial para o seguinte. Isto permite um ajuste mais amplo dos parâmetros, ao serem utilizadas imagens que realcem diferentes particularidades da função.
31
2.2 - Interface Gráfica
Após o desenvolvimento das modificações no método do CMA, foi criada uma interface visual a fim de tornar o processo de treinamento mais prático e intuitivo para o usuário. As facilidades de seu uso já puderam ser verificadas na produção dos resultados publicados em [25]. Optou-se pela ferramenta GUIDE do Matlab para sua produção, o que facilitou o aproveitamento do código já desenvolvido anteriormente.
O programa é dividido em três seções principais. Na primeira página, conforme ilustrado na FIGURA 2.1, situam-se as configurações do treinamento. Na coluna da esquerda estão os parâmetros iniciais da rede (matrizes A e B e o limiar z), as condições de fronteira, as dimensões da rede e o raio da vizinhança (que pode ser 1 ou 2). As matrizes podem ter seu padrão fixado segundo as opções exibidas na FIGURA 2.2. A coluna learning remete às opções da simulação da rede e do CMA. Em CNN simulation
settings há a possibilidade de escolha entre uma CNN convencional e uma rede do tipo
FSR, além da determinação do tamanho do passo temporal em segundos, do tempo máximo de simulação e do número máximo de iterações no treinamento. A preferência entre os elementos que serão atualizados, com suas taxas de aprendizado e seus limites absolutos, são objeto dos dois blocos inferiores. E, por fim, a seção da direita, images, traz os comandos para seleção e exibição das imagens necessárias ao treinamento (entrada, saída e estado inicial). Dessa forma, imagens em arquivo existentes na pasta de trabalho do Matlab podem ser adicionadas. Além disso, há um botão para acesso de um editor de imagens binárias embutido, que pode ser usado tanto para importar uma imagem codificada em uma variável do tipo matriz numérica, quanto para criar ou alterar imagens. Vale lembrar que neste bloco também é permitida a adição de mais de um conjunto de imagens para o treinamento em sequência, conforme explicado na seção anterior.
A segunda página da interface dispõe de opções para a análise dos resultados da simulação. Um exemplo destas funções aparece na FIGURA 2.3. É mostrada uma mensagem que indica a ocorrência ou não de convergência, incluindo os parâmetros resultantes em caso de sucesso. Há também duas tabelas que permitem a visualização de quaisquer variáveis envolvidas, inclusive do erro na saída das células em cada iteração, sendo que tais valores podem ser exportados para o ambiente do Matlab a partir de um botão, conveniente para um armazenamento posterior.
32
FIGURA 2.1 - Primeira parte da interface gráfica, contendo as configurações para a execução do aprendizado. O exemplo utilizado corresponde a uma função de detecção de borda.
𝑅 = 1 Padrão 1: 𝑎1 𝑎1 𝑎1 𝑎1 𝑎2 𝑎1 𝑎1 𝑎1 𝑎1 Padrão 2: 𝑎1 𝑎1 𝑎1 𝑎1 𝑎1 𝑎1 𝑎1 𝑎1 𝑎1 Padrão 3: 0 0 0 0 𝑎1 0 0 0 0 Padrão 4: 0 𝑎1 0 𝑎1 𝑎2 𝑎1 0 𝑎1 0 Padrão 5: 𝑎1 𝑎2 𝑎1 𝑎2 𝑎3 𝑎2 𝑎1 𝑎2 𝑎1 Padrão 6: 𝑎11 𝑎12 𝑎13 𝑎21 𝑎22 𝑎23 𝑎31 𝑎32 𝑎33 𝑅 = 2 Padrão 1: 𝑎1 𝑎1 𝑎1 𝑎1 𝑎1 𝑎1 𝑎2 𝑎2 𝑎2 𝑎1 𝑎1 𝑎2 𝑎3 𝑎2 𝑎1 𝑎1 𝑎2 𝑎2 𝑎2 𝑎1 𝑎1 𝑎1 𝑎1 𝑎1 𝑎1 Padrão 2: 𝑎1 𝑎2 𝑎3 𝑎2 𝑎1 𝑎2 𝑎4 𝑎5 𝑎4 𝑎2 𝑎3 𝑎5 𝑎6 𝑎5 𝑎3 𝑎2 𝑎4 𝑎5 𝑎4 𝑎2 𝑎1 𝑎2 𝑎3 𝑎2 𝑎1
33
FIGURA 2.2 - Formas fixas possíveis para a matriz A, no caso de R = 1 ou R = 2. Análogo para a matriz B.
FIGURA 2.3 - Página de resultados do programa, onde situam-se ferramentas para análise do treinamento.
Nesta seção o usuário ainda pode dispor de dois espaços para o desenho de gráficos que demonstrem a relação entre dois dos parâmetros durante o processo, o que pode ser interessante para as análises de funções com poucos termos independentes, como é realizado nos casos simulados em [18].
A terceira funcionalidade da aplicação é a realização de simulações da CNN, reproduzida na FIGURA 2.4. A maioria dos controles se assemelha aos da primeira página, com a principal distinção sendo a possibilidade de escolha entre parâmetros inseridos pelo usuário, importados de variáveis do ambiente do Matlab, ou aqueles obtidos na última execução de treinamento na mesma instância. Há também um botão que gera diretamente uma comparação entre as imagens geradas aplicando-se os dois conjuntos de parâmetros presentes na seção.
34
FIGURA 2.4 - Última página da ferramenta, que fornece opções para a simulação da CNN.
2.3 - Simulações de Funções Binárias
Os primeiros testes do treinamento foram realizados com funções binárias, o que permitiu uma verificação simultânea tanto do algoritmo quanto do circuito da CNN tratado na seção 1.4, com funções além das demonstradas em [15].
O aprendizado foi feito com sucesso usando imagens de tamanho 20x20, e os coeficientes obtidos foram convertidos para sinais de corrente seguindo a relação de 25 nA por unidade. Devido às imperfeições no circuito das sinapses, para a implementação adequada de algumas destas funções foi necessário o ajuste empírico do valor de limiar aplicado. Os sinais referentes às entradas e aos estados das células foram utilizados a partir de uma correspondência linear em que os pixels branco e preto equivalem aos valores de tensão de -15mV e 15mV, respectivamente. O circuito foi simulado na forma pré-leiaute no ambiente do pacote de ferramentas da Mentor Graphics, que utiliza o simulador ELDO, disponível no Laboratório de Concepção de Circuitos Integrados (LCCI) da Escola Politécnica da Universidade Federal da Bahia (UFBA), numa versão da CNN com 10x10 células para imagens diferentes. Os resultados foram comparados àqueles gerados pelo modelo de CNN descrito no Matlab e utilizado durante o treinamento. Os próximos itens da seção mostram exemplos dessas funções.
35
2.3.1 - Diferença Lógica (LOGDIF)
Sejam duas imagens binárias 𝐼1 e 𝐼2. Esta operação resulta numa imagem binária contendo o complemento lógico de 𝐼1 relativo a 𝐼2, ou seja, a imagem na saída da rede traz os elementos de cor preta existentes em 𝐼2 que são brancos em 𝐼1. A imagem I1 é inserida como sinal de entrada da CNN e I2 como estado inicial. Além disso, a função não necessita das condições de fronteira, já que a resposta de cada célula depende apenas dos seus próprios sinais. Os detalhes do treinamento estão explícitos na FIGURA 2.5, com os parâmetros já convertidos para sinais de corrente. Na FIGURA 2.6 observam-se os resultados da simulação.
FIGURA 2.6 - Simulação da operação de diferença lógica no circuito. (a) Imagem de entrada; (b) Estado Inicial; (c) Imagem de saída.
A (Padrão 3) B (Padrão 3) Z 0 0 0 0 0 0 -87,70 nA 0 125 nA 0 0 -87,70 nA 0 0 0 0 0 0 0 Nº de iterações 3 Tempo de execução 0,05 s Componentes atualizados Taxa de Aprendizado B 5 Z 5 (a) (b) (c) Tempo de processamento 4 µs
36
2.3.2 - E Lógico (LOGAND)
A função E lógico realiza a operação de conjunção booleana entre o estado e a entrada de cada célula. Esta função também dispensa os sinais vizinhos. O processo de teste é ilustrado nas FIGURAS 2.7 e 2.8.
FIGURA 2.7 - Resultados do aprendizado para a função E lógico.
FIGURA 2.8 - Simulação da operação E lógico no circuito. (a) Imagem de entrada; (b) Estado Inicial; (c) Imagem de saída. A (Padrão 3) B (Padrão 3) Z 0 0 0 0 0 0 -65.10 nA 0 125 nA 0 0 65.10 nA 0 0 0 0 0 0 0 Nº de iterações 20 Tempo de execução 0,96 s Componentes atualizados Taxa de Aprendizado B 5 Z 5 (a) (b) (c) Tempo de processamento 3,22 µs
37
2.3.3 - Ou Lógico (LOGOR)
Esta função é semelhante à anterior, diferindo apenas na operação lógica realizada, neste caso a união. O processo de teste é ilustrado nas FIGURAS 2.9 e 2.10.
FIGURA 2.9 - Resultados do aprendizado para a função OU lógico.
FIGURA 2.10 - Simulação da operação OU lógico no circuito. (a) Imagem de entrada; (b) Estado Inicial; (c) Imagem de saída. A (Padrão 3) B (Padrão 3) Z 0 0 0 0 0 0 -87,70 nA 0 125 nA 0 0 -87,70 nA 0 0 0 0 0 0 0 Nº de iterações 3 Tempo de execução 0,06 s Componentes atualizados Taxa de Aprendizado B 5 Z 5 (a) (b) (c) Tempo de processamento 3,5 µs
38
2.3.4 - Erosão (EROSION)
A operação erosão atua sobre a imagem inserida na entrada, mantendo os pixels pretos cuja vizinhança forme o padrão determinado pelo elemento estruturante 𝑆𝐸, que é aplicado na matriz B. Considerando o exemplo da FIGURA 2.11, o pixel 𝐶(𝑖, 𝑗) somente será preto na imagem de saída caso as células destacadas também sejam negras na entrada. O estado inicial é inteiramente zero e as condições das células de fronteira (a entrada 𝑈𝑓 e a saída 𝑌𝑓) são equivalentes à cor branca (-1). O processo de teste é ilustrado nas FIGURAS 2.12 e 2.13. 𝑆𝐸 B 0 1 0 0 1 1 0 0 0 𝐶(𝑖 − 1, 𝑗 − 1) 𝐶(𝑖 − 1, 𝑗) 𝐶(𝑖 − 1, 𝑗 + 1) 𝐶(𝑖, 𝑗 − 1) 𝐶(𝑖, 𝑗) 𝐶(𝑖, 𝑗 + 1) 𝐶(𝑖 + 1, 𝑗 − 1) 𝐶(𝑖 + 1, 𝑗) 𝐶(𝑖 + 1, 𝑗 + 1)
FIGURA 2.11 - Exemplo da função erosão. As células destacadas devem ser pretas na entrada para que gere uma saída preta em 𝐶(𝑖, 𝑗).
39 A (Padrão 3) B (Padrão 6) Z 0 0 0 2,51 nA 21,55 nA 5,33 nA -42,26 nA 0 125 nA 0 0,96 nA 19,36 nA 20,93 nA 0 0 0 0,01 nA 3,75 nA 2,83 nA Componentes atualizados Taxa de Aprendizado B 5 Z 5 Nº de iterações 3 Tempo de execução 0,1 s 𝑆𝐸
FIGURA 2.13 - Resultados do aprendizado para a função erosão.
(a) (b)
Limiar ajustado -28,26 nA Tempo de
processamento 2,4 µs
FIGURA 2.12 - Simulação da operação de erosão no circuito. (a) Imagem de entrada; (b) Imagem de saída.
40
2.3.5 - Dilatação (DILATION)
A dilatação produz o inverso da erosão, e pode ser explicada da seguinte forma: em cada pixel preto da entrada, o elemento estruturante 𝑆𝐷 é projetado e a imagem resultante é a união das projeções geradas em toda a imagem. A forma de 𝑆𝐷 define a matriz B. As demais condições são semelhantes à erosão. O processo de teste é ilustrado nas FIGURAS 2.14 e 2.15.
(a) (b)
Limiar ajustado 303,47 nA Tempo de
processamento 10,5 µs
FIGURA 2.15 - Simulação da operação de dilatação no circuito. (a) Imagem de entrada; (b) Imagem de saída. A (Padrão 3) B (Padrão 5) Z 0 0 0 0 63,05 nA 0 208,47 nA 0 125 nA 0 63,05 nA 51,12 nA 63,05 nA 0 0 0 0 63,05 nA 0 Componentes atualizados Taxa de Aprendizado B 5 Z 5 Nº de iterações 16 Tempo de execução 0,47 s 𝑆𝐷
41
2.3.6 - Deslocamento (SHIFT)
Esta operação move a imagem em um sentido dentre oito possíveis. Optou-se aqui por um deslocamento para o sudoeste. O processo de teste é ilustrado nas FIGURAS 2.16 e 2.17.
FIGURA 2.16 - Resultados do aprendizado para a função deslocamento.
Como esperado, a rede conseguiu reproduzir corretamente todas as funções mostradas nesta seção, abrindo caminho para o início da aplicação de filtros espaciais.
A (Padrão 3) B (Padrão 6) Z 0 0 0 14,62 nA 23,99 nA 161,77 nA 0 0 125 nA 0 13,94 nA 17,16 nA 38,94 nA 0 0 0 -2,89 nA 10,25 nA 14,56 nA Nº de iterações 5 Tempo de execução 0,16 s Componentes atualizados Taxa de Aprendizado B 5 Z 5 (a) (b) Tempo de processamento 10,5 µs
FIGURA 2.17 - Simulação da operação de deslocamento no circuito. (a) Imagem de entrada; (b) Imagem de saída.
43