filtragem de imagens em escala de cinza por meio … · meio de rede neuronal celular analÓgica em...
Post on 21-Nov-2018
212 Views
Preview:
TRANSCRIPT
UNIVERSIDADE FEDERAL DA BAHIA ESCOLA POLITÉCNICA
PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA
FILTRAGEM DE IMAGENS EM ESCALA DE CINZA POR
MEIO DE REDE NEURONAL CELULAR ANALÓGICA
EM TECNOLOGIA CMOS
Aluno: Fabian Souza de Andrade
Orientadora: Ana Isabela Araújo Cunha
Salvador
Novembro 2016
UNIVERSIDADE FEDERAL DA BAHIA ESCOLA POLITÉCNICA
PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA
FILTRAGEM DE IMAGENS EM ESCALA DE CINZA POR
MEIO DE REDE NEURONAL CELULAR ANALÓGICA
EM TECNOLOGIA CMOS
Fabian Souza de Andrade
Dissertação apresentada ao Programa de
Pós-graduação em Engenharia Elétrica, do
Departamento de Engenharia Elétrica, da
Universidade Federal da Bahia, como
requisito parcial à obtenção do grau de
mestre.
Orientadora: Ana Isabela Araújo Cunha
Salvador
Novembro 2016
AGRADECIMENTOS
Eu agradeço a todos que apoiaram o presente trabalho. Desde os colegas do
Laboratório de Concepção de Circuitos Integrados (LCCI), a todos que compõem o
Departamento de Engenharia Elétrica da Universidade Federal da Bahia (UFBA), em
especial ao Professor Edson Santana, por toda sua prestatividade, e à Professora Ana
Isabela, cuja profunda orientação foi imprescindível. Além disso, sou grato às instituições
CAPES e CNPq, pelo aporte financeiro concedido para a elaboração desta Dissertação.
i
RESUMO
Este trabalho aborda a implementação em nível de simulação de operações de
filtragem de imagens em uma CNN (Cellular Neuronal Network - Rede Neuronal
Celular) analógica desenvolvida em tecnologia CMOS (Complementary metal oxide
semiconductor). Tal circuito apresenta uma arquitetura projetada para a implementação
futura em próteses retinianas, sendo imprescindível, portanto, que processe funções de
filtragem adequadamente. Utilizou-se uma versão modificada do algoritmo denominado
CMA (Center of Mass Algorithm - Algoritmo do Centro de Massa) visando encontrar os
coeficientes adequados que configuram a rede para a função desejada. Uma ferramenta
com interface gráfica foi desenvolvida para aplicação do treinamento, e testada em
operações de processamento de imagens já aplicadas em CNN. Os resultados das
simulações são avaliados e mostram um desempenho satisfatório, considerando as
limitações da rede utilizada. Além disso, a metodologia seguida permite que melhorias
realizadas posteriormente na rede ou no método de treinamento sejam integradas de forma
simples.
Palavras-chave: CNN, CMA, Filtragem de Imagens.
iii
ABSTRACT
This work assesses the simulation-level implementation of image filtering
operations on an analog CNN (Cellular Neuronal Network) designed in CMOS
(Complementary metal oxide semiconductor) technology. This circuit presents an
architecture designed to future implementation in retina prosthesis, and it is essential,
therefore, that it executes filtering functions properly. A modified version of the algorithm
called CMA (Center of Mass Algorithm) is used in order to find the appropriate
coefficients that configures the network for the desired function. A GUI (Graphical User
Interface) tool has been developed for training purposes. The simulation results are
analyzed, and show a satisfactory performance, considering the limitations of the
operated network. Furthermore, the applied methodology allows upcoming
improvements in the network as well as the training method to be integrated in a simple
way.
Keywords: CNN, CMA, Image Filtering.
v
LISTA DE TABELAS
TABELA 3.1 - Filtros utilizados nas simulações. .......................................................... 44
TABELA 3.2 – Resultados dos filtros passa-baixas....................................................... 95
TABELA 3.3 – Resultados dos filtros passa-altas. ........................................................ 96
vii
LISTA DE FIGURAS
FIGURA 1.1 - Estrutura básica de uma CNN. Extraída de [14]. ..................................... 5
FIGURA 1.2 - Diagrama de blocos de uma célula padrão. Extraído de [15]. .................. 6
FIGURA 1.3 - Não linearidade padrão. Extraída de [14]. ................................................ 6
FIGURA 1.4 - Máscara A para uma rede com R = 1. ...................................................... 7
FIGURA 1.5 - Diagrama de blocos de uma célula FSR. Extraído de [15]. ..................... 8
FIGURA 1.6 - Máscara 𝐴𝐹𝑆𝑅 em função dos elementos da matriz A, para uma rede com
r = 1. .................................................................................................................................. 9
FIGURA 1.7 - Eixos utilizados para o cálculo do centro de massa. Extraída de [18]. .. 14
FIGURA 1.8 - Máscara de um filtro 3x3........................................................................ 16
FIGURA 1.9 - Sistema de coordenadas para os pixels................................................... 16
FIGURA 1.10 - Exemplo do processo de centralização: Forma comum de 𝐹(𝑢, 𝑣) (a);
Forma após a centralização (b). 𝑢 e 𝑣 são dados em ciclos/pixel. Obtidas no Matlab. .. 19
FIGURA 1.11 - Preenchimento de zeros em torno da imagem. A imagem à esquerda, com
seus pixels representados numericamente, é ampliada com pixels nulos, formando a
imagem à direita. ............................................................................................................ 19
FIGURA 1.12 - Exemplo de imagens filtradas. (a) Imagem original. (b) Imagem
processada por um filtro passa-baixas. (c) Imagem processada por um filtro passa altas.
........................................................................................................................................ 20
FIGURA 1.13 - Imagem (a) processada em um filtro que elimina o termo DC, resultando
na imagem (b). ................................................................................................................ 21
FIGURA 1.14 - Função de transferência do filtro passa-baixas de Butterworth, com 𝐷𝑜 =
10 , 𝑛 = 2 e 𝑀 = 𝑁 = 50 (a). Perfis radiais da função para diferentes ordens 𝑛 (b) e
frequências de corte 𝐷0 (c). As variáveis 𝑢 e 𝑣 são dadas em ciclos/pixel. Obtidos por
meio do software Matlab. ............................................................................................... 22
FIGURA 1.15 - Função de transferência do filtro passa-baixas gaussiano, com 𝐷𝑜 = 10
e 𝑀 = 𝑁 = 50 (a). Perfis radiais da função para diferentes frequências de corte 𝐷0 (c).
As variáveis 𝑢 e 𝑣 são dadas em ciclos/pixel. Obtidos por meio do software Matlab. .. 23
FIGURA 1.16 - Função de transferência do filtro passa-baixas de Butterworth, com 𝐷𝑜 =
10 , 𝑛 = 2 e 𝑀 = 𝑁 = 50 (a). Perfis radiais da função para diferentes ordens 𝑛 (b) e
frequências de corte 𝐷0 (c). As variáveis 𝑢 e 𝑣 são dadas em ciclos/pixel. Obtidos por
meio do software Matlab. ............................................................................................... 24
FIGURA 1.17 - Função de transferência do filtro passa-altas gaussiano, com 𝐷𝑜 = 10 e
𝑀 = 𝑁 = 50 (a). Perfis radiais da função para diferentes frequências de corte 𝐷0 (c). As
variáveis 𝑢 e 𝑣 são dadas em ciclos/pixel. Obtidos por meio do software Matlab. ....... 24
FIGURA 1.18 - Núcleo do multiplicador. Extraído de [15]. .......................................... 25
FIGURA 1.19 - Circuito da célula da CNN. Extraído de [15]. ...................................... 27
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. .............................................................................................................................. 32
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. ............................................................................................................... 33
viii
FIGURA 2.3 - Página de resultados do programa, onde situam-se ferramentas para análise
do treinamento. ............................................................................................................... 33
FIGURA 2.4 - Última página da ferramenta, que fornece opções para a simulação da
CNN. ............................................................................................................................... 34
FIGURA 2.5 - Resultados do aprendizado para a função diferença lógica. ................... 35
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. ........................................................... 35
FIGURA 2.7 - Resultados do aprendizado para a função E lógico. ............................... 36
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. .............................................................................. 36
FIGURA 2.9 - Resultados do aprendizado para a função OU lógico............................. 37
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. ......................................................................... 37
FIGURA 2.12 - Exemplo da função erosão. As células destacadas devem ser pretas na
entrada para que gere uma saída preta em 𝐶(𝑖, 𝑗). .......................................................... 38
FIGURA 2.13 - Simulação da operação de erosão no circuito. (a) Imagem de entrada; (b)
Imagem de saída. ............................................................................................................ 39
FIGURA 2.14 - Resultados do aprendizado para a função erosão. ................................ 39
FIGURA 2.15 - Resultados do aprendizado para a função dilatação. ............................ 40
FIGURA 2.16 - Simulação da operação de dilatação no circuito. (a) Imagem de entrada;
(b) Imagem de saída. ...................................................................................................... 40
FIGURA 2.17 - Resultados do aprendizado para a função deslocamento. .................... 41
FIGURA 2.18 - Simulação da operação de deslocamento no circuito. (a) Imagem de
entrada; (b) Imagem de saída. ........................................................................................ 41
FIGURA 3.1 - Imagem utilizada para o treinamento. .................................................... 45
FIGURA 3.2 - Resultados do aprendizado para o filtro FIR 1. ...................................... 46
FIGURA 3.3 - Simulação 1 da aplicação de FIR 1. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 46
FIGURA 3.4 - Simulação 2 da aplicação de FIR 1. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 47
FIGURA 3.5 - Resultados do aprendizado para o filtro FIR 2. ...................................... 48
FIGURA 3.6 - Simulação 1 da aplicação de FIR 2. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 48
FIGURA 3.7 - Simulação 2 da aplicação de FIR 2. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 49
FIGURA 3.8 - Resultados do aprendizado para o filtro FIR 3. ...................................... 50
FIGURA 3.9 - Simulação 1 da aplicação de FIR 3. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 50
ix
FIGURA 3.10 - Simulação 2 da aplicação de FIR 3. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 51
FIGURA 3.11 - Resultados do aprendizado para o filtro FIR 4. .................................... 52
FIGURA 3.12 - Simulação 1 da aplicação de FIR 4. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 52
FIGURA 3.13 - Simulação 2 da aplicação de FIR 4. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 53
FIGURA 3.14 - Resultados do aprendizado para o filtro FIR 5. .................................... 54
FIGURA 3.15 - Simulação 1 da aplicação de FIR 5. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 54
FIGURA 3.16 - Simulação 2 da aplicação de FIR 5. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 55
FIGURA 3.17 - Resultados do aprendizado para o filtro FIR 6. .................................... 56
FIGURA 3.18 - Simulação 1 da aplicação de FIR 6. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 56
FIGURA 3.19 - Simulação 2 da aplicação de FIR 6. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 57
FIGURA 3.20 - Resultados do aprendizado para o filtro FIR 7. .................................... 58
FIGURA 3.21 - Simulação 1 da aplicação de FIR 7. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 58
FIGURA 3.22 - Simulação 2 da aplicação de FIR 7. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 59
FIGURA 3.23 - Resultados do aprendizado para o filtro FIR 8. .................................... 60
FIGURA 3.24 - Simulação 1 da aplicação de FIR 8. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 60
FIGURA 3.25 - Simulação 2 da aplicação de FIR 8. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 61
FIGURA 3.26 - Resultados do aprendizado para o filtro FIR 9. .................................... 62
FIGURA 3.27 - Simulação 1 da aplicação de FIR 9. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 62
x
FIGURA 3.28 - Simulação 2 da aplicação de FIR 9. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 63
FIGURA 3.29 - Resultados do aprendizado para o filtro FIR 10. .................................. 64
FIGURA 3.30 - Simulação 1 da aplicação de FIR 10. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 64
FIGURA 3.31 - Simulação 2 da aplicação de FIR 10. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 65
FIGURA 3.32 - Resultados do aprendizado para o filtro FIR 11. .................................. 66
FIGURA 3.33 - Simulação 1 da aplicação de FIR 11. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 66
FIGURA 3.34 - Simulação 2 da aplicação de FIR 11. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 67
FIGURA 3.35 - Resultados do aprendizado para o filtro FIR 12. .................................. 68
FIGURA 3.36 - Simulação 1 da aplicação de FIR 12. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 68
FIGURA 3.37 - Simulação 2 da aplicação de FIR 12. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 69
FIGURA 3.38 - Resultados do aprendizado para o filtro IIR 1. ..................................... 70
FIGURA 3.39 - Simulação 1 da aplicação de IIR 1. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 70
FIGURA 3.40 - Simulação 2 da aplicação de IIR 1. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 71
FIGURA 3.41 - Resultados do aprendizado para o filtro IIR 2. ..................................... 72
FIGURA 3.42 - Simulação 1 da aplicação de IIR 2. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 72
FIGURA 3.43 - Simulação 2 da aplicação de IIR 2. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 73
FIGURA 3.44 - Resultados do aprendizado para o filtro IIR 3. ..................................... 74
FIGURA 3.45 - Simulação 1 da aplicação de IIR 3. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 74
xi
FIGURA 3.46 - Simulação 2 da aplicação de IIR 3. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 75
FIGURA 3.47 - Resultados do aprendizado para o filtro IIR 4. ..................................... 76
FIGURA 3.48 - Simulação 1 da aplicação de IIR 4. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 76
FIGURA 3.49 - Simulação 2 da aplicação de IIR 4. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 77
FIGURA 3.50 - Resultados do aprendizado para o filtro IIR 5. ..................................... 78
FIGURA 3.51 - Simulação 1 da aplicação de IIR 5. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 78
FIGURA 3.52 - Simulação 2 da aplicação de IIR 5. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 79
FIGURA 3.53 - Resultados do aprendizado para o filtro IIR 6. ..................................... 80
FIGURA 3.54 - Simulação 1 da aplicação de IIR 6. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 80
FIGURA 3.55 - Simulação 2 da aplicação de IIR 6. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 81
FIGURA 3.56 - Resultados do aprendizado para o filtro IIR 7. ..................................... 82
FIGURA 3.57 - Simulação 1 da aplicação de IIR 7. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 82
FIGURA 3.58 - Simulação 2 da aplicação de IIR 7. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 83
FIGURA 3.59 - Resultados do aprendizado para o filtro IIR 8. ..................................... 84
FIGURA 3.60 - Simulação 1 da aplicação de IIR 8. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 84
FIGURA 3.61 - Simulação 2 da aplicação de IIR 8. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 85
FIGURA 3.62 - Resultados do aprendizado para o filtro IIR 9. ..................................... 86
FIGURA 3.63 - Simulação 1 da aplicação de IIR 9. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 86
xii
FIGURA 3.64 - Simulação 2 da aplicação de IIR 9. (a) Imagem de entrada e estado inicial;
(b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 87
FIGURA 3.65 - Resultados do aprendizado para o filtro IIR 10. ................................... 88
FIGURA 3.66 - Simulação 1 da aplicação de IIR 10. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 88
FIGURA 3.67 - Simulação 2 da aplicação de IIR 10. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 89
FIGURA 3.68 - Resultados do aprendizado para o filtro IIR 11. ................................... 90
FIGURA 3.69 - Simulação 1 da aplicação de IIR 11. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 90
FIGURA 3.70 - Simulação 2 da aplicação de IIR 11. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 91
FIGURA 3.71 - Resultados do aprendizado para o filtro IIR 12. ................................... 92
FIGURA 3.72 – Simulação 1 da aplicação de IIR 12. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 92
FIGURA 3.73 - Simulação 2 da aplicação de IIR 12. (a) Imagem de entrada e estado
inicial; (b) Imagem de saída da CNN. (c) Imagem gerada pelo método da filtragem em
frequência. ...................................................................................................................... 93
xiii
LISTA DE SIGLAS
CNN - Cellular neural network
FSR - Full range signal
CMOS - Complementary metal oxide semiconductor
DFT-2D – Two dimensional discrete Fourier transfer
IDFT-2D - Two dimensional inverse discrete Fourier transfer
DC – Direct current
CMA - Center of mass algorithm
LCCI - Laboratório de Concepção de Circuitos Integrados
UFBA - Universidade Federal da Bahia
FIR - Finite impulse response
IIR - Infinite impulse response
RMS - Root mean square
xv
LISTA DE SÍMBOLOS
𝑀 - Número de linhas da CNN/imagem
𝑁 - Número de colunas da CNN/imagem
𝐶(𝑖, 𝑗) - Célula localizada nas coordenadas (𝑖, 𝑗)
𝑆𝑅 - Esfera de influência da CNN
𝑅 - Raio de 𝑆𝑟
𝑥𝑖,𝑗 - Estado de 𝐶(𝑖, 𝑗)
𝑦𝑖,𝑗 - Saída de 𝐶(𝑖, 𝑗)
𝑢𝑖,𝑗 - Entrada de 𝐶(𝑖, 𝑗)
𝑧𝑖,𝑗 - Limiar de 𝐶(𝑖, 𝑗)
𝐴 - Operador sináptico de realimentação
𝐵 - Operador sináptico de entrada
𝑎𝑚,𝑛 - Coeficiente da posição (𝑚, 𝑛) em 𝐴
𝑔𝑝(𝑥𝑖𝑗) - Função de grampeamento da célula do tipo FSR
𝐴𝐹𝑆𝑅 - Operador sináptico de realimentação da célula do tipo FSR
𝑒𝑖𝑗 - Erro de 𝐶(𝑖, 𝑗)
𝑘 - Índice da iteração
𝜂 - Taxa de aprendizado
𝑏𝑚,𝑛 - Coeficiente da posição (𝑚, 𝑛) em 𝐵
∆𝑎𝑚,𝑛 - Variação de 𝑎𝑚,𝑛
∆𝑏𝑚,𝑛 - Variação de 𝑏𝑚,𝑛
∆𝑧𝑚,𝑛 - Variação de 𝑧𝑚,𝑛
𝐴𝑆 - Componente simétrica de 𝐴
𝐴𝐴 - Componente anti-simétrica de 𝐴
𝐴𝐶 - Componente complementar da decomposição de 𝐴
xvi
∆𝐴𝑆 - Variação de 𝐴𝑆
∆𝐴𝐴 - Variação de 𝐴𝐴
𝑚𝑖,𝑗 - Massa de 𝐶(𝑖, 𝑗)
𝑟𝑙 - Centro de massa em relação ao eixo 𝑙
𝑀𝑇𝑂𝑇𝐴𝐿 - Massa total da rede
𝐷(𝑙)𝑖𝑗 - Distância entre 𝐶(𝑖, 𝑗) e o eixo 𝑙
𝑓(𝑥, 𝑦) - Valor do pixel na coordenada (𝑥, 𝑦) antes da filtragem
𝑔(𝑥, 𝑦) - Valor do pixel na coordenada (𝑥, 𝑦) após a filtragem
𝑤(𝑚, 𝑛) - Coeficiente da posição (𝑚, 𝑛) do filtro espacial
𝐹(𝑢, 𝑣) - Transformada discreta de Fourier de 𝑓(𝑥, 𝑦)
𝐻(𝑢, 𝑣) - Função de transferência do filtro
𝑃 - Dimensão horizontal da imagem ampliada
Q - Dimensão vertical da imagem ampliada
𝐷𝑜 - Frequência de corte do filtro
𝐷(𝑢, 𝑣) - Distância de um ponto (𝑢, 𝑣) para o centro do filtro
𝑖𝑜𝑢𝑡𝐴 - Corrente de saída do multiplicador
𝑖𝑖𝑛 - Corrente de entrada do multiplicador
𝐼𝐵 - Corrente de polarização
𝑉𝐷𝑆1 - Tensão entre dreno e fonte do transistor
𝑉𝐼𝐷𝐶 - Deslocamento de nível total
𝑣𝑖𝑠ℎ - Sinais de estado e de entrada na célula
𝑣𝑜 - Saída da célula
∆𝑡 - Passo temporal
𝐼 - Imagem binária
𝑆𝐸 - Elemento estruturante da função erosão
𝑈𝑓 - Entrada de fronteira
xvii
𝑌𝑓 - Saída de fronteira
𝑆𝐷 - Elemento estruturante da função dilatação
𝑓𝑝(𝑥, 𝑦) - Imagem ampliada através do padding
𝐺(𝑢, 𝑣) - Transformada discreta de Fourier de g(𝑥, 𝑦)
xix
SUMÁRIO
RESUMO .......................................................................................................................... i
ABSTRACT .................................................................................................................... iii
LISTA DE TABELAS ..................................................................................................... v
LISTA DE FIGURAS .................................................................................................... vii
LISTA DE SIGLAS ...................................................................................................... xiii
LISTA DE SÍMBOLOS ................................................................................................. xv
INTRODUÇÃO ................................................................................................................ 1
Estrutura ................................................................................................................... 2
CAPÍTULO 1 - FUNDAMENTAÇÃO TEÓRICA ......................................................... 5
1.1 - Redes Neuronais Celulares................................................................................... 5
1.2 - Algoritmos de Treinamento ................................................................................. 9
1.2.1 - Algoritmo do Centro de Massa ................................................................... 10
1.3 - Filtragem de Imagens ......................................................................................... 15
1.3.1 - Domínio Espacial ........................................................................................ 15
1.3.2 - Domínio da Frequência ............................................................................... 17
1.4 - Um Circuito Analógico de CNN do Tipo FSR em Tecnologia CMOS ............. 25
CAPÍTULO 2 - FERRAMENTA PARA APRENDIZADO DE CNN COM INTERFACE
GRÁFICA ....................................................................................................................... 29
2.1 - Implementação do CMA .................................................................................... 29
2.2 - Interface Gráfica ................................................................................................. 31
2.3 - Simulações de Funções Binárias ........................................................................ 34
2.3.1 - Diferença Lógica (LOGDIF) ....................................................................... 35
2.3.2 - E Lógico (LOGAND) ................................................................................. 36
2.3.3 - Ou Lógico (LOGOR) .................................................................................. 37
2.3.4 - Erosão (EROSION) ..................................................................................... 38
2.3.5 - Dilatação (DILATION) ............................................................................... 40
2.3.6 - Deslocamento (SHIFT) ............................................................................... 41
CAPÍTULO 3 - APLICAÇÕES EM FILTRAGEM DE IMAGENS ............................. 43
3.1 - Metodologia ....................................................................................................... 43
3.1.1 - Obtenção de Imagens .................................................................................. 43
3.1.2 - Filtros .......................................................................................................... 43
3.1.3 - Treinamento ................................................................................................ 44
xx
3.1.4 - Resultados ................................................................................................... 45
CONCLUSÃO ................................................................................................................ 97
TRABALHO PUBLICADO........................................................................................... 99
REFERÊNCIAS ........................................................................................................... 101
APÊNDICE .................................................................................................................. 105
1
INTRODUÇÃO
A filtragem é um importante ramo do campo de processamento de imagens.
Aplicações como restauração de imagens para fins biomédicos [1], [2], modelagem das
funções básicas da retina [3], reconhecimento de imagens [4] e aprimoramento de captura
de impressões digitais [5], demonstram o desenvolvimento de técnicas e funções que
realizam a filtragem de variadas maneiras com eficiência.
Mas esta presença não se restringe apenas aos meios artificiais. Já se considera que
o processamento realizado pela retina dos mamíferos inclui filtros que a auxiliam a lidar
com as possíveis complexidades que o ambiente traz para a visão, apesar de se tratar de
um campo relativamente pouco conhecido. No modelo para a retina proposto em [6], são
integrados elementos que representam a filtragem espacial. Em [7], são retratadas
algumas computações que ocorrem nas variadas camadas celulares da estrutura retiniana,
como a detecção de diferentes tipos de movimento.
Uma metodologia muito utilizada para implementação de sistemas visando
o processamento de imagens consiste no uso de CNN (Cellular neural network – rede
neuronal celular), cuja versatilidade permite também a implementação das funções de
filtragem mais básicas sem dificuldades. Além disso, o caráter analógico e distribuído da
execução destas redes gera vantagens quanto à velocidade e ao consumo. Em [8], por
exemplo, é proposta uma abordagem para projetos de CNN de tempo contínuo ou
discreto, enquanto a rede mostrada em [9] incorpora uma memória para o reconhecimento
de padrões.
Contudo, o desenvolvimento de sistemas deste tipo projetados para atuação como
dispositivos portáteis ou implantáveis esbarra na necessidade de menor consumo de
energia e menor tamanho para sua viabilidade, motivando a busca por melhores
arquiteturas, como as utilizadas em [10] e [11].
Outro resultado mais recente desta procura é a arquitetura para as sinapses da CNN
em tecnologia CMOS desenvolvida em [12], que será objeto das simulações realizadas
neste trabalho. Esta arquitetura admite uma faixa contínua de valores para os coeficientes
e possui um compartilhamento de blocos que reduz não só tamanho e a complexidade do
circuito, como também o consumo e o descasamento entre os componentes.
2
As operações de filtragem citadas anteriormente são representadas em geral por
uma função de transferência no domínio da frequência. Portanto, para sua implementação
em uma CNN, é necessária a obtenção dos parâmetros da rede correspondentes. Muitas
funções básicas já têm estes coeficientes conhecidos, obtidos de forma analítica. Porém
para casos mais complexos, torna-se mais complicado encontrar uma solução. Neste
contexto, métodos numéricos tornam-se uma interessante alternativa, onde a partir de um
algoritmo de treinamento, utilizando pares de imagens de entrada e saída que caracterizam
a função desejada, pode-se convergir para um conjunto de parâmetros que configurem a
CNN.
Partindo desta abordagem, o presente trabalho compreende dois objetivos
principais: o desenvolvimento de uma metodologia para o treinamento da CNN
desenvolvida em [12], culminando na criação de uma ferramenta gráfica para obtenção
dos parâmetros da rede para uma determinada função; a análise do desempenho da rede
em funções de filtragem de imagens a partir de simulações.
Estrutura
Esta dissertação possui três capítulos. No capítulo 1 são fundamentadas as bases
teóricas que sustentam o trabalho. Inicialmente discorre-se sobre CNN’s, citando sua
definição e os conceitos principais envolvidos no seu funcionamento. Em seguida, há uma
seção que trata de algoritmos de treinamento, detalhando especialmente aquele escolhido
para utilização. Na terceira parte do capítulo 1 há uma breve revisão da filtragem de
imagens, abordando as duas principais maneiras de sua realização. Por fim, mostra-se a
arquitetura básica do circuito projetado em [12], com uma simples descrição de seus
princípios funcionais.
No capítulo 2 é explicado como se deu a implementação do algoritmo de
aprendizado, incluindo as modificações realizadas. Há também a exposição da interface
gráfica concebida e simulações de funções simples típicas do processamento de imagens
realizadas pela CNN.
Já no capítulo 3, relata-se a metodologia empregada para a obtenção dos parâmetros
da rede para os filtros, sendo incluídos posteriormente os resultados da sua aplicação em
simulação. Este segmento é finalizado com uma análise dos dados obtidos.
3
Em seguida ao capítulo 3, apresenta-se a conclusão do trabalho, onde se discute o
seu potencial e as possíveis evoluções propostas para futuros desenvolvimentos.
No apêndice está redigido o código principal comentado do algoritmo utilizado.
5
CAPÍTULO 1 - FUNDAMENTAÇÃO TEÓRICA
1.1 - Redes Neuronais Celulares
A rede neuronal celular é apresentada em [13] como uma arquitetura computacional
analógica que possui organização semelhante às redes de neurônios existentes em vários
tecidos celulares. Além disso, compartilha algumas características das redes neuronais,
como processamento paralelo e dinâmica em tempo contínuo. Conforme é exibido na
FIGURA 1.1, a estrutura padrão de uma CNN consiste numa matriz de dimensões M por
N, onde as células 𝐶(𝑖, 𝑗) estão identificadas por suas coordenadas cartesianas i e j,
inteiras positivas [14].
FIGURA 1.1 - Estrutura básica de uma CNN. Extraída de [14].
Cada célula é conectada com as suas vizinhas, formando seu círculo de influência
𝑆𝑅, cujo raio 𝑅 determina até que distância estas conexões são realizadas. Um raio de
tamanho 1, por exemplo, implica em conexões apenas entre células adjacentes, incluindo
as diagonais.
As equações (1.2) e (1.3) definem a dinâmica da CNN padrão. O diagrama na
FIGURA 1.2 apresenta as operações básicas que ocorrem numa célula.
𝑥𝑖𝑗̇ = −𝑥𝑖𝑗 + ∑ 𝐴(𝑖, 𝑗; 𝑘, 𝑙)𝑦𝑘𝑙 +
𝐶(𝑘,𝑙)∈𝑆𝑅(𝑖,𝑗)
∑ 𝐵(𝑖, 𝑗; 𝑘, 𝑙)𝑢𝑘𝑙 + 𝑧𝑖𝑗𝐶(𝑘,𝑙)∈𝑆𝑅(𝑖,𝑗)
(1.1)
𝑦𝑖𝑗 = 𝑓(𝑥𝑖𝑗) =1
2|𝑥𝑖𝑗 + 1| −
1
2|𝑥𝑖𝑗 − 1| (1.2)
6
FIGURA 1.2 - Diagrama de blocos de uma célula padrão. Extraído de [15].
As variáveis 𝑥𝑖𝑗, 𝑦𝑖𝑗, 𝑢𝑖𝑗 e 𝑧𝑖𝑗 são, respectivamente, o estado, a saída, a entrada e o limiar
da célula 𝐶(𝑖, 𝑗), enquanto A e B são matrizes de operadores sinápticos de realimentação
e de entrada, respectivamente.
A expressão (1.1) é a equação de estado, que mostra que a dinâmica da célula
depende de sua própria entrada e saída, bem como dos sinais das células pertencentes ao
seu círculo de influência, 𝑆𝑅(𝑖, 𝑗). Os índices 𝑘 e 𝑙 correspondem às coordenadas relativas
a estas células. A equação (1.2) corresponde à função de saída típica da célula, que age
como limitadora do estado, denominada não linearidade padrão, ilustrada na FIGURA
1.3. A aplicação desta função restringe a saída de cada célula ao intervalo [-1,1].
FIGURA 1.3 - Não linearidade padrão. Extraída de [14].
7
Os parâmetros das matrizes A e B e o parâmetro z determinam a função a ser
executada pela CNN e normalmente são utilizados valores reais, invariantes no espaço e
no tempo. Em alguns casos, o estado inicial também necessita ser definido. Nestas
condições, de acordo com a equação (1.1), a operação das sinapses em cada célula se
resume à multiplicação da saída de cada célula pertencente à vizinhança, bem como de
sua entrada, pelo coeficiente correspondente à sua posição relativa, sendo estes produtos
somados em seguida. Define-se assim uma máscara única com estes coeficientes para
toda a rede, associada à função que será executada. A FIGURA 1.4 ilustra uma forma de
representação da máscara A para uma rede com vizinhança de raio unitário.
𝑎−1,−1 𝑎−1,0 𝑎−1,1
𝑎0,−1 𝑎0,0 𝑎0,1
𝑎1,−1 𝑎1,0 𝑎1,1
FIGURA 1.4 - Máscara A para uma rede com R = 1.
Além disso, levam-se em consideração as condições de fronteira, que correspondem
aos valores de entradas e saídas de células virtuais que contornam a rede. Estas células
são utilizadas para ocupar os espaços, dentro do círculo de influência das células
pertencentes à borda da rede, que a princípio estariam vazios. Na forma de implementação
mais comum, a fronteira fornece apenas sinais constantes para as células adjacentes.
Uma grande gama de funções executadas por CNN é classificada como bipolar, isto
é, trabalha apenas com entradas e saídas finais com valores -1 e 1. Em aplicações na área
de processamento de imagens, vertente de maior destaque na utilização de CNN, estes
valores são comumente associados às cores branca e preta, respectivamente. No caso
destas funções, em geral, a solução não é única: uma faixa de valores para cada parâmetro
permite a obtenção do mesmo resultado.
Quando as células da CNN não interagem com os sinais de saída das suas vizinhas,
isto é, quando todos os coeficientes sinápticos de realimentação com exceção do central
são nulos, tem-se uma rede do tipo desacoplada. Caso pelo menos um destes parâmetros
seja diferente de zero, a rede é considerada acoplada. As funções que exibem efeitos de
propagação, como preenchimento de buracos ou projeção de sombras, normalmente estão
associadas ao segundo caso.
8
A FIGURA 1.4 representa as operações básicas que ocorrem numa célula padrão.
O processamento envolve várias multiplicações, um somatório, uma integração e um
bloco limitador, além de uma realimentação negativa.
Uma variação de modelo de CNN, desenvolvida em [10], é a configuração Full
Signal Range (FSR), e sua principal diferença é a operação com valores dos estados
limitados à faixa de sinais de entrada. Esta característica simplifica o projeto ao dispensar
a necessidade do bloco limitador, contribuindo para a concepção de circuitos mais densos
e robustos [16]. A FIGURA 1.5 descreve o diagrama para este caso.
Neste modelo, a dinâmica da célula 𝐶(𝑖, 𝑗) é descrita pela equação (1.3) [10].
FIGURA 1.5 - Diagrama de blocos de uma célula FSR. Extraído de [15].
𝑥𝑖𝑗̇ = 𝑔𝑝(𝑥𝑖𝑗) + ∑ 𝐴𝐹𝑆𝑅(𝑖, 𝑗; 𝑘, 𝑙)𝑦𝑘𝑙 +
𝐶(𝑘,𝑙)∈𝑆𝑅(𝑖,𝑗)
∑ 𝐵(𝑖, 𝑗; 𝑘, 𝑙)𝑢𝑘𝑙 + 𝑧𝑖𝑗𝐶(𝑘,𝑙)∈𝑆𝑅(𝑖,𝑗)
(1.3)
A matriz 𝐴𝐹𝑆𝑅 corresponde a 𝐴 se subtrairmos 1 do seu elemento central, como
mostra a FIGURA 1.6 para uma rede com vizinhança de raio unitário. A função de
grampeamento 𝑔𝑝(𝑥) é definida como:
𝑔𝑝(𝑥) = 𝑙𝑖𝑚𝑚→∞
{−𝑚(𝑥 + 1) + 1, 𝑥 < −10, − 1 ≤ 𝑥 ≤ 1−𝑚(𝑥 − 1) − 1, 𝑥 > 1
(1.4)
𝑔𝑝(𝑥)
9
𝑎−1,−1 𝑎−1,0 𝑎−1,1
𝑎0,−1 𝑎0,0 − 1 𝑎0,1
𝑎1,−1 𝑎1,0 𝑎1,1
FIGURA 1.6 - Máscara 𝐴𝐹𝑆𝑅 em função dos elementos da matriz A, para uma rede com r = 1.
Considerando 𝑚 = 1 na função 𝑔𝑝(𝑥), a equação (1.3) se torna igual a (1.1),
correspondendo à dinâmica da célula convencional.
1.2 - Algoritmos de Treinamento
Segundo [17], os coeficientes requeridos para que a CNN desempenhe uma
determinada função podem ser encontrados por meio de projeto ou de aprendizado. No
caso de projeto, a função deve ser traduzida em termos de algumas leis dinâmicas locais.
Contudo, a relação desejada entre entrada (ou estado inicial) e saída pode ser complexa
demais para permitir o enunciado de tais leis.
A outra forma de determinação dos coeficientes, bastante utilizada, é a técnica de
aprendizado de redes neuronais, que já foram adaptadas para o caso específico de redes
celulares [17]-[24]. Estas técnicas em geral baseiam-se no princípio de que, uma vez
conhecido um conjunto de entradas e os resultados esperados para a função em questão,
podem-se obter os coeficientes da rede que reproduzem tal comportamento de forma
iterativa, a partir de algoritmos específicos.
Dois destes métodos foram considerados para o possível uso neste trabalho. Um
deles foi o uso de um algoritmo genético adaptado para CNN, como os propostos em [23]
e [24]. A principal vantagem desta classe de algoritmos é que pode ser mais resistente a
problemas de convergência caso seja escolhido um tamanho adequado para a população,
em contrapartida demandando um tempo médio maior para a sua realização, em geral.
Entretanto, a opção escolhida para implementação foi a proposta em [18] sob o nome de
Algoritmo do Centro de Massa (CMA: Center of Mass Algorithm) e inspirada na técnica
de aprendizado para redes neuronais denominada recurrent back-propagation (retro-
10
propagação recorrente), cujo princípio básico é a otimização dos parâmetros pela
minimização de uma função de custo, que compara a saída da rede em simulação com
a resposta desejada. As maiores simplicidade e velocidade desta abordagem pesaram
nesta preferência, já que acarretam em um tempo menor para execução. Em contrapartida,
o CMA possui a desvantagem de oferecer o risco de haver problemas durante
a convergência, principalmente caso não siga uma trajetória adequada. A próxima seção
dedica-se à explanação de seu funcionamento, com as modificações introduzidas por este
trabalho sendo descritas na seção 2.1.
1.2.1 - Algoritmo do Centro de Massa
Uma característica do CMA é considerar apenas a resposta final da rede já
estabilizada, ignorando a trajetória tomada durante o processamento. Além disso,
o conceito de centro de massa proposto permite o treinamento para o caso de funções com
uma dinâmica que dificulta a aplicação de algoritmos mais simples, como as funções que
envolvem propagação de sinal pela rede.
O treinamento necessita de pares de entrada e saída definidos para a função
procurada, das condições de fronteira, de valores iniciais para A, B e o limiar z e para
o estado das células, resultando em um conjunto com A, B e o limiar de uma CNN
convencional, que permite a realização da função. O desenvolvimento da técnica é feito
para redes com vizinhança de raio unitário, onde as máscaras possuem dimensão 3x3.
O erro é calculado a partir da equação (1.5):
𝑒𝑖𝑗[𝑘] =1
2(𝑑𝑖𝑗 − 𝑦𝑖𝑗[𝑘]) (1.5)
onde 𝑒𝑖𝑗 e 𝑦𝑖𝑗 são o erro e a saída final da célula 𝐶(𝑖, 𝑗), respectivamente, e 𝑑𝑖𝑗 é a resposta
desejada. O índice 𝑘 contabiliza as iterações. Considerando que a saída da CNN é limitada
ao intervalo [-1, 1], o erro obtido a partir desta relação também se situará nesta faixa.
A atualização dos parâmetros é realizada segundo (1.6):
𝑎𝑚𝑛[𝑘 + 1] = 𝑎𝑚𝑛[𝑘] + 𝜂𝛥𝑎𝑚𝑛[𝑘] (1.6. 𝑎)
𝑏𝑚𝑛[𝑘 + 1] = 𝑏𝑚𝑛[𝑘] + 𝜂𝛥𝑏𝑚𝑛[𝑘] (1.6. 𝑏)
11
𝑧[𝑘 + 1] = 𝑧[𝑘] + 𝜂𝛥𝑧[𝑘] (1.6. 𝑐)
sendo
𝛥𝑎𝑚𝑛[𝑘] =
{
0 , 𝑠𝑒 𝑚 = 𝑛 = 2
1
𝑀𝑁∑ 𝑒𝑖𝑗[𝑘]𝑦𝑖+𝑚−2 𝑗+𝑛−2[𝑘]
1≤𝑖≤𝑀,1≤𝑗≤𝑁
, 𝑐𝑎𝑠𝑜 𝑐𝑜𝑛𝑡𝑟á𝑟𝑖𝑜 (1.7. 𝑎)
𝛥𝑏𝑚𝑛[𝑘] =1
𝑀𝑁∑ 𝑒𝑖𝑗[𝑘]𝑢𝑖+𝑚−2 𝑗+𝑛−2[𝑘]
1≤𝑖≤𝑀,1≤𝑗≤𝑁
(1.7. 𝑏)
𝛥𝑧[𝑘] =1
𝑀𝑁∑ 𝑒𝑖𝑗[𝑘]
1≤𝑖≤𝑀,1≤𝑗≤𝑁
(1.7. 𝑐)
onde 𝑚, 𝑛 ∈ {1, 2, 3}, 𝜂 > 0 é a taxa de aprendizado e M e N são, respectivamente,
o número de linhas e colunas da CNN. Sendo assim, a cada passo 𝑘 a mudança de cada
parâmetro dos operadores sinápticos é atingida a partir do somatório que envolve
o produto do erro de cada célula com o sinal que participa da sinapse referente a este
parâmetro durante a operação da rede. Por outro lado, o limiar z é variado de acordo com
o acúmulo dos erros das células. O elemento central de 𝐴, 𝑎22, é fixado.
A atualização dos parâmetros em (1.6) pode ser explicada de forma simples:
uma célula contribuirá nas somas quando o erro em sua resposta for diferente de zero. Se,
por exemplo, numa função bipolar, o valor de 𝑦𝑚𝑛 for 1, mas o valor desejado for -1, o
erro terá o valor máximo de 1 e, para reduzi-lo, o algoritmo aplicará as relações em (1.7)
e diminuirá, proporcionalmente ao fator 𝜂, os coeficientes 𝑎𝑚𝑛 correspondentes às células
vizinhas que apresentem 𝑦𝑚𝑛 = 1. Similarmente, aumentará os coeficientes 𝑎𝑚𝑛
referentes às células com 𝑦𝑚𝑛 = −1. A realização do somatório para todos os valores de
i de 1 a M e de j de 1 a N e a divisão pelo fator MN levam à média das contribuições
fornecidas por todas as células da rede, que por sua vez é aplicada na atualização ao final
de cada passo.
Pode-se observar que este método realiza o treinamento em lotes, no sentido em
que os coeficientes são alterados apenas após a aplicação de (1.7) em todas as células, ao
12
passo em que outras técnicas fazem essa atualização on-line, isto é, logo após
o tratamento em cada célula.
Como citado anteriormente, este algoritmo não considera a evolução temporal para
o cálculo do erro. Isto dificulta a implementação de certos tipos de funções que envolvem
a propagação de sinal pela rede, como a projeção de sombras. Para compensar esta
limitação, em [18] algumas alterações são aplicadas na forma como as matrizes A e B são
atualizadas.
No caso da máscara B, é proposta a fixação do seu formato de acordo com
a natureza da função desejada. Considerando um exemplo em que a matriz tem o modelo
descrito em (1.8), a atualização será feita de acordo com (1.9),
𝐵 = [0 𝑏 0𝑏 𝑏𝑐 𝑏0 𝑏 0
] (1.8)
𝐵 = [∆
0 ∆𝑏[𝑘] 0𝑏[𝑘] ∆𝑏22[𝑘] ∆𝑏[𝑘]0 ∆𝑏[𝑘] 0
] (1.9)
onde a grandeza ∆𝑏[𝑘] é dada por (1.10).
∆𝑏[𝑘] =∆𝑏12[𝑘] + ∆𝑏21[𝑘] + ∆𝑏23[𝑘] + ∆𝑏32[𝑘]
4 (1.10)
Para o tratamento da máscara A, realiza-se primeiramente a decomposição em três
partes, mostradas em (1.11): uma componente simétrica, 𝐴𝑠, uma anti-simétrica, 𝐴𝑎, e
𝐴𝑐.
𝐴𝑠 =1
2[
𝑎11 + 𝑎33 𝑎12 + 𝑎32 𝑎13 + 𝑎31𝑎21 + 𝑎23 0 𝑎21 + 𝑎23𝑎13 + 𝑎31 𝑎12 + 𝑎32 𝑎11 + 𝑎33
] (1.11. 𝑎)
𝐴𝑎 =1
2[
𝑎11 − 𝑎33 𝑎12 − 𝑎32 𝑎13 − 𝑎31𝑎21 − 𝑎23 0 𝑎23 − 𝑎21𝑎31 − 𝑎13 𝑎32 − 𝑎12 𝑎33 − 𝑎11
] (1.11. 𝑏)
𝐴𝑐 = 𝐴 − 𝐴𝑠 − 𝐴𝑎 (1.11. 𝑐)
13
A componente simétrica corresponde às dinâmicas locais e de difusão da função,
enquanto a anti-simétrica lida com as dinâmicas globais e de propagação. Ambas são
atualizadas de maneiras diferentes. A componente 𝐴𝑐 permanece fixa durante
o treinamento. No final de cada passo, as três matrizes são somadas para obter a nova
máscara 𝐴.
A atualização de 𝐴𝑠 é realizada conforme (1.12), onde o índice k foi omitido na
matriz AS para simplificação.
𝐴𝑠[𝑘 + 1] = 𝐴𝑠[𝑘] + 𝜂∆𝐴𝑠[𝑘] (1.12. 𝑎)
∆𝐴𝑠 =1
2[
∆𝑎11 + ∆𝑎33 ∆𝑎12 + ∆𝑎32 ∆𝑎13 + ∆𝑎31∆𝑎21 + ∆𝑎23 0 ∆𝑎21 + ∆𝑎23∆𝑎13 + ∆𝑎31 ∆𝑎12 + ∆𝑎32 ∆𝑎11 + ∆𝑎33
] (1.12. 𝑏)
A componente 𝐴𝑎 é atualizada utilizando a noção de centro de massa, considerando
a organização da rede em duas dimensões. Busca-se neste caso eliminar a diferença entre
as posições do centro de massa da saída da rede e da saída desejada, aproximando-os a
cada iteração. A princípio, atribui-se a cada célula 𝐶(𝑖, 𝑗) um valor de massa 𝑚𝑖𝑗
dependente do valor na sua saída, de acordo com a expressão (1.13).
𝑚𝑖𝑗 =1 + 𝑦𝑖𝑗
2 (1.13)
E como −1 ≤ 𝑦𝑖𝑗 ≤ 1, tem-se que 0 ≤ 𝑚𝑖𝑗 ≤ 1.
Dessa forma o cálculo do centro de massa em relação a um eixo 𝑙 é feito segundo a
equação (1.14).
𝑟𝑙 =1
𝑀𝑡𝑜𝑡𝑎𝑙∑ 𝐷(𝑙)𝑖𝑗𝑚𝑖𝑗
1≤𝑖≤𝑀,1≤𝑗≤𝑁
(1.14)
sendo 𝐷(𝑙)𝑖𝑗 a distância entre a célula 𝐶(𝑖, 𝑗) e o eixo 𝑙. A variável 𝑀𝑡𝑜𝑡𝑎𝑙 é a soma das
massas de todas as células da rede.
14
Para cada elemento de 𝐴𝑎, o centro de massa é calculado em relação a um eixo
dentre quatro possibilidades, ilustradas na FIGURA 1.7, de acordo com a sua posição na
matriz.
FIGURA 1.7 - Eixos utilizados para o cálculo do centro de massa. Extraída de [18].
Escrevendo as distâncias em função do par cartesiano (𝑖, 𝑗), temos as expressões
(1.15) para cada eixo:
𝑟𝑙𝑥 =1
𝑀𝑡𝑜𝑡𝑎𝑙∑ 𝑗𝑚𝑖𝑗
1≤𝑖≤𝑀,1≤𝑗≤𝑁
(1.15. 𝑎)
𝑟𝑙𝑦 =1
𝑀𝑡𝑜𝑡𝑎𝑙∑ 𝑖𝑚𝑖𝑗
1≤𝑖≤𝑀,1≤𝑗≤𝑁
(1.15. 𝑏)
𝑟𝑙45 =1
𝑀𝑡𝑜𝑡𝑎𝑙
√2
2 ∑ |𝑖 − 𝑗|𝑚𝑖𝑗
1≤𝑖≤𝑀,1≤𝑗≤𝑁
(1.15. 𝑐)
𝑟𝑙−45 =1
𝑀𝑡𝑜𝑡𝑎𝑙
√2
2 ∑ (𝑖 + 𝑗)𝑚𝑖𝑗
1≤𝑖≤𝑀,1≤𝑗≤𝑁
(1.15. 𝑑)
A partir das expressões (1.15) pode-se calcular as diferenças entre o centro de
massa da resposta obtida pela rede (𝑟𝑙𝑦) e da resposta desejada (𝑟𝑙
𝑑), utilizando (1.16).
𝛥𝑙𝑥 = 𝑟𝑙𝑥𝑑 [𝑘] − 𝑟𝑥
𝑦[𝑘] (1.16. 𝑎)
15
𝛥𝑙𝑦 = 𝑟𝑙𝑦𝑑 [𝑘] − 𝑟𝑙𝑦
𝑦[𝑘] (1.16. 𝑏)
𝛥𝑙45 = 𝑟𝑙45𝑑 [𝑘] − 𝑟45
𝑦 [𝑘] (1.16. 𝑐)
𝛥𝑙−45 = 𝑟𝑙−45𝑑 [𝑘] − 𝑟−45
𝑦 [𝑘] (1.16. 𝑑)
E, finalmente, 𝐴𝑎 pode ser atualizada de acordo com (1.17).
𝐴𝑎[𝑘 + 1] = 𝐴𝑎[𝑘] + 𝜂𝛥𝐴𝑎[𝑘] (1.17. 𝑎)
𝛥𝐴𝑎[𝑘] = [
𝛥𝑙−45 𝛥𝑙𝑦 𝛥𝑙45𝛥𝑙𝑥 0 −𝛥𝑙𝑥−𝛥𝑙45 −𝛥𝑙𝑦 −𝛥𝑙−45
] (1.17. 𝑏)
Ainda em [18], são feitas verificações do método com o treinamento de uma CNN
convencional para funções simples, com um bom desempenho.
1.3 - Filtragem de Imagens
A filtragem corresponde a uma das operações mais frequentes no processamento de
imagens e sua utilização pode estar presente em diversas etapas da computação,
cumprindo as mais diversas finalidades. Exemplos incluem o realce de determinadas
características da imagem, como bordas ou objetos, e a suavização de imagens.
A filtragem pode ser abordada de duas maneiras: no domínio do espaço e no
domínio da frequência, ambas proporcionando diferentes métodos para o projeto de
filtros. Apesar destas alternativas possuírem uma correlação matemática, a escolha mais
adequada pode depender da aplicação desejada.
1.3.1 - Domínio Espacial
No domínio espacial, um filtro é definido por uma vizinhança e uma operação pré-
determinada. Em cada pixel da imagem, esta operação será feita em sua vizinhança, e o
seu resultado corresponderá ao valor deste mesmo pixel na imagem de saída. O filtro
espacial pode ser linear ou não-linear, de acordo com sua operação. Seja o diagrama da
FIGURA 1.8 a representação de uma máscara de coeficientes de um filtro linear de
16
tamanho 3 por 3. Nesta seção, assim como no restante do trabalho, são consideradas
imagens monocromáticas. Além disso, nesta análise o valor 0 corresponde a um pixel
preto e o valor máximo do pixel, que em aplicações digitais depende no número de bits
usado para representação, está associado à cor branca. Para cada pixel, é realizado
o produto de cada coeficiente 𝑤 da máscara pelo valor do pixel vizinho correspondente,
obedecendo a sua posição relativa ao centro; o pixel central é multiplicado pelo
coeficiente central. Os resultados são então somados, produzindo o valor do pixel da
imagem filtrada. A equação 1.18 representa este procedimento, com 𝑓(𝑥, 𝑦) e g(𝑥, 𝑦)
correspondendo aos valores dos pixels das coordenadas (𝑥, 𝑦) para a imagem antes e
cdepois da filtragem, respectivamente; a orientação segue como mostrado na FIGURA
c1.9.
cc𝑔(𝑥, 𝑦) = 𝑤(−1,−1)𝑓(𝑥 − 1, 𝑦 − 1) + 𝑤(−1,0)𝑓(𝑥 − 1, 𝑦) + ⋯
+ 𝑤(0,0)𝑓(𝑥, 𝑦) + ⋯+𝑤(1,0)𝑓(𝑥 + 1, 𝑦) + 𝑤(1,1)𝑓(𝑥 + 1, 𝑦 + 1) (1.18)
𝑤−1,−1 𝑤−1,0 𝑤−1,1
𝑤0,−1 𝑤0,0 𝑤0,1
𝑤1,−1 𝑤1,0 𝑤1,1
FIGURA 1.8 - Máscara de um filtro 3x3.
Pixel (𝑥, 𝑦)
FIGURA 1.9 - Sistema de coordenadas para os pixels.
17
De um modo geral, para uma imagem de tamanho 𝑀 x 𝑁, sendo 𝑀 e 𝑁 ímpares, e
um filtro de tamanho 𝑚 x 𝑛, a equação 1.19 representa a operação de filtragem linear. Os
índices 𝑎 e 𝑏 são tais que 𝑚 = 2𝑎 + 1 e 𝑛 = 2𝑏 + 1; 𝑠 e 𝑡 são variáveis auxiliares.
𝑔(𝑥, 𝑦) = ∑ ∑ 𝑤(𝑠, 𝑡)𝑓(𝑥 + 𝑠, 𝑦 + 𝑡)
𝑏
𝑡=−𝑏
𝑎
𝑠=−𝑎
(1.19)
O procedimento anterior está intimamente relacionado a dois importantes
conceitos: correlação e convolução. O primeiro equivale à operação descrita na equação
1.19 e tem papel de destaque nas aplicações que envolvem busca de correspondência entre
imagens. Já a convolução difere apenas na utilização da máscara, que sofre uma rotação
de 180 graus antes da operação, e serve como base para a formulação da teoria que
relaciona matematicamente o domínio espacial e o domínio da frequência. As equações
1.20 e 1.21 descrevem, respectivamente, as operações de correlação e de convolução,
incluindo a simbologia usual.
𝑤(𝑥, 𝑦) ∘ 𝑓(𝑥, 𝑦) = ∑ ∑ 𝑤(𝑠, 𝑡)𝑓(𝑥 + 𝑠, 𝑦 + 𝑡)
𝑏
𝑡=−𝑏
𝑎
𝑠=−𝑎
(1.20)
𝑤(𝑥, 𝑦) ∗ 𝑓(𝑥, 𝑦) = ∑ ∑ 𝑤(𝑠, 𝑡)𝑓(𝑥 − 𝑠, 𝑦 − 𝑡)
𝑏
𝑡=−𝑏
𝑎
𝑠=−𝑎
(1.21)
1.3.2 - Domínio da Frequência
A abordagem no domínio da frequência é fundamentada a partir do uso da
transformada de Fourier para duas dimensões. No caso do processamento de imagens,
onde há uma divisão da imagem em pixels, utiliza-se a sua versão discreta. A definição
do par com a transformação direta (DFT-2D: Two Dimensional Discrete Fourier
Transform) e a inversa (IDFT-2D: Two Dimensional Inverse Discrete Fourier Transform)
é mostrada nas equações 1.22.
18
{
𝐹(𝑢, 𝑣) =∑∑ 𝑓(𝑥, 𝑦)𝑒
−𝑗2𝜋(𝑢𝑥
𝑀+𝑣𝑦
𝑁)
𝑁−1
𝑦=0
𝑀−1
𝑥=0
(1.22. 𝑎)
𝑓(𝑥, 𝑦) =1
𝑀𝑁∑∑ 𝐹(𝑢, 𝑣)𝑒
𝑗2𝜋(𝑢𝑥
𝑀+𝑣𝑦
𝑁)
𝑁−1
𝑣=0
𝑀−1
𝑢=0
(1.22. 𝑏)
onde 𝑢 é a componente de frequência horizontal, 𝑣 é a componente de frequência vertical
(ambas dadas em ciclos/pixel) e 𝐹(𝑢, 𝑣) é a transformada da imagem 𝑓(𝑥, 𝑦). Ambas
transformações geram sequências numéricas com domínio infinito e periódicas nas
direções horizontal e vertical, com períodos iguais a M e N, respectivamente. Para fins de
filtragem, pode-se considerar apenas um período das funções.
A filtragem no domínio da frequência consiste em modificar a DFT da imagem
utilizando uma função de transferência que representa o filtro, seguida da IDFT para
obtenção da imagem resultante. Este processo é representado matematicamente pela
equação 1.23, onde 𝐹(𝑢, 𝑣) é um período da DFT da imagem e 𝐻(𝑢, 𝑣) é a função de
transferência do filtro (ambas funções possuem dimensões 𝑀 por 𝑁). A notação ℑ−1
representa a operação de transformação inversa e 𝑔(𝑥, 𝑦) é a imagem de saída.
𝑔(𝑥, 𝑦) = ℑ−1[𝐻(𝑢, 𝑣)𝐹(𝑢, 𝑣)] (1.23)
Neste processo, a DFT da imagem terá seus elementos multiplicados pela função
do filtro e, com base nesse produto, pode-se projetar filtros para trabalhar nas regiões de
frequência que se deseja modificar. Por questão de simplicidade, costuma-se utilizar
𝐻(𝑢, 𝑣) simétrica em relação ao centro. Para isso é necessária também a centralização
dos elementos de 𝐹(𝑢, 𝑣), a qual pode ser facilmente obtida multiplicando 𝑓(𝑥, 𝑦) por
(−1)𝑥+𝑦 antes de aplicar a DFT. Este procedimento, exemplificado na FIGURA 1.10
para uma transformada com 𝑀 = 𝑁 = 50, desloca os elementos que correspondem às
menores frequências para o centro da matriz e, a partir deste ponto, a frequência crescerá
radialmente, atingindo os maiores valores nas suas extremidades.
19
Um detalhe que deve ser levado em conta nesta metodologia é que para evitar
efeitos indesejados na filtragem devidos à periodicidade da DFT da imagem, faz-se
necessário o preenchimento de zeros em torno de 𝑓(𝑥, 𝑦) (padding), que correspondem a
pixels pretos, de forma que a imagem fique com um tamanho P por Q, de acordo com as
inequações em 1.24. A função do filtro neste caso também deve respeitar estas dimensões.
Tipicamente é estipulado 𝑃 = 2𝑀 e 𝑄 = 2𝑁. A FIGURA 1.11 mostra um caso desta
prática.
{𝑃 ≤ 2𝑀 − 1𝑄 ≤ 2𝑁 − 1
(1.24)
FIGURA 1.11 - Preenchimento de zeros em torno da imagem. A imagem à esquerda, com seus pixels
representados numericamente, é ampliada com pixels nulos, formando a imagem à direita.
FIGURA 1.10 - Exemplo do processo de centralização: Forma comum de 𝐹(𝑢, 𝑣) (a); Forma após a
centralização (b). 𝑢 e 𝑣 são dados em ciclos/pixel. Obtidas no Matlab.
(a) (b)
25 12 23 15
24 57 85 45
55 45 21 18
36 21 01 08
25 12 23 15 0 0 0 0
24 57 85 45 0 0 0 0
55 45 21 18 0 0 0 0
36 21 01 08 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
20
Filtros básicos para as aplicações típicas podem ser projetados a partir de funções
circulares e concêntricas. As baixas frequências correspondem às transições gradativas
das tonalidades. Logo, um filtro passa-baixas irá suavizar a imagem. Por sua vez, as altas
frequências estão associadas às transições abruptas, como as bordas de objetos.
Consequentemente, um filtro passa-altas irá realçar estes traços. Eliminar apenas
a frequência DC, no centro da transformada, anula o valor da intensidade média da
imagem. Exemplos destes três processos são mostrados nas FIGURAS 1.12 e 1.13. Filtros
mais complexos, como passa-faixa e rejeita-faixa, podem ser obtidos a partir de
combinações dos casos anteriores.
(a) (b)
(c)
FIGURA 1.12 - Exemplo de imagens filtradas. (a) Imagem original. (b) Imagem processada por um
filtro passa-baixas. (c) Imagem processada por um filtro passa altas.
21
O uso de uma função 𝐻(𝑢, 𝑣) baseado na forma de um filtro ideal, apesar de ser
possível, possui limitações que impedem um desempenho perfeito, decorrente da
transição abrupta entre as bandas de passagem e de rejeição. Uma forma de reduzir este
problema é o uso de aproximações que possuam uma faixa de transição contínua, como
o caso dos filtros de Butterworth e gaussiano, descritos a seguir.
Filtro passa-baixas de Butterworth
A função de transferência deste tipo de filtro é descrita na expressão 1.25. A
variável 𝑛 é a ordem do filtro, que determina a inclinação da banda de transição; filtros
de maior ordem terão um decaimento mais rápido, gerando uma zona de transição mais
curta, aproximando-se do caso ideal. A função 𝐷(𝑢, 𝑣) é a distância de um ponto (𝑢, 𝑣)
para o centro do filtro, obtida a partir da relação 1.26. Já 𝐷0 é a frequência de corte do
filtro, definida como o raio do círculo que contém os pontos onde o valor de 𝐻(𝑢, 𝑣)
corresponde à metade de seu valor máximo (equivalente a 1 para os filtros abordados
nessa seção). A FIGURA 1.14 traz uma representação gráfica da função, bem como um
perfil radial para diferentes ordens.
𝐻(𝑢, 𝑣) =1
1 + (𝐷(𝑢, 𝑣)𝐷0
)2𝑛 (1.25)
𝐷(𝑢, 𝑣) = √[(𝑢 −𝑃
2)2
+ (𝑣 −𝑄
2)2
] (1.26)
(a) (b)
FIGURA 1.13 - Imagem (a) processada em um filtro que elimina o termo DC, resultando na imagem
(b).
22
FIGURA 1.14 - Função de transferência do filtro passa-baixas de Butterworth, com 𝐷𝑜 = 10 , 𝑛 = 2 e
𝑀 = 𝑁 = 50 (a). Perfis radiais da função para diferentes ordens 𝑛 (b) e frequências de corte 𝐷0 (c). As
variáveis 𝑢 e 𝑣 são dadas em ciclos/pixel. Obtidos por meio do software Matlab.
Filtro passa-baixas gaussiano
Este filtro é baseado nas curvas gaussianas - sua função aparece em 1.27. Ao
contrário do caso anterior, esta categoria não inclui ordens variadas. O único parâmetro
ajustável é 𝐷0, que aqui é a distância central para os pontos onde 𝐻(𝑢, 𝑣) assume 60,7%
do valor máximo. Essa função está ilustrada na FIGURA 1.15.
𝐻(𝑢, 𝑣) = 𝑒−𝐷2(𝑢,𝑣)
2𝐷02 (1.27)
(a)
(c) (b)
23
FIGURA 1.15 - Função de transferência do filtro passa-baixas gaussiano, com 𝐷𝑜 = 10 e 𝑀 = 𝑁 = 50
(a). Perfis radiais da função para diferentes frequências de corte 𝐷0 (c). As variáveis 𝑢 e 𝑣 são dadas em
ciclos/pixel. Obtidos por meio do software Matlab.
Filtro passa-altas de Butterworth
Sua função possui parâmetros idênticos à versão passa-baixas. A expressão 1.28 e
a FIGURA 1.16 descrevem seu formato.
𝐻(𝑢, 𝑣) =1
1 + (𝐷0
𝐷(𝑢, 𝑣))2𝑛 (1.28)
Filtro passa-altas gaussiano
De forma análoga aos filtros apresentados previamente, a seguir é mostrada
a definição do filtro passa-altas gaussiano. A função descrita em 1.29 está ilustrada na
FIGURA 1.17.
𝐻(𝑢, 𝑣) = 1 − 𝑒−𝐷2(𝑢,𝑣)
2𝐷02 (1.29)
(a) (b)
24
FIGURA 1.16 - Função de transferência do filtro passa-baixas de Butterworth, com 𝐷𝑜 = 10 , 𝑛 = 2 e
𝑀 = 𝑁 = 50 (a). Perfis radiais da função para diferentes ordens 𝑛 (b) e frequências de corte 𝐷0 (c).
As variáveis 𝑢 e 𝑣 são dadas em ciclos/pixel. Obtidos por meio do software Matlab.
FIGURA 1.17 - Função de transferência do filtro passa-altas gaussiano, com 𝐷𝑜 = 10 e 𝑀 = 𝑁 = 50
(a). Perfis radiais da função para diferentes frequências de corte 𝐷0 (c). As variáveis 𝑢 e 𝑣 são dadas em
ciclos/pixel. Obtidos por meio do software Matlab.
(a)
(b) (c)
(a) (b)
25
1.4 - Um Circuito Analógico de CNN do Tipo FSR em Tecnologia CMOS
O desempenho de uma CNN depende em grande parte do funcionamento das
sinapses. Portanto, o projeto de um circuito eficiente para esta função é imprescindível
para a obtenção de uma arquitetura que corresponda às necessidades deste trabalho. Tal
desenvolvimento, documentado em [12], produziu um circuito que utiliza de forma
inteligente o reaproveitamento de blocos para torná-lo menor e com baixo consumo,
dentre outras vantagens obtidas.
Nesta abordagem, aplicada para a construção de uma rede do tipo FSR, a sinapse é
realizada a partir de multiplicadores em modo corrente-tensão, com entradas em corrente
e tensão e saída em corrente, cujo núcleo é formado a partir da estrutura representada na
FIGURA 1.18. A operação é feita a partir do espelhamento da transcondutância de fonte
entre os transistores M1 e M3A, considerando ambos operando no início da região de
não-saturação. Pode-se demonstrar que o valor da corrente na saída 𝑖𝑜𝑢𝑡𝐴 será dado pela
expressão (1.30).
𝑖𝑜𝑢𝑡𝐴 =𝑖𝑖𝑛+𝐼𝐵
𝑉𝐷𝑆1(𝑉𝐼𝐷𝐶 + 𝑘𝑣𝑖𝑛) (1.30)
Os transistores M3C, M4, M5, M6 e M7 operam em saturação, 𝑉𝐼𝐷𝐶 é o
deslocamento de nível total desde o terminal de porta do transistor M7 até o terminal de
porta de M4 e k é um fator gerado pelo efeito de corpo.
FIGURA 1.18 - Núcleo do multiplicador. Extraído de [15].
26
Os níveis de polarização do circuito anterior produzem termos indesejados no
produto, logo é realizado o cancelamento destes componentes, a partir da combinação de
produtos e subtrações envolvendo os sinais do lado direito da relação em 1.30.
Com base neste núcleo, foi concebida uma arquitetura para uma rede neuronal
celular analógica do tipo FSR, cujas células são constituídas pelos circuitos da FIGURA
1.19. Nesta rede é utilizada para as sinapses uma versão do multiplicador com operação
em quatro quadrantes, com a inclusão do subtrator para efetuar o cancelamento citado
anteriormente.
Os coeficientes da rede são introduzidos em cada sinapse a partir do sinal de
corrente 𝑖𝑖𝑛, no bloco gerador de peso. Por sua vez, os sinais de entrada e representativos
dos estados das células assumem, em cada sinapse, a forma da tensão 𝑣𝑖𝑠ℎ. Os
multiplicadores processam os termos e produzem como resultado as correntes designadas
𝑖𝑜𝑢𝑡, em cada sinapse, sendo inseridas no ponto X. A confluência destas correntes no
ponto X corresponde ao somatório das saídas das sinapses referentes aos parâmetros A e
B conforme (1.3), além do limiar, que também é implementado a partir de um bloco de
sinapse adicional. Neste mesmo nó é conectado também um grampeador para produzir
𝑔𝑝(𝑥), como descrito em (1.4). Adicionalmente, a integração neste ponto é facilitada ao
ser realizada a partir da capacitância total decorrente destes blocos, dispensando a
necessidade de um circuito específico. Finalmente, a saída da célula corresponde ao sinal
de tensão 𝑣𝑜, após passar por um deslocamento de nível.
Uma implementação de CNN em tecnologia CMOS de comprimento mínimo igual
a 0,13 µm, com base nesta arquitetura, também foi concebida em [12], sendo
posteriormente fabricado. Uma versão de dimensões 10x10 pré-leiaute foi utilizada para
as simulações relatadas nos próximos capítulos.
29
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 00 𝑎1 00 0 0
Padrão 4:
0 𝑎1 0𝑎1 𝑎2 𝑎10 𝑎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
FIGURA 2.5 - Resultados do aprendizado para a função diferença lógica.
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
𝑆𝐷
FIGURA 2.14 - Resultados do aprendizado para a função dilatação.
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
CAPÍTULO 3 - APLICAÇÕES EM FILTRAGEM DE IMAGENS
3.1 - Metodologia
3.1.1 - Obtenção de Imagens
O par de imagens entrada-saída necessário para aplicação do algoritmo de
aprendizado foi obtido com base na fundamentação da seção 1.3.2, a partir da utilização
do procedimento apresentado em [26] e reproduzido nesta seção.
O primeiro passo é a realização de padding na imagem a ser filtrada, 𝑓(𝑥, 𝑦), de
dimensões 𝑀𝑥𝑁, tal que a imagem resultante, 𝑓𝑝(𝑥, 𝑦) possua 𝑃𝑥𝑄 pixels, obedecendo
às relações em (1.24). Por simplicidade, optou-se pela utilização de imagens quadradas
(𝑀 = 𝑁) e admitiu-se 𝑃 = 2𝑀 e 𝑄 = 2𝑁.
A partir disso deve-se realizar a centralização da transformada da imagem,
multiplicando 𝑓𝑝(𝑥, 𝑦) por (−1)𝑥+𝑦, e calcular sua DFT, 𝐹(𝑢, 𝑣).
Em seguida, aplica-se a filtragem realizando o produto entre os elementos de
𝐹(𝑢, 𝑣) e os da função de transferência do filtro desejado, 𝐻(𝑢, 𝑣).
Com o resultado anterior, obtém-se a imagem processada 𝑔𝑝(𝑥, 𝑦), correspondendo
à imagem ampliada 𝑓𝑝(𝑥, 𝑦), aplicando a equação (3.1).
𝑔𝑝(𝑥, 𝑦) = {𝑟𝑒𝑎𝑙[ℑ−1[𝐺(𝑢, 𝑣)]}(−1)𝑥+𝑦 (3.1)
onde somente a parte real da transformada inversa é considerada, desprezando resíduos
imaginários decorrentes dos métodos numéricos envolvidos.
Finalmente, extrai-se a parte útil de 𝑔𝑝(𝑥, 𝑦), o bloco de tamanho 𝑀𝑥𝑁 formado
no quadrante superior esquerdo, obtendo-se a imagem filtrada, 𝑔(𝑥, 𝑦).
3.1.2 - Filtros
Foram selecionados para os testes tanto filtros com resposta ao impulso finita
(FIR) como filtros com resposta ao impulso infinita (IIR), estando inclusas em ambas
alternativas exemplares dos tipos de Butterworth e Gaussiano, com características passa-
baixas e passa-altas. Os filtros IIR são formados a partir das funções de transferência
44
(1.25), (1.27), (1.28) e (1.29), já os filtros FIR derivam do truncamento destas funções,
aplicando uma janela retangular no domínio espacial, a qual mantém os elementos
centrais e anula o restante. Este procedimento limita a resposta do filtro, contudo
o processamento se torna mais semelhante ao da CNN, tornando mais fácil o aprendizado
para tais funções, em geral. A TABELA 3.1 resume as especificações dos filtros
simulados.
TABELA 3.1 - Filtros utilizados nas simulações.
Classificação Nome
Frequência de
corte
(ciclos/pixel)
Filtro FIR
Passa-baixas
Butterworth
Ordem 1
FIR 1 2
FIR 2 4
FIR 3 6
Gaussiano
FIR 4 2
FIR 5 4
FIR 6 6
Passa-altas
Butterworth
Ordem 1
FIR 7 5
FIR 8 7
FIR 9 9
Gaussiano
FIR 10 5
FIR 11 7
FIR 12 9
Filtro IIR
Passa-baixas
Butterworth
Ordem 1
IIR 1 2
IIR 2 4
IIR 3 6
Gaussiano
IIR 4 2
IIR 5 4
IIR 6 6
Passa-altas
Butterworth
Ordem 1
IIR 7 5
IIR 8 7
IIR 9 9
Gaussiano
IIR 10 5
IIR 11 7
IIR 12 9
3.1.3 - Treinamento
Para o treinamento da rede utilizou-se uma imagem de tamanho 100x100, exibida
na FIGURA 3.1, cujos pixels tiveram seus valores em escala de cinza gerados
aleatoriamente. A imagem de entrada foi replicada no estado inicial da rede, para acelerar
o processamento.
45
A princípio, tentou-se utilizar a rede operando no modo desacoplado, realizando
a atualização apenas da matriz B no aprendizado, mas com exceção dos filtros FIR passa-
baixas, o baixo desempenho obtido exigiu o uso de todos os parâmetros da matriz A.
O limiar foi mantido nulo. O treinamento para os filtros é em geral significativamente
mais demorado do que para as funções binárias, oriundo tanto do maior tempo de resposta
da rede durante a filtragem, quanto da necessidade de mais iterações. Esta diferença foi
amplificada pelo uso de uma imagem maior, chegando a levar horas quando se permitiu
a variação de A. Na maioria dos casos, o treinamento chegou ao limite de iterações
definido devido ao fato do erro em alguns pixels se manter em valores bem grandes, acima
da tolerância. Também se notou que, a partir de um certo ponto, o desempenho do
aprendizado deixa de apresentar uma evolução significativa. Portanto, preferiu-se utilizar
um limite de passos suficientemente grande para interromper o processo logo após chegar
a este estágio, que ocorreu em momentos diferentes de acordo com o filtro em questão.
3.1.4 - Resultados
Nas próximas páginas estão os resultados, organizados de forma semelhante à seção
2.3, com a inclusão de uma comparação com as imagens processadas segundo o método
da filtragem no domínio da frequência, descrito na subseção 3.1.1, e os respectivos erros
máximo e RMS (Root mean square). O erro individual dos pixels no pior caso alcançou
aproximadamente 25% da faixa total, enquanto o erro RMS não ultrapassou 14 %.
Todavia, para a maioria dos demais filtros, os valores encontrados residiram em níveis
bem menores.
FIGURA 3.1 - Imagem utilizada para o
treinamento.
46
a. FIR 1 (Passa-baixas de Butterworth, D0=2, n=1)
FIGURA 3.2 - Resultados do aprendizado para o filtro FIR 1.
FIGURA 3.3 - Simulação 1 da aplicação de FIR 1. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 41 µs
Erro RMS 13,5 %
Erro máximo 24,7 %
A (Padrão 3) B (Padrão 5) Z
16,02 nA 10,34 nA 16,02 nA 5,01 nA 5,82 nA 5,01 nA 0
10,34 nA -175 nA 10,34 nA 5,82 nA 13,85 nA 5,82 nA
16,02 nA 10,34 nA 16,02 nA 5,01 nA 5,82 nA 5,01 nA
Nº de iterações 500
Tempo de execução 7,72 h
Componente
atualizado
Taxa de
Aprendizado
As 0,5
B 10
47
FIGURA 3.4 - Simulação 2 da aplicação de FIR 1. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 46 µs
Erro RMS 9,45 %
Erro máximo 17,6 %
48
b. FIR 2 (Passa-baixas de Butterworth, D0=4, n=1)
FIGURA 3.5 - Resultados do aprendizado para o filtro FIR 2.
FIGURA 3.6 - Simulação 1 da aplicação de FIR 2. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 1,45 µs
Erro RMS 7,22 %
Erro máximo 11,8 %
A (Padrão 3) B (Padrão 5) Z
0 0 0 9,36 nA 15,8 nA 9,36 nA 0
0 -175 nA 0 15,8 nA 48,01 nA 15,8 nA
0 0 0 9,36 nA 15,8 nA 9,36 nA
Nº de iterações 95
Tempo de execução 0.093 s
Componente
atualizado
Taxa de
Aprendizado
B 10
49
FIGURA 3.7 - Simulação 2 da aplicação de FIR 2. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 28 µs
Erro RMS 7,2 %
Erro máximo 14,9 %
50
c. FIR 3 (Passa-baixas de Butterworth, D0=6, n=1)
FIGURA 3.8 - Resultados do aprendizado para o filtro FIR 3.
FIGURA 3.9 - Simulação 1 da aplicação de FIR 3. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 0,89 µs
Erro RMS 2,34 %
Erro máximo 6,27 %
A (Padrão 3) B (Padrão 5) Z
0 0 0 6,7 nA 16,53 nA 6,7 nA 0
0 -175 nA 0 16,53 nA 74,21 nA 16,53 nA
0 0 0 6,7 nA 16,53 nA 6,7 nA
Nº de iterações 99
Tempo de execução 0.093 s
Componente
atualizado
Taxa de
Aprendizado
B 10
51
FIGURA 3.10 - Simulação 2 da aplicação de FIR 3. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 37,5 µs
Erro RMS 2,6 %
Erro máximo 5,88 %
52
d. FIR 4 (Passa-baixas gaussiano, D0=2)
FIGURA 3.11 - Resultados do aprendizado para o filtro FIR 4.
FIGURA 3.12 - Simulação 1 da aplicação de FIR 4. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 42 µs
Erro RMS 12,2 %
Erro máximo 22,4 %
A (Padrão 3) B (Padrão 5) Z
16,52 nA 10,82 nA 16,52 nA 6,95 nA 6,08 nA 6,95 nA 0
10,82 nA -175 nA 10,82 nA 6,08 nA 4,91 nA 6,08 nA
16,52 nA 10,82 nA 16,52 nA 6,95 nA 6,08 nA 6,95 nA
Nº de iterações 500
Tempo de execução 1,5 h
Componente
atualizado
Taxa de
Aprendizado
As 0,5
B 10
53
FIGURA 3.13 - Simulação 2 da aplicação de FIR 4. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 48,5 µs
Erro RMS 8,1 %
Erro máximo 14,9 %
54
e. FIR 5 (Passa-baixas gaussiano, D0=4)
FIGURA 3.14 - Resultados do aprendizado para o filtro FIR 5.
FIGURA 3.15 - Simulação 1 da aplicação de FIR 5. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 18,5 µs
Erro RMS 2,06 %
Erro máximo 4,31 %
A (Padrão 3) B (Padrão 5) Z
0 0 0 10,24 nA 20,58 nA 10,24 nA 0
0 -175 nA 0 20,58 nA 42,95 nA 20,58 nA
0 0 0 10,24 nA 20,58 nA 10,24 nA
Nº de iterações 99
Tempo de execução 0.093 s
Componente
atualizado
Taxa de
Aprendizado
B 10
55
FIGURA 3.16 - Simulação 2 da aplicação de FIR 5. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 38 µs
Erro RMS 2,22 %
Erro máximo 4,71 %
56
f. FIR 6 (Passa-baixas gaussiano, D0=6)
FIGURA 3.17 - Resultados do aprendizado para o filtro FIR 6.
FIGURA 3.18 - Simulação 1 da aplicação de FIR 6. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 2 µs
Erro RMS 6,12 %
Erro máximo 12,2 %
A (Padrão 3) B (Padrão 5) Z
0 0 0 4,69 nA 20,14 nA 4,69 nA 0
0 -175 nA 0 20,14 nA 80,91 nA 20,14 nA
0 0 0 4,69 nA 20,14 nA 4,69 nA
Nº de iterações 97
Tempo de execução 0.093 s
Componente
atualizado
Taxa de
Aprendizado
B 10
57
FIGURA 3.19 - Simulação 2 da aplicação de FIR 6. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 38 µs
Erro RMS 6,37 %
Erro máximo 9,41 %
58
g. FIR 7 (Passa-altas de Butterworth, D0=5, n=1)
FIGURA 3.20 - Resultados do aprendizado para o filtro FIR 7.
FIGURA 3.21 - Simulação 1 da aplicação de FIR 7. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 45 µs
Erro RMS 9,88 %
Erro máximo 25,5 %
A (Padrão 5) B (Padrão 5) Z
37,22 nA 10,91 nA 37,22 nA -18,18 nA -12,41 nA -18,18 nA 0
10,91 nA -175 nA 10,91 nA -12,41 nA 104,6 nA -12,41 nA
37,22 nA 10,91 nA 37,22 nA -18,18 nA -12,41 nA -18,18 nA
Nº de iterações 500
Tempo de execução 4,38 h
Componentes
atualizados
Taxa de
Aprendizado
As 10
B 10
59
FIGURA 3.22 - Simulação 2 da aplicação de FIR 7. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 90,5 µs
Erro RMS 7,51 %
Erro máximo 23,1 %
60
h. FIR 8 (Passa-altas de Butterworth, D0=7, n=1)
FIGURA 3.23 - Resultados do aprendizado para o filtro FIR 8.
FIGURA 3.24 - Simulação 1 da aplicação de FIR 8. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 52,5 µs
Erro RMS 6,49 %
Erro máximo 16,9 %
A (Padrão 5) B (Padrão 5) Z
28,10 nA 21,08 nA 28,10 nA -9,89 nA -16,14 nA -9,89 nA 0
21,08 nA -175 nA 21,08 nA -16,14 nA 89,14 nA -16,14 nA
28,10 nA 21,08 nA 28,10 nA -9,89 nA -16,14 nA -9,89 nA
Nº de iterações 500
Tempo de execução 11,28 h
Componentes
atualizados
Taxa de
Aprendizado
As 10
B 10
61
FIGURA 3.25 - Simulação 2 da aplicação de FIR 8. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 73 µs
Erro RMS 6,54 %
Erro máximo 21,2 %
62
i. FIR 9 (Passa-altas de Butterworth, D0=9, n=1)
FIGURA 3.26 - Resultados do aprendizado para o filtro FIR 9.
FIGURA 3.27 - Simulação 1 da aplicação de FIR 9. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 52,5 µs
Erro RMS 5,16 %
Erro máximo 13,7 %
A (Padrão 5) B (Padrão 5) Z
28,44 nA 19,78 nA 28,44 nA -6,95 nA -13,32 nA -6,95 nA 0
19,78 nA -175 nA 19,78 nA -13,32 nA 66,73 nA -13,32 nA
28,44 nA 19,78 nA 28,44 nA -6,95 nA -13,32 nA -6,95 nA
Nº de iterações 500
Tempo de execução 8,59 h
Componentes
atualizados
Taxa de
Aprendizado
As 10
B 10
63
FIGURA 3.28 - Simulação 2 da aplicação de FIR 9. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 65,5 µs
Erro RMS 4,57 %
Erro máximo 14,9 %
64
j. FIR 10 (Passa-altas gaussiano, D0=5)
FIGURA 3.29 - Resultados do aprendizado para o filtro FIR 10.
FIGURA 3.30 - Simulação 1 da aplicação de FIR 10. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 46,5 µs
Erro RMS 7,36 %
Erro máximo 18,8 %
A (Padrão 5) B (Padrão 5) Z
32,02 nA 16,33 nA 32,02 nA -11,93 nA -15,15 nA -11,93 nA 0
16,33 nA -175 nA 16,33 nA -15,15 nA 86,29 nA -15,15 nA
32,02 nA 16,33 nA 32,02 nA -11,93 nA -15,15 nA -11,93 nA
Nº de iterações 500
Tempo de execução 6,73 h
Componentes
atualizados
Taxa de
Aprendizado
As 10
B 10
65
FIGURA 3.31 - Simulação 2 da aplicação de FIR 10. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 67,5 µs
Erro RMS 5,44 %
Erro máximo 16,1 %
66
k. FIR 11 (Passa-altas gaussiano, D0=7)
FIGURA 3.32 - Resultados do aprendizado para o filtro FIR 11.
FIGURA 3.33 - Simulação 1 da aplicação de FIR 11. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 63 µs
Erro RMS 6,49 %
Erro máximo 16,9 %
A (Padrão 5) B (Padrão 5) Z
22,04 nA 27,76 nA 22,04 nA -4,97 nA -18,37 nA -4,97 nA 0
27,76 nA -175 nA 27,76 nA -18,37 nA 75,58 nA -18,37 nA
22,04 nA 27,76 nA 22,04 nA -4,97 nA -18,37 nA -4,97 nA
Nº de iterações 500
Tempo de execução 13,12 h
Componentes
atualizados
Taxa de
Aprendizado
As 10
B 10
67
FIGURA 3.34 - Simulação 2 da aplicação de FIR 11. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 138 µs
Erro RMS 3,86 %
Erro máximo 11,4 %
68
l. FIR 12 (Passa-altas gaussiano, D0=9)
FIGURA 3.35 - Resultados do aprendizado para o filtro FIR 12.
FIGURA 3.36 - Simulação 1 da aplicação de FIR 12. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 56,5 µs
Erro RMS 3,41 %
Erro máximo 9,02 %
A (Padrão 5) B (Padrão 5) Z
23,58 nA 24,63 nA 23,58 nA -3,14 nA -13,52 nA -3,14 nA 0
24,63 nA -175 nA 24,63 nA -13,52 nA 52,86 nA -13,52 nA
23,58 nA 24,63 nA 23,58 nA -3,14 nA -13,52 nA -3,14 nA
Nº de iterações 500
Tempo de execução 10,55 h
Componentes
atualizados
Taxa de
Aprendizado
As 10
B 10
69
FIGURA 3.37 - Simulação 2 da aplicação de FIR 12. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 92 µs
Erro RMS 2,85 %
Erro máximo 7,45 %
70
m. IIR 1 (Passa-baixas de Butterworth, D0=2, n=1)
FIGURA 3.38 - Resultados do aprendizado para o filtro IIR 1.
FIGURA 3.39 - Simulação 1 da aplicação de IIR 1. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 44 µs
Erro RMS 5,45 %
Erro máximo 9,8 %
A (Padrão 5) B (Padrão 5) Z
18,04 nA 12,92 nA 18,04 nA 1,02 nA 3,98 nA 1,02 nA 0
12,92 nA -175 nA 12,92 nA 3,98 nA 14,66 nA 3,98 nA
18,04 nA 12,92 nA 18,04 nA 1,02 nA 3,98 nA 1,02 nA
Nº de iterações 487
Tempo de execução 25,76 min
Componente
atualizado
Taxa de
Aprendizado
As 10
B 10
71
FIGURA 3.40 - Simulação 2 da aplicação de IIR 1. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 84,5 µs
Erro RMS 7,09 %
Erro máximo 12,5 %
72
n. IIR 2 (Passa-baixas de Butterworth, D0=4, n=1)
FIGURA 3.41 - Resultados do aprendizado para o filtro IIR 2.
FIGURA 3.42 - Simulação 1 da aplicação de IIR 2. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 2 µs
Erro RMS 2,56 %
Erro máximo 5,88 %
A (Padrão 5) B (Padrão 5) Z
5,01 nA 5,03 nA 5,01 nA 5,69 nA 12,19 nA 5,69 nA 0
5,03 nA -175 nA 5,03 nA 12,19 nA 42,83 nA 12,19 nA
5,01 nA 5,03 nA 5,01 nA 5,69 nA 12,19 nA 5,69 nA
Nº de iterações 11
Tempo de execução 15,53 s
Componente
atualizado
Taxa de
Aprendizado
As 10
B 10
73
FIGURA 3.43 - Simulação 2 da aplicação de IIR 2. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 41 µs
Erro RMS 3,73 %
Erro máximo 6,67 %
74
o. IIR 3 (Passa-baixas de Butterworth, D0=6, n=1)
FIGURA 3.44 - Resultados do aprendizado para o filtro IIR 3.
FIGURA 3.45 - Simulação 1 da aplicação de IIR 3. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 2 µs
Erro RMS 4,56 %
Erro máximo 11 %
A (Padrão 5) B (Padrão 5) Z
3,3 nA 4,97 nA 3,3 nA 4,3 nA 12,74 nA 4,3 nA 0
4,97 nA -175 nA 4,97 nA 12,74 nA 61,8 nA 12,74 nA
3,3 nA 4,97 nA 3,3 nA 4,3 nA 12,74 nA 4,3 nA
Nº de iterações 8
Tempo de execução 10,83 s
Componente
atualizado
Taxa de
Aprendizado
As 10
B 10
75
FIGURA 3.46 - Simulação 2 da aplicação de IIR 3. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 40,5 µs
Erro RMS 5,38 %
Erro máximo 10,6 %
76
p. IIR 4 (Passa-baixas gaussiano, D0=2)
FIGURA 3.47 - Resultados do aprendizado para o filtro IIR 4.
FIGURA 3.48 - Simulação 1 da aplicação de IIR 4. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 42,5 µs
Erro RMS 7,24 %
Erro máximo 11,8 %
A (Padrão 5) B (Padrão 5) Z
16,66 nA 13,41 nA 16,66 nA 3,4 nA 4,64 nA 3,4 nA 0
13,41 nA -175 nA 13,41 nA 4,64 nA 5,94 nA 4,64 nA
16,66 nA 13,41 nA 16,66 nA 3,4 nA 4,64 nA 3,4 nA
Nº de iterações 500
Tempo de execução 25,42 min
Componente
atualizado
Taxa de
Aprendizado
A 10
B 10
77
FIGURA 3.49 - Simulação 2 da aplicação de IIR 4. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
5 (a) (b)
(c)
Tempo de
processamento 72 µs
Erro RMS 5,46 %
Erro máximo 9,8 %
78
q. IIR 5 (Passa-baixas gaussiano, D0=4)
FIGURA 3.50 - Resultados do aprendizado para o filtro IIR 5.
FIGURA 3.51 - Simulação 1 da aplicação de IIR 5. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 3 µs
Erro RMS 4,21 %
Erro máximo 8,63 %
A (Padrão 5) B (Padrão 5) Z
4,04 nA 4,53 nA 4,04 nA 7,5 nA 15,65 nA 7,5 nA 0
4,53 nA -175 nA 4,53 nA 15,65 nA 33,37 nA 15,65 nA
4,04 nA 4,53 nA 4,04 nA 7,5 nA 15,65 nA 7,5 nA
Nº de iterações 7
Tempo de execução 9,66 s
Componente
atualizado
Taxa de
Aprendizado
A 10
B 10
79
FIGURA 3.52 - Simulação 2 da aplicação de IIR 5. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 41,5 µs
Erro RMS 5,2 %
Erro máximo 9,8 %
80
r. IIR 6 (Passa-baixas gaussiano, D0=6)
FIGURA 3.53 - Resultados do aprendizado para o filtro IIR 6.
FIGURA 3.54 - Simulação 1 da aplicação de IIR 6. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 26 µs
Erro RMS 6,36 %
Erro máximo 11 %
A (Padrão 5) B (Padrão 5) Z
1,85 nA 6,08 nA 1,85 nA 2,52 nA 16,54 nA 2,52 nA 0
6,08 nA -175 nA 6,08 nA 16,54 nA 75,68 nA 16,54 nA
1,85 nA 6,08 nA 1,85 nA 2,52 nA 16,54 nA 2,52 nA
Nº de iterações 14
Tempo de execução 19s
Componente
atualizado
Taxa de
Aprendizado
A 10
B 10
81
FIGURA 3.55 - Simulação 2 da aplicação de IIR 6. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 41,5 µs
Erro RMS 6,86 %
Erro máximo 11,8 %
82
s. IIR 7 (Passa-altas de Butterworth, D0=5, n=1)
FIGURA 3.56 - Resultados do aprendizado para o filtro IIR 7.
FIGURA 3.57 - Simulação 1 da aplicação de IIR 7. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 49,5 µs
Erro RMS 6,44 %
Erro máximo 19,2 %
A (Padrão 5) B (Padrão 5) Z
28,13 nA 20,43 nA 28,13 nA -11,43 nA -14,64 nA -11,43 nA 0
20,43 nA -175 nA 20,43 nA -14,64 nA 91,13 nA -14,64 nA
28,13 nA 20,43 nA 28,13 nA -11,43 nA -14,64 nA -11,43 nA
Nº de iterações 500
Tempo de execução 5,43 h
Componente
atualizado
Taxa de
Aprendizado
As 10
B 10
83
FIGURA 3.58 - Simulação 2 da aplicação de IIR 7. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 71,5 µs
Erro RMS 5,23 %
Erro máximo 14,1 %
84
t. IIR 8 (Passa-altas de Butterworth, D0=7, n=1)
FIGURA 3.59 - Resultados do aprendizado para o filtro IIR 8.
FIGURA 3.60 - Simulação 1 da aplicação de IIR 8. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 46,5 µs
Erro RMS 6,32 %
Erro máximo 15,3 %
A (Padrão 5) B (Padrão 5) Z
31,82 nA 16,72 nA 31,82 nA -10,4 nA -13,58 nA -10,4 nA 0
16,72 nA -175 nA 16,72 nA -13,58 nA 79,83 nA -13,58 nA
31,82 nA 16,72 nA 31,82 nA -10,4 nA -13,58 nA -10,4 nA
Nº de iterações 500
Tempo de execução 7,57 h
Componente
atualizado
Taxa de
Aprendizado
As 10
B 10
85
FIGURA 3.61 - Simulação 2 da aplicação de IIR 8. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 59 µs
Erro RMS 5,25 %
Erro máximo 17,6 %
86
u. IIR 9 (Passa-altas de Butterworth, D0=9, n=1)
FIGURA 3.62 - Resultados do aprendizado para o filtro IIR 9.
FIGURA 3.63 - Simulação 1 da aplicação de IIR 9. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 54,5 µs
Erro RMS 4 %
Erro máximo 10,2 %
A (Padrão 5) B (Padrão 5) Z
22,7 nA 25,73 nA 22,7 nA -5,75 nA -15,48 nA -5,75 nA 0
25,73 nA -175 nA 25,73 nA -15,48 nA 71,24 nA -15,48 nA
22,7 nA 25,73 nA 22,7 nA -5,75 nA -15,48 nA -5,75 nA
Nº de iterações 500
Tempo de execução 6,05 h
Componente
atualizado
Taxa de
Aprendizado
As 10
B 10
87
FIGURA 3.64 - Simulação 2 da aplicação de IIR 9. (a) Imagem de entrada e estado inicial; (b) Imagem de
saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 72 µs
Erro RMS 4,85 %
Erro máximo 16,9 %
88
v. IIR 10 (Passa-altas gaussiano, D0=5)
FIGURA 3.65 - Resultados do aprendizado para o filtro IIR 10.
FIGURA 3.66 - Simulação 1 da aplicação de IIR 10. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 56,5 µs
Erro RMS 7,64 %
Erro máximo 18,4 %
A (Padrão 5) B (Padrão 5) Z
27,55 nA 22,9 nA 27,55 nA -11,59 nA -20,3 nA -11,59 nA 0
22,9 nA -175 nA 22,9 nA -20,3 nA 104,38 nA -20,3 nA
27,55 nA 22,9 nA 27,55 nA -11,59 nA -20,3 nA -11,59 nA
Nº de iterações 500
Tempo de execução 6,51 h
Componente
atualizado
Taxa de
Aprendizado
As 10
B 10
89
FIGURA 3.67 - Simulação 2 da aplicação de IIR 10. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 80,5 µs
Erro RMS 5,52 %
Erro máximo 18 %
90
w. IIR 11 (Passa-altas gaussiano, D0=7)
FIGURA 3.68 - Resultados do aprendizado para o filtro IIR 11.
FIGURA 3.69 - Simulação 1 da aplicação de IIR 11. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 52 µs
Erro RMS 5,08 %
Erro máximo 12,9 %
A (Padrão 5) B (Padrão 5) Z
26,86 nA 21,07 nA 26,86 nA -6,52 nA -16,1 nA -6,52 nA 0
21,07 nA -175 nA 21,07 nA -16,1 nA 70,46 nA -16,1 nA
26,86 nA 21,07 nA 26,86 nA -6,52 nA -16,1 nA -6,52 nA
Nº de iterações 500
Tempo de execução 10,39 h
Componente
atualizado
Taxa de
Aprendizado
As 10
B 10
91
FIGURA 3.70 - Simulação 2 da aplicação de IIR 11. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 60,5 µs
Erro RMS 4,75 %
Erro máximo 15,7 %
92
x. IIR 12 (Passa-altas gaussiano, D0=9)
FIGURA 3.71 - Resultados do aprendizado para o filtro IIR 12.
FIGURA 3.72 – Simulação 1 da aplicação de IIR 12. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
(a) (b)
(c)
Tempo de
processamento 54 µs
Erro RMS 3,71 %
Erro máximo 11,8 %
A (Padrão 5) B (Padrão 5) Z
17,05 nA 30,47 nA 17,05 nA -2,05 nA -15,81 nA -2,05 nA 0
30,47 nA -175 nA 30,47 nA -15,81 nA 57,6 nA -15,81 nA
17,05 nA 30,47 nA 17,05 nA -2,05 nA -15,81 nA -2,05 nA
Nº de iterações 500
Tempo de execução 7,39 h
Componente
atualizado
Taxa de
Aprendizado
As 10
B 10
93
FIGURA 3.73 - Simulação 2 da aplicação de IIR 12. (a) Imagem de entrada e estado inicial; (b) Imagem
de saída da CNN. (c) Imagem gerada pelo método da filtragem em frequência.
As TABELAS 3.1 e 3.2 resumem os resultados das simulações mostradas
anteriormente, contendo os filtros passa-baixas e passa-altas, respectivamente.
Os filtros FIR 2, FIR 3, FIR 5 e FIR 6 foram os únicos cujo treinamento teve um
bom desempenho utilizando apenas a matriz 𝐵. Uma constatação importante é que o
maior fator que pesou na duração da execução do CMA foi a simulação da CNN, que é
executada 1 vez em cada iteração. Isto ocorre pelo fato da varredura passar por regiões
onde a rede necessita de muito mais tempo para chegar à estabilidade. Como este
fenômeno aconteceu com menos frequência no aprendizado de funções onde as redes são
desacopladas (matriz 𝐴 nula, com exceção do elemento central), houve um menor efeito
no processo. Além disso, com o menor número de parâmetros variáveis, o algoritmo tende
a necessitar de menos iterações. Essa combinação de condições resultou num baixo tempo
de processamento para os filtros citados, em comparação aos demais.
Para os filtros passa-baixas, percebe-se que o erro máximo em geral esteve próximo
de 10%, enquanto o erro RMS manteve-se entre 2 e 7%. As exceções são os filtros FIR 1
e FIR 4, que apresentaram uma imprecisão maior.
(a) (b)
(c)
Tempo de
processamento 67,5 µs
Erro RMS 2,74 %
Erro máximo 9,02 %
94
Uma análise da segunda tabela revela que houve um desempenho inferior para
os filtros passa-altas do ponto de vista do erro máximo, tendo este erro na maior parte dos
exemplos chegado próximo a 20 %, com destaque para FIR 7, cujos valores do erro
máximo foram mais acentuados que os demais (25,5 % e 23,1 % nas simulações 1 e 2,
respectivamente). Contudo, o erro RMS se manteve próximo aos correspondentes aos
filtros passa-baixas. Nota-se ainda que a segunda imagem foi melhor processada por
quase todos os filtros passa-altas, exceto FIR 8 e IIR 9.
95
TABELA 3.2 – Resultados dos filtros passa-baixas.
CLASSIFICAÇÃO NOME D
0
(cic/px)
PARAMETROS
TREINADOS
NÚMERO DE
ITERAÇÕES
TEMPO DO
TREINAMENTO SIMULAÇÃO
ERRO MÁX
(%)
ERRO RMS
(%)
FIR
Butterworth
Ordem 1
FIR 1 2 As, B 500 7,72 h 1 24,7 13,5
2 17,6 9,45
FIR 2 4 B 95 0,093 s 1 11,8 7,22
2 14,9 7,2
FIR 3 6 B 99 0,093 s 1 6,27 2,34
2 5,88 2,6
Gaussiano
FIR 4 2 As, B 500 1,5 h 1 22,4 12,2
2 14,9 8,2
FIR 5 4 B 99 0,093 s 1 4,31 2,06
2 4,71 2,22
FIR 6 6 B 97 0,093 s 1 12,2 6,12
2 9,41 6,37
IIR
Butterworth
Ordem 1
IIR 1 2 As, B 487 25,76 min 1 9,8 5,45
2 12,5 7,09
IIR 2 4 As, B 11 15,53 s 1 5,88 2,56
2 6,67 3,73
IIR 3 6 As, B 8 10,83 s 1 11 4,56
2 10,6 5,38
Gaussiano
IIR 4 2 As, B 500 25,42 min 1 11,8 7,24
2 9,8 5,46
IIR 5 4 As, B 7 9,66 s 1 8,63 4,21
2 9,8 5,2
IIR 6 6 As, B 14 19 s 1 11 6,36
2 11,8 6,86
96
TABELA 3.3 – Resultados dos filtros passa-altas.
CLASSIFICAÇÃO NOME D
0
(cic/px)
PARAMETROS
TREINADOS
NÚMERO DE
ITERAÇÕES
TEMPO DO
TREINAMENTO SIMULAÇÃO
ERRO MÁX
(%)
ERRO RMS
(%)
FIR
Butterworth
Ordem 1
FIR 7 5 As, B 500 4,38 h 1 25,5 9,88
2 23,1 7,51
FIR 8 7 As, B 500 11,28 h 1 16,9 6,49
2 21,2 6,54
FIR 9 9 As, B 500 8,59 h 1 13,7 5,16
2 14,9 4,57
Gaussiano
FIR 10 5 As, B 500 6,73 h 1 18,8 7,36
2 16,1 5,44
FIR 11 7 As, B 500 13,12 h 1 16,9 6,49
2 11,4 3,86
FIR 12 9 As, B 500 10,55 h 1 9,02 3,41
2 7,45 2,85
IIR
Butterworth
Ordem 1
IIR 7 5 As, B 500 5,43 h 1 19,2 6,44
2 14,1 5,23
IIR 8 7 As, B 500 7,57 h 1 15,3 6,32
2 17,6 5,25
IIR 9 9 As, B 500 6,05 h 1 10,2 4
2 16,9 4,85
Gaussiano
IIR 10 5 As, B 500 6,51 h 1 18,4 7,64
2 18 5,52
IIR 11 7 As, B 500 10,39 h 1 12,9 5,08
2 15,7 4,75
IIR 12 9 As, B 500 7,39 h 1 11,8 3,71
2 9,02 2,74
97
CONCLUSÃO
A grande importância da filtragem para o campo de processamento de imagens
torna este tópico algo a ser considerado no projeto de sistemas visuais, onde grande parte
das aplicações pode tirar vantagem da ampla variedade de funções que os filtros podem
desempenhar. No caso específico de próteses retinianas, a filtragem é um integrante bem
participativo do complexo processamento que se deseja reproduzir. Sendo assim, a
análise desta capacidade se torna um valioso indicador do desempenho e da versatilidade
do sistema.
No contexto da CNN (Cellular Neural Network), tal avaliação também se torna
imprescindível ao envolver operações que trabalham com toda a faixa dinâmica da saída,
explorando o seu poder de processamento da forma mais completa.
Com este objetivo, o presente trabalho consistiu na aplicação da filtragem por meio
da CNN analógica em tecnologia CMOS concebida em [12] e [15], cujos testes anteriores
haviam abordado apenas funções binárias. Devido à falta de coeficientes conhecidos para
configurar a rede, necessitou-se a princípio da obtenção empírica destes parâmetros para
cada filtro desejado, por meio de treinamento da rede. Para isso, desenvolveu-se uma
versão do CMA (Center of Mass Algorithm), originalmente descrito em [18],
incorporando as alterações explicitadas na seção 2.1 e implementou-se esta versão
melhorada em conjunto com a interface gráfica detalhada na seção 2.2, para realizar o
treinamento da rede a partir de pares entrada-saída. Obteve-se bons resultados no caso de
funções clássicas que não haviam ainda sido testadas na CNN, em que a convergência foi
rápida e precisa.
Contudo, foi nas tentativas de aprendizado dos filtros que a técnica foi realmente
exigida, requerendo um número muito maior de iterações, além de enfrentar
uma dificuldade pelo fato das limitações da rede impedir uma correspondência exata com
a filtragem pelos métodos computacionais convencionais. De qualquer modo, houve um
desempenho satisfatório, que permitiu uma avaliação mais ampla do circuito e abriu
caminho para desenvolvimentos futuros.
Uma forma de melhorar o treinamento é a utilização de outras abordagens.
O método baseado em algoritmo genético é um bom candidato, sendo bem interessante a
98
possibilidade de construir uma versão híbrida em conjunto com o CMA, desfrutando das
vantagens de ambas as técnicas.
Por outro lado, o circuito da CNN pode ter seu desempenho melhorado de maneiras
variadas, como o uso de uma vizinhança com raio maior, a inclusão de uma ou mais
camadas adicionais sobrepostas à rede existente, permitindo que cada uma realize uma
parte distinta do processamento, ou até mesmo uma mudança para uma máquina
universal, cuja programabilidade pode viabilizar a execução de operações diferentes em
sequência, reutilizando as mesmas células.
99
TRABALHO PUBLICADO
ANDRADE, F. S.; SOUZA, Y. O. G.; SANTANA, E. P.; CUNHA, A. I. Image
Filtering in a CMOS Analog CNN. Proceedings of the 2015 IEEE 6th Latin
American Symposium on Circuits and Systems, 2015, pp. 1-4.
101
REFERÊNCIAS
1. NIU, S.; SHEN, J.; LIANG, C.; ZHOU, L.; LI, B. Research on Human Retinal Cell
Image Restoration. Proceedings of the 3rd International Congress on Image and
Signal.
2. PLEBE, A.; GALLO, G. Filtering Echocardiographic Image Sequences in
Frequency Domain. Proceedings of the 2nd International Symposium on Image and
Signal Processing and Analysis, 2001, pp. 238-243.
3. ZAGHLOUL, K. A.; BOAHEN K. A silicon retina that reproduces signals in the
optic nerve. Journal of Neural Engineering, 2006, vol. 3, pp. 257-267.
4. KUMAR, B. V. K. V.; SAVVIDES, M.; VENKATARAMAN, K.; XIE, C. Spatial
Frequency Domain Image Processing for Biometric Recognition. Proceedings of
2002 International Conference on Image Processing, 2002, vol.1, pp. I-53-I-56.
5. KAMEI, T.; MIZOGUCH, M. Image Filter Design for Fingerprint Enhancement.
Proceedings of International Symposium on Computer Vision, 1995, pp. 109-114.
6. ZAGHLOUL, K. A. A Silicon Implementation of a Novel Model for Retinal
Processing. 2009. Thesis (PhD) - University of Pennsylvania. Pennsylvania.
7. GOLLISCH, T.; MEISTER, M. L. Eye Smarter Than Scientists Believe: Neural
Computations in Circuits of the Retina. Neuron, n. 65, p. 150–164, 2010.
8. RODRÍGUEZ-VÁZQUEZ, A. E. A. Current-mode techniques for the
implementation of continuous and discrete time cellular neural networks. IEEE
Transactions on Circuits and Systems II: Analog and Digital Signal Processing, v.
40, n. 3, p. 132–146, 1993.
9. WU, C. Y.; CHENG, C. H. A Learnable Cellular Neural Network Structure with
Ratio Memory for Image Processing. IEEE Transactions on Circuits and Systems
I: Fundamental Theory and Applications, v. 49, n. 12, p. 1713-1723, 2002.
10. BÁLYA, D.; ROSKA, B.; ROSKA, T.; WERBLIN, F. S. A CNN framework for
modeling parallel processing in a mammalian retina. International Journal of
Circuit Theory and Applications, v. 30, n. 2‐3, p. 363-393, 2002.
11. BÁLYA, D., PETRÁS, I.; ROSKA, T., CARMONA, R.; VÁZQUEZ, A. R.
Implementing the multilayer retinal model on the complex-cell CNN-UM chip
102
prototype. International Journal of Bifurcation and Chaos, v. 14, n. 02, p. 427-451,
2004.
12. SANTANA, E. P.; FREIRE, R. C.; CUNHA, A. I. A. A compact low-power CMOS
analog FSR model-based CNN. Journal of Integrated Circuits and Systems, vol.7,
no 1, 2012, pp. 72-80.
13. CHUA, L. O.; YANG, L. Cellular neural networks: theory. IEEE Transactions on
Circuits and Systems, v. 35, n. 10, p. 1257–1290, out. 1988.
14. CHUA, L. O.; ROSKA, T. Cellular Neural Networks and Visual Computing:
Foundations and Applications. Cambridge: Cambridge University Press, 2002.
15. SANTANA, E. P. Circuitos Analógicos em Tecnologia CMOS para
Implementação de Próteses Retinianas. Tese de Doutorado. Universidade Federal
da Bahia. 2013.
16. ESPEJO, S. E. A. A VLSI-oriented continuous-time CNN model. International
Journal of Circuit Theory and Applications, v. 24, n. 3, p. 341–356, 1996.
17. NOSSEK, J. A. Design and Learning with Cellular Neural Networks. CNNA-94
Third IEEE International Workshop on Cellular Neural Networks and their
Applications, 1994.
18. MIRZAI, B.; CHENG, Z.; MOSCHYTZ, G. S. Learning Algorithms for Cellular
Neural Networks. IEEE International Symposium on Circuits and Systems, 1998.
19. KONDO, K.; MORISHITA H.; KONISHI; Y. ISHIGAKI, H. Design of Two-Stage
Cellular Neural Network Filter for Detecting Particular Moving Objects.
ISSPA’99 Fifth International Symposium on Signal Processing and its Applications,
1999.
20. LAI, J.-L.; WU, P. C.-Y. Architectural Design and Analysis of Learnable Self-
Feedback Ratio-Memory Cellular Nonlinear Network (SRMCNN) for
Nanoelectronic Systems. IEEE Transactions on Very Large Integration (VLSI)
Systems, v. 12, n. 11, p. 1182–1191, 2004.
21. TANAKA, M.; AOMORI, H.; NISHIO, Y.; OSHIMA, K.; HASLER, M. Learning
Theory of Cellular Neural Networks based on Covariance Structural Analysis.
CNNA 12th International Workshop on Cellular Nanoscale Networks and their
Applications, 2010.
103
22. MORENO-ARMENDARIZ, M. A.; PAZIENZA, G. E.; YU, W. Training Cellular
Neural Networks with Stable Learning Algorithm. Advances in Neural Networks
– ISNN, Third International Symposium on Neural Networks, 2006.
23. KOZEK, T.; ROSKA, T.; CHUA, L. O. Genetic Algorithm for CNN Template
Learning. IEEE Transactions on Circuits and Systems I: Fundamental Theory and
Applications, v. 40, n. 6, p. 392–402, 1993.
24. RAMÍREZ, E. G.; MAZZANTI, F.; CARDONA, X. V. Cellular Neural Networks
Learning using Genetic Algorithm. Revista del Centro de Investigación de la
Universidad la Salle, v. 6, n. 21, p. 25, 2003.
25. ANDRADE, F. S.; SOUZA, Y. O. G.; SANTANA, E. P.; CUNHA, A. I. Image
Filtering in a CMOS Analog CNN. Proceedings of the 2015 IEEE 6th Latin
American Symposium on Circuits and Systems, 2015, pp. 1-4.
26. GONZALEZ, R. C.; WOODS, R. E. Digital Image Processing. Pearson Prentice
Hall, 2007.
105
APÊNDICE
Nesta seção é apresentado o código referente à execução do CMA modificado,
produzido por este trabalho, na linguagem do Matlab.
% Algoritmo para aprendizado de CNN utilizando o metodo do centro de massa
% Variáveis de entrada: % U_set,Xo_set,d_set: conjuntos de imagens de entrada, de estado % inicial, e da saída esperada em representacao numerica, respectivamente. % Ao,Bo,Zo: Valores iniciais para a matriz de operadores de realimentação, % a matriz de operadores de entrada, e o limiar, respectivamente. % A_max,B_max,Z_max: Limites de valor absoluto correspondentes aos % pararmetros anteriores. % Ut,Yt: Valores de entrada e saída das células de fronteira, % respectivamente. % M,N: Dimensoes da CNN. % R: Raio de vizinhanca da CNN. % lr: vetor composto das taxas de aprendizados para cada componente. % cnn_sim: Tipo de CNN a ser simulada (convencional ou FSR). % T,T_max: Duracao do passo temporal utilizado e tempo total limite na % resposta da simulacao da CNN. % update_method: vetor de inteiros onde os quatro primeiros campos % selecionam as componentes a ser atualizadas(dentre Aa,As,B eZ) e os dois % seguintes definem os padroes adotados para A e B. % max_steps: numero maximo de iteracoes. % Variáveis de saída: % A,B,Z,Aa,As: Valores finais dos parâmetros e das componentes de A. % p: Contagem de iteracoes realizadas. % result: descricao do Resultado do treinamento. % A_r,As_r,Aa_r,B_r,Zr: Registros dos valores dos parametros em cada % iteracao (cada coluna corresponde a um passo). % dAs,dAa,dB,dZ: Variacoes dos parametros aplicadas na ultima iteracao. % er: Registro do erro em cada celula ao longo do treinamento. % time: tempo de execucao total do treinamento. % CNN_time_r: registro do tempo de resposta da CNN.
function [A,B,Z,p,result,As,Aa,A_r,As_r,Aa_r,B_r,Zr,dAs,dAa,dB,dZ,er,... time,CNN_time_r] = CNN_learning_function(Ao,Bo,Zo,A_max,B_max,Z_max,... Xo_set,U_set,d_set,Ut,Yt,M,N,R,lr,T,Tmax,max_steps,update_method,cnn_sim)
tic % inicio da contagem de tempo
% definicao das tolerancias para o erro e para verificacao de repeticao % ciclica dos parametros
error_tolerance = 5*1e-2; repeat_tolerance = error_tolerance/1e3;
% inicializacao de parametros
A=Ao; B=Bo; Z=Zo;
% selecao componentes que serao atualizadas (1:ativada, 0:desativada)
en_Asim = update_method(1); en_Aantissim = update_method(2); en_B = update_method(3);
106
en_Z = update_method(4);
% selecao do padrao de A e B
B_pattern = update_method(5); A_pattern = update_method(6);
% taxas de aprendizado
lr_As = lr(1); lr_Aa = lr(2); lr_B = lr(3); lr_Z = lr(4);
% Geracao de vetores para variacao decrescente da taxa de aprendizado em % cada iteracao
lr_ratio = 20; % Razao entre valor maximo e minimo de lr
lr_As = linspace(lr_As,lr_As/lr_ratio,max_steps); lr_Aa = linspace(lr_Aa,lr_Aa/lr_ratio,max_steps); lr_B = linspace(lr_B,lr_B/lr_ratio,max_steps); lr_Z = linspace(lr_Z,lr_Z/lr_ratio,max_steps);
% Variaveis de controle para os mecanismos de parada
stopA = 1; stopB = 1; stopZ = 1;
stop_reason = cell(1);
% inicio do treinamento para cada conjunto de imagens
for q = 1:size(U_set,3);
disp(['Inicio do conjunto de imagens numero ',num2str(q)]);
U = U_set(:,:,q); Xo = Xo_set(:,:,q); d = d_set(:,:,q);
% matriz de entrada ampliada com a fronteira
Uaux = Ut*ones(size(U,1)+2*R,size(U,2)+2*R); Uaux(R+1:size(U,1)+R, R+1:size(U,2)+R) = U;
% inicializacao de variaveis auxiliares
mass_dt = 0; mass_d = zeros(M,N);
% massa da saida esperada
mass_d = 0.5.*(1 + d); mass_dt = sum(sum(mass_d)); % massa total da rede
rdx = 0; rdy = 0; rd45 = 0; rd_45 = 0; for i = 1:M; for j = 1:N; rdx = rdx + j*mass_d(i,j);
107
rdy = rdy + i*mass_d(i,j); rd45 = rd45 + abs(i-j)*mass_d(i,j); rd_45 = rd_45 + (i+j)*mass_d(i,j); end end if mass_dt ~= 0 % Verificacao de inderteminacao matematica (caso a % massa total seja zero, rx e rdx seria necessariamente zero) rdx = rdx/mass_dt; rdy = rdy/mass_dt; rd45 = rd45*sqrt(2)/(2*mass_dt); rd_45 = rd_45*sqrt(2)/(2*mass_dt); end
% inicializacao de componentes da matriz A
Arot = rot90(A,2); % rotacao de 180 graus da matriz A As = 0.5*( A + Arot); % obtencao da componente simetrica de A As(R+1,R+1) = 0; Aa = 0.5*( A - Arot); % obtencao da componente antissimetrica Aa(R+1,R+1)=0; Ac = A - As - Aa; % obtencao da componente Ac
% inicializacao dos incrementos das componentes
dA = zeros(2*R+1,2*R+1); dAs = zeros(2*R+1,2*R+1); dAa = zeros(2*R+1,2*R+1); dB = zeros(2*R+1,2*R+1); dZ = 0;
p1 = 1; A_stop = zeros(2*R+1,2*R+1,10); B_stop = zeros(2*R+1,2*R+1,10); Z_stop = zeros(10);
% execucao iterativa
for p = 1:max_steps
% simulacao da CNN disp(p); if cnn_sim == 1 % celula convencional [Y,Ya,n,Xt] = CNN(U,A,B,Z,Xo,Ut,Yt,M,N,R,T,Tmax); CNN_steps = n CNN_time_r(p) = CNN_steps*T; elseif cnn_sim == 2 % celula FSR [Y,Ya,n,Xt] = CNN_FSR(U,A,B,Z,Xo,Ut,Yt,M,N,R,T,Tmax); CNN_steps = n CNN_time_r(p) = CNN_steps*T; end
% aproximacao da imagem de saida para escala de cinza (256 tons de % cinza)
Y = (-Y + 1)*255/2; Y = uint8(Y); Y = double(Y); Y = (-Y*2/255) + 1; Ya(R+1:size(Y,1)+R, R+1:size(Y,2)+R) = Y;
% calculo do erro e criterio de parada
stop = 1; for m = 1:M; for n = 1:N; e(m,n) = 0.5*(d(m,n) - Y(m,n));
108
e_max(q) = max(abs(e(:))); if abs(e(m,n))> error_tolerance; stop = 0; end end end
er(:,p) = e(:); % registro dos valores de erro de cada iteracao
% teste para parada do treinamento caso erro esteja abaixo da % tolerancia
if stop == 1; stop_reason(q) = {['Solution found below the tolerance e = ',... num2str(error_tolerance)]}; break end
% Verificacao de repeticao dos valores das matrizes para interrupcao
if (update_method(1) == 1) || (update_method(2) == 1) stopA = 0; if p > 1 A_stop(:,:,1:9) = A_stop(:,:,2:10); A_stop(:,:,10) = A; if p >= 10 p2 = max(max(abs(A_stop(:,:,9)-A_stop(:,:,1)))); if p2 < repeat_tolerance stopA = 1; end p1 = p1+1 if p1 == 11 p1 = 1; end end if sum(sum(abs(dAs + dAa))) < 10e-6 stopA = 1; end end end
if update_method(3) == 1 stopB = 0; if p > 1 B_stop(:,:,1:9) = B_stop(:,:,2:10); B_stop(:,:,10) = B; if p >= 10 p2 = max(max(abs(B_stop(:,:,9)-B_stop(:,:,1)))); if p2 < repeat_tolerance stopB = 1; end p1 = p1+1 if p1 == 11 p1 = 1; end end if sum(sum(abs(dB))) < 10e-6 stopB = 1; end end end
if update_method(4) == 1 stopZ = 0; if p > 1 Z_stop(1:9) = Z_stop(2:10); Z_stop(10) = Z;
109
if p >= 10 p2 = abs(Z_stop(9)-Z_stop(1)); if p2 < repeat_tolerance stopZ = 1; end p1 = p1+1 if p1 == 11 p1 = 1; end end if abs(dZ) < 10e-6 stopZ = 1; end end end
if ((stopA == 1)&&(stopB == 1)&&(stopZ == 1)) stop_reason(q) = {'Repeat of parameter values'}; break end
% registro de valores de trajetoria dos parametros
Ar(:,:,p) = A; % registro da matriz A A_r(:,p) = A(:); disp(A); Br(:,:,p) = B; % registro da matriz B B_r(:,p) = B(:); disp(B); Zr(p) = Z; % registro do fator de limiar Z disp(Z); disp(e_max);
% calculo de componentes da matriz A
Arot = rot90(A,2); % rotacao de 180 graus da matriz A As = 0.5*(A + Arot); % obtencao da componente simetrica de A As(R+1,R+1) = 0; Aa = 0.5*(A - Arot); % obtencao da componente antissimetrica Aa(R+1,R+1) = 0; Ac = A - As - Aa; % obtencao da componente Ac
% registro para os passos das componentes da matriz A
Aa_r(:,p) = Aa(:); Ac_r(:,p) = Ac(:); As_r(:,p) = As(:);
% calculo dos incrementos nos parametros de A
dA = zeros(2*R+1,2*R+1); % inicializacao de dA para soma % acumulada em cada iteracao
for k = 1:2*R+1 for l = 1:2*R+1 for m = 1:M for n = 1:N if k==2 && l==2 dA(k,l) = 0; else dA(k,l) = dA(k,l) + e(m,n)*Ya(m+k-1,n+l-1); end end end end end
110
dA = dA/(M*N); dAr(:,p) = dA(:); % registro de dA
% ajuste dos incrementos da componente simetrica da matriz A de % acordo com o raio de vizinhanca e o padrao especificado
if en_Asim == 1
dAs = 0.5*(dA + rot90(dA,2)); switch R case 1 if A_pattern == 1 dAsaux = dAs; dAsaux (2,2) = 0; dAsaux2 = sum(sum(dAsaux))/8; dAsaux = dAsaux2*ones(3,3); dAsaux(2,2) = dAs(2,2); dAs = dAsaux; elseif A_pattern == 2 dAsaux = sum(sum(dAs))/9; dAs = dAsaux*ones(3,3); elseif A_pattern == 3 dAsaux = dAs(2,2); dAs = zeros(3,3); dAs(2,2) = dAsaux; elseif A_pattern == 4 dAsaux = [dAs(1,2),dAs(2,1),dAs(2,3),dAs(3,2)]; dAsaux = sum(dAsaux)/4; dAs = [0,dAsaux,0;dAsaux,dAs(2,2),dAsaux;0,dAsaux,0]; elseif A_pattern == 5 dAsaux1 = [dAs(1,1),dAs(1,3),dAs(3,1),dAs(3,3)]; dAsaux2 = [dAs(1,2),dAs(2,1),dAs(2,3),dAs(3,2)]; dAsaux1 = sum(dAsaux1)/4; dAsaux2 = sum(dAsaux2)/4; dAs = [dAsaux1,dAsaux2,dAsaux1;dAsaux2,dAs(2,2),... dAsaux2;dAsaux1,dAsaux2,dAsaux1]; end case 2 if A_pattern == 1 dAsaux = dAs; dAsaux (R+1,R+1) = 0; dAsaux2 = zeros(5,5); dAsaux2(R:R+2,R:R+2) = dAsaux(R:R+2,R:R+2); dAsaux2 = sum(sum(dAsaux2))/8; dAsaux3 = dAsaux; dAsaux3(R:R+2,R:R+2) = zeros(3,3); dAsaux3 = sum(sum(dAsaux3))/16; dAsaux = dAsaux3*ones(2*R+1,2*R+1); dAsaux(R:R+2,R:R+2) = dAsaux2*ones(3,3); dAsaux(R+1,R+1) = dAs(R+1,R+1); dAs = dAsaux; elseif A_pattern == 2 dAsaux1 = [dAs(1,1),dAs(1,5),dAs(5,1),dAs(5,5)]; dAsaux2 = [dAs(1,2),dAs(1,4),dAs(2,1),dAs(2,5),... dAs(4,1),dAs(4,5),dAs(5,2),dAs(5,4)]; dAsaux3 = [dAs(1,3),dAs(3,1),dAs(3,5),dAs(5,3)]; dAsaux4 = [dAs(2,2),dAs(2,4),dAs(4,2),dAs(4,4)]; dAsaux5 = [dAs(2,3),dAs(3,2),dAs(3,4),dAs(4,3)]; dAsaux1 = sum(dAsaux1)/4; dAsaux2 = sum(dAsaux2)/8; dAsaux3 = sum(dAsaux3)/4; dAsaux4 = sum(dAsaux4)/4; dAsaux5 = sum(dAsaux5)/4; dAs = [dAsaux1,dAsaux2,dAsaux3,dAsaux2,dAsaux1, dAsaux2,dAsaux4,dAsaux5,dAsaux4,dAsaux2, dAsaux3,dAsaux5, 0 ,dAsaux5,dAsaux3,
111
dAsaux2,dAsaux4,dAsaux5,dAsaux4,dAsaux2, dAsaux1,dAsaux2,dAsaux3,dAsaux2,dAsaux1]; end end
end
dAsr(:,p) = dAs(:); % registro de dAs
% calculo de incrementos da componente antissimetrica da matriz A
% calculo da definicao para a massa
if en_Aantissim == 1
mass = 0.5*(1 + Y); masst = sum(sum(mass)); mass_r(:,:,p) = mass(:,:); % registro da massa
rx = 0; for i = 1:M; for j = 1:N; rx = rx + j*mass(i,j); end end
if masst ~= 0 rx = rx/masst; end
rx = 0; ry = 0; r45 = 0; r_45 = 0; for i = 1:M; for j = 1:N; rx = rx + j*mass(i,j); ry = ry + i*mass(i,j); r45 = r45 + abs(i-j)*mass(i,j); r_45 = r_45 + (i+j)*mass(i,j); end end if mass_dt ~= 0 % Verificacao de inderteminacao % matematica (caso a massa total seja zero, rx e rdx seria % necessariamente zero) rx = rx/masst; ry = ry/masst; r45 = r45*sqrt(2)/(2*masst); r_45 = r_45*sqrt(2)/(2*masst); end dx = rdx - rx; dy = rdy - ry; d45 = rd45 - r45; d_45 = rd_45 - r_45; dAa = [ d_45 dy d45; dx 0 -dx; -d_45 -dy -d_45 ];
end
dAar(:,p) = dAa(:); % registro da matriz Aa_r
% calculo de incrementos da matriz B
if en_B == 1
112
dB = zeros(2*R+1,2*R+1); % inicializacao de dB para soma % acumulada em cada iteracao
for k = 1:2*R+1 for l = 1:2*R+1 for m = 1:M for n = 1:N dB(k,l) = dB(k,l) + e(m,n)*Uaux(m+k-1,n+l-1); end end end end
dB = dB/(M*N);
% ajuste dos incrementos da matriz B de acordo com o raio de % vizinhanca e o padrao especificado
switch R case 1 if B_pattern == 1 dBaux = dB; dBaux (2,2) = 0; dBaux2 = sum(sum(dBaux))/8; dBaux = dBaux2*ones(3,3); dBaux(2,2) = dB(2,2); dB = dBaux; elseif B_pattern == 2 dBaux = sum(sum(dB))/9; dB = dBaux*ones(3,3); elseif B_pattern == 3 dBaux = dB(2,2); dB = zeros(3,3); dB(2,2) = dBaux; elseif B_pattern == 4 dBaux = [dB(1,2),dB(2,1),dB(2,3),dB(3,2)]; dBaux = sum(dBaux)/4; dB = [0,dBaux,0;dBaux,dB(2,2),dBaux;0,dBaux,0]; elseif B_pattern == 5 dBaux1 = [dB(1,1),dB(1,3),dB(3,1),dB(3,3)]; dBaux2 = [dB(1,2),dB(2,1),dB(2,3),dB(3,2)]; dBaux1 = sum(dBaux1)/4; dBaux2 = sum(dBaux2)/4; dB = [dBaux1,dBaux2,dBaux1;dBaux2,dB(2,2),dBaux2;... dBaux1,dBaux2,dBaux1]; end case 2 if B_pattern == 1 dBsaux = dB; dBsaux (R+1,R+1) = 0; dBsaux2 = zeros(5,5); dBsaux2(R:R+2,R:R+2) = dBsaux(R:R+2,R:R+2); dBsaux2 = sum(sum(dBsaux2))/8; dBsaux3 = dBsaux; dBsaux3(R:R+2,R:R+2) = zeros(3,3); dBsaux3 = sum(sum(dBsaux3))/16; dBsaux = dBsaux3*ones(2*R+1,2*R+1); dBsaux(R:R+2,R:R+2) = dBsaux2*ones(3,3); dBsaux(R+1,R+1) = dB(R+1,R+1); dB = dBsaux; elseif B_pattern == 2 dBsaux1 = [dB(1,1),dB(1,5),dB(5,1),dB(5,5)]; dBsaux2 = [dB(1,2),dB(1,4),dB(2,1),dB(2,5),... dB(4,1),dB(4,5),dB(5,2),dB(5,4)]; dBsaux3 = [dB(1,3),dB(3,1),dB(3,5),dB(5,3)]; dBsaux4 = [dB(2,2),dB(2,4),dB(4,2),dB(4,4)];
113
dBsaux5 = [dB(2,3),dB(3,2),dB(3,4),dB(4,3)]; dBsaux1 = sum(dBsaux1)/4; dBsaux2 = sum(dBsaux2)/8; dBsaux3 = sum(dBsaux3)/4; dBsaux4 = sum(dBsaux4)/4; dBsaux5 = sum(dBsaux5)/4; dB = [dBsaux1,dBsaux2,dBsaux3,dBsaux2,dBsaux1, dBsaux2,dBsaux4,dBsaux5,dBsaux4,dBsaux2, dBsaux3,dBsaux5,dB(3,3),dBsaux5,dBsaux3, dBsaux2,dBsaux4,dBsaux5,dBsaux4,dBsaux2, dBsaux1,dBsaux2,dBsaux3,dBsaux2,dBsaux1]; end end
end
dBr(:,p) = dB(:); % registro de dB
% calculo de incremento do fator de limiar Z
if en_Z == 1
dZ = 0; % inicializacao de dZ para soma acumulada em cada % iteracao
for m = 1:M; for n = 1:N; dZ = dZ + e(m,n); end end
dZ = dZ/(M*N);
end
dZr(p) = dZ; % registro dos valores dZ
% atualizacao dos parametros da CNN
% atualizacao da componente simetrica da matriz A
if en_Asim == 1 As = As + lr_As(p)*dAs; end
% atualizacao da componente antissimetrica da matriz A
if en_Aantissim == 1 Aa = Aa + lr_Aa(p)*dAa; end
% atualizacao da matriz A
A = Ac + As + Aa;
% atualizacao da matriz B
if en_B == 1 B = B + lr_B(p)*dB; end
% atualizacao do fator de limiar Z
if en_Z == 1
114
Z = Z + lr_Z(p)*dZ; end
% limitacao nos valores dos parametros
% limitacao nos parametros da matriz A
for k = 1:2*R+1 for l = 1:2*R+1 if A(k,l) > A_max; A(k,l) = A_max; elseif A(k,l) < -A_max; A(k,l) = -A_max; end end end
% limitacao nos parametros da matriz B
for k = 1:2*R+1 for l = 1:2*R+1 if B(k,l) > B_max B(k,l) = B_max; elseif B(k,l) < -B_max B(k,l) = -B_max; end end end
% limitacao de valor no fator de limiar Z
if Z > Z_max Z = Z_max; elseif Z < -Z_max Z = -Z_max; end
end
% Registro dos resultados para o atual conjunto de imagens
disp(['End of image set ',num2str(q)]); if q == 1 disp('Final Results'); end if p < max_steps result = 'Convergence to solution achieved'; disp(result); disp(char(stop_reason(q))); disp(['Max Error: ',num2str(e_max)]); disp(['Steps: ',num2str(p)]); disp('A ='); disp(A); disp('B ='); disp(B); disp(['Z = ',num2str(Z)]);
elseif stop == 0; result = 'Convergence to solution not achieved'; disp(result); disp(['Max Error: ',num2str(e_max)]); disp(['Steps: ',num2str(p)]); disp('A ='); disp(A); disp('B ='); disp(B);
115
disp(['Z = ',num2str(Z)]); end end
% registro de valores finais
Ar(:,:,p) = A; % registro da matriz A A_r(:,p) = A(:); disp(A); Br(:,:,p) = B; % registro da matriz B B_r(:,p) = B(:); disp(B); Zr(p) = Z; % registro do fator de limiar Z disp(Z);
% registro das componentes de A
Aa_r(:,p) = Aa(:); Ac_r(:,p) = Ac(:); As_r(:,p) = As(:);
% exibicao dos resultados no caso de multiplos conjuntos de imagens if q >= 1 disp('Final Results') if p < max_steps result = 'Convergence to solution achieved'; disp('Stop events on each image set:') disp(char(stop_reason)); disp(['Max Error: ',num2str(e_max)]); disp(['Steps: ',num2str(p)]); disp('A ='); disp(A); disp('B ='); disp(B); disp(['Z = ',num2str(Z)]);
elseif stop == 0; result = 'Convergence to solution not achieved'; disp(['Max Error: ',e_max]); disp(['Max Error: ',num2str(e_max)]); disp('A ='); disp(A); disp('B ='); disp(B); disp(['Z = ',num2str(Z)]); end time = toc; % termino do contador do tempo de execucao end
top related