universidade estadual de londrina · caixeiro viajante temos n cidades a percorrer e o objetivo é...
TRANSCRIPT
Universidade Estadual de Londrina Centro de Tecnologia e Urbanismo – CTU
Departamento de Engenharia Elétrica
FABIO POMINI
RECONHECIMENTO DE IMAGENS UTILIZANDO
REDES NEURAIS ARTIFICIAIS
Londrina
2009
ii
Fabio Pomini
RECONHECIMENTO DE IMAGENS UTILIZANDO
REDES NEURAIS ARTIFICIAIS
Trabalho de Conclusão de Curso
submetido ao Departamento de
Engenharia Elétrica da Universidade
Estadual de Londrina, para
preenchimento dos pré-requisitos
parciais para a obtenção do título de
graduação em Engenharia Elétrica.
Orientador: Prof. Dr. Ernesto
Fernando Ferreyra Ramirez
Londrina
2007
iii
Fabio Pomini
RECONHECIMENTO DE IMAGENS UTILIZANDO
REDES NEURAIS ARTIFICIAIS
Trabalho de Conclusão de Curso
submetido ao Departamento de
Engenharia Elétrica da Universidade
Estadual de Londrina, para preenchimento
dos pré-requisitos parciais para a
obtenção do título de graduação em
Engenharia Elétrica.
COMISSÃO EXAMINADORA
______________________________________
Prof. Dr. Ernesto Fernando Ferreyra
Ramirez
Universidade Estadual de Londrina
______________________________________
Prof. Dr. José Carlos Pizolato Júnior
Universidade Estadual de Londrina
______________________________________
Prof. M.Sc. Luis Carlos Kakimoto
Universidade Estadual de Londrina
Londrina, 18 de novembro de 2009
iv
Aos meus pais, familiares
e amigos
v
AGRADECIMENTOS
Ao professor e orientador Ernesto Fernando Ferreyra Ramirez pela constante
participação e dedicação a este trabalho, exemplo de pessoa e profissional.
À minha família, pela ajuda, confiança e motivação.
Aos colegas de curso, em especial àqueles que tiveram presença constante na
minha vida nos últimos 6 anos, seja dentro da universidade ou não.
A todos que, direta ou indiretamente, colaboraram para a realização e
finalização deste trabalho.
Ao Sport Club Corinthians Paulista, pelas alegrias proporcionadas.
vi
“As pessoas podem duvidar do que você diz,
mas acreditarão sempre no que você faz ”
Ralph W. Emerson
vii
POMINI, Fabio. Reconhecimento de Imagens Utilizando Redes Neurais Artificiais. 2009. Trabalho de Conclusão de Curso (Graduação em Engenharia Elétrica) - Universidade Estadual de Londrina.
RESUMO
Este trabalho contém um estudo de reconhecimento de imagens utilizando Redes Neurais Artificiais tendo em vista a crescente demanda de automatização para este tipo de processo. Para este fim foram estudados algoritmos de Redes Neurais Artificiais (RNA) e técnicas de processamento deimagens a fim de maximizar o aproveitamento das informações contidas nas imagens, resultando assim em um tempo de processamento reduzido. A RNA escolhida para o trabalho foi a Rede de Hopfield e o pré-processamento das imagens contém basicamente quatro etapas: centralização, segmentação, ajuste de tamanho e convolução. Os dados utilizados foram adquiridos através de um software em JAVATM que produz uma matriz de resposta correspondente aos pixels da imagem, simulando assim caracteres ruidosos. A plataforma computacional MATLABTM foi utilizada para o processamento das imagens e treinamento da RNA. Através dos testes foi observada uma taxa de reconhecimento de aproximadamente 84%. Além disso, a presença da etapa de pré-processamento possibilitou um tempo de treinamento reduzido (seis a quarenta vezes menor) em comparação com o algoritmo backpropagation.
Palavras-chave: Redes Neurais Artificiais; RNA; Matlab; Hopfield.
viii
POMINI, Fabio. Image Recognizing Using Artificial Neural Networks. 2009. Trabalho de Conclusão de Curso (Graduação em Engenharia Elétrica) -Universidade Estadual de Londrina.
ABSTRACT
This work shows an image recognition study using Artificial Neural Networks(ANN) motivated by the crescent demand on automation of this kind of process. For this task, several ANN algorithms and image processing techniques were studied to maximize the use of relevant information in spite of redundancies or noise, permitting a better time response. The chosen ANN was the Hopfield Model and the image pre-processing contains four phases: centralization, segmentation, size adjustment and convolution. The database used was acquired by JAVATM software that produces a response matrix that represents image pixels, simulating this way a set of noisy characters. The computational platform MATLABTM was used for image processing and ANN training. The tests showed a recognizing rate of 84%.The presence of the pre-processing phase permitted a reduced time response (from six to forty times lesser) in comparison with the back-propagation algorithm.
Key-words: Artificial Neural Networks; ANN; Matlab; Hopfield.
ix
LISTA DE TABELAS
Tabela 4.1 – Resultado às imagens 10x10.......................................................34
Tabela 4.2 – Resultado às imagens 14x14.......................................................36
Tabela 4.3 – Comparação.................................................................................39
x
LISTA DE FIGURAS
Figura 1 – Exemplos de aplicações de RNA....................................................02
Figura 2 – Topologia de Hopfield com 4 neurônios..........................................13
Figura 3 – Ação executada por uma rede recorrente...................................... 14
Figura 4 – Convolução......................................................................................17
Figura 5 – Arquitetura de reconhecimento de caracteres.................................18
Figura 6 – Exemplo de imagem original............................................................19
Figura 7 – Imagem original versus “padrão ouro”..............................................20
Figura 8 – Exemplo de imagem centralizada....................................................21
Figura 9 – Exemplo de imagem segmentada....................................................22
Figura 10 – Exemplo de imagem convoluída....................................................23
Figura 11 – Padrão ouro “X”..............................................................................24
Figura 12 – Padrão ouro “ ”.............................................................................25
Figura 13 – Padrão ouro “+”...............................................................................25
Figura 14 – Padrão ouro “O”..............................................................................26
Figura 15 – Pré-processamento do caractere “+” 10x10...................................28
Figura 16 – Pré-processamento do caractere “X” 10x10...................................29
Figura 17 – Pré-processamento do caractere “ ” 10x10..................................30
Figura 18 – Pré-processamento do caractere “O” 10x10..................................31
Figura 19 - Pré-processamento do caractere “+” 14x14....................................31
Figura 20 - Pré-processamento do caractere “O” 14x14...................................32
Figura 21 – Pré-processamento do caractere “X” 14x14...................................32
Figura 22 - Pré-processamento do caractere “ “ 14x14...................................33
Figura 23 – Exemplo de convergência “+”.........................................................35
Figura 24 – Exemplo de convergência “X”.........................................................35
Figura 25 – Exemplo de convergência incorreta (indecisão).............................36
Figura 26 – Exemplo de convergência “ ”........................................................37
Figura 27 – Exemplo de convergência “O”........................................................37
xi
SUMÁRIO
1 INTRODUÇÃO ....................................................................................................... 1
1.1 Objetivos .................................................................................................... 4
2 REVISÃO DA LITERATURA ................................................................................ 6
2.1 Reconhecimento de Imagens................................................................. 6
2.2 Introdução às Redes Neurais Artificiais .............................................. 8
2.2.1 Sistemas de Reconhecimento de Padrões .................................. 82.2.2 O Modelo do Ciclo de Processamento ....................................... 10
2.3 Classificador ................................................................................................. 13
2.3.1 Topologia da Rede de Hopfield.......................................................... 132.3.2 O Modelo Hopfield como Memória Endereçável ........................... 13
2.4 Máscara de Convolução ............................................................................. 16
3 METODOLOGIA ................................................................................................... 18
3.1 Aquisição de dados................................................................................ 18
3.2 Extração dos atributos ............................................................................... 19
3.2.1 Pré-processamento .............................................................................. 193.2.2 Centralização ......................................................................................... 203.2.3 Segmentação da imagem.................................................................... 213.2.4 Redimensionamento da imagem ....................................................... 223.2.5 Convolução ............................................................................................ 22
3.3 Restaurando a matriz para um determinado valor N............................ 23
3.4 Classificador ................................................................................................. 24
4 RESULTADOS E DISCUSSÃO ..................................................................... 27
4.1 Resposta ao pré-processamento ............................................................. 27
4.1.1 Resultado para imagens 10x10 pixels.............................................. 284.1.2 Resultado para imagens 14x14 pixels.............................................. 29
4.2 Resposta ao classificador.......................................................................... 33
4.2.1 Resultado para imagens 10x10 pixels.............................................. 334.2.2 Resultado para imagens 14x14 pixels.............................................. 36
4.3 Comparação de casos ................................................................................ 38
xii
5 CONCLUSÃO E TRABALHOS FUTUROS .................................................. 40
REFERÊNCIAS........................................................................................................ 42
Anexo A - Algoritmo de captação das imagens .............................................. 44Anexo B - Algoritmo de Centralização .............................................................. 45Anexo C - Algoritmo de Convolução ................................................................. 48Anexo D - Algoritmo de Hopfield ........................................................................ 50
1 INTRODUÇÃO
Existem problemas que despertam o interesse geral pelo
simples fato de estarem presentes na vida de grande parte da população.
Estes tipos de problemas foram estudados por muito tempo e assim criadas
várias maneiras de solucioná-los, mas com o passar dos anos, o ambiente foi
se tornando mais exigente, de modo que os problemas que antes eram simples
agora se tornaram mais complexos, exigindo técnicas mais sofisticadas do que
as convencionais para resolvê-los. Dentre estas técnicas estão as Redes
Neurais Artificiais.
Os problemas em que são utilizadas as RNA (Redes
Neurais Artificiais) são problemas de análise multivariada de dados, ou seja,
problemas comuns do cotidiano que são passíveis de serem analisados
computacionalmente, em que três situações básicas podem se manifestar
(Figura 1) (Haykin, 2001):
1. Treinamento Supervisionado – onde existem conjuntos (amostras) de
entradas-saídas e um mapeamento destas amostras possa mostrar suas
correlações. Podem existir múltiplas entradas para múltiplas saídas, se o
caso for de atributo (entrada) para classe (saída), este modelo pode ser
um classificador de padrões.
2. Treinamento Não-Supervisionado – onde as amostras possuem
atributos que as identificam, considera-se que esses atributos podem ser
representados numericamente como se fossem valores em um eixo de
coordenadas, o número de eixos representa o número de atributos a
serem analisados. O significado do posicionamento dos pontos nos
eixos em questão e a classificação dos grupos que os pontos
representam são dados através de técnicas de RNA em treinamento
não-supervisionado.
2
3. Memória Endereçável por Conteúdo – onde os dados são amostras
parciais ou ruidosas de conteúdos previamente armazenados. Para isso
utilizam-se algoritmos que recuperam a informação total.
Figura 1: Exemplos de aplicações de RNA
A tarefa de definir se um problema precisa ser resolvido
utilizando RNA não é fácil, pois praticamente qualquer situação pode ser
solucionada deste modo. Se um determinado problema pode ser resolvido de
diversas maneiras, este precisa ser modelado de acordo com o tipo de
resolução escolhida. Alguns casos típicos de análise multivariada são
amplamente difundidos, entre eles (Duda et al., 2001):
Aproximação de Funções: é o caso em que aparece a situação
“1” descrita acima. Uma função é um conjunto de entradas que
3
fornecem uma ou mais saídas, o objetivo é obter amostras em
quantidade suficiente para poder estimar a função em questão.
Classificação de Padrões: a partir de amostras de entrada e
suas saídas, são mapeados numericamente os valores das
amostras, classificando padrões. Assim, para novas amostras
testadas, elas poderão ser classificadas de acordo com os
padrões determinados anteriormente.
Identificação de Sistemas Dinâmicos: a partir de vetores de
entrada com os estados atuais e os respectivos vetores de saída
com os novos estados de um sistema dinâmico, uma rede neural
estabelece um modelo do sistema dinâmico em questão.
Emulação de Atividades Humanas: através de um vetor de
entrada contendo as informações recebidas por um ser humano e
sua reação representando o vetor de saída, é possível
representar o modelo de reações possíveis para cada estímulo de
entrada.
Predição de Séries Temporais: tomando como entrada
situações ocorridas até o presente momento e fazendo operações
estatísticas entre elas e o período em que elas ocorreram, é
possível implementar uma RNA que faça a predição para casos
futuros, tais como cotação em bolsas de valores e a produtividade
de culturas.
Agrupamento de Dados: a partir de diversas entradas, valores
numéricos (tais como uma pesquisa de opinião), é implementada
uma RNA treinada de maneira competitiva, de modo que esta
defina protótipos (ou regiões de maior agrupamento das
amostras), definindo deste modo perfis que classificam as
4
amostras dentro de grupos maiores, facilitando o estudo dos
resultados.
Caixeiro Viajante e Roteamento de Veículos: No roteamento de
veículos é preciso dividir diversos veículos para atender n
consumidores fazendo com que percorram o menor caminho e
que cada consumidor seja atendido somente por um veículo.
Através do estudo de agrupamentos mostrado no caso acima, é
possível fazer com que a RNA divida as regiões separadamente,
de acordo com o número de veículos existentes. No caso do
caixeiro viajante temos n cidades a percorrer e o objetivo é definir
o menor percurso entre elas, passando uma única vez por cada
cidade. O caixeiro viajante é um problema específico do caso do
roteamento de veículos.
Memória Endereçável Por Conteúdo: é o caso da situação 3,
onde é tomado um sistema com não-linearidades. A partir das
não-linearidades são estabelecidos pontos de referência nas
regiões de equilíbrio. Pelos atributos das entradas são definidas
suas condições iniciais, e através de um processo de relaxamento
(iterações sucessivas) os pontos convergem para as regiões de
equilíbrio.
1.1 Objetivos
Neste trabalho será feito o reconhecimento de imagens
utilizando Redes Neurais Artificiais (RNA). O trabalho consiste de duas etapas,
uma etapa de pré-processamento, onde as imagens são tratadas de modo a
serem extraídas somente as informações relevantes das mesmas. Após este
procedimento temos a etapa de classificação, que consiste da RNA em
questão e faz o reconhecimento da imagem.
5
Um dos objetivos deste trabalho é implementar um método
alternativo ao proposto em Shigeno (2005), no qual foram aplicados os
algoritmos LMS (Método dos Mínimos Quadrados) e Backpropagation
(Perceptron de multicamadas com retropropagação de erro), primeiramente
testados diretamente nas imagens adquiridas, atingindo assim uma taxa de
acerto de aproximadamente 77%. Para melhorar o desempenho, Shigeno
propôs uma etapa de convolução antes da aplicação dos algoritmos de RNA,
deste modo a taxa de erro caiu para apenas 8%, porém, o tempo de
processamento continuou elevado, durando até 7 horas.
Nos próximos capítulos são discutidos os procedimentos aqui
utilizados para oferecer uma solução diferenciada ao trabalho de Shigeno
(2005).
6
2 REVISÃO DA LITERATURA
2.1Reconhecimento de Imagens
Nos dias atuais, é cada vez maior a necessidade de se aplicar
processos computacionais com a finalidade de verificar assinaturas,
formulários, ou qualquer tipo de documento com preenchimento manuscrito. Do
mesmo modo, muitos processos de reconhecimento de face ou impressão
digital também estão sendo aplicados em prol da segurança e lisura dos
procedimentos de validação de identidade. Nestes casos, a velocidade desta
etapa de leitura e verificação é muito importante e um bom sistema de
reconhecimento de imagens torna o processo simples e rápido.
De acordo com esta necessidade, muito está sendo publicado
sobre o assunto. Sobre reconhecimento de face, Geng et al (2008) propuseram
uma técnica baseada em ISS (Individual Stable Space), onde cada
característica a ser processada é mapeada em uma matriz individual. Uma
rede chamada ISNN (Individual Stable Neural Network) é proposta para
mapear a imagem crua de um rosto e enviá-la para o ISS, então três algoritmos
baseados em ISS operam em condições não controladas. Não há restrições
para a imagem enviada, e não é necessário treinamento extra, como mudança
de ângulo. Os testes foram feitos com três grandes bases de dados e foram
obtidos resultados melhores do que outros 12 tipos de técnicas de
reconhecimento de faces.
Kirstein et al (2008) abordaram o tema de uma maneira
diferente. É apresentado um método de arquitetura baseado em um modelo
biológico de reconhecimento de objetos. Este possui um método hierárquico de
extração de características combinado com uma arquitetura de memória que
implementa tipos de memórias curta e longa. O modelo de aprendizado
hierárquico é dividido em três etapas: a hierarquia de extração de
características feedforward; a quantização online do vetor como memória curta;
LVQ (Learning Vector Quantization) incremental como memória longa. O LVQ
se trata de uma rede neural proposta por Kohonen (1989) para treinamento
supervisionado.
7
O trabalho de Nasution & Khan (2008) mostra o HGN
(Hierarchical Graph Neuron), que é uma versão aprimorada do GN (Graph
Neuron) publicada em seus artigos anteriores. Neste novo trabalho o algoritmo
é capaz de processar dados incompletos/ruidosos através de sua arquitetura
que utiliza várias células GN filtrando os dados. O tempo de trabalho é curto e
a aplicação funciona bem com equipamentos pequenos, como redes de
sensores sem fio. É demonstrado que no HGN o tempo de processamento
permanece inalterado com o aumento dos padrões armazenados. Mais ainda,
não são necessários redefinição de regras ou decisão de limiares pelo
operador para atingir o resultado esperado.
A classificação de padrões visuais faz uso de muitos recursos e
algumas vezes não é necessário distinguir se a intenção é reconhecimento de
caracteres ou de imagens fotográficas.
Em Phung & Bouzerdoum (2007) é apresentado um novo tipo
de rede, chamado Pyramidal Neural Network (PyraNet), este possui dois tipos
de camadas de processamento: camadas piramidais e camadas de
processamento unidimensional. A nova rede é composta por neurônios não-
lineares 2D que fazem tanto a extração das características quanto a redução
da dimensionalidade. São analisados 5 modos de treinamento da rede
PyraNet: gradiente decrescente, gradiente decrescente com momento, resilient
backpropagation, Polak-Ribiere conjugate gradient, e Levenberg-Marquadrt
(LM). Dois tipos de função de erro, mean-square-error e cross-entropy. O
trabalho tem como finalidade a classificação do gênero de uma face
comparando com a tecnologia padrão de reconhecimento de face (FERET),
três classificadores foram utilizados: convolutional neural network (KK), k-
nearest neighbor (K-NN) e Support Vector Machine (SVM).
Em Santhanam et al (2007), é mostrada uma técnica de
filtragem de minutiae (terminações e bifurcações em uma imagem de
impressão digital). Pixels defeituosos e pontos espúrios são eliminados durante
o processo de refinamento da imagem de acordo com o padrão dos pixels
vizinhos, após isto, um novo algoritmo baseado em redes neurais (NN)
aumenta a precisão na extração dos minutiae. Cada minutia, conforme
8
determinado pelo algoritmo anterior, passa por um ARTMAP NN, sendo assim
determinado se é uma terminação, uma bifurcação ou um falso minutia.
ARTMAP é uma rede neural supervisionada auto-organizável proposta para
reconhecimento de padrões, capaz de rápida e estável captação online de
atributos.
2.2Introdução às Redes Neurais Artificiais
Para facilitar o reconhecimento de um rosto, interpretar palavras
pronunciadas, ler textos escritos à mão ou mesmo identificar as chaves de um
carro pelo toque, está o processo extremamente complexo de reconhecimento
de padrões. Reconhecimento de padrão é realizar alguma atividade de acordo
com a “categoria” do padrão através de algum dado não-processado (Haykin,
2001).
Construir máquinas que resolvam automaticamente um caso de
reconhecimento de fala, DNA ou impressão digital é algo claramente útil e
muito natural nos dias de hoje. Ao estudar os processos para construir tais
máquinas, o pesquisador também acaba entendendo e até se interessando em
como estes processos acontecem na natureza, e este tipo de conhecimento
ajuda em como adaptá-los ao meio computacional.
2.2.1 Sistemas de Reconhecimento de Padrões
Em um problema qualquer envolvendo reconhecimento de
padrões, existem basicamente quatro etapas: pré-processamento, extração de
características, classificação e pós-processamento (Duda et al., 2001).
No pré-processamento podemos identificar duas subetapas, a
primeira diz respeito às entradas da rede, que normalmente é algum tipo de
sinal fornecido por um transdutor, como um microfone ou uma câmera. Os
problemas que podem surgir dependem das limitações do equipamento
utilizado, como resolução, sensibilidade, distorção, etc (Duda et al., 2001).
9
A próxima parte do processo envolve a segmentação ou
agrupamento das amostras, levando em consideração que nem sempre o sinal
que esperamos como entrada se mostrará perfeito, isto é, livre de ruídos
externos (Duda et al., 2001).
A parte de extração de características às vezes é confundida
com classificação (Haykin, 2001), isto é normal, já que um sistema perfeito de
classificação dispensaria qualquer processo de extração de características. A
decisão de processar os dados dividindo estas duas etapas é mais prática do
que teórica. O objetivo tradicional quando se extrai as características de um
objeto é caracterizá-lo de acordo com as medidas que se mostrem próximas de
outros objetos da mesma categoria. Isto nos leva à conclusão de que estamos
procurando características que são invariantes a mudanças irrelevantes nas
entradas. Um exemplo seria o reconhecimento de uma face, onde fossem
analisadas várias imagens do rosto de uma pessoa, um enquadramento mal
feito, luminosidade variada, diferenças de expressão ou qualquer outra
característica diferente para cada amostra não significa que seja outra pessoa.
Isto define uma mudança irrelevante na entrada, algo que o processo de
extração de características deve contornar.
Um processo minucioso de obtenção das características
desejadas facilita a etapa seguinte, a classificação, o objetivo agora é
determinar a classe em que uma amostra faz parte, normalmente a
probabilidade de esta amostra pertencer a certa classe, isto tendo em vista que
um sistema de classificação livre de erros é impraticável (Duda et al., 2001).
O grau de dificuldade no problema da classificação depende da
variação dos dados de características para amostras de uma mesma categoria
comparada com esta variação em amostras de categorias diferentes.
A variação nos dados de uma mesma categoria depende
basicamente da complexidade do objeto ou de ruídos. Entendemos por ruído
qualquer propriedade adquirida que é fruto de algo imprevisto, aleatório e que
não corresponde ao modelo verdadeiro. É importante lembrar que todo
10
problema não trivial de reconhecimento de padrões trabalha na presença de
ruído (Duda et al., 2001).
Um problema que surge na prática e é bastante comum é
aquele no qual não se pode extrair todas as características desejadas de um
objeto, como quando através de uma imagem, parte do objeto em questão está
encoberta. Neste caso, aparece um problema em como treinar um classificador
quando uma ou mais características não estão presentes.
É chamado pós-processamento o final do processo, onde
depois do classificador decidir em qual grupo o exemplo em questão pertence,
existe uma última dúvida, aceitar ou não esta decisão. Esta etapa normalmente
ocorre quando existem vários classificadores.
2.2.2 O Modelo do Ciclo de Processamento
O ciclo de processamento de um sistema de reconhecimento de
padrões normalmente contém a repetição de um número de diferentes
atividades: aquisição de dados, escolha de características, escolha de
modelos, treinamento e cálculo. O número de repetições escolhido para o
processo influencia diretamente o resultado final, mas isto não quer dizer que
quanto maior for este número, maior a taxa de acerto. É preciso verificar a que
ponto do ciclo de processamento já se torna inútil continuar (Duda et al., 2001).
2.2.2.1 Aquisição de Dados
Adquirir os dados de um conjunto de exemplos é grande parte
do trabalho para montar um sistema adequado de reconhecimento. É possível
conseguir bons resultados com poucos exemplos, mas assim seria necessário
um grande número de dados do campo de entrada. Neste caso, como é
possível saber se a quantidade de dados coletados do conjunto de exemplos é
suficiente para o bom funcionamento do sistema? Teoricamente esta questão
11
se torna retórica, já que não existe regra que diz com exatidão quando um
conjunto de exemplos é grande o bastante para solucionar o problema.
Sendo assim, só resta ao pesquisador testar com um número
diferente de amostras, ou simplesmente utilizar todas as amostras disponíveis
e tirar suas próprias conclusões.
2.2.2.2 Escolha das Características
A decisão de distinguir as características que serão relevantes
ao processo é um passo crítico do trabalho. O acesso às amostras que serão
utilizadas é indispensável, de modo que o pesquisador possa analisar os casos
de maneira mais específica. Entretanto, um conhecimento prévio e mais
aprofundado sobre o tipo de classificação a ser obtida possui um peso maior no
momento de executar um bom trabalho.
2.2.2.3 Escolha do Modelo
Em RNA existem muitos modelos, ou topologias de rede,
distintos. Apesar de partirem basicamente do mesmo princípio, o da motivação
biológica a fim de se construir modelos computacionais conexionistas, nem
todos são eficientes o bastante para solucionar um caso específico.
Entre os modelos mais difundidos em RNA estão relacionados
abaixo (Haykin, 2001):
Modelo de Hopfield;
Redes Self-Organizing – SOM e ART;
Sistemas Neurais Híbridos – RNA e algoritmos genéticos e RNA
com raciocínio baseado em casos;
Redes Neurais sem pesos;
Redes de funções de base radiais;
Redes recorrentes;
12
Redes Neurais Lineares, utilizando o algoritmo LMS (Least Mean
Square);
Perceptron Multi-Camadas utilizando o algoritmo BP
(Backpropagation).
2.2.2.4 Treinamento
Em geral, o processo de utilizar dados para determinar a ação
do classificador é referido como treinar o classificador. Segundo Duda et al
(2001), ainda não existem maneiras de obter classificadores para todos os
casos existentes, mas a experiência dos últimos 25 anos mostrou que foram
desenvolvidos os métodos mais eficazes para grande parte deles.
2.2.2.5 Complexidade Computacional
Alguns problemas de reconhecimento de padrões podem ser
solucionados utilizando algoritmos altamente impraticáveis. Por exemplo, tentar
processar todas as imagens de um conjunto hipotético de matrizes 20x20 para
reconhecimento de caracteres por meio de sensores ópticos. Apesar de
teoricamente ser possível atingir um índice reconhecimento livre de erros, o
armazenamento e processamento seria um tanto proibitivo tendo em vista que
teríamos aproximadamente 10120 padrões (Duda et al., 2001). Deste modo os
recursos computacionais necessários e a complexidade computacional de
algoritmos distintos são de considerável importância prática.
Em termos gerais, grande parte do trabalho se torna verificar a
qualidade do procedimento escolhido versus sua complexidade computacional.
Neste trabalho, o modelo de RNA escolhido para o trabalho foi o
chamado Redes de Hopfield (Haykin, 2001). Para este modelo, o pré-
processamento nas imagens se torna a parte mais crítica do trabalho.
13
2.3 Classificador
2.3.1 Topologia da Rede de Hopfield
A Rede Hopfield ou Modelo Hopfield consiste de um grupo de
neurônios (círculos da figura 2) e um grupo correspondente de atrasos ( 1z ),
formando um sistema de feedback de laço múltiplo, como ilustrado na figura 2.
O número de laços de feedback é igual ao número de neurônios. Basicamente,
a saída de cada neurônio é realimentada através de um elemento de atraso
unitário para cada um dos outros neurônios da rede, o atraso significa que
qualquer estado da rede depende do estado anterior. Do modo como é feita a
realimentação dos neurônios, não existe auto-realimentação.
Figura 2: Topologia de Hopfield com 4 neurônios (extraído de Haykin ,2001)
2.3.2 O Modelo Hopfield como Memória Endereçável
Nesta aplicação, são mapeados para a rede pontos fixos,
figuras pré-definidas, representando os padrões desejados, neste trabalho
chamado de “padrões-ouro” ou memórias fundamentais.
14
Uma propriedade importante deste método é a habilidade da
rede de retornar um padrão armazenado, tendo como amostra um grupo
modificado deste padrão. A essência de uma memória endereçável por
conteúdo é mapear uma memória fundamental sobre um ponto fixo (estável)
, conforme ilustrado na figura 3. Os pontos fixos de atração do espaço de
estados da rede são as memórias fundamentais ou os estados de teste da
rede.
Devido à sua simplicidade, este método possui grande
limitação, principalmente para dados muito ruidosos.
Figura 3: Ação executada por uma rede recorrente (extraído de Haykin, 2001)
O modelo Hopfield possui duas etapas distintas, nomeadas
etapa de armazenamento e etapa de retorno (Haykin, 2001).
15
2.3.2.1 Etapa de Armazenamento
Durante a etapa de armazenamento, temos um grupo de
vetores de N dimensões, onde 1 2, ... M representa as memórias
fundamentais, responsáveis pela habilidade da rede reconhecer padrões
ruidosos.
O primeiro passo é ajustar os pesos sinápticos da rede, ou seja,
os fatores responsáveis pela decisão de alterar os pixels desejados da figura
em questão, que são dados por:
, ,1
1,
,0
M
j i
ji
j iNw
j i
(2.1)
O segundo e último passo da etapa de armazenamento é a
inicialização do teste, que é dada por
,(0) ,j j provaX 1,...,j N (2.2)
Onde (0)jX é o estado do neurônio j no tempo n = 0, e ,j prova é o j-ésimo
elemento do vetor de teste prova .
Durante a etapa de retorno, todos os vetores de teste são
computados, através de iterações repetitivas, até convergir para uma das
memórias fundamentais. Caso isto não ocorra, um erro foi atingido.
As iterações até a convergência ocorrem segundo a seguinte
regra
1
( 1) sgn ( ) ,N
j ji ii
X n w X n
1,2,...,j N (2.3)
Onde,
16
1: 0sgn
1: 0
xx
x
(2.4)
A repetição ocorre até que o valor de X se torne inalterado. Atingindo esta
condição, a saída Y da rede é igual a X.
2.4 Máscara de Convolução
A máscara de convolução é uma operação entre duas matrizes,
geralmente bidimensionais, uma das quais é a imagem e a outra é um matriz
chamada de matriz de convolução ou elemento estruturante (Gonzalez &
Woods, 2000).
A matriz de convolução representa uma função matemática
qualquer e é aplicada sobre cada pixel g(x,y) da imagem e sua vizinhança
imediata, resultando em uma nova imagem gc(x,y), que reflete a relação da
imagem original com a função matemática dada pela matriz.
Podemos considerar a convolução como a aplicação de uma
máscara de resposta à imagem de acordo com critérios bem definidos. Na
convolução temos dois componentes:
Uma ou mais matrizes de convolução ci(x,y)
A operação de convolução
A forma mais simples é quando temos apenas uma matriz de
convolução e a operação de convolução é a soma dos resultados da
multiplicação de cada elemento da matriz com a região da imagem sob a
mesma e a subseqüente substituição do valor do pixel sobre o qual a matriz foi
aplicada por este resultado.
17
Exemplo:
9
1
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
1 1 2 2 ... 9 9
( ) / 9i
m m m g g g
R m m m g g g
m m m g g g
R m g m g m g
R mi gi
imagem original imagem resultante
Figura 4: Operação com máscara de convolução
Observe que para cada movimento da matriz de convolução, a
média dos pixels é copiada para uma nova matriz, a matriz de resposta. Sendo
assim, esta matriz de resposta terá dimensões referentes ao tamanho da matriz
de convolução, já que esta é responsável por quantos pixels são “eliminados”
por iteração, e também quantas vezes o processo todo é repetido.
18
3 METODOLOGIA
Neste capítulo são apresentados os métodos utilizados para se
obter o reconhecimento das imagens por meio de Redes Neurais Artificiais.
Todos os algoritmos foram implementados na plataforma Matlab.
A sequência de processamento das imagens, na maioria dos
casos, é muito similar. Esta sequência ocorre conforme mostrado na figura 5,
descrita por Silva et al 2003. A topologia de rede, ou classificador, escolhido
para a tarefa foi a Rede de Hopfield (Haykin, 2001).
Figura 5: Arquitetura de Reconhecimento de Caracteres (modificado de Shigeno,2005)
3.1 Aquisição de dados
Consiste na etapa em que foram apresentados os dados que
serão utilizados no processo. Nesta etapa nenhum tipo de processamento foi
executado, de modo que estes dados estão todos com ruído.
Na aquisição de dados todas as imagens são compostas por
matrizes de pixels 20x20, representados os caracteres " "," "," ","0"X . As
imagens foram adquiridas através de um software em JAVATM produzido
especificamente para o trabalho de reconhecimento de caracteres. Os dados
utilizados neste trabalho foram os mesmos adquiridos e apresentados no
19
trabalho de conclusão de curso de Shigeno (2005), o objetivo de tal
procedimento é fazer uma comparação de casos ou propor um método
alternativo para a situação proposta no trabalho mencionado. A figura 6 ilustra
o exemplo de uma imagem na etapa de aquisição.
Figura 6: Exemplo de imagem original 20x20 pixels
3.2 Extração dos atributos
3.2.1 Pré-processamento
O pré-processamento consiste da etapa fundamental para este
trabalho, visto que uma imagem adquirida diretamente teria suas dimensões
fixas - retardando o processo computacional – e também impedindo que o
modelo Hopfield fosse aplicado de forma efetiva. Para o modelo funcionar
corretamente, a imagem com ruído deve ter sua forma centralizada em torno
da chamada memória fundamental. Mais detalhes sobre como foi
implementado o algoritmo de Hopfield serão mostrados posteriormente.
Na figura 7 é comparada a imagem original com a memória
fundamental do modelo Hopfield.
20
Figura 7: Imagem original versus ”padrão-ouro”
3.2.2 Centralização
O primeiro passo da etapa de pré-processamento é a
centralização da imagem em questão. O processo ocorre para caso de analisar
uma imagem que originalmente foi apresentada longe do centro da imagem.
O método utilizado para a centralização foi calcular o “centro de
massa” da imagem, ou seja, a média da concentração de pixels relevantes de
acordo com suas coordenadas. O próximo passo foi reescrever a matriz da
imagem somando a diferença entre esta média e o centro da matriz total.
A equação (3.1) ilustra como calcular o centro de massa das
coordenadas em x, onde NxN é o número total de pixels da imagens. A partir
da equação (3.2) consegue-se chegar ao resultado final de centralização, tendo
C como o ponto central da imagem. A figura 8 ilustra o resultado final de um
exemplo de centralização.
1
( ) / ( )NxN
C ii
x x NxN
(3.1)
( )r i Cx x C x (3.2)
21
3.2.3 Segmentação da imagem
O processo de centralização é utilizado com a finalidade de
facilitar o passo seguinte, o de segmentação da imagem. O tipo de
segmentação utilizado foi uma maneira simplificada do método do quadrado,
uma adaptação do método descrito em Silva & Thomé (2003). Tal simplificação
foi possível por se tratar de imagens mais simples, com dimensões
relativamente pequenas.
A segmentação pelo método do quadrado consiste de se
verificar os limites relevantes da imagem, fechando um quadrado ao seu redor.
A partir das condições das equações (3.3) e (3.4) A figura 9 ilustra a imagem
após sua segmentação.
Figura 8: Exemplo de imagem centralizada
0i
i i
y
y y
0i
i i
x
x x
, se y(i)= -1
, se x(i)= 1
, se y(i)= 1
, se x(i)= -1
(3.3)
(3.4)
22
Figura 9: Exemplo de imagem segmentada
3.2.4 Redimensionamento da imagem
Após a imagem centralizada e segmentada, o interesse é excluir
pixels que não serão relevantes durante o teste. Com a imagem segmentada,
todos os pixels externos aos limites estabelecidos são considerados
irrelevantes, deste modo, a imagem final terá suas dimensões estabelecidas
pelo tamanho da figura de interesse.
3.2.5 Convolução
O processo de convolução tem a função de filtrar ruídos
presentes na imagem para adequá-la ao tamanho de interesse. A prática
consistiu de percorrer pela imagem uma máscara 4x4, de modo que a média
dos pixels presentes na máscara seja convertida em um novo e único pixel na
matriz de saída, o processo foi executado conforme ilustrado na figura 4.
A etapa de convolução ocorre depois da segmentação da
imagem, deste modo, não se pode garantir que esta terá dimensões suficientes
para poder passar por esta etapa. Sendo assim, a solução adotada foi a de
executar a convolução somente para imagens que após a segmentação ainda
23
estejam com dimensões maiores do que as desejadas, caso contrário, a
imagem foi processada de modo diferente, explicado na próxima subseção.
3.3 Restaurando a matriz para um determinado valor N
Foi explicado anteriormente o motivo de não se poder utilizar a
convolução para todas as imagens, visto que estas adquirem um tamanho
bastante variado entre si após a segmentação. A solução encontrada para
tratar do caso em que a convolução não seria possível foi a de reescrever a
matriz.
O processo de reescrever da matriz ocorre quando, após a
segmentação, a matriz da imagem em questão possui dimensões menores que
N, sendo N o tamanho escolhido como resultado da convolução. Para estes
casos, a prática foi muito simples, tomando a matriz da imagem, simplesmente
preenchendo-a com pixels da cor de fundo de modo a atingir um resultado com
o tamanho de interesse N. Após este preenchimento, uma nova etapa de
centralização se mostra necessária para o reposicionamento adequado da
imagem. A figura 10 ilustra o resultado de uma imagem após o processo de
convolução
Figura 10: Exemplo de imagem convoluída
24
3.4 Classificador
O classificador escolhido para este trabalho foi o Modelo
Hopfield, uma prática não-supervisionada de RNA. Para este modelo, a
princípio foram definidos os chamados “padrões ouro” ou memórias
fundamentais, estes padrões são responsáveis pela capacidade do algoritmo
de estabelecer os pesos sinápticos corretos e, consequentemente, classificar
de maneira precisa a imagem em questão. As figuras 11, 12, 13 e 14 mostram
os padrões ouro implementados a fim de satisfazer os requisitos da etapa de
reconhecimento.
Conforme explicado anteriormente, um dos problemas em se
utilizar o modelo Hopfield é sua limitação ao “padrão-ouro”. Normalmente uma
imagem não converge para outra que não esteja presente na memória
fundamental, caso isto ocorra, o resultado é imprevisível. A proposta deste
trabalho para suprir esta desvantagem é um pré-processamento adequado em
conjunto com os padrões-ouro ótimos.
Figura 11: Padrão ouro “X” 10x10
25
Figura 12: Padrão ouro " " 10x10
Figura 13: Padrão ouro “+” 10x10
26
Figura 14: Padrão ouro “O” 10x10
27
4 RESULTADOS E DISCUSSÃO
A metodologia utilizada neste trabalho foi apresentada no
capítulo anterior.
Neste capítulo serão mostrados os resultados obtidos pelos
algoritmos de pré-processamento e pelo classificador adotado. A última seção
contém a comparação dos resultados deste trabalho com o apresentado em
Shigeno (2005).
4.1 Resposta ao pré-processamento
Como visto anteriormente, a etapa de convolução reduz as
dimensões da matriz de resposta, sendo assim, faz parte do processo testar
até que ponto é possível filtrar a imagem sem causar uma perda excessiva de
dados.
A princípio as imagens foram reduzidas para 10x10. De acordo
com os resultados obtidos, foi verificado que era impossível reduzir ainda mais
as dimensões sem causar uma redução da porcentagem de acerto do
classificador. A saída então foi testar o sistema para dimensões maiores da
matriz pré-processada.
Neste capítulo serão mostrados os resultados de acordo com
duas situações, uma envolvendo imagens filtradas até atingir dimensão de
10x10, e outra com as imagens filtradas até atingir 14x14. Esta última
dimensão foi escolhida de acordo com a verificação feita durantes os testes, de
que neste ponto o sistema atua com maior precisão e o tempo de
processamento não se torna muito elevado. Um resumo desta verificação pode
ser observado no final deste capítulo.
28
4.1.1 Resultado para imagens 10x10 pixels
O pré-processamento consistiu de vários testes com as
imagens, principalmente na etapa da convolução, a fim de verificar se a
imagem foi tratada de maneira adequada, tornando possível o bom
aproveitamento do algoritmo de Hopfield.
Inicialmente todas as imagens tinham dimensões 20x20,
independentemente de qual o posicionamento do caracter dentro da matriz.
A ideia inicial do trabalho era fazer o pré-processamento de modo a obter
uma matriz final de dimensões 10x10 pixels, diminuindo assim mais da
metade do esforço computacional.
Nas figuras 15, 16, 17 e 18 estão algumas das amostras com o
resultado do pré-processamento.
Figura 15: Pré-processamento do caractere ”+” 10x10
Percebe-se pelas imagens que o caractere mais afetado, isto é,
o que sofreu maior perda de dados foi o círculo, “O”. Isto se deve ao fato desta
29
imagem possuir praticamente toda a sua informação próxima às bordas da
matriz. Um número de ciclos de convolução exagerado neste caso causou um
alto índice de perda de pixels relevantes na imagem. Já o restante das
amostras se tornou semelhante entre si, apesar de a priori serem todas
particularmente distintas. Após o pré-processamento, as imagens foram
aplicadas no classificador escolhido.
Figura 16: Pré-processamento do caractere “X” 10x10
4.1.2 Resultado para imagens 14x14 pixels
Após alguns testes, foi verificado que para matrizes 14x14 o
classificador se mostrou mais eficiente. Isto se deve ao fato de nessas
dimensões a imagem perder menos dados relevantes após os ciclos de
convolução.
30
O problema verificado com os círculos, “O”, já não é tão
aparente, e o tempo de processamento continuou aceitável.
Conforme apresentado na subseção anterior, as figuras 19, 20,
21 e 22 ilustram algumas imagens após o pré-processamento.
Depois desta etapa, as imagens foram apresentadas à rede
Hopfield. A diferença entre os dois testes, além do tempo de
processamento, é o tamanho da matriz de memórias fundamentais, que
agora precisa ser reescrita para o tamanho desejado, neste caso, 14x14.
Figura 17: Pré-processamento do caractere " " 10x10
31
Figura 18: Pré-processamento do caractere “ ” 10x10
Figura 19: Pré-processamento do caractere “+” 14x14
32
Figura 20: Pré-processamento do caractere “O” 14x14
Figura 21: Pré-processamento do caractere “X” 14x14
33
Figura 22: Pré-processamento do caractere 14x14
4.2 Resposta ao classificador
O classificador, conforme explicado anteriormente tem a função
de receber os dados das imagens e verificar se esta faz parte de algum grupo
previamente conhecido.
Nesta seção são mostradas as respostas do classificador aos
dois casos de pré-processamento descritos.
4.2.1 Resultado para imagens 10x10 pixels
Os testes com as imagens 10x10 apresentaram a avaliação de
um caso em que a prioridade foi o tempo de execução e não a porcentagem de
acerto do sistema.
34
As figuras 23 e 24 ilustram a etapa de reconhecimento através
do método de Hopfield. Nestes dois casos pode-se notar a convergência
correta da imagem pré-processada ao seu padrão ouro correspondente. Por
outro lado, pela figura 25 é possível observar uma situação em que a
convergência não foi atingida e não foi possível encontrar o padrão desejado,
este caso é considerado uma indecisão do classificador. A tabela 4.1
corresponde à análise das imagens 10x10, os valores obtidos são resultado da
média de 100 testes e o tempo de processamento é o tempo total da execução.
Tabela 4.1 – Resposta às imagens 10x10
CaractereNº de
Iterações% Acerto % Erro % Indecisão
Tempo de
execução (s)
X 853 83,21 2,83 13,96 130
911 90,54 3,50 5,96 164
866 53,25 2,20 44,55 155
850 47,80 1,33 50,87 156
TOTAL 605
De acordo com a tabela 4.1, observa-se que existe maior
facilidade de reconhecimento dos caracteres “X” e “ ” devido à maior
simplicidade dos mesmos. Em contrapartida, para os outros dois casos a
porcentagem de acerto foi muito baixa.
35
Figura 23: Exemplo de convergência “ ”
Figura 24: Exemplo de convergência “X”
36
Figura 25: Exemplo de convergência incorreta (indecisão)
4.2.2 Resultado para imagens 14x14 pixels
As imagens pré-processadas ao tamanho 14x14 foram as que
apresentaram melhores resultados de classificação comparada ao tempo de
processamento. Deste modo, nesta seção são apresentados os resultados
para esta situação.
As figuras 26 e 27 mostram exemplos de convergência de
imagens para o caso em questão. A tabela 4.2, seguindo o exemplo da tabela
anterior, oferece a análise geral do caso.
Tabela 4.2 Resposta às imagens 14x14
CaractereNº de
Iterações% Acerto % Erro % Indecisão
Tempo de
execução (s)
X 863 94,30 1,32 4,38 390
951 96,51 1,06 2,43 412
894 75,23 3,47 21,30 350
973 70,56 2,44 27,00 408
TOTAL 1560
37
Figura 26 Exemplo de convergência “ ”
Figura 27 Exemplo de convergência “ ”
38
4.3 Comparação de casos
Conforme mencionado no capítulo 3, uma das propostas deste
trabalho foi implementar um método alternativo ao mostrado em Shigeno
(2005). Sendo assim, os testes foram executados com o mesmo banco de
dados utilizado no trabalho mencionado, porém, com um método de
reconhecimento distinto.
O trabalho de Shigeno propôs o reconhecimento das imagens
através dos algoritmos de RNA conhecidos como: LMS (Método dos Mínimos
Quadrados) e Backpropagation (Perceptron de múltiplas camadas com
retropropagação de erro).
O melhor caso apresentado por Shigeno mostrou um índice de
acerto de aproximadamente 92%. Porém, o tempo de processamento atingiu
valores de até 7 horas devido à alta complexidade computacional inerente ao
algoritmo backpropagation. Através do método apresentado neste trabalho, o
melhor caso mostrou uma média de acerto de aproximadamente 84%, um valor
considerado aceitável dado as limitações do classificador.
Pelo tempo de processamento, foi provado que o método aqui
descrito supera facilmente o apresentado por Shigeno, levando em média 1560
segundos. Deste modo, a comparação mostra vantagens de desvantagens
entre os dois métodos, servindo de base para trabalhos futuros. A tabela a
seguir contém o resumo dos resultados obtidos em comparação com Shigeno
(2005), os dados correspondem à porcentagem de acerto da rede.
39
Tabela 4.3 Comparação
Hopfield 10x10 (%)
Hopfield 14x14 (%)
Shigeno sem convolução (%)
Shigeno com convolução (%)
X 83,21 94,30
77,8 92,5
90,54 96,51
53,25 75,23
47,80 70,56
Média 68,7 84,15
Tempo (s) 605 1560 24063 10327
40
5 CONCLUSÃO E TRABALHOS FUTUROS
Este trabalho teve como objetivo o reconhecimento de imagens
através de Redes Neurais Artificiais. Tendo em vista que os dados utilizados
para os testes foram os mesmos adquiridos e apresentados no trabalho de
conclusão de curso de Shigeno (2005), parte do objetivo foi implementar uma
alternativa ao processo utilizado pelo mesmo, de modo que o índice de acertos
ou o tempo de processamento fossem melhorados.
Foram estudados os algoritmos LMS e backpropagation e
métodos de tratamento de imagens. Durante o trabalho, foi verificado que com
um tratamento adequado, as imagens poderiam ser reconhecidas por outro
algoritmo relativamente mais simples e muito mais veloz que os estudados
anteriormente, as Redes de Hopfield.
O resultado final foi bastante satisfatório. Mesmo para o pior
caso analisado, das matrizes 10x10, foi verificado um índice de acerto de até
90,54% dependendo do caractere em questão. Foi concluído que o grande
problema desta situação foram imagens que possuíam maior parte da
informação relevante próxima às bordas da matriz, isto causa uma grande
perda de informação conforme o processo de convolução é aplicado.
Foi verificado que o melhor caso foi para matrizes 14x14. O
índice de acerto obteve uma média acima de 84%.
Uma questão muito importante deste trabalho foi o tempo de
processamento necessário para fazer as classificações. O valor atingido pelo
método aqui descrito supera facilmente o mostrado em Shigeno (2005), até
quarenta vezes menor. Isto já era esperado, visto que o algoritmo
backpropagation implementado pelo mesmo possui complexidade
computacional extremamente alta. Mas isto não seria possível sem a etapa de
pré-processamento.
Durante o presente trabalho foram apresentados alguns
problemas e surgiram algumas ideias para melhorar o desempenho do sistema:
41
Propor um método alternativo para aquisição dos dados, visando
melhorar a qualidade (resolução) das imagens e também facilitando
a etapa de tratamento das mesmas;
Analisar outros tipos de filtros e técnicas de processamento de
imagens, tendo como objetivo um melhor aproveitamento das
informações relevantes.
Também foram levantadas algumas sugestões para trabalhos
futuros:
Verificar diferentes algoritmos de classificadores;
Aumentar o número de caracteres a serem reconhecidos;
Verificar a viabilidade de implementar em linguagem C os algoritmos
com complexidade computacional maior, tornando assim mais rápido
o processamento;
Implementação de classificadores de caracteres manuscritos,
tomando como informações fotos escaneadas de baixa resolução.
42
REFERÊNCIAS
[1] DUDA, R. O; HART, P. E; STORK, D.G. Pattern Classification. 2. ed. John
Wiley & Sons. New York. 2001.
[2] HAYKIN, S. Redes Neurais, Princípios e Prática. 2. ed. Bookman. Porto
Alegre. 2001.
[3] GENG, X., ZHOU, Z, SMITH-MILES, K. (2008) “Individual stable space: An
approach to face recognition under uncontrolled conditions” IEEE Transactions
on Neural Networks, v. 19, n. 8 , p. 1354-1368.
[4] KIRSTEIN, S., WERSING, H., KÖRNER, E. (2008) “A biologically motivated
visual memory architecture for online learning of objects” Neural Networks, v.
21, p. 65-77.
[5] NASUTION, B.B., KHAN, A.I. (2008) “A hierarchical graph neuron scheme
for real-time pattern recognition” IEEE Transactions on Neural Networks, v. 19.
n. 2, p. 212-229.
[6] PHUNG, S. L., BOUZERDOUM, A. (2007) “A pyramidal neural network for
visual pattern recognition” IEEE Transactions on Neural Networks, v. 18, n. 2, p.
329-343.
[7] SANTHANAM, T., SUMATHI, C.P., EASWARAKUMAR, K.S. (2007)
“Fingerprint minutiae filtering using ARTMAP” Neural Computing & Applications,
v. 16, p. 49-55.
[8] DA SILVA, V.F., CUNHA, A.R., RACZ, A., COSTA, A.H.R. (2003)
“Reconhecimento de escrita baseado em redes neurais artificiais utilizando B-
Splines e TDF”, In: VI Simpósio Brasileiro de Automação Inteligente, Bauru, set.
43
[9] Shigeno, F. (2005), Reconhecimento de Caracteres Utilizando Redes
Neurais Artificiais, Monografia de Conclusão de Curso, Departamento de
Engenharia Elétrica, DEEL/UEL, Londrina, 62 p.
[10] Silva, E., Thomé, A.C.G. (2003) “Reconhecimento de caracteres
manuscritos usando time de redes neurais”, In: IV Encontro Nacional de
Inteligência Artificial (ENIA), Campinas, 02-08 ago., disponível em
http://www.labic.nce.ufrj.br/downloads/23sbc_enia_2003.pdf , acessado em 12
ago. 2008.
[11] GONZALEZ, R. C., WOODS, R.E., Processamento de Imagens Digitais.
Edgar Blücher Ltda. São Paulo. 2000.
[12] Kohonen, T. (1989). Springer series in information sciences. Self-organization and associative memory (third ed.). Springer-Verlag.
44
Anexo A
Algoritmo de captação das imagens
a=textread('dados20.txt'); % faz a leitura dos dados a partir do arquivo de texto
x=reshape(a,20,20,420); % redimensiona as matrizes
for i=1:420,
x(:,:,i)=x(:,:,i)'; % matriz transposta
end
%----- índices das figuras, separa por tipo de caractere -------
i_cruz=textread('cruz.txt');
i_tri=textread('triangulo.txt');
i_xis=textread('xis.txt');
i_circ=textread('circulo.txt');
for i=1:105,
cruz(:,:,i)=x(:,:,i_cruz(i));
tri(:,:,i)=x(:,:,i_tri(i));
xis(:,:,i)=x(:,:,i_xis(i));
circ(:,:,i)=x(:,:,i_circ(i));
end
45
Anexo B
Algoritmo de Centralização
[m,n]=size(x(:,:,r)); % recebe a imagem
a=1;
b=1;
x(:,:,r)=x(:,:,r)' % transposta
%----- varredura para encontrar o centro de massa ----------
for i=1:m,
for j=1:n,
if x(i,j,r)==1
t1(a)=i;
t2(b)=j;
a=a+1;
b=b+1;
end
end
end
t1=round(10-mean(t1));
t2=round(10-mean(t2));
xf=zeros(m,n)-ones(m,n);
%------ reescreve a figura fazendo o deslocamento para centralizar ------
for i=1:m,
for j=1:n,
if x(i,j,r)==1,
if(i+t1)<1,
i=(abs(t1)+1);
end
if(j+t2)<1,
j=(abs(t2)+1);
end
xf((i+t1),(j+t2))=x(i,j,r);
end
end
end
46
x(:,:,r)=xf;
%---- condições para formar o quadrado -------
for i=1:m, % varredura da esquerda para a direita e de cima para baixo
if x(i,:,r)==-1
m1=i; % retorna limite da imagem
else
if i==1,
m1=1;
end
break
end
end
for i=m:-1:1, % varredura da direita para a esquerda e de baixo para cima
if x(i,:,r)==-1,
m2=i; % retorna limite da imagem
else
if i==m,
m2=m;
end
break
end
end
for j=1:n, % laço para completar com zeros os pontos fora da imagem
if x(:,j,r)==-1,
n1=j;
else
if j==1,
n1=0;
end
break
end
end
for j=n:-1:1,
if x(:,j,r)==-1,
n2=j;
else
if j==n,
47
n2=n;
end
break
end
end
d1=m2-m1; % tamanho das arestas do quadrado
d2=n2-n1;
% ---- condições de correção do quadrado ------
if d1<d2
z=(d2-d1)/2;
m1=m1-z;
m2=m2+z;
if m2>m,
m2=m;
end
else
z=(d1-d2)/2;
n1=n1-z;
n2=n2+z;
if n2>n,
n2=n;
end
end
for i=1:m1, % reescrevendo zeros fora do quadrado da imagem
x(i,:,r)=0;
end
for i=20:-1:m2,
x(i,:,r)=0;
end
for j=1:n1,
x(:,j,r)=0;
end
for j=20:-1:n2,
x(:,j,r)=0;
end
48
Anexo C
Algoritmo de Convolução
function [a] = cnv(a,cnvmax); % definição da função
tra = cnvmax;
B = centraliza(a); % executa função de centralização
Di=0;
Dj=0;
ok=0;
for i1=1:20, % laço para linha
for j1=1:20, % laço para coluna
if (B(i1,j1)~=0),
if ok==0,
Di = i1-1;
Dj = j1-1;
ok=1;
end
X(i1-Di, j1-Dj)=B(i1,j1);
end
end
end
B=0;
[m,n] = size(X);
if m>n,
X(:,n+1)=-1; % correção do quadrado
else if n>m,
X(m+1,:)=-1; % correção do quadrado
end
end
if m>n,
X(:,n+1)=-1;
else if n>m,
X(m+1,:)=-1;
end
end
%---- máscara de convolução -------
[m,n]=size(X);
a=X;
X=0;
49
if (m>tra), % laço convolução
for t=1:(m-tra),
for i2=1:(m-t),
for j2=1:(m-t),
b(i2,j2) = (a(i2,j2)+a(i2+1,j2)+a(i2,j2+1)+a(i2+1,j2+1))/4; % média dos pixels da
% máscara 4x4
end
end
a=b;
b=0;
end
end
50
Anexo D
Algoritmo de Hopfield
[cruz, xis, tri, circ] = retorna_img();
nMax = 1000;
cnvmax = 14; % valor máximo de cnv
i=9;
for i=1:105,
[cruz_pp(1:cnvmax,1:cnvmax,i)] = cnv(cruz(:,:,i)',cnvmax);
[xis_pp(1:cnvmax,1:cnvmax,i)] = cnv(xis(:,:,i)',cnvmax);
[tri_pp(1:cnvmax,1:cnvmax,i)] = cnv(tri(:,:,i)',cnvmax);
[circ_pp(1:cnvmax,1:cnvmax,i)] = cnv(circ(:,:,i)',cnvmax);
end
xa(:,:,1) = reshape(cruz_pp,numel(cruz_pp(:,:,1)),105);
xa(:,:,2) = reshape(xis_pp,numel(xis_pp(:,:,1)),105);
xa(:,:,3) = reshape(tri_pp,numel(tri_pp(:,:,1)),105);
xa(:,:,4) = reshape(circ_pp,numel(circ_pp(:,:,1)),105);
MF(:,1) = reshape(cruz_ouro,numel(cruz_ouro(:,:)),1);
MF(:,2) = reshape(xis_ouro,numel(xis_ouro(:,:)),1);
MF(:,3) = reshape(tri_ouro,numel(tri_ouro(:,:)),1);
MF(:,4) = reshape(circ_ouro,numel(circ_ouro(:,:)),1);
N=size(MF,1);
W = ((MF*MF').*(ones(N,N)-eye(N)))/N; % definição da matriz de pesos
for L=1:11,
x=xa(:,L,4);
x = reshape(x,cnvmax,cnvmax); % formata a matriz para vetor
x0 = x;
xnA = reshape(x0,numel(x0),1);
if max(xnA)==1,
xnA=xnA;
else
xnA = xnA+0.55;
end
xnD = xnA;
51
n = 1;
while n <= nMax, % laço definido pelo número de iterações desejadas
a = rand(1,N); % gera posição aleatória de varredura da imagem
[b c] = min(a);
i = c;
xnD(i,1) = sign(W(i,:)*xnA);% função sinal
Y(:,n) = xnD;
xnA = xnD;
n = n + 1; % incrementa variável contadora
end
yi = reshape(Y(:,nMax),cnvmax,cnvmax); % redimensiona imagem para matriz
end