You are on page 1of 52

FUNDAO DE ENSINO EURPIDES SOARES DA ROCHA CENTRO UNIVERSITRIO EURPIDES DE MARLIA UNIVEM CURSO DE BACHARELADO EM CINCIA DA COMPUTAO

LUIS FERNANDO MARTINS CARLOS JUNIOR

RECONHECIMENTO FACIAL UTILIZANDO REDES NEURAIS

MARLIA 2011

LUIS FERNANDO MARTINS CARLOS JUNIOR

RECONHECIMENTO FACIAL UTILIZANDO REDES NEURAIS

Trabalho de Curso apresentado ao Curso de Bacharelado em Cincia da Computao da Fundao de Ensino Eurpides Soares da Rocha, mantenedora do Centro Universitrio Eurpides de Marlia UNIVEM, como requisito parcial para obteno do grau de Bacharel em Cincia da Computao. Orientador: Prof. Me. Rodolfo Barros Chiaramonte

MARLIA 2011

Carlos Jr., Luis Fernando Martins Reconhecimento Facial Utilizando Redes Neurais / Luis Fernando Martins Carlos Junior; orientador: Rodolfo Barros Chiaramonte. Marlia, SP:[s.n], 2011 52 f. Trabalho de Curso (Graduao em Cincia da Computao) Curso de Cincia da Computao, Fundao de Ensino Eurpides Soares da Rocha, mantenedora do Centro Universitrio Eurpides de Marlia UNIVEM, Marlia, 2011. 1. Reconhecimento Facial 2. Redes Neurais CDD:006.32

Dedico este trabalho a duas pessoas que foram de extrema importncia durante minha trajetria, sem as quais eu no teria conseguido chegar at aqui: aos meus pais Luis e Maria que sempre me incentivaram e acreditaram no meus sonhos.

Agradecimentos
Agradeo ao Centro Universitrio Eurpedes de Marlia (UNIVEM), aos diretores, professores e funcionrios pelo timo trabalho junto a instituio, que contribuiu positivamente para a concluso do meu trabalho. Agradeo ao meu professor orientador Prof. Me. Rodolfo Barros Chiaramonte, por me orientar durante o trabalho, por seus conselhos, dicas, crticas e sugestes, que vieram a enriquecer o trabalho. Aos amigos e colegas de classe Denis, Hellen, Jonathan e Raphael, por sua ajuda, seja esta na forma de conselhos, dicas, incentivos ou apoio moral. Agradeo a minha famlia, meus pais Luis e Maria, minha irm Juliana, meu irmo Joo, minha av Yolanda, que me incentivaram e apoiram, me motivando a alcanar minha meta. Agradeo tambm aos amigos Cristiano e Robinho pelo apoio moral e incentivo que me motivaram a no me desviar do meu objeto e acreditar que conseguiria alcana-l.

Aquele que se empenha a resolver as diculdades resolve-as antes que elas surjam. Aquele que se ultrapassa a vencer os inimigos triunfa antes que as suas ameaas se concretizem Sun Tzu NO PAINS, NO GAINS. If little labour, little are our gains: Mans fortunes are according to his pains. Robert Herrick

Carlos Jr., Luis Fernando Martins Reconhecimento Facial Utilizando Redes Neurais. 2011 52 f. Trabalho de Curso (Graduao em Cincia da Computao) Curso de Cincia da Computao, Fundao de Ensino Eurpides Soares da Rocha, mantenedora do Centro Universitrio Eurpides de Marlia UNIVEM, Marlia, 2011. RESUMO O Reconhecimento Automtico de faces considerado uma tarefa bem complexa, pois influenciado por diversos fatores como variao de iluminao, rudos na imagem, expresso facial, culos, mudana nos cabelos, barba ou bigode e pose. Devido as dificuldades comumente encontradas na rea surgiram diversas abordagens diferentes para a resoluo do problema do reconhecimento facial. Este trabalho apresenta uma abordagem para a resoluo do problema de reconhecimento facial, utilizando uma rede neural do tipo MLP (Multilayer Perceptron) treinada com o algoritmo Rprop. O objetivo deste trabalho demonstrar a eficincia de redes do tipo MLP aplicada no reconhecimento de faces. Para tal foi implementado um sistema que deve identificar indivduos a partir de fotografias da face, fornecidas pelo banco de faces ORL(Olivetti Research Laboratory). Os testes foram realizados considerando variaes na quantidade de camadas intermedirias(ocultas), no nmero de neurnios em cada camada intermediria e nas dimenses das imagens de entrada da rede. Onde foi avaliado o desempenho de cada variao da rede, com o intuito de identificar a estrutura que consiga o melhor desempenho. Palavras-chave: Reconhecimento Facial, Redes Neurais Artificiais, Reconhecimento de Padres, Biometria

Carlos Jr., Luis Fernando Martins Reconhecimento Facial Utilizando Redes Neurais. 2011 52 f. Trabalho de Curso (Graduao em Cincia da Computao) Curso de Cincia da Computao, Fundao de Ensino Eurpides Soares da Rocha, mantenedora do Centro Universitrio Eurpides de Marlia UNIVEM, Marlia, 2011. ABSTRACT The Automatic Face Recognition is considered a very complex task, as it is influenced by several factors, such as changes in lighting, noise in the image, facial expression, glasses, change the hair, beard or mustache and pose. Currently several techniques can be found for the recognition of faces. Due to the difficulties commonly found in the area there were several different approaches to solving the problem of face recognition. This work presents an approach to solve the problem of face recognition using a neural network MLP (Multilayer Perceptron)trained with the algorithm Rprop. The objective of this study is to demonstrate the effectiveness of the MLP networks applied to face recognition. A system that identify individuals from photographs of the face was implemented. The photographs were provided by ORL (OlivettiResearch Laboratory) database of faces. The tests were performed considering variations in the amount of intermediate layers (hidden), the number of neurons in each hidden layer and the size of the input images of the network. The performance of each variation of the network were measured, in order to identify the structure that achieves the best performance. Keywords: Face Recognition, Artificial Neural Networks, Pattern Recognition, Biometry

Lista de Figuras
1 2 3 Modelo de neurnio biolgico (PIAZENTIN; DUARTE, 2011). . . . . . . . . . p. 24 p. 25

Neurnio MCP (BRAGA; CARVALHO; LUDERMIR, 2007). . . . . . . . . . . . . Topologia do Perceptron simples com uma nica camada (BRAGA; CARVALHO; LUDERMIR,

2007).

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

p. 27 p. 29 p. 34

4 5 6

Topologia da rede MLP - Multilayer Perceptron (HAYKIN, 2001) . . . . . . . Amostra de imagens encontrados no banco de faces ORL (AT&T, 1992). . . . Grco "nmero de neurnios"X "porcentagem de acertos", para a rede com uma camada intermediria. . . . . . . . . . . . . . . . . . . . . . . . . . . .

p. 40

Grco "nmero de neurnios"X "porcentagem de acertos", para rede com duas camadas intermedirias. . . . . . . . . . . . . . . . . . . . . . . . . . . p. 41

Lista de Tabelas
1 Tcnicas de Reconhecimento de faces (fotograas) desenvolvidas nos ltimos anos (ZHAO et al., 2003). . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 4 5 6 7 Resultado com imagens de 23x23 pixels e uma camada oculta de neurnios. . Resultado com imagens de 46x46 pixels e uma camada oculta de neurnios. . Resultado com imagens de 92x92 pixels e uma camada oculta de neurnios. . Resultado com imagens de 23x23 pixels e duas camadas oculta de neurnios. Resultado com imagens de 46x46 pixels e duas camadas oculta de neurnios. Resultado com imagens de 92x92 pixels e duas camadas oculta de neurnios. p. 20 p. 39 p. 39 p. 39 p. 39 p. 40 p. 40

Sumrio

Introduo 1 Reconhecimento Facial 1.1 1.2 1.3 Consideraes iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deteco Facial e Extrao de Caractersticas . . . . . . . . . . . . . . . . . Metodologias de Reconhecimento Facial . . . . . . . . . . . . . . . . . . . . 1.3.1 1.3.2 1.3.3 2 Mtodos Baseados em Caractersticas . . . . . . . . . . . . . . . . . Mtodos Holsticos . . . . . . . . . . . . . . . . . . . . . . . . . . . Redes Neurais Aplicadas no reconhecimento facial . . . . . . . . . .

p. 15 p. 17 p. 17 p. 18 p. 19 p. 19 p. 21 p. 21 p. 23 p. 23 p. 24 p. 24 p. 25 p. 27 p. 28 p. 30 p. 31 p. 33 p. 33 p. 33

Redes Neurais 2.1 2.2 2.3 2.4 2.5 2.6 Histrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Neurnio Biolgico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Neurnio Articial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aprendizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Perceptron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Perceptron Mltiplas Camadas . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.1 2.6.2 Treinamento de Redes MLP . . . . . . . . . . . . . . . . . . . . . . Variaes do Algoritmo Back-propagation . . . . . . . . . . . . . . .

Desenvolvimento 3.1 3.2 Mtodo Proposto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Banco de Imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.3 3.4 3.5 3.6 3.7 4

Encog Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Implementao do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . Especicao dos Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resultados Obtidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Consideraes sobre os Testes . . . . . . . . . . . . . . . . . . . . . . . . .

p. 34 p. 35 p. 38 p. 38 p. 40 p. 43 p. 44 p. 47

Concluses

Referncias Apndice A -- Implementao do Sistema de Reconhecimento Facial

15

Introduo
frequente situaes onde as pessoas necessitam assegurar sua autenticidade, como na realizao de transaes bancrias, identicao em empresas, aeroportos e shopping centers. Citam-se como meios de identicao mais utilizados, a aplicao de senhas e uso de cartes com chips ou dispositivos magnticos que permitem a identicao do indivduo. O problema com esses mtodos que qualquer indivduo pode conseguir a senha ou o carto de outro (HEINEN, 2002).

Com a biometria esses tipos de problemas so extintos, ou pelo menos amenizados.

Existem diversas caractersticas biolgicas que podem ser utilizadas em um processo de identicao, dentre as principais tem-se: impresso digital, retina, ris, geometria da mo, face, voz e assinatura. Todos os mtodos anteriormente citados tm suas vantagens e desvantagens, cabendo ao utilizador optar pelo mtodo que melhor se encaixe na aplicao desejada, sendo que cada um obter um maior sucesso em uma determinada aplicao. Este trabalho escolhe o Reconhecimento Facial como objeto de estudo, pois este possui algumas vantagens sobre as demais tecnologias biomtricas, pois natural, no-intrusivo e de fcil utilizao (LI; JAIN, 2005). O reconhecimento facial uma area de pesquisa bem abrangente e envolve vrias disciplinas, como: processamento de imagem, reconhecimento de padres, viso computacional e redes neurais. Desde de quando comeou a ser estudada at os dias de hoje, surgiram diversas tcnicas e abordagens para a resoluo do problema do reconhecimento de faces. As redes neurais articiais so um modelo computacional inspirado no crebro humano e possuem a capacidade de aprender e generalizar atravs de exemplos. As redes neurais tem contribudo muito no desenvolvimento de sistemas de reconhecimento e classicao de padres e so utilizadas em vrios trabalhos voltados ao reconhecimento de expresses faciais (XIAO et
al., 1999).

O presente trabalho prope uma abordagem para a resoluo do problema, utilizando

redes neurais. A abordagem proposta nesse trabalho consiste de uma rede neural do tipo MLP (Multilayer Perceptron) treinada com o algoritmo Rprop (uma variao do backpropagation). A rede ser treinada a partir de fotograas da face de indivduos, aps treinada a rede ser submetida testes de reconhecimento, onde recebe uma outra imagem de um dos indivduos com o qual a rede foi

16

treinada anteriormente. O objetivo deste trabalho implementar um sistema de reconhecimento facial utilizando redes neurais, testar e analizar os resultados.

17

Reconhecimento Facial

Este captulo faz um levantamento bibliogrco sobre o reconheciemento facial. Ser abordada suas motivaes, vantagens em relao a outros sistemas biomtricos, diculdades encontradas e metodologias existentes.

1.1

Consideraes iniciais

O reconhecimento facial vem recebendo uma ateno signicativa principalmente durante os ltimos anos, pode-se citar ao menos dois motivos para isto: o primeiro o grande nmero e variedades de aplicaes possveis, sejam elas comerciais, militares ou de segurana pblica e o segundo a disponibilidade de tecnologias viveis aps dcadas de pesquisa (ZHAO et al., 2003). O reconhecimento facial, seja ele a partir de imagens estticas ou imagens de vdeos, considerada um rea de pesquisa bem promissora, abrangendo diversas disciplinas como: processamento de imagem, reconhecimento de padres, viso computacional e redes neurais (CHELLAPPA; WILSON; SIROHEY,

1995). Existem diversas aplicaes onde a identicao humana

necessria e o reconhecimento facial possui algumas vantagens sobre as demais tecnologias biomtricas, pois natural, no-intrusiva e de fcil utilizao (LI; JAIN, 2005). De maneira geral o problema pode ser especicado da seguinte forma: dado uma fotograa ou imagem de vdeo identicar uma ou mais pessoas na cena usando um banco de dados armazenado de faces. A soluo do problema envolve a segmentao da face a partir de cenas cheias e/ou confusas, extrao de atributos faciais, identicao e correspondncia (CHELLAPPA; WILSON; SIROHEY,

1995).

Existem diversos problemas que comprometem a eccia de um sistema de reconhecimento facial como variao de iluminao, rudos na imagem, expresso facial, culos, mudana nos cabelos, barba ou bigode e pose. Devidos ao problemas acima citados o desempenho dos sistemas de reconhecimento facial ainda esto distantes da percepo humana e so relativamente

18

pobres comparando com outros sistemas de reconhecimento biomtrico como reconhecimento de impresso digital ou ris, sendo que tipicamente so apresentadas taxas de erro entre 2 25% (BARRETT, 1998). Um sistema de reconhecimento facial geralmente consiste de quatro mdulos: deteco facial, normalizao, extrao de caractersticas, e comparao (LI; JAIN, 2005). A deteco facial identica a rea referente a uma face em uma imagem e a isola do restante da imagem. A normalizao visa a localizao mais exata da face e compensa variaes que possam existir em uma face. A extrao de caractersticas analisa alguns componentes faciais como olhos, nariz e boca gerando um conjunto de atributos que ser utilizado na fase de comparao. Na fase comparao vericado a semelhana entre o conjunto de atributos obtidos com os mesmos atributos armazenados no banco de dados.

1.2

Deteco Facial e Extrao de Caractersticas

A deteco facial ou segmentao o primeiro passo a ser realizado em um sistema de reconhecimento facial, consiste em identicar e isolar a rea referente a face em uma imagem. A deteco facial pode ser realizada com base em vrios estmulos: cor de pele, formato do rosto ou cabea, aparncia da face, ou a combinao destes. A maior parte dos algoritmos de sucesso de deteco facial so os baseados em aparncia sem usar outros estmulos (LI; JAIN, 2005). A extrao de caractersticas gera o conjunto de atributos que sero utilizados no processo de comparao com o banco de dados. Trs tipos de mtodos de extrao de caractersticas podem ser distinguidos: mtodos genricos baseados em arestas linhas e curvas; mtodos baseados no modelo de caractersticas que so usados para detectar caractersticas faciais como olhos; mtodos estruturais de correspondncia, que levam em considerao restries geomtricas sobre as caractersticas. Inicialmente as abordagens eram centradas nas caractersticas individuais, por exemplo uma abordagem baseada em modelo foi descrito em (HALLINAN, 1991) para detectar e reconhecer o olho humano em uma face frontal. Estes mtodos tm diculdade quando a aparncia de caractersticas se alteram signicativamente, por exemplo, boca aberta, olhos fechados ou com

19

culos. Para detectar as caractersticas de forma mais convel, as abordagens recentes tm usado mtodos estruturais de correspondncia, por exemplo, o modelo Active Shape (COOTES
et al.,

1995). Comparando com os mtodos anteriores, estes mtodos recentes so muito mais

robustos em termos de lidar com variaes (ZHAO et al., 2003).

1.3

Metodologias de Reconhecimento Facial

De acordo com Zhao et al. (2003) os mtodos de reconhecimento facial podem ser classicados de acordo com a forma que analisam a face considerando-a como um todo ou se baseando em caractersticas isoladas, assim pode-se divid-los nos trs grupos seguintes: Mtodos baseados em caractersticas: realizam o reconhecimento de acordo com determinadas caractersticas individuais da face e suas relaes geomtricas, analisando caractersticas como olhos, nariz e boca, assim como medidas de distncias e ngulos entre tais caractersticas. Mtodos holsticos: realizam o reconhecimento analisando a face como um todo sem se preocupar em identicar caractersticas isoladas. Mtodos hbridos: a fuso dos anteriores, inspirado na percepo humana que realiza o reconhecimento analisando tanto caractersticas locais quanto a regio inteira da face, uni as melhores caractersticas dos dois mtodos. As dcadas de 70 e 80 tinham como mtodos tradicionais as estratgias baseadas em anlise das caractersticas e Template Matching, enquanto que a partir dos anos 90 surgiram mtodos baseados em transformaes lineares (e tambm no lineares) e redes neurais, que apresentaram melhores desempenhos com relao a bases de dados grandes (superiores a 100 imagens). Portanto enfatizando as tcnicas em reconhecimento de faces atravs de fotograas desenvolvidas nos ltimos anos pode-se recorrer tabela 1.

1.3.1

Mtodos Baseados em Caractersticas

Mtodos baseados em caractersticas so aqueles que fazem o reconhecimento baseado em caractersticas individuais da face. Dentre estes mtodos pode-se citar o mtodo baseado em caractersticas geomtricas da face. Este mtodo utiliza caractersticas da face como olhos, boca e nariz, e parmetros pertencentes a estas caractersticas como distncias entre os olhos, o

20

Tabela 1: Tcnicas de Reconhecimento de faces (fotograas) desenvolvidas nos ltimos anos (ZHAO et al., 2003).

tamanho da boca, e a distncia entre a boca e o nariz, para montar um vetor caracterstico que ser utilizado para identicar um indivduo associado ao banco de dados. Muitas pessoas tm explorados estes mtodos, Kanade (1973) apresentou um mtodo automtico de extrao de caractersticas e relatou um reconhecimento entre 45 - 75% com um banco de dados de 20 pessoas, enquanto Brunelli e Poggio (1993) utilizaram um mtodo baseado num conjunto de relaes geomtricas como a largura e o comprimento do nariz a posio da boca e o formato do queixo. Eles relatam uma taxa de 90% de reconhecimento sobre uma base de dados de 47 pessoas. Cox, Ghosn e Yianilos (1996) introduziram uma tcnica que mistura distncias, que atinge uma taxa de reconhecimento de 95%, utilizando um banco de dados de 95 imagens de um total de 685 indivduos, onde cada face representada por 30 distncias extradas manualmente.

21

1.3.2

Mtodos Holsticos

Os mtodos holsticos so aqueles que efetuam o reconhecimento considerando a face como um todo, utilizando de informaes globais da face, sem analisar caractersticas fsicas isoladas. As informaes globais da face podem ser representadas por um vetor derivado diretamente da informao dos pixels das imagens da face, contudo este vetor pode ser considerado demasiadamente grande tornando o processo dispendioso, assim surgiram diversas tcnicas com o objetivo de conseguir um taxa de reconhecimento considervel e ao mesmo tempo economizar recursos de processamento. Os mtodos estatsticos possuem uma importante caracterstica que a compresso das informaes contidas nas imagens (reduo de dimensionalidade) e apenas aps isto realizada a classicao, dentre estes mtodos os mais relevantes so Anlise de Componente Principal (PCA) (TURK; PENTLAND, 1991a) (TURK; PENTLAND, 1991b), Anlise de Componente Independente (ICA) (BARTLETT; LADES; SEJNOWSKI, 1998), e Anlise Discriminante Linear (LDA) (BELHUMEUR; HESPANHA; KRIEGMAN, 1997) (SWETS; WENG, 1996a) (SWETS; WENG, 1996b). Os trs mtodos se baseiam em anlises estatsticas dos vetores da face, e em transformaes lineares e no lineares dos sistemas de coordenadas onde se encontram estes vetores.

1.3.3

Redes Neurais Aplicadas no reconhecimento facial

Uma soluo no linear para o problema do reconhecimento facial dada pelas redes neurais, largamente utilizadas em problemas de reconhecimento de padres e readaptada para o reconhecimento de faces. A idia bsica seria dimensionar a rede com um neurnio para cada pixel da imagem, contudo devido as dimenses do modelo as redes no so treinadas diretamente com as imagens como entrada, isto tornaria a rede muito complexa e difcil de treinar, ao invs disso a rede recebe como entrada dados processados por alguma tcnica de reduo de dimensionalidade (ABATE et al., 2007). Uma abordagem para o problema foi proposta por Cottrell e Fleming (1990) utilizando duas redes perceptron back-propagation, onde a primeira trabalha em modo auto-associativo extraindo caractersticas para a segunda, que realiza a classicao. Embora as redes neurais possam ser usadas para problemas envolvendo muitas imagens Conttrell e Fleminig mostram que mesmo em condies favorveis a soluo proposta por eles no consegue um resultado melhor que o PCA. Outros tipos de redes tambm tem sido utilizados em trabalhos na rea buscando explorar propriedades particulares de cada rede. Foi apresentado por Lawrence et al. (2002) um sistema

22

que combinava uma amostragem local da imagem, uma rede neural SOM, e uma rede neural de convoluo ou Convolution Neural Network, segundo os autores essa rede apresentou uma taxa de erro de 3,83%. Outro trabalho importante foi uma anlise com redes perceptron multicamadas realizada por Rizk e Taha (2002) utilizando o algoritmo de treinamento Backpropagation (Multilayer Perceptron Backpropagation Neural Networks - MLP/ BP NN), rede neural de Funo Base Radial (Radial Basis Function Neural Networks - RBF NN), e rede neural de Cluster Multicamadas (Multilayer Cluster Neural Networks - MCNN) para aplicaes no reconhecimento de faces. As redes neurais foram alimentadas com um vetor caracterstico extrado das imagens atravs de vrios mtodos de extrao e compresso de dados, eles so: Discrete Wavelet Transform (DWT), Discrete Radon Transform (DRT), Discrete Cosine Transform (DCT) e Principal Component Analysis (PCA).

23

Redes Neurais

Este captulo apresenta os conceitos bsicos sobre as redes neurais articiais. Inicialmente realizado um breve histrico, em seguida apresentada uma reviso sobre redes biolgicas. Na sequncia apresentado o modelo de neurnio articial e os tipos de treinamento. E por m so apresentados dois modelos de redes neurais, o Perceptron e o MLP (Multilayer Perceptron).

2.1

Histrico

O primeiro modelo articial de um neurnio biolgico foi concebido por McCulloch e Walter Pitts, em 1943. O trabalho de McCulloch e Pitts foi voltado em descrever um modelo articial de um neurnio e apresentar suas capacidades computacionais e o neurnio apresentado por eles foi chamado de MCP. Somente alguns anos depois do trabalho de McCulloch e Pitts o aprendizado de redes biolgicas veio a ser objeto de estudo, e primeiro trabalho com relao ao aprendizado de redes neurais foi apresentado por Donald Hebb em 1949. Em 1958 Rosenblatt apresentou um novo modelo de neurnio o perceptron, seu modelo consistia em acrescentar sinapses ajustveis as redes com neurnios MCP, permitindo que a rede pudesse ser treinada para classicar alguns tipos padres. Porm em 1969, Minsky e Papert demonstraram que o perceptron de uma unica camada apresentado por Rosenblatt era limitado a resolver problemas linearmente separveis. Durante a dcada de 70 o estudo de redes neurais cou adormecido, devido principalmente a repercusso do trabalho de Minsky e Papert, apesar de algumas poucas pesquisas na rea. A retomada por pesquisas em RNAs aconteceu nos anos 80, motivadas principalmente por um artigo publicado em 1982 por John Hopield, que chamou a ateno para as propriedades associativas das RNAs, mostrando a relao entre redes recorrentes auto-associativas e sistemas fsicos. Alguns anos depois com o surgimento do algoritmo back-propagation(RUMELHART; HINTON; WILLIAMS, 1986), mostrou-se que a viso de Misky e Papert sobre o perceptron era bastante pessimista e que as RNAs de mltiplas camadas so capazes de resolver problemas difceis de aprender(BRAGA; CARVALHO; LUDERMIR, 2007).

24

2.2

Neurnio Biolgico

O neurnio uma clula do crebro, cuja principal funo coletar e disseminar sinais eltricos. Acredita-se que redes formadas por esses neurnios sejam a principal responsvel pela capacidade de processamento do celbro humano (RUSSELL; NORVIG, 2003). Segundo Braga, Carvalho e Ludermir (2007) o neurnio biolgico pode ser divido em trs partes, corpo celular, dendritos e axnio, cada uma com sua prpria funo, no entanto complementares entre si. Os dendritos possuem a funo de receber as informaes (impulsos nervosos), proveniente de outros neurnios e conduzi-las ao corpo-celular, onde a informao processada, e novos impulsos so gerados, esses impulsos passam pelo axnio onde so transmitidos a outros neurnios. A regio onde ocorre o contato entre a sada axnica de um neurnio e o dendrito de outro chamada de sinape. atravs das sinapses que os neurnios so unidos funcionalmente, formando as redes neurais biolgicas. Na gura 1 pode ser observado os componentes de um neurnio biolgico.

Figura 1: Modelo de neurnio biolgico (PIAZENTIN; DUARTE, 2011).

2.3

Neurnio Articial

A natureza sempre serviu de inspirao para a cincia e o neurnio articial um exemplo disto. O MCP, neurnio proposto por McCulloch e Pitts uma simplicao do que se sabia na poca o respeito do neurnio biolgico. Este modelo de possui n entradas, que representam os dendritos, cada uma destas entradas recebem valores x1 , x2 , x3 , ..., xn , representando as ativaes dos neurnios anteriores e um nico terminal de sada y, que representa o axnio. O comportamento das sinapes obtido atravs de pesos w1 , w2 , w3 , ..., wn , que so vinculados as entradas, onde estes pesos podem ter valor positivo ou negativo dependendo do tipo de sinapse. Um representao grca desse modelo pode ser observado na gura 2.

25

A ativao do neurnio articial representado por um mecanismo simples que faz a soma dos valores xi wi recebidos pelo neurnio e decide se este deve ou no disparar (sada 1 ou 0), comparando o valor obtido na soma com o limiar de exitao (threshold). No caso do MCP a sada do neurnio obtida atravs de uma funo de ativao. A funo de ativao responsvel por emitir a sada y do neurnio atravs dos vetores de pesos w = (w1 , w2 , w3 , . . . , w4 ) e de entrada x = (x1 , x2 , x3 , ..., x4 ). A funo de um neurnio MCP, pode ser observada na equao 2.1. f (u) = 1 0 n xi wi i=1 n xi wi < i=1 (2.1)

Figura 2: Neurnio MCP (BRAGA; CARVALHO; LUDERMIR, 2007). A partir do modelo proposto por McCulloch e Pitts foram derivados vrios outros modelos que permitem a produo de uma sada qualquer, no necessariamente zero ou um, e com diferentes funes de ativao.

2.4

Aprendizado

As RNAs tem como principal caracterstica a capacidade de aprendizado atravs de exemplos, pois esta caracterstica que difere a abordagem conexionista (RNAs) da IA simblica. Na IA simblica o conhecimento adquirido atravs de regras explicitas, enquanto que as RNAs adquirem o conhecimento atravs de ajustes em seus pesos (BRAGA; CARVALHO; LUDERMIR, 2007). De maneira geral o aprendizado pode ser denido da seguinte forma: Aprendizagem um processo pelo qual os parmetros livres de uma rede neural so adaptados atravs de um processo de estimulao pelo ambiente no qual a rede est inserida. O tipo de aprendizagem determinada pela maneira pela qual a modicao dos parmetros ocorre (MENDEL; MCLAREN, 1970).

26

Para o aprendizado de uma rede necessrio primeiramente um critrio para medir o desempenho da mesma. Atravs desse critrio possvel avaliar a rede, aps esta ter sido submetida os ao conjunto de dados fornecidos pelo ambiente. E com esta avaliao possvel calcular o erro atual da rede. Um algoritmo de treinamento tem como objetivo diminuir o erro atual da rede a medida que o aprendizado vai acontecendo. Na equao 2.2, pode ser observado de forma genrica como o vetor de pesos pode ser ajustado durante o treinamento visando diminuir o erro da rede. Onde w(t) e w(t + 1) representam os valores dos pesos nos instantes t e t+1, respectivamente, e w(t) o ajuste aplicado aos pesos. A maioria dos algoritmos de treinamento funcionam desta forma diferindo apenas na forma de como w(t) calculado. w(t + 1) = w(t) + w(t) (2.2)

Segundo Azevedo, Brasil e Oliveira (2000) o aprendizado pode ser classicado em dois tipos: associativo e no associativo. No aprendizado associativo a rede aprende sobre o relacionamento entre pares de estmulos, este tipo de aprendizado modelo para RNA supervisionadas. Enquanto que no aprendizado no-associativo, no h estmulos secundrios para associar com os estmulos primrios. Neste tipo de aprendizado, a repetio de um estmulo fornece a oportunidade para aprender sobre suas propriedades, este tipo de aprendizado o modelo em RNA no-supervisionada. Aprendizado Supervisionado: neste tipo de treinamento, para cada entrada submetida rede tambm submetida uma sada desejada. A partir de cada entrada a rede produz uma sada como resposta, esta sada comparada com a sada desejada. Se a sada corrente for diferente da sada desejada, a rede gera um erro, o qual utilizado para calcular o ajuste que deve ser feito nos pesos da rede com intuito de minimizar o erro. Este processo de comparao da sada e minimizao de erros realizado por um circuito especial chamado supervisor ou professor, da o nome aprendizado supervisionado (AZEVEDO;
BRASIL; OLIVEIRA,

2000). O algoritmo de treinamento supervisionado mais conhecido

a regra delta (WIDROW; HOFF, 1960) e sua generalizao para redes de mltiplas camadas o back-propagation (RUMELHART; HINTON; WILLIAMS, 1986). Aprendizado No-Supervisionado: ao contrrio do aprendizado supervisionado este tipo de aprendizado no necessita de um supervisor e no h sada desejada. Durante o treinamento os padres de entrada so apresentados continuamente rede, esta por sua vez organiza e classica os padres de acordo com regularidades encontradas nos dados. O aprendizado no-supervisionado aplicado na resoluo de problemas que tem por objetivo descobrir caractersticas estatisticamente relevantes nos dados de entrada, como a

27

descoberta de classes, ou agrupamentos(BRAGA; CARVALHO; LUDERMIR, 2007). Citam-se como modelos conhecidos deste tipo de aprendizado os mapas auto-organizveis (SOM Self Organizing-Maps) de Kohonen (KOHONEN, 1982) e os modelos ART(Adaptive Resonancy Theory) (CARPENTER; GROSSBERG, 1988).

2.5

Perceptron

O modelo perceptron foi proposto por Rosenblatt, em 1958, sua topologia original era composta por unidades de entrada(retina), por um nvel intermedirio formado pelas unidades de associao e por um nvel de sada formado pelas unidades de resposta. Apesar dessa topologia possuir trs nveis, ela cou conhecida como perceptron de uma camada, pois somente o nvel de sada possui propriedades adaptativas. De forma geral podemos denir a retina como unidades sensoras, e as unidades intermedirias de associao, que apesar de formadas por neurnios MCP, possuem pesos xos, denidos antes do treinamento(BRAGA; CARVALHO;
LUDERMIR,

2007). O modelo descrito pode ser observado na gura 3.

Figura 3: Topologia do Perceptron simples com uma nica camada (BRAGA; CARVALHO; LUDERMIR, 2007). Dado um neurnio arbitrrio da camada de resposta de um perceptron, e seus vetores de entrada x e de pesos w , sua ativao dada por wi + xi = w .x , onde w .x produtos dos vetores w e x . Portanto a condio crtica para o disparo do neurnio pode ser representada por w .x = , ou w .x = 0, o que equivale a se adicionar um peso w0 com valor s entradas do neurnio e conect-lo a uma entrada com valor xo x0 = 1. A nova condio crtica de disparo passa a ser w.x = 0, onde w = { , w1 , w2 , ..., wn }T e x = {1, x1 , x2 , ..., xn }T . Considere um neurnio arbitrrio da rede, submetido ao par de treinamento {x, yd }, onde x o valor de entrada e yd a sada desejada. Considere a sada atual da rede em resposta a entrada x

28

como y, assim pode-se denir o erro devido sada atual como sendo e = yd y. No caso do perceptron tem-se sempre que y {0, 1} e yd {0, 1}, portanto e {1, 0, 1}. No caso de e = 0, no ser necessrio ajuste no vetor de pesos w, pois y = yd , quando e = 1, um vetor deve ser somado ao vetor de pesos w, com intuito de aproxim-lo do resultado, porm quando e = 1, um vetor deve ser subtrado do vetor de pesos w. Assim o treinamento do perceptron pode ser representado pela Equao 2.3, onde w(n) e w(n + 1) representam os valores dos vetores de pesos nos instantes n e n + 1, respectivamente, a taxa de aprendizado, uma constante que indica com qual velocidade o vetor de pesos ser ajustado, e o erro no instante n, que indicar em qual direo os pesos do vetor w ser ajustado e x o vetor de entrada. De acordo com o Teorema da Convergncia(ROSENBLATT, 1958), atualizao dos pesos atravs da Equao 2.3 leva sempre a uma soluo, caso as classes em questo sejam linearmente separveis.

w(n + 1) = w(n) + ex(n)

(2.3)

Segundo Braga (2007), a implementao do algoritmo de treinamento do perceptron pode ser descrito da seguinte forma: 1. Inicialize n; 2. Inicialize o vetor de pesos w com valores aleatrios; 3. Aplique a regra de atualizao de pesos w(n + 1) = w(n) + ex(n) para todos os p pares
p (xi , yi ) do conjunto de treinamento = {(xi , yi )}i=1 ; i d

4. Repita o passo anterior at que e = 0 para todos os p elementos de ;

2.6

Perceptron Mltiplas Camadas

Como visto anteriormente as RNAs de uma nica camada esto limitadas a resolver problemas linearmente separveis. Contudo a no-linearidade est presente na maioria dos problemas reais, sendo necessria a utilizao de uma estrutura com caractersticas no lineares para a resoluo de problemas com maior complexidade. Minsky e Papert (1972) em seu livro "Perceptrons"abordaram principalmente a incapacidade de redes do tipo perceptrons de uma nica camada em resolver problemas no linearmente separveis. Uma soluo para o problema seria a utilizao de mais uma camada de pesos adptativos, o que equivaleria ao aumento da dimensionalidade do problema. Contudo seria necessrio um algoritmo de aprendizagem que tratasse todas as camadas, segundo Minsky e Papert seria

29

impossvel implementar tal algoritmo, anos mais tarde foi provado que eles estavam enganados sobre isto (AZEVEDO; BRASIL; OLIVEIRA, 2000). O Perceptron de Mltiplas Camadas (MLP - Multilayer Perceptron) uma rede de mltiplas camadas, composta por um conjunto de unidades sensoriais que formam a camada de entrada, uma ou mais camadas ocultas e uma camada de sada, uma representao grca de uma rede MLP pode ser observada na gura 4. Estas redes se caracterizam por possuir neurnios com funo de ativao sigmoidais nas camadas intermedirias e sigmoidais ou lineares na camada de sada. As camadas intermedirias devem utilizar funes de ativao no lineares para possibilitar o resoluo de problemas de maior ordem no espao de entrada. A utilizao de funes lineares em todas as camadas resultaria em uma rede de uma nica camada, j que transformaes lineares sucessivas podem ser descritas como uma nica transformao linear (BRAGA; CARVALHO; LUDERMIR, 2007).

Figura 4: Topologia da rede MLP - Multilayer Perceptron (HAYKIN, 2001) De uma maneira geral a funo das mltiplas camadas de uma rede feedforwad como a MLP, transformar o problema descrito pelo conjunto de dados de entrada em uma representao tratvel para a camada de sada da rede. Desta forma pode-se considerar que um problema no-linearmente separvel seja transformado pela camada intermediria e um problema linearmente separvel. Uma questo muito importante que deve ser considerada ao criar uma rede de mltiplas camadas a denio do nmero de neurnios em cada camada. A quantidade de neurnios inuncia muito no desempenho da rede principalmente em sua capacidade de generalizao. Quanto mais neurnios maior a complexidade da rede e maior a capacidade de resolver proble-

30

mas. Porm deve-se ter cuidado ao dimensionar uma rede, pois uma rede com muitos neurnios por conter uma grande nmero de solues, possui uma pequena quantidade de solues timas em relao ao total de solues. Apesar de vrias pesquisas em redes neurais voltadas para o dimensionamento de redes, no existe nenhuma frmula para calcular o nmero de neurnios que uma rede deve ter, pois a quantidade necessria de neurnios est diretamente ligada a complexidade do problema a ser resolvido.

2.6.1

Treinamento de Redes MLP

A soluo para o problema do treinamento de redes MLPs surgiu na dcada de 80, com o algoritmo de retropropagao de erros ou back-propagation. Este algoritmo conhecido tambm como regra delta generalizada, pois uma generalizao da regra delta utilizada para o treinamento de redes Adaline(WIDROW; HOFF, 1960). O back-propagation um algoritmo de treinamento supervisionado, que durante o treinamento submete a rede pares de dados, formados pela entrada e sada desejada, para o ajuste dos pesos da rede. O treinamento ocorre em duas fases, forward e backward, onde cada uma percorre a rede em determinado sentido. Segundo Braga, Carvalho e Ludermir (2000) o algoritmo de aprendizado back-propagation e suas fases, podem ser descritos da seguinte forma: Fase forward: 1. A entrada apresentada primeira camada da rede. 2. Para cada camada Ci a partir da camada de entrada 2.1 Aps os nodos da camada Ci (i > 0) calcularem seus sinais de sada, estes servem como entrada para a denio das sadas produzidas pelos nodos da camada Ci+1 . 3. As sadas produzidas pelos nodos da ltima camada so comparadas s sadas desejadas. Nessa fase, so determinadas as sadas para um dado padro de entrada. Fase backward: 1. A partir da ltima camada at a camada de entrada. 1.1 Os nodos da camada atual ajustam seus pesos de forma a reduzir seus erros. 1.2 O erro de um nodo das camadas intermedirias calculado utilizando os erros dos nodos da camada seguinte conectados a ele, ponderados pelos pesos das conexes entre eles.

31

Nessa fase, as sadas desejada e fornecida so comparadas e os pesos ajustados. O algoritmo do back-propagation une as duas fases apresentadas acima e percorre os seguintes passos: 1. Inicializao de pesos e parmetros. 2. Repita at que o erro mnimo ou a realizao de um dado nmero de ciclos: 2.1 Para cada padro de treinamento X: 2.1.1 Denir sada da rede atravs da fase forward. 2.1.2 Comparar sadas produzidas com sadas desejadas. 2.1.3 Atualizao de pesos dos nodos atravs da fase backward. Esse algoritmo prope que o ajuste de pesos seja realizado atravs do mtodo do gradiente descendente. Apesar deste algoritmo caminhar na direo correta para a correo de erros e proporcionar bons resultados, ele deixa um tanto a desejar na velocidade de convergncia em busca da minimizao dos erros. A principal diculdade est relacionada com sua sensibilidade s caractersticas da superfcie de erro, o que diculta a sua convergncia em reas de baixo gradiente e mnimos locais (BRAGA; CARVALHO; LUDERMIR, 2007).

2.6.2

Variaes do Algoritmo Back-propagation

A implementao original do back-propagation muito lenta em diversas situaes, e seu desempenho piora na medida em que aumenta o tamanho e a diculdade dos problemas submetidos a rede. Visando acelerar o tempo de treinamento e melhorar o desempenho, foram criadas algumas variaes do algoritmo back-progation, como o back-propagation com momentum, Quickprop e Rprop, que sero abordados com mais detalhes a seguir: Back-propagation com momentum: Este mtodo consiste na adio de um termo para o ajuste dos pesos, proporcional ao valor da mudana de peso anterior, este termo chamado de momentum (AZEVEDO; BRASIL; OLIVEIRA, 2000). De acordo com Zurada (1992) a adio do momentum pode ser feita conforme a equao 2.4, onde, t e t 1 indicam a etapa de treinamento atual e a anterior, o termo de momento e E(t) correspondem ao gradiente descendente do erro.

w(t) = E(t) + w(t 1)

(2.4)

32

Quickprop: Este algoritmo utiliza informaes sobre a curvatura da superfcie de erro para acelerar a convergncia da rede. Comparado com o back-propagation a principal diferena que o Quickprop utiliza as inclinaes anterior e atual do erro para cada peso. Quickprop considera que a superfcie de erro localmente quadrtica, formando uma parbola, e procura saltar da posio atual na superfcie para o ponto mnimo da parbola(BRAGA; CARVALHO; LUDERMIR, 2007). A equao para ajuste dos pesos pode ser observada na Equao 2.5.
E w ji (t) E E w ji (t 1) w ji (t)

w ji (t) =

w ji (t 1)

(2.5)

Rprop: O algoritmo back-propagation padro realiza o ajustes dos peso utilizando o valor da derivada parcial, o problema que em alguns casos esse valor muito prximo de zero, fazendo com que o ajuste de pesos seja mnimo. O Rprop(Resilient back-propagation) elimina esse problema, pois utiza apenas o sinal da derivada e no o seu valor. O sinal da derivada indica apenas a direo do ajuste de pesos, o tamanho do ajuste de pesos denido por um "valor de atualizao"tji , de acordo com a equao 2.6. ji (t), w ji (t) = + ji (t), 0, se se se
E w ji (t) > 0 E w ji (t) < 0 E =0 w ji

(2.6)

Onde o valor de atualizao tji denido por um processo de adaptao que depende sinal da derivada do erro com relao ao peso a ser ajustado, conforme a equao 2.7, onde 0 < < 1 < + . + ji (t 1), se ji (t) = ji (t 1), se ji (t 1),
E(t1) E(t) w ji w ji E(t1) E(t) w ji w ji E se w ji

>0 <0 =0 (2.7)

De acordo com a regra de adaptao utilizado pelo Rprop, quando a derivada parcial do erro em relao a um peso w ji mantm o seu sinal, mostra que o ajuste anterior reduziu o erro cometido, o valor de atualizao ji aumentado pelo fator + , acelerando a convergncia do treinamento. Porm quando a derivada parcial muda de sinal, signica que o ajuste anterior foi demasiadamente grande, o valor de atualizao ji reduzido pelo fator , mudando a direo do ajuste (BRAGA; CARVALHO; LUDERMIR, 2007).

33

Desenvolvimento

Neste captulo ser apresentado o desenvolvimento da proposta, onde ser abordada a metodologia escolhida e o banco de faces utilizado. Em seguida ser discutido a implementao do sistema, os resultados obtidos e as consideraes sobre os mesmos.

3.1

Mtodo Proposto

As redes neurais articiais tem contribudo muito no desenvolvimento de sistemas de reconhecimento e classicao de padres em imagens e so utilizadas em vrios trabalhos voltados ao reconhecimento de expresses faciais (XIAO et al., 1999). O presente trabalho aborda um mtodo de reconhecimento de faces baseado em redes neurais do tipo MLP (Multilayer Perceptron) submetida a um treinamento com o algoritmo Rprop (Resilient back-propagation). A rede neural foi implementada utilizando o Encog, framework JAVA para implementao de redes neurais articiais. A proposta consiste em treinar a rede a partir de fotograas da face de indivduos, aps treinada a rede submetida ao teste de reconhecimento onde recebe uma outra imagem de um dos indivduos com o qual a rede foi treinada anteriormente.

3.2

Banco de Imagens

Como visto anteriormente existem diversos fatores que inuenciam no reconhecimento da face humana tais como variao da iluminao, pose, expresso facial, culos, mudana nos cabelos, barba ou bigode, etc. Levando isto em conta, para avaliar um sistema de reconhecimento facial de forma eciente necessrio utilizar um banco de dados que possua imagens com essas variaes. Devido ao reconhecimento facial ser uma rea de pesquisa fortemente ativa temos diversos bancos de faces disponveis para esta nalidade, tais como, AR, BANCA, CAS-PEAL, CMU Hyper , CMU PIE, Equinox IR , FERET, KFDB , MIT, MPI, ND HID, ORL, UMIST, U. Texas,

34

U. Oulu, XM2VTS, Yale, Yale B, sendo que alguns destes so disponibilizados de maneira gratuita (LI; JAIN, 2005). Neste trabalho o banco de imagens escolhido foi o ORL que foi produzido pela Olivetti Research Laboratory em Cambridge, UK. Este banco gratuito/pblico e possui um total de 400 imagens sendo 40 indivduos e 10 imagens diferentes para cada indivduo. As imagens possuem variaes na expresso facial (olhos abertos/fechados, sorrindo/sem sorrir), iluminao e detalhes faciais (com ou sem culos). As imagens foram obtidas sob um fundo escuro e homogneo, e esto em escala de cinza com uma resoluo de 92x112 pixels. Este banco est disponvel publicamente em http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html, a gura 5 fornece uma amostra deste banco de faces.

Figura 5: Amostra de imagens encontrados no banco de faces ORL (AT&T, 1992). Este banco de dados foi escolhido por ser pblico, conter uma quantidade considervel de imagens, possuir as variaes necessrias para o experimento (iluminao, pose, expresso facial, etc), outro motivo o fato deste banco de dados ser bastante utilizado em trabalhos na rea possibilitando uma comparao de resultados com trabalhos correlatos.

3.3

Encog Framework

O Encog um avanado framework de redes neurais e aprendizado de mquina. Encog contm classes para criar uma grande variedades de redes neurais, tambm possui classes para normalizar e processar dados para essas redes, possibilita tambm o treinamento das redes usando multithreaded resilient propagation, permite o uso do GPU para aumentar a velocidade de processamento. Encog fornece conjuntos de dados especializados para tornar mais fcil o processamento de diferentes tipos de dados. Uma mesma rede neural capaz de lidar com diferentes tipos. O ImageNeuralDataSet faz parte desses conjuntos de dados especializados, esta classe aceita uma lista de imagens que sero carregadas e processadas para uma forma til para o Encog. O Framework Encog est em desenvolvimento ativo desde 2008 e est disponvel para

35

JAVA e .NET(HEATON, 2010).

3.4

Implementao do sistema

O sistema de reconhecimento facial desenvolvido neste trabalho foi implementado na linguagem JAVA com o auxlio do Encog (Framework para redes neurais). A rede neural dever ser treinada e receber como entrada as imagens do banco de faces, para isso ser utilizado o ImageNeuralDataSet, uma classe do Encog especca para tratamento de dados fornecidos atravs de imagens. Antes de instanciar o ImageNeuralDataSet um objeto downsampled deve ser criado, no Encog todos objetos downsampled deve implementar a interface Dowsample. Atualmente o Encog suporta duas classes downsample, RGBDownsample, SimpleIntensityDownsample. Para este projeto foi utilizado a classe RGBDownsample, por ser mais precisa na representao das cores ou nveis de cinza presente na imagem. O RGBDownsample o mais avanado dos dois, ele converte para a resoluo especicada e transforma cada pixel em uma entrada de trs cores (RGB). O nmero total de valores de entrada dos neurnios produzidos por este objeto ser altura vezes largura vezes trs. Primeiramente ser instanciado o objeto downsample e depois o ImageNeuralDataset passando o downsample como parmetro no construtor, conforme o cdido 3.1. Cdigo 3.1: Instanciando Downsample e ImageNeuralDataset
1 2 3

downsample = new RGBDownsample ( ) ; t h i s . t r a i n i n g = new I m a g e N e u r a l D a t a S e t ( downsample , f a l s e , 1 , 1) ;

Os valores 1 e -1 especicam o intervalo em que as cores sero normalizadas, o valor false signica que no se deseja tentar detectar bordas, se fosse true, Encog tentaria detectar as bordas, porm a deteco de bordas atual do Encog no muito avanada, sendo que se for necessrio uma deteco de bordas avanada as imagens deve ser processadas antes de serem enviadas ao objeto ImageNeuralDataSet. Agora que o objeto ImageNeuralDataSet foi criado, dever ser acrescentado algumas imagens a ele. Para adicionar imagens a este conjunto de dados, deve ser criado um objeto ImageNeuralData para cada imagem. A linhas de cdigo 3.2 demonstram como uma imagem de um arquivo pode ser adicionada ao ImageNeuralData. Cdigo 3.2: Adicionando uma imagem ao ImageNeuralData.
1 2 3

Image img = ImageIO . r e a d ( [ f i l e n a m e o f image ] ) ; I m a g e N e u r a l D a t a d a t a = new I m a g e N e u r a l D a t a ( img ) ; t h i s . t r a i n i n g . add ( d a t a , [ i d e a l o u t p u t ] ) ;

36

As imagens so carregadas a partir de um arquivo usando a classe Java ImageIO, qualquer tipo de imagem aceito pelo java pode ser utilizado pelo dataset. A sada ideal deve ser especicada no caso de treinamento supervisionado, para treinamento no supervisionado esse parmetro pode ser omitido. Aps o objeto ImageNeuralData ser instanciado ele adicionado ao dataset, esses passos so repetidos para cada imagem que for adicionada. Depois de todas as imagens terem sido carregadas, elas esto prontas pra serem redimensionadas. Para diminuir a resoluo das imagens deve ser chamado o mtodo downsample e especicar a altura e largura para qual sero redimensionadas, conforme as linhas de cdigo 3.3. Cdigo 3.3: Redimensionando as imagens com downsample.
1

t h i s . t r a i n i n g . downsample ( t h i s . d o w n s a m p l e H e i g h t , t h i s . downsampleWidth ) ;

Depois que o mtodo downsample foi chamado os dados para treinamento foram obtidos e podem ser utilizados para treinar a rede neural. Para nalizar a criao da rede deve ser chamado o mtodo simpleFeedFoward da classe EncogUtility, que ir de fato criar a rede neural. Finalmente a rede ser criada conforme pode ser observado no cdigo 3.4, os parmetros passados para o mtodo simpleFeedFoward, so this.training.getInputSize() que o tamanho da entrada da rede, hidden1 e hidden2 correspondem a quantidade de neurnios na primeira e segunda camada oculta respectivamente, o parmetro true especica que seja usada uma funo de ativio tangente hiperblica. Cdigo 3.4: Criando a Rede Neural.
1

t h i s . network = E n c o g U t i l i t y . simpleFeedForward ( t h i s . t r a i n i n g . g e t I n p u t S i z e ( ) , hidden1 , hidden2 , t h i s . t r a i n i n g . g e t I d e a l S i z e ( ) , true ) ;

Neste ponto a rede neural j esta criada e pronta para ser treinada. O Encog possui vrios algoritmos de treinamento tanto supervisionado quanto no supervisionado, nesse projeto foi utilizado o algoritmo RProp. A rede neural iniciada com pesos e limiares aleatrios. Algumas vezes, o conjunto aleatrio de pesos e limiares far o treinamento da rede neural estagnar, nesta situao o melhor repor um novo conjunto de valores aleatrios e comear a treinar novamente. Para lidar com situaes como essa o Encog permite que estratgias de treinamento sejam adicionadas. Nesse projeto foi utilizada a estratgia ResetStrategy, esta possui dois parmetros, o primeiro arma que o erro mnimo que a rede deve atingir antes de ser zerado automaticamente para novos valores aleatrios. O segundo parmetro especica o nmero de ciclos permitidos para a rede atingir essa taxa de erro. Se o numero especicado de ciclos atingido, ento os pesos e limiares sero randomizados. O cdigo 3.5 adiciona a estratgia reset ao treinamento.

37

Cdigo 3.5: Adicionando a Strategia para o treinamento.


1

t r a i n . a d d S t r a t e g y ( new R e s e t S t r a t e g y ( s t r a t e g y E r r o r , s t r a t e g y C y c l e s ) ) ;

Aps denido o algoritmo de treinamento e a estratgia que ser utilizada, o treinamento da rede deve ser iniciado, com um cdigo como o 3.6, onde a cada iterao o mtodo iteration chamado atualizando os pesos da rede, e as iteraes continuam enquanto o erro atual da rede for menor que o erro especicado ou que o nmero de pocas (epoch) seja menor que o limite. Cdigo 3.6: Iniciando o treinamento da rede neural.
1 2 3 4 5 6 7

i n t epoch = 0 ; do { train . iteration () ; System . o u t . p r i n t l n ( " Epoch \#" + e p o c h + " Error :" + t r a i n . g e t E r r o r ( ) ) ; e p o c h ++; } w h i l e ( t r a i n . g e t E r r o r ( ) > e r r o \&\& e p o c h < l i m i t e ) ;

Aps isto a rede neural est treinada e pronta para reconhecer as imagens. Primeiramente a imagem a ser reconhecida deve ser carregada para um objeto ImageNeuralData, e depois redimensionada para as dimenses corretas utilizando o mtodo downsample, veja cdigo 3.7. Cdigo 3.7: Carregando a imagem e redimensionando.
1 2 3 4 5

f i n a l F i l e f i l e = new F i l e ( f i l e n a m e ) ; f i n a l Image img = ImageIO . r e a d ( f i l e ) ; f i n a l I m a g e N e u r a l D a t a i n p u t = new I m a g e N e u r a l D a t a ( img ) ; i n p u t . downsample ( t h i s . downsample , f a l s e , t h i s . d o w n s a m p l e H e i g h t , t h i s . downsampleWidth , 1 , 1) ;

Depois de redimensionada a imagem est pronta para ser reconhecida pela rede, atravs do mtodo winner, conforme pode ser observado no cdigo 3.8. Cdigo 3.8: Reconhecendo a Imagem.
1 2 3

f i n a l i n t winner = t h i s . network . winner ( i n p u t ) ; System . o u t . p r i n t l n ( "What is: " + f i l e n a m e + ", it seems to be: " t h i s . n e u r o n 2 i d e n t i t y . get ( winner ) ) ;

O sistema utilizado nesse projeto foi criado com base nas especicaes acima.

38

3.5

Especicao dos Testes

Para a realiazao dos testes foi utilizado um computador pessoal macBook Pro, com processador Intel Core i5, memria de 4 GB 1333 MHz DDR3 e sistema operacional Mac OS X Verso 10.6.8. No foi utilizado outra arquitera computacional para os testes, pois o objetivo avaliar o desempenho do sistema em relao a taxa de acertos e no o desempenho de processamento ou tempo. Os testes foram realizados a partir do banco de imagens ORL, do qual foram selecionadas 100 imagens, sendo 10 indivduos, onde cada indviduo possui 10 imagens distintas. Para cada indviduo foi selecionado aleatoriamente 5 imagens para treino e 5 imagens para o reconhecimento. Objetivando alcanar a melhor estrutura de rede para a aplicao proposta, este trabalho testou vrias estruturas possveis para a rede, variando a entrada da rede, quantidade de camadas intermedirias(ocultas) e nmero de neurnios em cada camada intermediria. Para a entrada da rede foi considerada trs dimenses de imagens, 23x23, 46x46 e 92x92. A dimenses das imagens tambm so responsveis pelo dimensionamento da camada de entrada, por exemplo a rede com entrada 23x23, a camada de entrada deve ter 1587 neurnios, que corrensponde altura x largura x 3(que representa os nveis RGB), as outras dimenses de entrada seguem o mesmo clculo, obtendo 6.348 neurnios para entrada de 46x46 e 25.392 neurnios para a rede com entrada de 92x92. A camada de sada deve ser dimensionada de acordo com a quantidade de padres a ser reconhecidos, sendo um neurnio para cada padro a ser reconhecido. Considerando que este trabalho ser testado para reconhecer 10 indviduos, a camada de sada sempre possuir 10 neurnios. A quantidade de neurnios nas camadas intermedirias foram escolhidos manualmente, para as redes com uma camada intermediria foram utilizados 100, 200, 300, 400, e 500 neurnios na camada intermediria. Enquanto que para as redes com duas camadas intermedirias, para na primeira rede foi utilizado 200 neurnios na primeria camada e 100 na segunda camada, na segunda 300 e 150, na terceira 400 e 200, na quarta 500 e 250. No total foram testadas 27 variaes da rede, onde cada variao foi testada quatro vezes e feita a mdia aritmtica simples dos resultados.

3.6

Resultados Obtidos

Os testes foram realizados seguindo as especicaes acima, os resultados obtidos foram relacionados na forma de tabelas e grcos. Primeiramente foi testado a rede com uma camada intermediria, variando a quantidade de neurnios, para as dimenses 23x23, 46x46 e 92x92, onde os resultados podem ser observados nas tabelas 2, 3 e 4, respectivamente.

39

Tabela 2: Resultado com imagens de 23x23 pixels e uma camada oculta de neurnios.

Tabela 3: Resultado com imagens de 46x46 pixels e uma camada oculta de neurnios.

Tabela 4: Resultado com imagens de 92x92 pixels e uma camada oculta de neurnios.

Na gura 6 pode ser observado o grco com a relao dos "nmeros de neurnios"X "porcentagem de acertos", para cada uma das dimenses testadas, considerando as redes de uma camada intermediria. Em seguida pode ser observado os testes para a rede com duas camadas intermedirias, variando a quantidade de neurnios, para as dimenses 23x23, 46x46 e 92x92, onde os resultados podem ser observados nas tabelas 5, 6 e 7, respectivamente. Tabela 5: Resultado com imagens de 23x23 pixels e duas camadas oculta de neurnios.

A gura 7 mostra o grco como a relao "nmeros de neurnios"X "porcentagem de acertos", para as redes com duas camadas intermedirias.

40

Figura 6: Grco "nmero de neurnios"X "porcentagem de acertos", para a rede com uma camada intermediria.

Tabela 6: Resultado com imagens de 46x46 pixels e duas camadas oculta de neurnios.

Tabela 7: Resultado com imagens de 92x92 pixels e duas camadas oculta de neurnios.

3.7

Consideraes sobre os Testes

Com base nos testes realizados, pode ser observado uma taxa de acerto variando entre 68.5% e 75%, apesar do resultado pouco satisfatrio, este j se encontra dentro da faixa acertos mdia obtidas em trabalhos de rea, que est entre 75 98% de acertos(BARRETT, 1998). A maior taxa de acerto obtida foi de 75%, alcanada pela rede com entrada de 23x23 e uma camada intermediria de 300 neurnios.

41

Figura 7: Grco "nmero de neurnios"X "porcentagem de acertos", para rede com duas camadas intermedirias.

Observando os resultados apresentados para as redes com uma camada intermediria, podese notar que conforme aumentado a quantidade de neurnios na camada intermediria aumenta tambm a taxa de acertos da rede, porm isso acontece at um determinado ponto, onde ocorre o pico das taxas de acertos, aps esse ponto as taxas de acertos da rede voltam a cair. Com isso conclui-se que no incio a rede possui uma baixa taxa de acertos pois existem poucos neurnios na camada intermediria para representar o padro de entrada, conforme vai aumentando o nmero de neurnios, o padro de entrada ca melhor representado pela rede obtendo uma taxa de acertos maior. No entando quando o nmero de neurnios comea a subir demais a rede comea a perder capacidade de generalizao fazendo com que a taxa de acertos dminua. Para todas dimenses de entrada dados foi observado esse mesmo comportamento, diferindo apenas o ponto onde ocorre o pico da taxa de acertos. Para as redes com entrada 23x23 a maior taxa de acertos acontece com 300 neurnios na camada intermediria e para as redes com entradas 46x46 e 92x92 o pico acontece com 400 neurnios na camada intermediria. Assim possvel chegar na concluso de que quanto maior a entrada da rede, maior deve ser a quantidade de neurnios nas camadas intermedirias para representao do padro de entrada. As redes com duas camadas intermedirias demonstraram um comportamento semelhante aos das redes com uma camada intermediria, porm apresentaram uma maior diferena entre os valores e picos de acertos comparando as diferentes dimenses de entrada.

42

importante tambm resaltar que para essa aplicao as redes com uma camada intermediria obteviveram um resultado melhor que as redes com duas camadas intermedirias. Tanto nas redes com uma, quanto nas redes com duas camadas intermedirias, a dimenso para os dados de entrada que apresentou melhor desempenho foi 23x23, sendo que para as redes com uma camada intermediria a que apresentou maior taxa acerto foi a rede com 300 neurnios na camada intermediria com uma taxa de acerto de 75% enquanto que para as redes com duas camadas a que apresentou maior taxa de acerto foi a rede com 300 e 150 neurnios nas camadas intermedirias, com taxa de acerto de 72.5%.

43

Concluses

Este trabalho teve como objetivos principais, validar uso das redes neurais aplicadas no problema do reconhecimento facial e implementar um sistema capaz de reconhecer a face humana. Estes objetivos foram alcanados com a implementao da rede neural e os testes de desempenho para o problema proposto. Neste trabalho foi possvel demonstrar a ecncia de uma rede do tipo MLP(Multilayer Perceptron) aplicada na resoluo do problema do reconhecimento facial. Considerando o melhor caso, a rede proposta conseguiu uma taxa de acerto de 75% o que est na faixa mdia encontrada nos trabalhos da rea. Foi possvel tambm demonstrar alguns pontos interessantes em relao as variaes da rede proposta. O primeiro ponto interessante notado foi o fato de que uma imagem maior como entrada da rede no implica em um melhor desempenho. Tambm foi possvel demonstrar que para este tipo de abordagem as redes com uma camada intermediria demonstaram um desempenho melhor do que as redes com duas camadas intermedirias. Outro ponto interessante a curva da taxa de acertos que aumenta com o nmero de neurnios das camadas intermediria e depois de certo ponto a taxa de acertos comea a diminuir mostrando uma diminuio na capacidade de generalizao da rede. Para trabalhos futuros sugere-se buscar uma variao da rede que possa obter uma maior taxa de acertos, uma abordagem interessante seria combinar a rede existente com alguma tcnica de extrao de caractersticas como Discrete Wavelet Transform (DWT), Discrete Radon Transform (DRT), Discrete Cosine Transform (DCT).

44

Referncias
ABATE, A. et al. 2D and 3D face recognition: A survey. Pattern Recognition Letters, Elsevier Science Inc., New York, NY, USA, v. 28, n. 14, p. 18851906, out. 2007. ISSN 01678655. Disponvel em: <http://dx.doi.org/10.1016/j.patrec.2006.12.018>. AT&T. The Database of Faces, Cambridge University Computer Laboratory. Disponvel em: <http://www.cl.cam.ac.uk/ research/dtg/attarchive/facedatabase.html>. Acesso em 10 Maio 2011. 1992. Disponvel em: <http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html>. AZEVEDO, F. M.; BRASIL, L. M.; OLIVEIRA, R. C. L. Redes Neurais com Aplicaes em Controle e em Sistemas Especialistas. [S.l.]: VISUAL BOOKS, 2000. ISBN 8575020056. BARRETT, W. A. A survey of face recognition algorithms and testing results. ACM Transactions on Computer Systems, 1998. BARTLETT, M. S.; LADES, H. M.; SEJNOWSKI, T. J. Independent Component Representations for Face Recognition. 1998. BELHUMEUR, P. N.; HESPANHA, J. a. P.; KRIEGMAN, D. J. Eigenfaces vs. Fisherfaces: Recognition Using Class Specic Linear Projection. 1997. Disponvel em: <http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.10.3247>. BRAGA, A.; CARVALHO, A. C.; LUDERMIR, T. B. Redes Neurais Articiais: Teoria e aplicaes. [S.l.]: LTC Editora, 2000. BRAGA, A.; CARVALHO, A. C.; LUDERMIR, T. B. Redes Neurais Articiais: Teoria e aplicaes. LTC Editora, 2007. ISBN 9788521615644. Disponvel em: <http://www.worldcat.org/isbn/9788521615644>. BRUNELLI, R.; POGGIO, T. Face recognition: Features versus templates. IEEE Transactions on Pattern Analysis and Machine Intelligence, v. 15, p. 10421052, 1993. CARPENTER, G. A.; GROSSBERG, S. The art of adaptive pattern recognition by a self-organizing neural network. Computer, IEEE, v. 21, n. 3, p. 7788, 1988. Disponvel em: <http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=33>. CHELLAPPA, R.; WILSON, C. L.; SIROHEY, S. Human and machine recognition of faces: a survey. Proceedings of the IEEE, v. 83, n. 5, p. 705741, maio 1995. ISSN 00189219. Disponvel em: <http://dx.doi.org/10.1109/5.381842>. COOTES, T. F. et al. Active Shape Models-Their Training and Application. Computer Vision and Image Understanding, v. 61, n. 1, p. 3859, jan. 1995. Disponvel em: <http://www.sciencedirect.com/science/article/B6WCX-45NJT561K/2/1933a32b2a89e4c3f032ba0718f4ef03>.

45

COTTRELL, G.; FLEMING, M. Face recognition using unsupervised feature extraction. In: International Symposium on Neural Networks. [S.l.: s.n.], 1990. COX, I. J.; GHOSN, J.; YIANILOS, P. Feature-based face recognition using mixturedistance. Proceedings of IEEE Computer Society Conference on Computer Vision and Pattern Recognition, IEEE Comput. Soc. Press, p. 209216, 1996. Disponvel em: <http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=517076>. . Geometric Methods HALLINAN, P. W. Recognizing human eyes. In: in Computer Vision. SPIE, 1991. v. 1570, n. 1, p. 214226. Disponvel em: <http://link.aip.org/link/?PSI/1570/214/1>. HAYKIN, S. REDES NEURAIS - PRINCIPIOS E PRATICA. BOOKMAN COMPANHIA ED, 2001. ISBN 9788573077186. Disponvel em: <http://books.google.com.br/books?id=lBp0X5qfyjUC>. HEATON, J. Programming Neural Networks with Encog 2 in Java. [S.l.]: Heaton Research, Inc., 2010. ISBN 1604390077, 9781604390070. HEINEN, M. R. Autenticao de Assinaturas Online utilizando Redes Neurais Articiais. In: . Autenticao de Assinaturas Online utilizando Redes Neurais Articiais. So Leopoldo: Universidade do Vale do Rio dos Sinos, 2002. cap. 3, p. 2440. KANADE, T. Picture processing by computer complex and recognition of human faces. 1973. KOHONEN, T. Self-organized formation of topologically correct feature maps. Biological Cybernetics, Springer, v. 43, n. 1, p. 5969, 1982. Disponvel em: <http://www.springerlink.com/content/m8816487026vh131>. LAWRENCE, S. et al. Face recognition: a convolutional neural-network approach. Neural Networks, IEEE Transactions on, v. 8, n. 1, p. 98113, ago. 2002. Disponvel em: <http://dx.doi.org/10.1109/72.554195>. LI, S.; JAIN, A. Handbook of face recognition. Springer, 2005. (Springer eBooks collection: Computer science). ISBN 9780387405957. Disponvel em: <http://books.google.com.br/books?id=amVDaTdgKYcC>. MENDEL, J. M.; MCLAREN, R. W. Reinforcement learning control and pattern recognition systems. In: Adaptive, Learning and Pattern Recognition Systems: Theory and Applications. [S.l.]: Academic Press, 1970. p. 287318. MINSKY, M.; PAPERT, S. Perceptrons: an introduction to computational geometry. MIT Press, 1972. Disponvel em: <http://books.google.com.br/books?id=36E0QgAACAAJ>. PIAZENTIN, D.; DUARTE, M. Troca de chaves criptogrcas com redes neurais articiais. Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais (SBSeg), p. 310319, 2011. RIZK, M.; TAHA, A. Analysis of neural networks for face recognition systems with feature extraction to develop an eye localization based method. IEEE Electronics, Circuits and Systems, 2002. 9th International Conference on, v. 3, p. 847 850, 2002.

46

ROSENBLATT, F. The perceptron: A probabilistic model for information storage and organisation in the brain. Psychological Review, v. 65, p. 368408, 1958. RUMELHART, D. E.; HINTON, G. E.; WILLIAMS, R. J. Learning representations by back-propagating errors. Nature, Nature Publishing Group, v. 323, n. 6088, p. 533536, out. 1986. Disponvel em: <http://dx.doi.org/10.1038/323533a0>. RUSSELL, S.; NORVIG, P. Articial intelligence: a modern approach. Prentice Hall, 2003. (Prentice Hall series in articial intelligence). ISBN 9780137903955. Disponvel em: <http://books.google.com.br/books?id=KI2WQgAACAAJ>. SWETS, D. L.; WENG, J. Discriminant analysis and eigenspace partition tree for face and object recognition from views. In: IEEE International Conference on Automatic Face and Gesture Recognition. [S.l.: s.n.], 1996. p. 192197. SWETS, D. L.; WENG, J. Using discriminant eigenfeatures for image retrieval. IEEE Transactions on Pattern Analysis and Machine Intelligence, v. 18, p. 831836, 1996. TURK, M.; PENTLAND, A. Eigenfaces for recognition. Journal of Cognitive Neuroscience, v. 3, p. 7186, 1991. TURK, M. A.; PENTLAND, A. P. Face recognition using eigenfaces. In: Computer Vision and Pattern Recognition. [S.l.: s.n.], 1991. WIDROW, B.; HOFF, M. E. Adaptive switching circuits. 1960 IRE WESCON Convention Record, IRE, Part 4, n. 104, p. 96104, 1960. Disponvel em: <http://islwww.stanford.edu/ widrow/papers/c1960adaptiveswitching.pdf>. XIAO, Y. et al. Recognition of facial expressions using 2d dct and neural network. Electronics and Communications in Japan (Part III: Fundamental Electronic Science), John Wiley Sons, Inc., v. 82, n. 7, p. 111, 1999. ISSN 1520-6440. Disponvel em: <http://dx.doi.org/10.1002/(SICI)1520-6440(199907)82:7<1::AID-ECJC1>3.0.CO;2-E>. ZHAO, W. et al. Face recognition: A literature survey. ACM Comput. Surv., ACM, New York, NY, USA, v. 35, n. 4, p. 399458, dez. 2003. ISSN 0360-0300. Disponvel em: <http://dx.doi.org/10.1145/954339.954342>. ZURADA, J. Introduction to articial neural systems. West, 1992. ISBN 9780314933911. Disponvel em: <http://books.google.com/books?id=wLFQAAAAMAAJ>.

47

APNDICE A -- Implementao do Sistema de Reconhecimento Facial

Cdigo A.1: Implementao do Sistema de Reconhecimento Facial


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

# c o d i n g : u t f 8 package f a c e . r e c o g ;

import j a v a . awt . Image ; import j a v a . i o . F i l e ; import j a v a . i o . I O E x c e p t i o n ; import j a v a . u t i l . A r r a y L i s t ; import j a v a . u t i l . HashMap ; import j a v a . u t i l . L i s t ; import j a v a . u t i l . Map ; import j a v a x . i m a g e i o . ImageIO ; import o r g . e n c o g . n e u r a l . d a t a . N e u r a l D a t a ; import o r g . e n c o g . n e u r a l . d a t a . b a s i c . B a s i c N e u r a l D a t a ; import o r g . e n c o g . n e u r a l . d a t a . image . I m a g e N e u r a l D a t a ; import o r g . e n c o g . n e u r a l . d a t a . image . I m a g e N e u r a l D a t a S e t ; import o r g . e n c o g . n e u r a l . n e t w o r k s . B a s i c N e t w o r k ; import o r g . e n c o g . n e u r a l . n e t w o r k s . t r a i n i n g . p r o p a g a t i o n . r e s i l i e n t . ResilientPropagation ; import o r g . e n c o g . n e u r a l . n e t w o r k s . t r a i n i n g . T r a i n ; import o r g . e n c o g . n e u r a l . n e t w o r k s . t r a i n i n g . s t r a t e g y . R e s e t S t r a t e g y ; import o r g . e n c o g . u t i l . downsample . Downsample ; import o r g . e n c o g . u t i l . downsample . RGBDownsample ; import o r g . e n c o g . u t i l . downsample . S i m p l e I n t e n s i t y D o w n s a m p l e ; import o r g . e n c o g . u t i l . s i m p l e . E n c o g U t i l i t y ;

22 23 24 25 26 27 28 29

48
p u b l i c c l a s s FaceRecog { p r i v a t e f i n a l L i s t < I m a g e P a i r > i m a g e L i s t = new A r r a y L i s t < I m a g e P a i r > ( ) ; p r i v a t e f i n a l Map< S t r i n g , I n t e g e r > i d e n t i t y 2 n e u r o n = new HashMap< S t r i n g , Integer >() ;
34

30 31 32 33

p r i v a t e f i n a l Map< I n t e g e r , S t r i n g > n e u r o n 2 i d e n t i t y = new HashMap< Integer , String >() ; private ImageNeuralDataSet t r a i n i n g ; private int outputCount ; p r i v a t e i n t downsampleWidth ; p r i v a t e i n t downsampleHeight ; private BasicNetwork network ; p r i v a t e Downsample downsample ; p r i v a t e S t r i n g msg ; class ImagePair { private final File f i l e ; private final int i d e n t i t y ; public ImagePair ( f i n a l F i l e f i l e , f i n a l int i d e n t i t y ) { super ( ) ; this . file = file ; this . identity = identity ; } public File g e t F i l e ( ) { return t h i s . f i l e ; } public int g e t I d e n t i t y ( ) { return t h i s . i d e n t i t y ; } } p u b l i c s t a t i c v o i d main ( f i n a l S t r i n g [ ] a r g s ) { try { f i n a l I m a g e N e t s p r o g r a m = new I m a g e N e t s ( ) ; p r o g r a m . c r e a t e T r a i n i n g ( 2 3 , 2 3 , "RGB" ) ; p r o g r a m . i n p u t ( "./ faces /id2 -f1.png" , "Id2" ) ; p r o g r a m . i n p u t ( "./ faces /id3 -f1.png" , "Id3" ) ; p r o g r a m . i n p u t ( "./ faces /id1 -f1.png" , "Id1" ) ; program . network (256 , 16) ;

35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70

49
p r o g r a m . t r a i n ( " console " , 1 , 0 . 2 5 , 2 0 ) ; p r o g r a m . w h a t I s ( "./ faces /id1 -f2.png" ) ; p r o g r a m . w h a t I s ( "./ faces /id3 -f2.png" ) ; p r o g r a m . w h a t I s ( "./ faces /id2 -f2.png" ) ; } catch ( f i n a l Exception e ) { e . printStackTrace () ; } } private int a s s i g n I d en t i t y ( final String i d e n t i t y ) { i f ( t h i s . i d e n t i t y 2 n e u r o n . containsKey ( i d e n t i t y . toLowerCase ( ) ) ) { return t h i s . i d e n t i t y 2 n e u r o n . g e t ( i d e n t i t y . toLowerCase ( ) ) ; } f i n a l int r e s u l t = this . outputCount ; t h i s . i d e n t i t y 2 n e u r o n . put ( i d e n t i t y . toLowerCase ( ) , r e s u l t ) ; t h i s . n e u r o n 2 i d e n t i t y . put ( r e s u l t , i d e n t i t y . toLowerCase ( ) ) ; t h i s . o u t p u t C o u n t ++; return r e s u l t ; } publ ic void c r e a t e T r a i n i n g ( i n t width , i n t h e i g h t , f i n a l S t r i n g s t r T y p e ) {
94 95 96 97 98 99 100 101 102 103 104 105 106

71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93

t h i s . downsampleHeight = width ; t h i s . downsampleWidth = h e i g h t ; i f ( s t r T y p e . e q u a l s ( "RGB" ) ) { t h i s . downsample = new RGBDownsample ( ) ; System . o u t . p r i n t l n ( "rgb" ) ; } else { t h i s . downsample = new S i m p l e I n t e n s i t y D o w n s a m p l e ( ) ; System . o u t . p r i n t l n ( " simple " ) ; } t h i s . t r a i n i n g = new I m a g e N e u r a l D a t a S e t ( t h i s . downsample , f a l s e , 1 , 1) ; System . o u t . p r i n t l n ( " Training set created " ) ; } p u b l i c S t r i n g i n p u t ( f i n a l S t r i n g image , f i n a l S t r i n g i d e n t i t y ) {

107 108 109 110 111

50
f i n a l int idx = a s s i g n I d e n t i t y ( i d e n t i t y ) ; f i n a l F i l e f i l e = new F i l e ( image ) ; t h i s . i m a g e L i s t . add ( new I m a g e P a i r ( f i l e , i d x ) ) ; System . o u t . p r i n t l n ( " Added input image :" + image + " idx: " + i d x ) ; r e t u r n " Added input image :" + image + " idx: " + i d x ; } p u b l i c v o i d n e t w o r k ( f i n a l i n t h i d d e n 1 , f i n a l i n t h i d d e n 2 ) throws IOException {
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140

112 113 114 115 116 117 118 119 120 121

System . o u t . p r i n t l n ( " Downsampling images ..." ) ; for ( f i n a l ImagePair p a i r : t h i s . imageList ) { f i n a l N e u r a l D a t a i d e a l = new B a s i c N e u r a l D a t a ( t h i s . o u t p u t C o u n t ) ; f i n a l int idx = p a i r . g e t I d e n t i t y ( ) ; f o r ( i n t i = 0 ; i < t h i s . o u t p u t C o u n t ; i ++) { i f ( i == i d x ) { i d e a l . setData ( i , 1) ; } else { i d e a l . s e t D a t a ( i , 1) ; } } f i n a l Image img = ImageIO . r e a d ( p a i r . g e t F i l e ( ) ) ; f i n a l I m a g e N e u r a l D a t a d a t a = new I m a g e N e u r a l D a t a ( img ) ; t h i s . t r a i n i n g . add ( d a t a , i d e a l ) ; } t h i s . t r a i n i n g . downsample ( t h i s . d o w n s a m p l e H e i g h t , t h i s . downsampleWidth ) ; System . o u t . p r i n t l n ( t h i s . t r a i n i n g . g e t I n p u t S i z e ( ) + " - size" ) ;

141 142 143 144

t h i s . network = E n c o g U t i l i t y . simpleFeedForward ( t h i s . t r a i n i n g . g e t I n p u t S i z e ( ) , hidden1 , hidden2 , t h i s . t r a i n i n g . g e t I d e a l S i z e ( ) , true ) ; System . o u t . p r i n t l n ( " Created network : " + t h i s . n e t w o r k . t o S t r i n g ( ) ) ; } p u b l i c v o i d t r a i n ( f i n a l S t r i n g mode , f i n a l i n t m i n u t e s , f i n a l d o u b l e strategyError , final int strategyCycles ) {

145 146 147 148 149

150

51
System . o u t . p r i n t l n ( " Training Beginning ... Output patterns =" + this . outputCount ) ;

151 152 153 154 155

f i n a l T r a i n t r a i n = new R e s i l i e n t P r o p a g a t i o n ( t h i s . n e t w o r k , t h i s . training ) ; t r a i n . a d d S t r a t e g y ( new R e s e t S t r a t e g y ( s t r a t e g y E r r o r , s t r a t e g y C y c l e s ) ) ;

156

157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184

l o n g i n i = System . c u r r e n t T i m e M i l l i s ( ) ; i n t epoch = 0 ; do { train . iteration () ; System . o u t . p r i n t l n ( " Epoch #" + e p o c h + " Error :" + t r a i n . g e t E r r o r ( ) ) ; e p o c h ++; } w h i l e ( t r a i n . g e t E r r o r ( ) > 0 . 0 0 0 1 && e p o c h < 1 0 0 0 ) ; l o n g f i m = System . c u r r e n t T i m e M i l l i s ( ) ; t h i s . msg = " Treino > Duracao : "+ ( f i m i n i ) + " Epocas :"+ e p o c h ; System . o u t . p r i n t l n ( msg ) ; System . o u t . p r i n t l n ( " Training Stopped ..." ) ; } p u b l i c S t r i n g w h a t I s ( f i n a l S t r i n g f i l e n a m e ) throws I O E x c e p t i o n { f i n a l F i l e f i l e = new F i l e ( f i l e n a m e ) ; f i n a l Image img = ImageIO . r e a d ( f i l e ) ; f i n a l I m a g e N e u r a l D a t a i n p u t = new I m a g e N e u r a l D a t a ( img ) ; i n p u t . downsample ( t h i s . downsample , f a l s e , t h i s . d o w n s a m p l e H e i g h t , t h i s . downsampleWidth , 1 , 1) ; f i n a l i n t winner = t h i s . network . winner ( i n p u t ) ; S t r i n g i d = f i l e n a m e . s u b s t r i n g ( f i l e n a m e . l a s t I n d e x O f ( "/" ) + 1 ) ; i d = i d . s u b s t r i n g ( 0 , i d . i n d e x O f ( "-" ) ) ; S t r i n g o u t = "What is: " + f i l e n a m e + ", it seems to be: " + w i n n e r + " - " + t h i s . n e u r o n 2 i d e n t i t y . g e t ( w i n n e r ) + " - ideal : " + i d ; i f ( id . equals ( t h i s . n e u r o n 2 i d e n t i t y . get ( winner ) ) ) { o u t += " Sucess !" ; } else { o u t += "Erro!" ; }

185 186 187 188 189 190

52
System . o u t . p r i n t l n ( o u t ) ; return t h i s . n e u r o n 2 i d e n t i t y . get ( winner ) ; } p u b l i c S t r i n g getMsg ( ) { r e t u r n t h i s . msg ; } }

191 192 193 194 195 196 197 198

You might also like