Sie sind auf Seite 1von 77

DE REDES NEURAIS PARA RECONHECIMENTO

APLICAC
AO
FACIAL

Igor Paladino Gomes da Costa

Projeto de Graduacao apresentado ao Curso


de Engenharia Eletronica e de Computacao
da Escola Politecnica, Universidade Federal
do Rio de Janeiro, como parte dos requisitos
necessarios `a obtencao do ttulo de Engenheiro.
Orientadores: Felipe Maia Galvao Franca
John Stonham

Rio de Janeiro
Agosto de 2015

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO


Escola Politecnica - Departamento de Eletronica e de Computacao
Centro de Tecnologia, bloco H, sala H-217, Cidade Universitaria
Rio de Janeiro - RJ CEP 21949-900

Este exemplar e de propriedade da Universidade Federal do Rio de Janeiro, que


podera inclu-lo em base de dados, armazenar em computador, microfilmar ou adotar
qualquer forma de arquivamento.
permitida a mencao, reproducao parcial ou integral e a transmissao entre bibliE
otecas deste trabalho, sem modificacao de seu texto, em qualquer meio que esteja
ou venha a ser fixado, para pesquisa academica, comentarios e citacoes, desde que
sem finalidade comercial e que seja feita a referencia bibliografica completa.
Os conceitos expressos neste trabalho sao de responsabilidade do(s) autor(es).

iii


DEDICATORIA

Dedico este trabalho


aos meus pais, Dulce e Walnei.
Fica aqui uma pequena retribuicao
a tudo que voces fazem e sempre fizeram por mim.
Eu amo voces!

iv

AGRADECIMENTO

Agradeco a Deus pela minha sa


ude e pelas otimas pessoas que tenho prazer e
felicidade de compartilhar a minha vida. Alem dos bons momentos, sou muito grato
pela forca e pelo conforto concedidos nos momentos difceis.
Agradeco demais aos meus pais, Walnei da Costa e Dulce Paladino, por tudo que
fazem e sempre fizeram por mim, pelo amor e dedicacao. Se cheguei ate aqui, foi
gracas a voces que sempre me incentivaram a estudar e me deram todo o apoio.
Amo muito voces!
Agradeco a minha famlia. Em especial agradeco a minha avo Nilza Paladino, que
sempre torceu muito por mim, vibrando a cada vitoria que conquisto.
Tive o prazer de fazer grandes amigos na faculdade que foram fundamentais nos
anos de graduacao, espero levar alguns deles para o resto da vida. Dentre eles,
agradeco a Las Ferreira Crispino e Thiago Valentin de Oliveira.

Agradeco aos amigos que ja me acompanham desde antes mesmo da faculdade. E


de extrema importancia para mim saber que posso contar com voces.
Agradeco aos professores do Departamento de Engenharia Eletronica e de Computacao, e incrvel e inspirador como a relacao aluno professor e harmoniosa. Obrigado pelos ensinamentos e conhecimentos passados. Um agradecimento especial ao
professor Carlos Jose Ribas DAvila.
Agradeco aos colegas dos laboratorios de que fiz parte: o Laboratorio de Processamento de Sinais (LPS) e o Laboratorio de Eletronica de Potencia (ELEPOT). Sou
muito grato por ter iniciado na area de pesquisa nestes laboratorios.
Agradeco aos professores John Stonham e Felipe Maia Galvao Franca pelos ensinamentos, orientacao e incentivo, sem os quais este projeto nao seria possvel.

RESUMO

Neste trabalho sera desenvolvido um sistema para reconhecimento facial. Para


implementar tal sistema, fara-se o uso dos conceitos de redes neurais artificiais. As
redes neurais artificiais sao modelos computacionais inspirados no sistema nervoso
central animal que tem a capacidade de aprender e reconhecer padroes. O modelo
de rede neural abordado sera o modelo de redes neurais sem peso. Testes serao
feitos para validar o funcionamento do sistema de reconhecimento desenvolvido com
o uso de imagens de cor e de profundidade. Para a aquisicao das imagens utilizadas
no reconhecimento foi utilizado o dispositivo Kinect (Xbox 360) composto por uma
camera convencional e um sensor infra-vermelho de profundidade.
Palavras-Chave: reconhecimento facial, redes neurais, aprender, padroes, profundidade, Kinect.

vi

ABSTRACT

In this work a face recognition system is going to be developed. In order to


implement this system, it is going to be used the neural artificial networks concepts.
The neural artificial networks are computational models inspired by the animal
nervous system, having the capacity of learning and recognising patterns. The
neural network model covered is the weightless neural network. The face recognition
system is going to be tested in order to validate its functionality using color and
depth images. The images used in the recognition system were acquired using the
Kinect (Xbox 360) device that is composed of a conventional camera and a infrared
depth sensor.
Key-words: face recognition, neural networks, learning, patterns, depth, Kinect.

vii

SIGLAS

GB - Gigabyte
KB - Kylobyte
PB - Petabyte
RAM - Random Access Memory
TB - Terabyte
WiSARD - Wilkie, Stonham and Aleksanders Recognition Device

viii

Sum
ario
1 Introduc
ao

1.1

Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2

Delimitacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3

Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4

Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5

Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.6

Descricao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Redes Neurais Sem Peso

2.1

Redes neurais artificiais . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2

Fases de treinamento e teste . . . . . . . . . . . . . . . . . . . . . . .

2.3

Capacidade de generalizacao . . . . . . . . . . . . . . . . . . . . . . . 11

2.4

Representacao das imagens . . . . . . . . . . . . . . . . . . . . . . . . 12


2.4.1

Segmentacao de Imagens . . . . . . . . . . . . . . . . . . . . . 13

2.4.2

Lidando com nveis de cinza . . . . . . . . . . . . . . . . . . . 14

2.4.3

Imagens de profundidade . . . . . . . . . . . . . . . . . . . . . 18

3 Arquitetura do Sistema de Reconhecimento Facial

20

3.1

Modulo Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2

Modulo MinhaImagem . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.3

Modulo Camera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.4

Modulo Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.5

Modulo Opcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4 Exercitando o Sistema de Reconhecimento Facial


4.1

32

Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

ix

4.2

Teste da Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.3

Algoritmo de treino e teste . . . . . . . . . . . . . . . . . . . . . . . . 36

4.4

4.3.1

Reconhecimento de uma imagem treinada . . . . . . . . . . . 37

4.3.2

Treinamento m
ultiplo de uma mesma imagem . . . . . . . . . 37

4.3.3

Treinamento m
ultiplo de diferentes imagens . . . . . . . . . . 38

Comparando fotos de luminancia e de profundidade e as tecnicas de


representacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.5

Ajustando os parametros da rede . . . . . . . . . . . . . . . . . . . . 48


4.5.1

Tamanho das n-uplas . . . . . . . . . . . . . . . . . . . . . . . 49

4.5.2

Mapeamento pseudo-randomico . . . . . . . . . . . . . . . . . 52

4.5.3

Mapeamentos sequenciais . . . . . . . . . . . . . . . . . . . . 54

4.5.4

Teste com um outro padrao . . . . . . . . . . . . . . . . . . . 56

5 Conclus
oes

60

Bibliografia

62

Lista de Figuras
2.1

Diagrama de bloco do modelo de Mcculloch-Pitts. Fonte: [1]. . . . . . . .

2.2

Exemplo de func
ao threshold. . . . . . . . . . . . . . . . . . . . . . . . .

2.3

Diagrama de blocos das camadas de uma rede neural artificial. Fonte: [2].

2.4

Diagrama de um n
o de uma rede neural sem peso WiSARD.

. . . . . . .

2.5

Fase de treinamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.6

Fase de treinamento - Primeira imagem. . . . . . . . . . . . . . . . . . .

2.7

Fase de treinamento - Segunda imagem. . . . . . . . . . . . . . . . . . .

2.8

Fase de teste - Primeira imagem. . . . . . . . . . . . . . . . . . . . . . . 10

2.9

Fase de teste - Segunda imagem. . . . . . . . . . . . . . . . . . . . . . . 11

2.10 Imagens da mesma face - 1 bit de resolucao por pxel na primeira linha, 8
bits de resoluc
ao na segunda. . . . . . . . . . . . . . . . . . . . . . . . . 14

2.11 Fase de treinamento - Imagem escala de cinza. . . . . . . . . . . . . . . . 16


2.12 Fase de treinamento - Imagem escala de cinza 2. . . . . . . . . . . . . . . 16
2.13 Fotos de luminancia e de profundidade. . . . . . . . . . . . . . . . . . . 18
3.1

Diagrama de blocos dos modulos do codigo implementado.

. . . . . . . . 21

3.2

Diagrama de blocos do algoritmo de treino e teste. Os blocos azuis simbolizam a execuc


ao de uma acao. Os blocos amarelos simbolizam tomadas
de decis
ao. Os blocos rosas simbolizam um processo pre-definido, uma
sub-rotina. E os blocos brancos simbolizam uma estrutura pre-definida.
O fluxo das ac
oes do diagrama segue as linhas cheias, enquanto as linhas
pontilhadas representam operacoes ou ligacoes que nao interferem no fluxo
do diagrama. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.3

Interface do programa. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.7

Programa rodando na opcao (11) Testar rede com camera. . . . . . . . 28

3.4

Fluxograma das opc


oes de treino 5, 6 e 7. . . . . . . . . . . . . . . . . . 29

xi

3.5

Fluxograma das opc


oes de treino 8 e 9.

. . . . . . . . . . . . . . . . . . 30

3.6

Fluxograma das opc


oes de treino 10, 11 e 12. . . . . . . . . . . . . . . . 31

4.1

Mem
oria com o treinamento da rede. Rede treinada com 8 imagens de
lumin
ancia e de profundidade. . . . . . . . . . . . . . . . . . . . . . . . 35

4.2

Fotos de lumin
ancia usadas para treinamento. . . . . . . . . . . . . . . . 36

4.3

Fotos de profundidade usadas para treinamento. . . . . . . . . . . . . . . 36

4.4

Testando uma mesma dupla de imagens previamente treinadas. Cada


dupla de imagem composta por uma imagem de luminancia e uma imagem
de profundidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4.5

Treinando uma mesma dupla de imagens m


ultiplas vezes. Cada dupla
de imagem composta por uma imagem de luminancia e uma imagem de
profundidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.6

Treinando redes com diferentes imagens. Rede treinada com 100 duplas de
imagens. Cada dupla de imagem composta por uma imagem de luminancia
e uma imagem de profundidade. . . . . . . . . . . . . . . . . . . . . . . 40

4.7

Teste de uma rede usando a tecnica de segmentacao. Rede de n-upla de


tamanho igual a 5. Rede treinada usando a tecnica de validacao cruzada
com metodo k-fold com k igual a 6, grupo total de 24 duplas de imagens. . 44

4.8

Fotos usando a tecnica de segmentacao usadas para treinamento. Fotos de


um mesmo rosto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.9

Fotos usando a tecnica de segmentacao usadas para o teste. Fotos de 2


rostos diferentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.10 Teste de uma rede usando a tecnica de ranqueamento. Rede de n-upla de


tamanho igual a 5. Rede treinada usando a tecnica de validacao cruzada
com metodo k-fold com k igual a 6, grupo total de 24 duplas de imagens. . 47

4.11 Fotos usando a tecnica de segmentacao usadas para treinamento. Fotos de


um mesmo rosto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.12 Fotos usando a tecnica de segmentacao usadas para o teste. Fotos de 2


rostos diferentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.13 Testando n-uplas de diferentes tamanhos usando a tecnica de ranqueamento. Rede treinada usando a tecnica de validacao cruzada com metodo
k-fold com k igual a 10, grupo total de 100 duplas de imagens. . . . . . . 51

xii

4.14 Testando diferentes mapeamentos pseudo-randomicos usando a tecnica de


ranqueamento. Rede treinada usando a tecnica de validacao cruzada com
metodo k-fold com k igual a 10, grupo total de 100 duplas de imagens. . . 54

4.15 Testando mapeamentos sequenciais usando a tecnica de ranqueamento.


Rede treinada usando a tecnica de validacao cruzada com metodo k-fold
com k igual a 10, grupo total de 100 duplas de imagens. . . . . . . . . . . 56

4.16 Testando n-uplas de diferentes tamanhos usando a tecnica de ranqueamento. Rede treinada usando a tecnica de validacao cruzada com metodo
k-fold com k igual a 10, grupo total de 100 duplas de imagens. . . . . . . 58

4.17 Fotos usando a tecnica de ranquemaneto usadas para treinamento. Fotos


de um mesmo rosto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

4.18 Fotos usando a tecnica de ranqueamento usadas para o teste. Fotos de 2


rostos diferentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

xiii

Lista de Tabelas
2.1

Tamanho da n-upla Tamanho da memoria. . . . . . . . . . . . . . . . 13

2.2

Ordem de ranqueamento de uma n-upla de 3 entradas. . . . . . . . . . . 15

2.3

Tamanho das n-uplas Tamanho da memoria. . . . . . . . . . . . . . . 18

xiv

Captulo 1
Introdu
c
ao
1.1

Tema

O tema do trabalho e o uso de redes neurais artificiais para reconhecimento facial.


Ao olhar uma foto, as pessoas facilmente sao capazes de reconhecer seus familiares,
amigos, conhecidos e sao capazes de reconhecer ate mesmo pessoas que foram vistas
poucas vezes. Buscando inspiracao nessa capacidade de aprendizado de reconhecimento tao intuitiva e natural para os seres humanos, busca-se desenvolver um sistema
capaz de fazer o mesmo. Um sistema de rede neural sem peso para reconhecimento
facial sera implementado e serao feitos testes para validar sua funcionalidade.

1.2

Delimita
c
ao

O objeto de estudo e a aplicacao de redes neurais sem peso para o reconhecimento


facial. Os testes e as analises serao feitas abordando apenas esse tipo particular de
rede neural. O parametros de ajuste da rede neural serao estudados para entender a
sua influencia na resposta da rede. Como trabalho correlato do uso de redes neurais
sem peso para o reconhecimento facial, tem-se a tese de doutorado Weightless
Neural Networks for Face and Pattern Recognition: an Evaluation Using OpenSource Databases, Khaki, 2013.

1.3

Justificativa

Para realizar-se diversas operacoes como: sacar dinheiro no banco, votar, fazer
uma compra com cartao de credito, comprovar presenca no trabalho, fazer uma
prova ou acessar sua caixa de emails e necessario passar por algum processo de
identificacao ou autenticacao. A proposta da biometria e aumentar a qualidade da
autenticacao ou identificacao, tornando esse processo mais pratico e seguro. Entre
as tecnologias de autenticacao biometrica, tem-se: impressao digital, geometria da
mao, leitura de ris, leitura de retina, reconhecimento de voz, assinatura digital,
reconhecimento facial, entre outras [3].
No contexto dessa necessidade de tornar o processo de autenticacao mais pratico
e seguro, esse trabalho propoe fazer a implementacao de um sistema para reconhecimento facial. Para implementar-se tal sistema sera usado o modelo de redes neurais
artificiais, que e um modelo computacional inspirado no sistema nervoso central.

1.4

Objetivos

O objetivo geral e validar o uso do modelo computacional de redes neurais sem


peso para a implementacao de um sistema de reconhecimento facial. Desta forma,
tem-se como objetivos especficos: (1) desenvolver em uma linguagem de programacao
para o sistema de reconhecimento; (2) estudar os parametros das redes neurais e
como ajusta-los para obter um bom resultado, e (3) testar o funcionamento do
sistema na pratica.

1.5

Metodologia

Neste trabalho, sera usado o conceito de redes neurais para desenvolver um sistema de reconhecimento facial. As redes neurais sao modelos computacionais de
vasta aplicacao. Atraves desses modelos e possvel desenvolver um sistema capaz de
aprender e reconhecer padroes.
Primeiramente, sera dada uma breve explicacao do conceito de redes neurais artificiais, exemplificando algumas de suas topologias. Um foco maior sera dado no
2

modelo da rede neural sem peso. A partir desse modelo, sera desenvolvido um
programa em linguagem de programacao.
Para o reconhecimento facial sera necessario captar as informacoes do rosto do
usuario do sistema. A forma mais intuitiva para captar tal informacao e atraves de
uma foto tirada por uma camera. Alem da foto da camera, sera usado tambem um
sensor infra-vermelho para captar as informacoes de profundidade do rosto. Assim,
esses dados serao usados para treinar o sistema, o fazendo reconhecer o padrao de
um rosto especfico. O exito deste trabalho esta na implementacao do sistema e em
validar o uso do mesmo para a aplicacao em reconhecimento facial.

1.6

Descri
c
ao

Apos a introducao feita neste captulo, o tema do trabalho sera tratado mais
a fundo nos captulos seguintes. No Captulo 2 sera dada uma explicacao sobre
os modelos computacionais das redes neurais. Alem disso, tambem sera abordado
como usar imagens para o reconhecimento facial no modelo das redes neurais artificiais. O Captulo 3 apresenta como foi feita a arquitetura em codigo do sistema de
reconhecimento facial a partir do modelo das redes neurais.
No Captulo 4, primeiramente serao realizados alguns testes para certificar que
o sistema implementado esta de acordo com os conceitos de redes neurais. Esses
testes vao verificar o funcionamento adequado do sistema. Posteriormente, os testes
de reconhecimento facial serao apresentados. Neles o sistema sera validado. Os
ajustes dos parametros das redes neurais serao alterados para entender-se melhor
a influencia dos mesmos no desempenho da rede e, assim, melhorar o resultado do
sistema.
Na conclusao sera feita um apanhado geral do que foi apresentado no trabalho.
Sera avaliada a adequacao da aplicacao do sistema de redes neurais para o reconhecimento facial. Ideias de melhorias para trabalhos futuros serao dadas.

Captulo 2
Redes Neurais Sem Peso
Neste captulo sera dada uma explicacao sobre alguns modelos de redes neurais.
Dentro desses modelos, sera dado um enfoque maior no modelo de redes neurais sem
peso e sua aplicacao para o reconhecimento facial. Na u
ltima secao do captulo sera
abordado como representar imagens para usa-las no modelo de redes neurais.

2.1

Redes neurais artificiais

A rede neural artificial e um sistema inspirado na funcao do neuronio e consiste


de elementos de processamento analogo a ele: chamados nos ou unidades de processamento [4]. Esses elementos conectados formam a rede neural, existindo diferentes
topologias para fazer essas conexoes.
O primeiro modelo proposto para redes neurais foi o modelo de Mcculloch-Pitts,
de 1943, representado no diagrama da Fig. 2.1. O diagrama representa uma unidade
de processamento de uma rede neural. Nesse modelo, a unidade de processamento
recebe os parametros de entrada e aplica pesos diferentes para cada entrada. Uma
funcao e calculada a partir desses pesos; por simplicidade, pode-se escolher como
funcao um somatorio. A sada dessa funcao se torna a entrada da funcao de ativacao
que gera a sada da unidade de processamento. A funcao de ativacao e uma funcao
de caracterstica nao linear que determina a mudanca de estado da unidade de
processamento. Uma das funcoes de ativacao mais simples e a funcao threshold,
usada para classificar a entrada em diferentes categorias. Um exemplo dessa funcao

e mostrado na Fig. 2.2.

Figura 2.1: Diagrama de bloco do modelo de Mcculloch-Pitts. Fonte: [1].

Figura 2.2: Exemplo de funcao threshold.

A rede neural artificial pode ser composta por m


ultiplas camadas: uma camada
de entrada, uma camada de sada e m
ultiplas camadas intermediarias. A camada
de entrada recebe a entrada do meio externo; a camada de sada leva o resultado
dos nos ao meio externo; e as camadas intermediarias sao compostas pelos nos entre
as duas camadas anteriores e e onde a maior parte do processamento e feito. A Fig.
2.3 ilustra as camadas de uma rede neural artificial.

Figura 2.3: Diagrama de blocos das camadas de uma rede neural artificial. Fonte: [2].
5

Em 1984 foi criada rede neural sem peso WiSARD por Wilkes, Stonham e Aleksander [5]. Na rede WiSARD as unidades de processamento sao implementadas com
memorias RAM. A Fig. 2.4 representa num diagrama de blocos de uma rede neural
sem peso WiSARD.

Figura 2.4: Diagrama de um no de uma rede neural sem peso WiSARD.

Na Fig. 2.4, cada bit na memoria de 2n corresponde a uma sequencia de um


conjunto de n entradas binarias. Como as entradas sao binarias, para cada conjunto
de n entradas, existem 2n sequencias binarias possveis.
No total, o tamanho da memoria e m 2n , onde m e o n
umero de funcoes. O
n
umero de funcoes e dado pela divisao entre o n
umero total de entradas N e o
n
umero de entradas por agrupamento n:

N
.
n

Esses agrupamentos sao denominados

de n-uplas. Caso o tamanho da n-upla n nao seja divisvel pelo pelo n


umero total
de entradas N , o n
umero de funcoes m sera o valor da divisao

N
n

truncada. As-

sim, algumas entradas nao sao associadas a nenhuma n-upla e nao sao usadas pela
rede neural. Esse n
umero de entradas nao utilizadas normalmente e tao pequeno
comparado com n
umero total de entradas que nao afeta o desempenho da rede.
O n
umero de entradas por n-upla pode variar entre os extremos 1 e N , o primeiro
extremo equivaleria a ter N funcoes unitarias, o outro extremo equivaleria a ter
apenas uma funcao. Como o tamanho da memoria e calculada pela expressao:
6

m 2n =

N
n

2n , quanto maior for n, o n


umero de entradas por agrupamento,

maior sera a memoria.


Usando a rede neural sem peso para imagens, cada pxel na imagem e usado como
uma entrada. Caso os pxeis sejam binarios: preto ou branco, esse sistema se aplica
perfeitamente; bastando codificar o preto e branco em 0 ou 1. Sera apresentado
mais a` frente uma solucao para o caso de uma imagem em escala de cinza, onde
cada pxel e representado por 8 bits.
Nesse trabalho se fara o uso de uma rede neural sem peso WiSARD para o reconhecimento facial. Portanto, um foco maior sera dado para esse modelo de rede.

2.2

Fases de treinamento e teste

A rede neural deve passar por uma fase de treinamento ou aprendizagem para
depois poder ser usada para reconhecer padroes. Assim, duas fases podem ser separadas: a fase de treinamento e a fase de teste. Tambem e possvel usar a rede de
forma que durante a fase de teste, ela esteja sob treinamento. Contudo, essas duas
fases serao analisadas de forma separada.
Na fase de treinamento, coloca-se como entrada da rede, dados que se deseje
que o sistema reconheca. No caso da rede sem peso WiSARD, os bits da memoria
inicialmente estao zerados. A cada treinamento, os bits da memoria correspondentes
aos padroes das imagens sao alterados para 1.
Na fase de teste, coloca-se os dados na entrada da rede com o intuito de observar a
sua classificacao na sada. A rede deve mostrar um resultado positivo ou negativo em
relacao ao reconhecimento. Alternativamente, o resultado pode ser um percentual
de reconhecimento. Nessa fase, nao se faz escrita na memoria, ela e apenas lida para
gerar um resultado.
As fases de treinamento e teste serao ilustradas com um exemplo. No exemplo,
considera-se um sistema com imagens binarias de dimensao 3 3 pxeis como mostrado na Fig. 2.5. O n
umero de pxeis por n-upla e escolhido como 3. Portanto,
7

ha 3 funcoes, cada uma composta por 3 pxeis. Nesse exemplo, a rede sera treinada
com 2 imagens e depois sera testada tambem com 2 imagens. A rede sera treinada
para reconhecer padroes similares a letra T.
Como cada funcao e composta de 3 entradas, cada parte da memoria correspondente a cada funcao tem 23 = 8 bits na memoria. O primeiro bit da memoria da
funcao F1 corresponde a sequencia (0,0,0) dos pxeis 5,3,7, como pode ser visto na
Fig. 2.5. O segundo bit corresponde a sequencia (0,0,1), e assim por diante, ate
o oitavo bit que corresponde a sequencia (1,1,1). A mesma logica e valida para
as funcoes F2 e F3 , cujos mapeamentos de pxel sao, respectivamente, 6,9,4 e 2,1,8
como mostrado na Fig. 2.5. O mapeamento de pxeis de cada funcao foi escolhido de
forma pseudo-randomica. Para cada aplicacao, sequencias ou metodos particulares
de mapeamento de pxeis podem implicar em melhores resultados [6].

Figura 2.5: Fase de treinamento.

A primeira imagem treinada e mostrada na Fig. 2.6. Inicialmente, todos os bits


da memoria estao zerados. As funcoes F1 , F2 e F3 leem respectivamente (1,1,0),
(0,0,0) e (1,1,1). Os bits de memoria correspondentes a essas sequencias de bits
sao alterados para 1. Nesse caso, o pen
ultimo bit da memoria da funcao F1 e o
primeiro bit da F2 e o u
ltimo da F3 , como ilustrado na Fig. 2.6.

Figura 2.6: Fase de treinamento - Primeira imagem.

A segunda imagem treinada e mostrada na Fig. 2.7. Os mesmos passos descritos


no treinamento da primeira imagem se repetem aqui. Nesse caso, as funcoes F1 e
F2 leem as mesmas sequencias lidas na primeira imagem treinada, respectivamente
(1,1,0) e (0,0,0), portanto, a parte da memoria correspondente a essas funcoes permanece a mesma. A funcao F3 le a sequencia: (1,0,1), portanto, o sexto bit de
memoria correspondente a F3 e alterado para 1.

Figura 2.7: Fase de treinamento - Segunda imagem.

Agora que a rede ja foi treinada, serao feitos dois testes com duas imagens diferentes das treinadas. O primeiro teste pode ser visto na Fig. 2.8. A imagem
pertence ao padrao T, mas nao foi treinada pela rede. As funcoes F1 , F2 e F3
leem (1,0,0), (0,0,0) e (1,1,1), respectivamente. Os bits de memoria correspondentes
a essas sequencias sao lidos da memoria. A funcao F1 le 0, as funcoes F2 e F3 leem 1.
Os valores lidos pelas funcoes sao somados e sao passados pela funcao de ativacao.
Nesse exemplo, a funcao de ativacao e a funcao threshold mostrada abaixo:

8
< positivo, se
Funcao Threshold =
: negativo, se

2,
< 2.

Portanto, a sada e positiva. Em outras palavras, o padrao da imagem de entrada


foi reconhecido pela rede. Esse resultado foi muito positivo, pois o proposito dessa
rede e justamente o de reconhecer padroes similares a letra T. Certamente, se as
imagens usadas para treinamento fossem usadas para o teste, a sada seria positiva.
A capacidade de reconhecer imagens nao vistas de um mesmo padrao como a imagem
da Fig. 2.8 e a chave para usar redes neurais.

Figura 2.8: Fase de teste - Primeira imagem.

Agora sera testada outra imagem que nao pertence aos padroes similares a letra
T. Essa imagem, como mostrada na Fig. 2.9 e um linha diagonal. As 3 funcoes
F1 , F2 e F3 leem 0 da memoria. Portanto, a soma e 0, e a sada da funcao de ativacao
e negativa.

10

Figura 2.9: Fase de teste - Segunda imagem.

O resultado desse teste foi muito positivo tambem. Uma imagem de um padrao
diferente nao foi reconhecido pela rede, como desejado. Uma das dificuldades de se
usar redes neurais e a de treinar a rede suficientemente para que ela possa reconhecer
imagens nao treinadas do mesmo padrao. No entanto, se a rede for treinada demais,
ela pode acabar reconhecendo imagens nao pertencentes ao padrao de treino.

2.3

Capacidade de generaliza
c
ao

As n-uplas sao definidas pelos agrupamentos das entradas. O tamanho das nulpas - o n
umero de entradas por agrupamento - define o n
umero de funcoes de uma
rede neural. Quanto maior o tamanho das n-uplas, menor o n
umero de funcoes. A
escolha do tamanho da n-upla e de extrema importancia para a rede funcionar como
desejada. Dependo do caso de aplicacao, um tamanho de n-upla maior ou menor
implicara em melhores resultados.
A fim de entender melhor a influencia do tamanho da n-upla, serao analisados os
dois extremos, quando o n
umero de entradas por agrupamento e unitario e quando
ele e o n
umero total de entradas.
Quando o tamanho da n-upla n e unitario: n = 1, cada entrada e uma funcao
do sistema. No caso de estudo das imagens binarias, cada pxel e uma funcao.
O tamanho da memoria necessaria e mnimo: 2n

N
n

= 21

N
1

= 2N , onde N

e o n
umero total de entradas. Cada pxel, que e uma funcao, possui dois bits
11

associados na memoria: um indicando 0 ao valor do pxel e o outro indicando 1.


Nesse caso e muito provavel que apos o treinamento de muitas imagens, um pxel
em particular assuma ambos os valores 0 e 1. Assim, os dois bits da memoria
associados a funcao desse pxel estarao marcados como 1. Quando todos os bits
da memoria associados a uma funcao estao marcados como 1, a funcao perde sua
utilidade, pois independente da imagem a ser testada, essa funcao, em particular,
tera a mesma resposta. Ou seja, a funcao nao e mais capaz de ajudar a rede a
reconhecer um determinado padrao [7].
Uma das propriedades-chave de uma rede neural e a generalizacao. Dados alguns
exemplos do padrao na fase de treinamento, o sistema deve ser capaz de reconhecer
imagens pertencentes ao mesmo padrao, alem das imagens treinadas. Essa capacidade explica o conceito de generalizacao. No entanto, essa generalizacao nao pode
ser tao grande ao ponto de o sistema comecar a reconhecer imagens nao pertencentes
ao padrao treinado. Quando n = 1, o sistema fica saturado - a memoria fica cheia
de 1s - muito rapido. Em outras palavras, o sistema generaliza demais.
Por outro lado, quando n = N , o tamanho da memoria e maximo: 2N , e o sistema
sera capaz de reconhecer apenas as mesmas imagens que foram treinadas. O sistema
perde toda a capacidade de generalizacao. No entanto, a memoria se torna muito
uma relacao de trade-o, aumentando o tamanho da nmais difcil de saturar. E
upla n, o sistema se torna menos suscetvel a saturacao, mas perde a capacidade
de generalizacao. Diminuindo n, a rede generaliza mais, enquanto se satura mais
facilmente.

2.4

Representa
c
ao das imagens

Nos exemplos dados ate agora, usou-se um bit para representar cada pxel das
imagens. Para muitas aplicacoes, e necessario que cada pxel seja representado por
mais bits. Uma representacao comum para imagens, por exemplo, e a escala de
cinza com 8 bits. Ela permite representar 28 = 256 diferentes nveis de cinza do
branco ao preto.

12

Em uma imagem de 66 45 pxeis, usando um bit para representar cada pxel, o


tamanho de memoria pode ser calculado pela expressao:
2n

(66 45)
2970
= 2n
, onde n e o tamanho das n-uplas.
n
n

Na Tab. 2.1, o tamanho da memoria e calculado para diferentes tamanhos de


n-uplas n, considerando o n
umero total de pxeis igual a 2970. Nesse exemplo pode
ser visto que a memoria cresce muito rapido com o aumento de n.
Tamanho da n-upla

Tamanho da mem
oria

742.5 bytes

742.5 bytes

1.49 KB

11.88 KB

16

1.52 GB

32

49.83 TB

Tabela 2.1: Tamanho da n-upla Tamanho da memoria.

2.4.1

Segmentac
ao de Imagens

Para trabalhar-se com imagens binarias, em que cada pxel e representado por
um bit, pode-se fazer um processamento para transformar as imagens de 8-bits por
pxel. Uma das formas de fazer esse processamento e pelo metodo de segmentacao
de imagens.
Ha diferentes metodos de segmentacao de imagens, de forma geral eles podem
ser divididos em dois grupos: os baseados em similaridade e os baseados em dissimilhancas. Os metodos baseados em dissimilhancas sao usados para a deteccao de
pontos, linhas ou arestas. Ja os metodos baseados em similaridade buscam representar a imagem usando algum criterio para separar os objetos de caractersticas
semelhantes. Um dos metodos mais simples e o metodo de Threshold, muito utilizado para segmentar imagens em termos de semelhanca de luminosidade [8].
Pelo metodo de Threshold, deve-se escolher por algum criterio um valor de limiar.
Defini-se um valor para atribuir aos objetos que tiverem valor maior que o limiar,
13

geralmente, define-se o maior valor possvel na representacao usada. E aos outros


objetos sao atribudos o valor zero. No caso para transformar as imagens de representacao de 8 bits em imagens de apenas 1 bit, atribu-se o valor 1 aos pxeis de
valor maior que o limiar e 0 para os outros. Existem diversos criterios para estabelecer um limiar, um muito utilizado por sua simplicidade e o criterio da media da
luminosidade, ou seja, o valor de limiar e a media dos valores dos pxeis. Na Fig.
2.10 pode-se ver algumas imagens de faces com pxeis representados em 8 bits e em
1 bit a partir do metodo de Threshold usando o criterio da media da luminosidade.

(a)

foto 1

(b)

foto 2

(c)

foto 3

(d)

foto 4

(e)

foto 1

(f)

foto 2

(g)

foto 3

(h)

foto 4

Figura 2.10: Imagens da mesma face - 1 bit de resolucao por pxel na primeira linha, 8
bits de resoluc
ao na segunda.

2.4.2

Lidando com nveis de cinza

Para reconhecimento facial, do ponto de vista da inspiracao biologica, seria necessario uma resolucao maior do que um bit para cada pxel. Uma vez que ate para
as pessoas ficaria difcil reconhecer um rosto numa imagem com 1 bit por pxel,
como pode ser visto nas fotos da primeira linha da Fig. 2.10 onde todas as imagens
sao da mesma face. Usando o padrao de 8 bits por pxel, melhora-se sensivelmente
a capacidade de reconhecimento para as pessoas, como pode ser visto na Fig. 2.10.
Para uma representacao de 8-bits por pxel e necessario uma memoria ainda maior.
Se cada bit for usado como uma entrada para a rede neural, o tamanho da memoria
14

necessaria se torna 8 vezes maior. No entanto, nao faz muito sentido usar cada bit
como uma entrada, pois um bit sozinho nao e representativo para a imagem, ele
perde seu significado usado como uma entrada separada.
Uma tecnica possvel a ser usada e a de ranqueamento. O uso dessa tecnica
no problema de segmentacao de imagens em nveis de cinza foi apresentado pelo
Khaki, K. M. em 2013 na tese de doutorado Weightless Neural Networks for Face
and Pattern Recognition: an Evaluation Using Open-Source Databases. Nessa
tecnica, escolhe-se um n
umero n de entradas por n-upla e as possveis ordens de
ranqueamento sao calculadas. Por exemplo, considerando uma imagem de 8 bits
por pxel e n = 3, chama-se o primeiro pxel da n-upla de A, o segundo de B e o
terceiro de C. Nesse caso, existem 6 ordens possveis de ranqueamento dos pxeis
como mostrado na Tab. 2.2. Para cada ranqueamento, e dado um endereco na
memoria [6].
As fases de treinamento e de teste sao executadas como descrito na Sec. 2.2.
Contudo, ao inves de escrever ou ler os bits da memoria de acordo com a sequencia
de bits das n-uplas, os bits da memoria sao acessados de acordo com a ordem de
ranqueamento das n entradas da n-upla.
Ordem de mapeamento

Ranque

Tabela 2.2: Ordem de ranqueamento de uma n-upla de 3 entradas.

Nas Fig.s 2.11 e 2.12 e ilustrada a fase de treinamento de uma imagem em escala
de cinza de 3 por 3 pxeis. Na Fig. 2.11 e mostrado o mapeamento dos pxeis da
imagem e a memoria inicialmente vazia. Os agrupamentos foram feitos de 3 em 3
pxeis, portanto a memoria associada a cada funcao deve ter 3! = 6 bits.

15

Figura 2.11: Fase de treinamento - Imagem escala de cinza.

Na Fig. 2.12 e mostrado uma imagem em escala de cinza sendo treinada. Cada
pxel da imagem pode assumir tres cores na escala de cinza: preto, cinza e branco. A
cada cor foi atribudo um valor, respectivamente 0,1 e 2. Como cada n-upla possui 3
pxeis, tem-se 6 combinacoes possveis de ordenar do pxel mais claro ao mais escuro.
Na Fig. 2.12 e mostrada a ordem dos pxeis do maior valor para o menor para cada
uma das tres funcoes, dando sempre preferencia para os primeiros pxeis das funcoes.
Por exemplo, se A1 , B1 e C1 forem iguais, deve-se ordenar: A1

B1

C1 . Pela

ordem de ranqueamento da Tab. 2.2, pode-se determinar que as funcoes F1 , F2 e


F3 tem ranque 5, 3 e 3 respectivamente. Assim, chega-se a situacao da memoria
mostrada na Fig. 2.12.

Figura 2.12: Fase de treinamento - Imagem escala de cinza 2.

16

Uma das dificuldades do reconhecimento facial e a luminosidade. Duas fotos da


mesma face tiradas sob diferentes condicoes de luminosidade resultam em imagens
muito diferentes. Para as pessoas, e facil reconhecer rostos mesmo assim. No entanto, a nvel de pxel, os valores se tornam muito diferentes. Portanto, treinar uma
rede neural para reconhecer um rosto especfico requer que este rosto seja treinado
sob diferentes condicoes de luminosidade.
Uma das vantagens da tecnica de ranqueamento e que ela tende a minimizar a
influencia da luz. Como a classificacao e feita baseada na ordem de ranqueamento,
a classificacao depende da sequencia de pxeis do mais claro para o mais escuro.
Na representacao de 8-bits, o preto e representado por 0 e o branco por 255. Se,
por exemplo, uma n-upla de 3 entradas e classificado como ranque 4. Nomeando,
os pxeis em ordem como A, B e C; como o ranque e 4, do mais claro para o mais
escuro, a ordem deles e B,C,A como pode ser visto na Tab. 2.2. Tirando uma foto da
mesma face na mesma posicao sob uma condicao de maior luminosidade, na teoria,
fara com que todos os pxeis fiquem mais claros. Entao a ordem de ranqueamento
permaneceria a mesma. De forma analoga, se a foto fosse tirada sob uma condicao
de menor luminosidade, a ordem de ranqueamento tambem permaneceria inalterada.
Usando a tecnica de ranqueamento, a quantidade de bits por pxel nao se torna
mais relevante para o tamanho da memoria. A memoria passa a ser calculada pelo
produto do n
umero de funcoes pelo n
umero de possveis ordens de ranqueamento.
O tamanho da memoria em funcao do tamanho das n-uplas pode ser calculada pela
expressao a seguir:

Tamanho da memoria = N
umero de Funcoes N
umero de ordens de ranqueamento
=

N
n!
n

= N (n

1)!, onde N e o n
umero total de pxeis.

Para ter-se uma melhor ideia do tamanho da memoria necessario, na Tab. 2.3
sao mostrados alguns calculos para uma imagem de 66 45 pxeis. O tamanho da
memoria cresce muito rapido com o aumento do tamanho das n-uplas. Para n = 16,

17

e necessario uma memoria de 485.47 PB!


Tamanho das n-uplas

Tamanho da mem
oria

371.25 bytes

371.25 bytes

2.23 KB

1.87 GB

16

485.47 PB

Tabela 2.3: Tamanho das n-uplas Tamanho da memoria.

2.4.3

Imagens de profundidade

Caso a aplicacao do reconhecimento facial seja para reconhecimento de uma pessoa


e nao necessariamente de uma foto, pode-se pensar em outras maneiras de se captar
a face das pessoas. Como por exemplo, o uso de um sensor infra-vermelho para
avaliar-se medidas da profundidade do rosto.
Nas imagens da Fig. 2.13 sao mostrados alguns exemplos de fotos de luminancia
e de profundidade tiradas no mesmo instante de tempo. Uma grande vantagem
da imagem de profundidade e a sua total independencia da luminosidade. Nas
fotos de profundidade, quanto mais branca a imagem, mais afastada estara o objeto
fotografado, com excecao dos pxeis pretos absolutos que podem representar pxeis
de profundidade indefinida. Esses pontos de profundidade indefinida ocorrem por
limitacoes do sensor em captar a profundidade em duas situacoes: quando os objetos
que estao mais perto do sensor geram sombra nos objetos mais distantes; e quando
objetos sao compostos de materiais muito reflexivos [9].

(a)

foto 1 - cor

(b) foto 1 - pro-

(c)

fundidade

foto 2 - cor

(d) foto 2 - profundidade

Figura 2.13: Fotos de luminancia e de profundidade.


18

Assim como as fotos de cor, as fotos de profundidade podem ser usadas para
treinar uma rede neural. As tecnicas de segmentacao de imagem e de ranqueamento
tambem se aplicam a essas fotos.
Algumas especificacoes da camera e do sensor de profundidade usados para as
fotos da Fig. 2.13 sao listadas a seguir [10]:
1. Resolucao da camera: 640x480, 8-bit;
2. Resolucao do sensor de profundidade: 640x480, 11-bit;
3. Alcance do sensor de profundidade: 0.4m a 7m.
O sensor infra-vermelho de profundidade usado foi o Kinect (Xbox 360). As fotos
foram tiradas a uma distancia de 80 cm a 1,1 m do sensor que tem uma resolucao
de 2 mm nessa faixa[11].
Nas imagens mostradas na Fig. 2.13, cada pxel esta sendo representado numa
escala de cinza de 8 bits, a mesma resolucao da camera. Ja a resolucao do sensor de
profundidade e maior: 11 bits. Para nao perder-se resolucao, foi necessario fazer um
processamento antes de converter os dados de profundidade para a escala de cinza.
Como a faixa de interesse dos dados de profundidade e apenas a faixa de 80cm a
1,1m, pode-se converter apenas essa faixa de interesse, sem perder resolucao.

19

Captulo 3
Arquitetura do Sistema de
Reconhecimento Facial
Foi feita a implementacao de uma rede neural usando a linguagem de programacao
Python. Toda a teoria explicada no Cap. 2 foi escrita em algoritmo para funcionar
em um computador com uma camera externa e com um sensor infra-vermelho de
profundidade. Sera dada uma breve explicacao sobre o codigo.
O codigo pode ser dividido em 7 modulos: Main, Aplicativo, Rede, MinhaImagem,
Funcoes, Camera e Opcoes. O modulo Main e apenas o modulo que faz as chamadas
dos demais modulos. O Aplicativo e o que implementa a interface do programa para
o usuario. O modulo Rede contem as definicoes e parametros da rede neural sem
peso. O MinhaImagem define alguns parametros para as imagens utilizadas na rede.
O modulo Funcoes implementa a maioria das funcoes que a rede precisa, basicamente
duas funcoes: uma para treinar a rede, outra para testa-la. O modulo Camera e
o responsavel por lidar com a camera externa e com o sensor infra-vermelho de
profundidade. O modulo Opcoes funciona apenas como um vnculo entre o modulo
Aplicativo e os modulos Camera e Funcoes. De acordo com o comando do usuario
atraves da interface, o modulo Opcoes faz as chamadas necessarias.
Na Fig. 3.1, e apresentado um diagrama simplificado mostrando as relacoes entre
os modulos do codigo e seus atributos, assim como a camera e o sensor externo.
Como mencionado, os modulos MinhaImagem e Rede definem as classes para os
objetos das imagens e das redes neurais, respectivamente. O modulo Camera se
20

relaciona com o MinhaImagem para gerar as imagens capturadas. Ja o modulo


Funcoes se relaciona tanto com o MinhaImagem quanto com o Rede para fazer o
treinamento e o teste das redes neurais.

Figura 3.1: Diagrama de blocos dos modulos do codigo implementado.

Nas secoes seguintes, alguns modulos serao explicados com mais detalhes.

3.1

M
odulo Rede

O modulo Rede define a estrutura da rede neural sem peso. Esse modulo tem 10
atributos: linhas, colunas, tamanhoNupla, numFuncoes, funcoes, memoria 2d, memoria profundidade, threshold, vezes treinadas, nomeArquivo, uns 2d e uns profundidade.
Os atributos linhas e colunas sao as dimensoes das imagens que a rede esta esperando treinar ou testar. O tamanhoNupla guarda o tamanho das n-uplas, ou seja,
o n
umero de entradas por agrupamento da rede, enquanto o numFuncoes guarda o
n
umero de funcoes da rede.
O atributo funcoes guarda as funcoes que fazem o mapeamento dos pxeis das imagens. Lembrando que as funcoes da rede sao as sequencias de mapeamento de pxeis
das n-uplas da rede. Os mapeamentos sao gerados atraves de algoritmos pseudorandomicos. Os atributos memoria 2d e memoria profundidade sao as memorias da
21

rede, a primeira e usada para as imagens de luminancia e a segunda usada para as


imagens de profundidade. A funcao de ativacao do sistema e a funcao ilustrada na
Fig. 2.2, e o valor escolhido para a funcao fazer a decisao se a resposta da rede sera
positiva ou negativa e definido pelo atributo threshold. O atributo vezes treinada
guarda quantas vezes a rede foi treinada. Os atributos uns 2d e uns profundidade
guarda a quantidade de bits 1 nas memorias memoria 2d e memoria profundidade,
respectivamente. E o atributo nomeArquivo guarda o nome para o arquivo onde a
rede e guardada com todos os seus parametros.

3.2

M
odulo MinhaImagem

O modulo MinhaImagem, assim como o Rede, tambem define uma estrutura, a


estrutura usada para as imagens. Essa estrutura guarda algumas informacoes das
imagens como: nome, n
umero de colunas e linhas, n
umero de pxeis e uma matriz
representando a imagem. Essas informacoes sao guardadas respectivamente nos
atributos: nomeArquivo, colunas, linhas, numpxeis e matriz.
O atributo matriz guarda uma matriz com n
umeros decimais representando cada
pxel da imagem associada a ela. O intuito de guardar esses atributos na estrutura
e deixar essas informacoes de facil acesso.

3.3

M
odulo Camera

O modulo Camera e o responsavel em capturar e processar as fotos de luminancia


e profundidade. Esse modulo faz a leitura da camera e do sensor infra-vermelho de
profundidade externos como representado na Fig. 3.1. A camera e o sensor usados
foram do modulo Kinect (Xbox 360). Algumas especificacoes basicas desse modulo
foram listadas na Sec. 2.4.3.
O modulo Camera aciona a camera e o sensor de profundidade do Kinect (Xbox
360) de forma intercalada. Assim, o Kinect envia uma imagem de luminancia seguida
de uma imagem de profundidade para o modulo Camera. Como o intercalacao e feita
de maneira rapida, pode-se considerar que as imagens de luminancia e profundidade

22

sao tiradas no mesmo instante de tempo. Como mencionado na Sec. 2.4.3, ambas as
imagens tem resolucao de 640x480 pxel, mas enquanto a camera tem uma resolucao
de 8 bits, o sensor tem uma resolucao de 11 bits. O processamento explicado na
Sec. 2.4.3 para converter a imagem de profundidade para 8 bits e realizado nesse
modulo.
A camera e sensor infra-vermelho registram o ambiente de posicoes diferentes, pois
a lente da camera e o sensor ficam alguns centmetros de distancia um do outro. A
imagem da camera e deslocada para conseguir-se que a camera e o sensor tenham
o mesmo enquadramento. As imagens capturadas sao cortadas em um tamanho
apropriado para caber um rosto, passando a ter dimensao de 192x144 pxeis.
Como o sensor de infra-vermelho nao captura objetos a uma distancia menor do
que 40cm, as imagens sao capturadas com o rosto a uma distancia maior - de 80cm
a 1,1m. Para conseguir preencher quase toda a imagem apenas com o rosto de uma
pessoa, e feita uma operacao de zoom. O zoom dado foi de aproximadamente 3 vezes,
usando o metodo de interpolacao linear. Apos essa operacao as imagens voltam a ter
dimensao de 640x480 pxeis. Depois desse processamento, as imagens de luminancia
e profundidade sao mostradas ao usuario do programa. Para o usuario ambas as
imagens sao mostradas superpostas a um contorno em linha branca do formato de
um rosto para ajuda-lo a posicionar o seu proprio rosto para tirar as fotos, como
pode ser visto na Fig. 3.7.
desejado que a imagem a ser usada na rede neural seja quase toda composta
E
pelo rosto a ser treinado ou testado. Para isso, a imagem e mais uma vez cortada,
passando a ter dimensao 440x300 pxeis. Esse corte e feito do tamanho do menor
retangulo contendo todo o contorno em linha branca mostrado na Fig. 3.7. Para
a aplicacao deste trabalho em reconhecimento facial usando redes neurais, a quantidade de pxeis como entrada para a rede ainda e muito grande: 440x300 pxeis.
Para diminuir a resolucao da imagem, e feita novamente uma operacao de interpolacao. Agora a imagem e reduzida em aproximadamente 7 vezes, resultando em
uma imagem de dimensao 66x45 pxeis. Os pxeis fora do contorno em linha branca
sao pintados de branco, para assim tirar da imagem as informacoes que nao do

23

rosto do usuario. Na Fig. 2.13 tem-se exemplos de imagens depois de todo esse
processamento. Imagens como essas sao usadas na rede para o treinamento e teste.

3.4

M
odulo Fun
co
es

O modulo Funcoes faz a interacao entre o modulo MinhaImagem e o modulo


Rede. As funcoes de treinamento e de teste sao feitas nesse modulo. Ambas as
funcoes recebem um objeto do modulo rede, a rede neural; e objetos do modulo
MinhaImagem, uma dupla de imagens, uma de luminancia e uma de profundidade.
Cada treinamento ou teste e feito de forma duplicada: uma para a imagem de
luminancia e outra para a imagem de profundidade. Os algoritmos tanto para o
treinamento quanto para o teste sao essencialmente iguais. A u
nica diferenca e que
no treinamento, e feita uma escrita na memoria, enquanto no teste faz-se apenas a
leitura da memoria.
Na Fig.

3.2 o algoritmo e representado de forma simplificada em diagrama

de blocos. O parametro funcoes do objeto do modulo Rede e lido pelo sistema.


Esse parametro guarda os mapeamentos dos pxeis de todas as n-uplas da rede em
questao. Seguindo o mapeamento da primeira n-upla, e feita a leitura dos pxeis
da imagem. Essa sequencia de pxeis e passada para uma funcao auxiliar que calcula qual a ordem de ranqueamento correspondente. Caso se deseje realizar o modo
de treinamento, e feita a escrita no espaco de memoria correspondente `a ordem de
ranqueamento. Por outro lado, caso se deseje realizar o modo de teste, o espaco de
memoria correspondente a ordem de ranqueamento e lido da memoria e esse valor e
passado para um somador que guarda o resultado da soma.
Esse algoritmo e executado de forma recursiva lendo o mapeamentos de todas as
n-uplas. No modo de teste, o valor do resultado guardado no somador e mostrado
ao usuario. Esse valor pode ser mostrado em porcentagem para o usuario ter uma
ideia do reconhecimento feito pela rede. Ou pode-se tambem escolher uma funcao
de ativacao para mostrar ao usuario se o reconhecimento foi positivo ou negativo.

24

Figura 3.2: Diagrama de blocos do algoritmo de treino e teste. Os blocos azuis simbolizam
a execuc
ao de uma ac
ao. Os blocos amarelos simbolizam tomadas de decisao. Os blocos
rosas simbolizam um processo pre-definido, uma sub-rotina. E os blocos brancos simbolizam uma estrutura pre-definida. O fluxo das acoes do diagrama segue as linhas cheias,
enquanto as linhas pontilhadas representam operacoes ou ligacoes que nao interferem no
fluxo do diagrama.

3.5

M
odulo Op
co
es

O modulo Opcoes oferece alternativas ao usuario de como usar a rede. A Fig.


3.3 mostra as diferentes opcoes oferecidas na interface do programa. O usuario
deve escolher uma das opcoes, entrar com os dados pedidos e clicar em Executar.
A primeira opcao e (1) Criar uma rede, os dados necessarios sao: Nome da rede,
n
umero de linhas, n
umero de colunas e o tamanho das n-uplas. O n
umero de colunas
e linhas sao necessarios para criar a rede, pois e necessario saber as dimensoes das
imagens que serao treinadas ou testadas na rede.

25

Figura 3.3: Interface do programa.

A segunda opcao e (2) Ler rede a partir de um arquivo. Ao entrar com o nome
do arquivo da rede, o programa mostra as propriedades da mesma. Na opcao (3)
Determinar um valor de threshold , o usuario pode mudar o valor de threshold de
rede desejada. O valor de threshold deve estar entre 1 e o n
umero de funcoes da
rede. A opcao (4) Copiar rede faz uma copia de uma rede escolhida pelo usuario.
Nas opcoes (5) Treinar rede com arquivos de imagens, (6) Treinar rede com
arquivos de imagens, testar rede antes de cada treinamento e (7) Treinar rede com
arquivos de imagens, treinar apenas as nao reconhecidas o usuario pode treinar
uma rede com imagens em um diretorio. O programa espera sempre encontrar fotos
em pares para treinar: sempre uma de luminancia e uma de profundidade. Os
fluxogramas dessas tres opcoes sao mostrados na Fig. 3.4. Na opcao 5, a rede e
treinada com todas as imagens do diretorio. Na opcao 6, cada imagem do diretorio
e testada e a resposta da rede e mostrada ao usuario que pode escolher treina-la na
rede ou nao. Na opcao 7, apenas as imagens em que a resposta da rede for negativa
26

sao testadas. Essa restricao da opcao 7 e uma forma de previnir que a memoria da
rede fique saturada.
As opcoes (8) Treinar rede com camera e (9) Treinar rede com camera, testar antes de cada treinamento permitem ao usuario treinar a rede diretamente da
camera e do sensor de profundidade. Os fluxogramas dessas duas opcoes sao mostrados na Fig. 3.5. Na opcao 8, a camera e o sensor tiram fotos de 5 em 5 segundos
e treinam a rede com essas fotos. A camera e o sensor param de tirar fotos apenas
quando o usuario pressiona ESC no teclado. Na opcao 9, o usuario deve pressionar
ENTER para que a camera e o sensor tirem fotos e elas sejam testadas na rede.
A resposta da rede e mostrada ao ao usuario que pode escolher treinar a rede ou
nao com as fotos.
As opcoes (10) Testar rede com arquivos de imagem, (11) Testar rede com
camera e (12) Testar rede com camera e salvar as fotos permitem ao usuario
testar a rede com imagens de um diretorio, ou diretamente da camera e do sensor.
Os fluxogramas dessas tres opcoes sao mostrados na Fig. 3.6. Assim como no
treinamento, no teste, a rede espera receber as imagens aos pares: sempre uma de
luminancia e uma de profundidade. Na opcao 10, todas as imagens de uma pasta
sao testadas. Na opcao 11, a camera e o sensor capturam as imagens e as testam
na rede. Uma barra indicando a resposta da rede em porcentagem e mostrada. A
opcao 12 e basicamente o mesmo que a 11, a diferenca e que na opcao 12 as fotos
tiradas sao salvas em arquivos cada vez que o ENTER e pressionado. Na Fig. 3.7,
e mostrado o programa rodando a opcao 11.

27

Figura 3.7: Programa rodando na opcao (11) Testar rede com camera.

A opcao (13) Depurador e apenas uma opcao extra usada no desenvolvimento


do programa. Essa opcao era usada para depurar o codigo e corrigir alguns bugs.

28

(a) Opcao (5) Treinar rede com arquivos


de imagens

(b)

Opc
ao (6) Treinar rede com arquivos de imagens, testar rede antes de cada

treinamento

(c)

Opc
ao (7) Treinar rede com arquivos de imagens, treinar apenas as n
ao

reconhecidas

Figura 3.4: Fluxograma das opcoes de treino 5, 6 e 7.


29

(a)

(b)

Opc
ao (8) Treinar rede com c
amera

Opc
ao (9) Treinar rede com c
amera, testar antes de cada treinamento

Figura 3.5: Fluxograma das opcoes de treino 8 e 9.

30

(a)

Opc
ao (10) Testar rede com arquivos de imagem

(b)

Opc
ao (11) Testar

rede com c
amera

(c)

Opca
o (12) Testar rede com c
amera

e salvar as fotos

Figura 3.6: Fluxograma das opcoes de treino 10, 11 e 12.

31

Captulo 4
Exercitando o Sistema de
Reconhecimento Facial
Agora que a arquitetura em codigo do sistema de reconhecimento facial ja foi explicada, sera dado seguimento aos testes. Inicialmente serao realizados alguns testes
para verificar se a arquitetura do sistema foi implementada de forma correta. Depois disso, serao realizados os testes para avaliar de fato o sistema de reconhecimento
facial.

4.1

Metodologia

Nas Sec. 4.2 e 4.3 serao feitas algumas verificacoes da arquitetura do sistema. Na
Sec. 4.2 serao feitos testes para verificar o funcionamento da memoria. Na secao
seguinte, 4.3, os algoritmos de treino e teste serao verificados. As imagens usadas
nos testes tem dimensao 66 por 45 pxeis. A tecnica de ranqueamento, explicada
na Sec. 2.4.2 foi usada tanto nas imagens de luminancia quanto nas imagens de
profundidade nos testes dessas duas secoes.
Nas Sec. 4.4 e 4.5 o sistema de reconhecimento facial sera testado de fato. Conceitos apresentados nos captulos anteriores serao usados para testar o reconhecimento.
Na propria estrutura da rede neural, alguns parametros como : tamanho da n-upla,
tipo de mapeamento e quantidade de treinamentos podem ser ajustados para melhorar o desempenho da rede.

32

Alem dos parametros da rede, pode-se tambem alterar os dados de entrada para
a rede. Pode-se usar como entrada as fotos de luminancia tiradas da camera, as
fotos de profundidade tiradas pelo sensor infra-vermelho, ou ambas as entradas.
Para a representacao das fotos de entrada pode-se utilizar diferentes tecnicas como
a tecnica de segmentacao por Threshold e a tecnica de ranqueamento, apresentadas
respectivamente nas Sec. 2.4.1 e Sec. 2.4.2.
Entre os ajustes de parametros da rede e dos dados de entrada, pode-se gerar
diferentes configuracoes para comparar o desempenho da rede. Na Sec. 4.4 serao escolhidos parametros fixos para as rede neurais: um tamanho definido de n-upla, um
mapeamento pseudo-aleatorio fixo e uma quantidade fixa de n
umero de treinamentos. Com esses parametros fixados, serao comparados o desempenho da rede usando
apenas imagens de cor, apenas imagens de profundidade e uma combinacao das duas
utilizando a tecnica de segmentacao por Threshold e a tecnica de ranqueamento.
Apos a escolha dos dados de entrada e entre as tecnicas de representacao das
imagens, o foco sera dado aos parametros da rede. Na Sec. 4.5 esses parametros
serao alterados com o proposito de comparar suas influencias no sistema.
Para os testes das Sec. 4.4 e 4.5, sera usada a tecnica de validacao cruzada
metodo k-fold para avaliacao do modelo. Nessa tecnica, o conjunto total de dados
e dividido em k subconjuntos mutuamente exclusivos de mesmo tamanho. No caso,
os dados sao as fotos dos rostos. O sistema e treinado e testado k vezes. Em cada
iteracao, um dos k subconjuntos e usado como entrada de teste, enquanto os outros
k-1 subconjuntos sao usados como entrada para treinamento [12].

4.2

Teste da Mem
oria

Este teste verificara se a memoria esta sendo escrita com o treinamento da rede.
Quando a rede e treinada pela primeira vez, e esperado que a memoria seja gravada
com uma quantidade de uns igual ao n
umero de n-uplas da rede. No segundo
treinamento, a memoria pode ser gravada com mais uns, o n
umero de gravacoes
no segundo treinamento pode variar de zero ao n
umero de n-uplas da rede. Se a

33

segunda figura for igual a primeira, consequentemente nao havera nenhuma gravacao.
Quanto mais diferente a nova imagem a ser treinada for das imagens ja treinadas,
maior sera o n
umero de gravacoes de uns na memoria.
Conforme a rede vai sendo treinada e esperado que o n
umero de gravacoes de
uns em cada treinamento va se tornando menor. Isso e esperado, pois, quanto
mais a rede foi treinada, pressupoe-se que mais ela ja aprendeu sobre o padrao a ser
reconhecido.
A Fig. 4.1 ilustra uma rede sendo treinada. Nessa rede os agrupamentos de
pxeis sao feitos de 7 em 7. O n
umero de n-uplas da rede pode ser calculado por:
N
,
n

e o tamanho da memoria pode ser calculado por: N (n

1)!, onde N e o

n
umero total de pxeis e n e o tamanho das n-uplas. Entao o n
umero de n-uplas
e

6645
7

= 424.2, como o resultado nao e inteiro, ele deve ser truncado. Assim,

tem-se 424 n-uplas, porem alguns pxeis acabam nao sendo associados a nenhuma
n-upla. Como o n
umero de pxeis nao associados e muito pequeno em relacao a
totalidade de pxeis da imagem, isso nao compromete o sistema. Nesse, caso sao 2
pxeis nao associados num universo de 2970 pxeis, menos de 0.07%. O tamanho da
memoria e (66 45) (7

1)! = 2.138.400 bits. Como cada rede e treinada com

fotos de luminancia e fotos de profundidade, a rede possui 2 memorias de tamanho


N (n

1)!.

34

Figura 4.1: Memoria com o treinamento da rede. Rede treinada com 8 imagens de
luminancia e de profundidade.

O grafico em azul mostra o preenchimento da memoria com o treinamento das


fotos de luminancia da Fig. 4.2. E o grafico em vermelho mostra o preenchimento
da memoria com o treinamento das fotos de profundidade da Fig. 4.3. No eixo a
esquerda, a quantidade de uns e mostrada em n
umeros absolutos. Ja a direita,
ela e mostrada em porcentagem em relacao ao tamanho total de cada memoria.
No grafico, pode ser visto que no primeiro treinamento a quantidade de uns na
memoria esta entre 400 e 500 para ambas as memorias. A cada treinamento o n
umero
de uns vai aumentando. Contudo, nota-se que o aumento de uns vai se tornando
menor. Na memoria das fotos de cor, do primeiro para o segundo treinamento houve
um aumento de 397; do segundo para o terceiro: 333, e nos seguintes: 228 e 170.
O mesmo comportamento e visto na memoria das fotos de profundidade, onde o
aumento foi de: 250 do primeiro para o segundo treinamento, 194, 196 e 137 nos
seguintes.
Conforme esperado, no primeiro treinamento a quantidade de uns na memoria
e de 424, e nos treinamentos seguintes o incremento de uns na memoria vai se
tornando menor, indicando que a rede neural ja esta aprendendo sobre o padrao

35

treinado.

(a)

foto 1

(b)

foto 2

(c)

foto 3

(d)

foto 4

(e)

foto 5

(f)

foto 6

(g)

foto 7

(h)

foto 8

Figura 4.2: Fotos de luminancia usadas para treinamento.

(a)

foto 1

(b)

foto 2

(c)

foto 3

(d)

foto 4

(e)

foto 5

(f)

foto 6

(g)

foto 7

(h)

foto 8

Figura 4.3: Fotos de profundidade usadas para treinamento.

4.3

Algoritmo de treino e teste

Os proximos testes verificarao o funcionamento das fase de treinamento e teste da


rede. No total, tres testes serao feitos: reconhecimento de uma imagem treinada,
treinamento m
ultiplo de uma mesma imagem, e treinamento m
ultiplo de diferentes
36

imagens. Os testes sao explicados e mostrados adiante.

4.3.1

Reconhecimento de uma imagem treinada

Neste teste a rede sera treinada e testada com a mesma dupla de imagens de uma
face: uma de luminancia e uma de profundidade. Nessa rede os agrupamentos de
pxeis sao feitos de 7 em 7. A resposta de sada da rede sera calculada fazendo
uma media da resposta da imagem de luminancia e da imagem de profundidade.
esperado receber uma resposta de 100 % ja que as imagens a serem testadas ja
E
foram treinadas na rede. Na Fig. 4.4, a resposta de 100% pode ser vista no grafico.

Figura 4.4: Testando uma mesma dupla de imagens previamente treinadas. Cada dupla
de imagem composta por uma imagem de luminancia e uma imagem de profundidade.

4.3.2

Treinamento m
ultiplo de uma mesma imagem

Neste teste uma rede sera criada e treinada m


ultiplas vezes com a mesma dupla
de imagens - uma de luminancia e uma de profundidade - de uma face. Nessa rede
os agrupamentos de pxeis tambem sao feitos de 7 em 7.
esperado que o n
E
umero de uns permaneca inalterado. Como a rede esta sendo
treinada sempre com a mesma imagem, a funcao ira gerar sempre a mesma resposta.

37

Portanto, nao havera uns adicionais na memoria. Na Fig. 4.5 pode ser visto que
o n
umero de uns na memoria realmente permanece inalterado depois dos m
ultiplos
treinamentos.

Figura 4.5: Treinando uma mesma dupla de imagens multiplas vezes. Cada dupla de
imagem composta por uma imagem de luminancia e uma imagem de profundidade.

4.3.3

Treinamento m
ultiplo de diferentes imagens

Neste teste a rede sera treinada com diferentes imagens da mesma face. Como
as imagens sao diferentes, espera-se que o n
umero de uns na memoria aumente.
Contudo, depois de muito treinamento, e esperado que o incremento de uns na
memoria va se tornando cada vez menor. O motivo para tal comportamento e que se
a rede esta aprendendo um padrao, com o passar do treinamento ela vai necessitando
de menos aprendizado.
Se uma rede continua aprendendo indefinidamente ate a sua memoria ficar saturada, nao e bom para o sistema. Nesse caso, significa que a memoria esta aprendendo todas as possibilidades de respostas das funcoes da rede. Consequentemente
qualquer imagem testada na rede ira produzir uma resposta alta e a rede perde a
capacidade de diferenciar o padrao treinado.

38

Como apenas o rosto de uma pessoa esta sendo treinado, a memoria da rede nao
deveria ficar com muitos uns. Pois e esperado que fotos de um mesmo rosto gere
apenas algumas das muitas possveis respostas das funcoes.
Na Fig. 4.6, pode-se ver dois testes com duas redes diferentes. Elas foram treinadas com 100 imagens diferentes. O primeiro grafico ilustra uma rede de n-upla igual
a 4. O n
umero de uns na memoria vai aumentando como esperado. Conforme
a rede vai sendo treinada, o incremento de uns vai sendo cada vez menor como
se a rede estivesse estabilizando. Esse comportamento pode ser visto em ambas as
memorias. Porem, ele e mais acentuado na memoria das fotos de profundidade.
No segundo grafico da Fig. 4.6, tem-se o treinamento de uma n-upla de tamanho
8. O n
umero de uns na memoria tambem vai aumentando. O incremento de
uns da memoria de profundidade vai diminuindo com o passar dos treinamentos,
como no caso da rede de n-upla de tamanho 8. Contudo, o incremento de uns
na memoria das fotos de luminancia nao diminui significativamente. Isso acontece
por dois motivos: a rede de n-upla igual a 8 tem mais bits de memoria e mais
possibilidades para as funcoes; e o fato de as fotos de luminancia serem mais sujeitas
a variacoes devido a luminosidade. Portanto, a memoria das fotos de luminancia
demora mais para estabilizar.

39

(a)

Rede de n-upla de tamanho igual a 4

(b)

Rede de n-upla de tamanho igual a 8

Figura 4.6: Treinando redes com diferentes imagens. Rede treinada com 100 duplas de
imagens. Cada dupla de imagem composta por uma imagem de luminancia e uma imagem
de profundidade.

40

4.4

Comparando fotos de lumin


ancia e de profundidade e as t
ecnicas de representa
c
ao

Para realizar comparacao entre os tipos de fotos e as tecnicas de representacao,


uma rede neural devera ser pre-definida. Na Tab. 2.1 e mostrado o tamanho necessario de memoria para o tamanho de n-upla escolhido para imagens de 66 45
pxeis usando imagens em que cada pxel e representado por 1 bit. Esse seria o caso
do uso da tecnica de segmentacao por Threshold. Pode ser visto nesta Tabela que
um tamanho de n-upla igual a 16 requer uma memoria de quase 2 GB.
Na Tab. 2.3 tambem e mostrado o tamanho necessario de memoria para imagens
de 66 45 pxeis em que e usada a tecnica de ranquemento. Esta Tabela mostra
que uma rede de n-upla igual a 8 requer uma memoria de quase 2 GB. De forma
arbitraria sera escolhida um tamanho de n-upla menor do que 8, ja que uma n-upla
de tamanho 8 exigiria muito espaco fsico de armazenamento. O tamanho de n-upla
escolhido e: 5.
Tambem sera estipulado um n
umero fixo de imagens para os treinamentos. Cada
rede neural sera treinada com 20 duplas de imagens, sendo uma de luminancia e
outra de profundidade. Para avaliacao do modelo sera usada a tecnica de validacao
cruzada, metodo k-fold com k igual a 6. O conjunto total de fotos sera de 24 duplas
de imagens. Esse conjunto sera dividido em 6 subconjuntos de 4 duplas de imagens.
Em cada uma das iteracoes um subconjunto sera usado para teste, enquanto os
outros 5 serao usados para o treinamento da rede.
Na Fig. 4.7 sao mostradas as respostas da rede para a tecnica de segmentacao
por Threshold com o criterio da media da luminosidade. As respostas sao medidas
de similaridade, ainda nao submetidas a um criterio de decisao, ou seja, no modelo
de redes neural sem peso da Fig. 2.4, as respostas sao a sada da funcao soma antes
de passar pela funcao de ativacao. Nao foi feita uma escolha da funcao de ativacao,
um criterio de decisao.

41

No primeiro grafico da Fig. 4.7, as 24 duplas de imagens usadas sao fotos diferentes
do rosto de uma mesma pessoa. Esse grafico mostra a media das respostas dos testes
nas 6 iteracoes, com a barra de erro representando o desvio padrao. A barra em
azul mostra a resposta da rede considerando apenas a resposta das fotos de cor,
enquanto as barra em vermelho mostra a resposta considerando apenas a resposta
das fotos de profundidade. Ja a barra preta mostra a resposta do sistema atraves
da media entre as duas respostas.
No segundo grafico da Fig. 4.7 a mesma rede - utilizando mesmo mapeamento
pseudo-randomico - e testada. As imagens utilizadas para o treinamento sao as
mesmas 24 duplas de imagens do primeiro grafico. Porem para o teste, sao utilizadas
4 duplas de imagens de rostos de outras pessoas, sendo cada 2 duplas de imagens
de uma pessoa diferente. Portanto, as imagens de teste sao as mesmas, enquanto as
imagens usadas no treino seguem a tecnica de validacao cruzada com metodo k-fold
com k igual a 6. Ou seja, em cada uma das iteracoes 5 subconjuntos sao usados
para o treinamento da rede. Assim como o primeiro grafico, e mostrada a media e
o desvio padrao das respostas dos testes nas 6 iteracoes.
No primeiro grafico tem-se uma resposta de aproximadamente 88% com desvio
padrao de 10% para as fotos de cor, ja as fotos de profundidade apresentam uma
resposta de 95% com desvio padrao de 7%. Usando a respostas de ambas as fotos,
a resposta e de 92% com um desvio padrao de 7%.
No segundo grafico tem-se uma resposta de aproximadamente 70% com desvio
padrao de 9% para as fotos de cor, 66% com desvio padrao de 8% para as fotos de
profundidade, e 68% com um desvio padrao de 6% para ambas as fotos.
As respostas do primeiro grafico sao maiores que a do segundo, como desejado.
Comparativamente a resposta das fotos de profundidade teve melhor desempenho
apresentando o maior valor para o primeiro grafico onde sao testadas fotos do mesmo
rosto usado no treinamento. Alem de apresentar o menor valor no segundo grafico
onde foram testadas imagens de pessoas pessoas diferentes da pessoa usada no treinamento.

42

Na Fig. 4.8 sao mostradas fotos de algumas das imagens do rosto treinado. A
Fig. 4.9 mostrada algumas das imagens de rostos de outras pessoas usados nos testes
apresentados no segundo grafico da Fig. 4.7.

43

(a)

(b)

Rede testada com imagens n


ao vistas da mesma pessoa treinada.

Rede testada com imagens n


ao vistas de pessoas diferentes da pessoa treinada.

Figura 4.7: Teste de uma rede usando a tecnica de segmentacao. Rede de n-upla de
tamanho igual a 5. Rede treinada usando a tecnica de validacao cruzada com metodo
k-fold com k igual a 6, grupo total de 24 duplas de imagens.

44

(a)

foto 1

(b)

foto 2

(c)

foto 3

(d)

foto 4

(e)

foto 5

(f)

foto 6

(g)

foto 7

(h)

foto 8

Figura 4.8: Fotos usando a tecnica de segmentacao usadas para treinamento. Fotos de
um mesmo rosto.

(a)

foto 1

(b)

foto 2

(c)

foto 3

(d)

foto 4

(e)

foto 5

(f)

foto 6

(g)

foto 7

(h)

foto 8

Figura 4.9: Fotos usando a tecnica de segmentacao usadas para o teste. Fotos de 2 rostos
diferentes.

Na Fig. 4.10 tambem e mostrado a resposta de uma rede com n-uplas de tamanho
igual a 5, mas usando a tecnica de ranqueamento, as mesmas fotos usadas no teste
de segmentacao sao usadas nesse teste. Assim como no caso anterior, as respostas
sao medidas de similaridade nao submetidas a um criterio de decisao. O primeiro
grafico mostra a resposta da rede a` imagens nao vistas do mesmo rosto usado no
45

treinamento. Ja o segundo grafico mostra a resposta da rede a` imagens de rostos


de outras pessoas diferentes da pessoa usada para treinamento. A barra em azul e
referente `as fotos de cor; a em vermelho e referente `as fotos de profundidade; e a
preta e referente `a media entre as respostas dos dois tipos de fotos.
No primeiro grafico tem-se uma resposta de aproximadamente 80% com desvio
padrao de 8% para as fotos de cor, ja as fotos de profundidade apresentam uma
resposta de 96% com desvio padrao de 3%. Usando a respostas de ambas as fotos,
a resposta e de 87% com um desvio padrao de 5%.
No segundo grafico tem-se uma resposta de aproximadamente 52% com desvio
padrao de 10% para as fotos de cor, 60% com desvio padrao de 9% para as fotos de
profundidade, e 57% com um desvio padrao de 7% para ambas as fotos.
Assim como no caso anterior, as respostas do primeiro grafico sao maiores do a do
segundo, como desejado. Comparativamente a resposta das fotos de profundidade
tambem tiveram melhor desempenho apresentando o maior valor para o primeiro
grafico e o menor valor no segundo grafico.
Na Fig. 4.11 sao mostradas fotos de algumas das imagens do rosto treinado. A
Fig. 4.12 mostra algumas das imagens de rostos de outras pessoas usados nos testes
apresentados no segundo grafico da Fig. 4.10.
Comparando os resultados obtidos com as tecnicas de segmentacao e de ranqueamento, pode-se concluir que o ranqueamento gerou resultados melhores. Com a
tecnica de segmentacao, as respostas do segundo grafico, onde a rede e testada com
imagens de rostos de outras pessoas diferentes da pessoa usada para treinamento,
foram significativamente menores.
Devido ao melhor desempenho da tecnica de ranqueamento como representacao
de imagem, nos testes das secoes seguintes sera usada apenas essa tecnica.

46

(a)

(b)

Rede testada com imagens n


ao vistas da mesma pessoa treinada.

Rede testada com imagens n


ao vistas de pessoas diferentes da pessoa treinada.

Figura 4.10: Teste de uma rede usando a tecnica de ranqueamento. Rede de n-upla de
tamanho igual a 5. Rede treinada usando a tecnica de validacao cruzada com metodo
k-fold com k igual a 6, grupo total de 24 duplas de imagens.

47

(a)

foto 1

(b)

foto 2

(c)

foto 3

(d)

foto 4

(e)

foto 5

(f)

foto 6

(g)

foto 7

(h)

foto 8

Figura 4.11: Fotos usando a tecnica de segmentacao usadas para treinamento. Fotos de
um mesmo rosto.

(a)

foto 1

(b)

foto 2

(c)

foto 3

(d)

foto 4

(e)

foto 5

(f)

foto 6

(g)

foto 7

(h)

foto 8

Figura 4.12: Fotos usando a tecnica de segmentacao usadas para o teste. Fotos de 2
rostos diferentes.

4.5

Ajustando os par
ametros da rede

Na Sec. 4.4 as tecnicas de representacao de fotos foram comparadas concluindose que a a tecnica de ranqueamento apresentou o melhor resultado. Portanto nos

48

proximos testes apenas essa tecnica sera usada. Assim como na secao anterior, as
respostas da rede mostradas nos graficos dessa secao sao medidas de similaridade,
ainda nao submetidas a um criterio de decisao.
Nessa secao o foco sera dado aos parametros da rede. Esses parametros serao alterados com o proposito de comparar suas influencias no sistema. Quatro parametros
serao analisados: tamanho das n-uplas; mapeamentos pseudo-randomicos e sequenciais; n
umero de treinamentos; e memoria com contador. As fotos usadas para os
treinamentos e os testes nessa secao sao as mesmas fotos usadas nos testes da Sec.
4.4.

4.5.1

Tamanho das n-uplas

Cinco redes foram treinadas usando tecnica de validacao cruzada com metodo
k-fold com k igual a 10. Assim como, na Sec. 4.4, cada rede sera testada tanto
para fotos de rostos da mesma pessoa usada na fase de treino quanto para fotos de
pessoas diferentes.
O conjunto total de imagens, nesse caso, e de 100 duplas de fotos, cada dupla sendo
uma imagem de luminancia e uma imagem de profundidade. Tem-se, portanto, 10
subconjuntos de 10 duplas de imagens. Em cada iteracao, 9 subconjuntos - totalizando 90 duplas de imagens - serao usadas para o treinamento da rede. Enquanto
o subconjunto restante sera usado para teste. Nesse caso, tem-se 10 iteracoes.
Usando as mesmas redes treinadas de acordo a tecnica de validacao cruzada, serao
testadas um conjunto de 10 duplas de imagens de rostos de outras pessoas. Assim,
pode-se avaliar a rejeicao do sistema a fotos de pessoas nao treinadas. Nesse teste,
o conjunto de fotos e maior em relacao aos testes da Sec. 4.4. Porem, as pessoas
fotografadas sao as mesmas.
Na Fig. 4.13, a resposta para as imagens de teste sao mostradas para cada uma
das redes. Na primeira linha de graficos, e mostrada a resposta de uma rede de
n-upla igual a 4. Na segunda, uma rede de n-upla igual a 5 e assim por diante ate a
u
ltima rede de n-upla igual a 8. Os graficos a esquerda mostram a resposta da rede

49

a` imagens de fotos nao vistas do mesmo rosto da fase de treino. Ja os graficos a


direita mostram a resposta da rede a` imagens de fotos de rostos diferentes, no total
10 duplas de imagens, sendo cada 5 duplas de imagens de uma pessoa diferente. A
barra em azul e referente `as fotos de cor; a em vermelho, `as fotos de profundidade;
e a preta e referente a media entre as respostas dos dois tipos de fotos.

(a)

(b)

n-upla = 4, rede testada com imagens n


ao vistas

da mesma pessoa treinada.

(c)

n-upla = 4, rede testada com imagens n


ao vistas

de pessoas diferentes da pessoa treinada.

(d)

n-upla = 5, rede testada com imagens n


ao vistas

da mesma pessoa treinada.

n-upla = 5, rede testada com imagens n


ao vistas

de pessoas diferentes da pessoa treinada.

50

(e)

(f)

n-upla = 6, rede testada com imagens n


ao vistas

n-upla = 6, rede testada com imagens n


ao vistas

da mesma pessoa treinada.

de pessoas diferentes da pessoa treinada.

(g)

(h)

n-upla = 7, rede testada com imagens n


ao vistas

n-upla = 7, rede testada com imagens n


ao vistas

da mesma pessoa treinada.

de pessoas diferentes da pessoa treinada.

(i)

(j)

n-upla = 8, rede testada com imagens n


ao vistas

da mesma pessoa treinada.

n-upla = 8, rede testada com imagens n


ao vistas

de pessoas diferentes da pessoa treinada.

Figura 4.13: Testando n-uplas de diferentes tamanhos usando a tecnica de ranqueamento.


Rede treinada usando a tecnica de validacao cruzada com metodo k-fold com k igual a 10,
grupo total de 100 duplas de imagens.

51

No primeiro grafico, uma rede de n-upla igual a 4 foi testada. Pode-se ver que
as respostas sao bem altas, como desejado, proximo de 100%. Contudo, a resposta
no segundo grafico, onde foram testadas fotos de pessoas que nao foram treinadas
tambem esta alta, proximo de 85%.
No terceiro e quarto graficos, uma rede n-upla igual a 5 foi testada. Pode-se notar
uma queda significativa da resposta `as fotos de pessoas que nao foram treinadas
ficando entre 70% e 75%; enquanto as respostas a`s fotos nao vistas da mesma pessoa
que foi treinada cai bem menos, ficando proxima de 95%.
Esse comportamento continua, com o aumento do tamanho da n-upla da rede.
Porem, a resposta da rede `as fotos nao vistas da mesma pessoa treinada passa a
cair mais significativamente. Pode-se notar tambem que a as fotos de profundidade
apresentam uma resposta mais satisfatoria para as redes de n-uplas maiores. Pois, a
resposta `as fotos nao vistas da mesma pessoa treinada sao altas, em contrapartida da
baixa respostas da rede `as fotos de pessoas que nao foram treinadas. Comparando os
resultados dessas diferentes n-uplas, pode-se ver que nas redes de n-upla de tamanho
4 e 5 e mais difcil separar as imagens que deveriam ser reconhecidas das demais
imagens.

4.5.2

Mapeamento pseudo-rand
omico

Nessa secao, um tamanho de n-upla sera fixado e diferentes mapeamentos pseudorandomicos serao testados para entender melhor a influencia do mapeamento na
resposta da rede. De forma arbitraria, sera escolhido o tamanho de n-upla igual a
7. O metodo de validacao cruzada foi usado como na Sec. 4.5.1, fazendo o uso das
mesmas imagens.
Na Fig. 4.14, a resposta para as imagens de teste sao mostradas para 4 redes com
mapeamentos pseudo-randomicos diferentes. Em cada linha e mostrada a resposta
de uma rede. Os graficos a esquerda mostram a resposta da rede `a imagens de fotos
nao vistas do mesmo rosto da fase de treino. Ja os graficos a direita mostram a
resposta da rede a` imagens de fotos de rostos diferentes. A barra em azul e referente
a`s fotos de cor; a em vermelho, a`s fotos de profundidade; e a preta e referente a media
52

entre as respostas dos dois tipos de fotos. A abordagem usada para o treinamento
e teste e a mesma usada na Sec. 4.5.1 com o mesmo conjunto de imagens

(a)

(b)

rede testada com imagens n


ao vistas da mesma

pessoa treinada.

(c)

rede testada com imagens n


ao vistas de pessoas

diferentes da pessoa treinada.

(d)

rede testada com imagens n


ao vistas da mesma

rede testada com imagens n


ao vistas de pessoas

pessoa treinada.

diferentes da pessoa treinada.

(e)

(f)

rede testada com imagens n


ao vistas da mesma

pessoa treinada.

rede testada com imagens n


ao vistas de pessoas

diferentes da pessoa treinada.

53

(g)

(h)

rede testada com imagens n


ao vistas da mesma

pessoa treinada.

rede testada com imagens n


ao vistas de pessoas

diferentes da pessoa treinada.

Figura 4.14: Testando diferentes mapeamentos pseudo-randomicos usando a tecnica de


ranqueamento. Rede treinada usando a tecnica de validacao cruzada com metodo k-fold
com k igual a 10, grupo total de 100 duplas de imagens.

Pode ser visto que a respostas dos diferentes mapeamentos randomicos sao muito
similares, ressalvando algumas especficas diferencas. Comparando os graficos, concluise que a escolha do mapeamento pseudo-randomico nao influi significativamente nas
respostas da rede.

4.5.3

Mapeamentos sequenciais

Nessa secao, duas redes com n-upla igual a 7 e diferentes funcoes de mapeamento
serao treinadas e e testadas. Ao inves de usar o mapeamento pseudo-randomico,
dois mapeamentos sequenciais serao usados. O primeiro mapeamento a ser testado
e o mapeamento sequencial por linha. As n-uplas sao agrupadas de 7 em 7 pxeis em
sequencia, a primeira n-upla e formada pelos 7 pxeis das colunas 1 a 7 - a contar
da esquerda para a direita - da primeira linha. Ao chegar ao fim de cada linha sao
agrupados os pxeis da linha seguinte, comecando da coluna 1 ate juntar os 7 pxeis,
e assim ate o fim da imagem. Como no caso o n
umero total de pxeis nao e divisvel
por 7, alguns pxeis nao sao associados a nenhuma n-upla.
O segundo mapeamento testado e o mapeamento sequencial por coluna. Os pxeis
tambem sao agrupados de 7 em 7, mas agora a primeira n-upla e formado pelos pxeis
da primeira coluna das linhas de n
umero 1 a 7 - a contar de cima para baixo. Os

54

agrupamentos continuam a serem feitos na primeira coluna ate o seu fim, pulando
para o pxel da segunda coluna e primeira linha e depois descendo para as linhas
abaixo, continuando assim ate o fim da imagem. Como no mapeamento sequencial
por linha, alguns pxeis nao sao associados a nenhuma n-upla.
O metodo de validacao cruzada foi usado como na Sec. 4.5.1, fazendo o uso das
mesmas imagens. Nos graficos da Fig. 4.15 pode-se ver a resposta da rede com
os mapeamentos sequenciais por linha e por coluna. Os dois primeiros graficos sao
referentes ao mapeamento por linha e os dois u
ltimos ao mapeamento por coluna.
Os graficos a esquerda mostram a resposta da rede `a imagens de fotos nao vistas
do mesmo rosto da fase de treino. Ja os graficos a direita mostram a resposta da
rede a` imagens de fotos de rostos diferentes. A barra em azul e referente a`s fotos de
cor; a em vermelho, a`s fotos de profundidade; e a preta e referente a media entre as
respostas dos dois tipos de fotos. A abordagem usada para o treinamento e teste e
a mesma usada na Sec. 4.5.1 com o mesmo conjunto de imagens.
Comparando as respostas obtidas nesses graficos com a reposta da rede de mapeamento pseudo-randomico ilustrada no grafico (a) da Fig. 4.14, por exemplo, pode-se
ver que os mapeamentos sequenciais pioraram a capacidade da rede de reconhecer o
rosto treinado. As respostas a`s imagens de rostos de pessoas diferentes da treinada
aumentaram significativamente.

(a)

(b)

rede testada com imagens n


ao vistas da mesma

pessoa treinada.

rede testada com imagens n


ao vistas de pessoas

diferentes da pessoa treinada.

55

(c)

(d)

rede testada com imagens n


ao vistas da mesma

pessoa treinada.

rede testada com imagens n


ao vistas de pessoas

diferentes da pessoa treinada.

Figura 4.15: Testando mapeamentos sequenciais usando a tecnica de ranqueamento. Rede


treinada usando a tecnica de validacao cruzada com metodo k-fold com k igual a 10, grupo
total de 100 duplas de imagens.

4.5.4

Teste com um outro padr


ao

Ate agora todos os testes foram feitos usando o rosto de uma mesma pessoa para
a fase treinamento. Agora se verificara o funcionamento do sistema treinando com
o rosto de uma outra pessoa.
Duas redes foram treinadas usando tecnica de validacao cruzada com metodo kfold com k igual a 6. Uma rede de n-upla de tamanho igual a 5 e outra de tamanho
7. Assim como, na Sec. 4.4, cada rede sera testada tanto para fotos de rostos da
mesma pessoa usada na fase de treino quanto para fotos de pessoas diferentes.
O conjunto total de imagens, nesse caso, e de 24 duplas de fotos, cada dupla sendo
uma imagem de luminancia e uma imagem de profundidade. Tem-se, portanto, 6
subconjuntos de 4 duplas de imagens. Em cada iteracao, 5 subconjuntos - totalizando 20 duplas de imagens - serao usadas para o treinamento da rede. Enquanto
o subconjunto restante sera usado para teste. Nesse caso, tem-se 6 iteracoes.
Usando as mesmas redes treinadas de acordo a tecnica de validacao cruzada, serao
testadas um conjunto de 4 duplas de imagens de rostos de outras pessoas. Assim,
pode-se avaliar a rejeicao do sistema a fotos de pessoas nao treinadas.

56

Nos graficos da Fig. 4.16 pode-se ver as respostas das redes. Os dois primeiros
graficos sao referentes a` rede de n-upla de tamanho 5 e os dois u
ltimos a` rede de nupla de tamanho 7. Os graficos a esquerda mostram a resposta da rede a` imagens de
fotos nao vistas do mesmo rosto da fase de treino. Ja os graficos a direita mostram
a resposta da rede a` imagens de fotos de rostos diferentes, das 4 duplas de imagens
cada 2 duplas de uma pessoa diferente.. A barra em azul e referente `as fotos de
cor; a em vermelho, a`s fotos de profundidade; e a preta e referente a media entre as
respostas dos dois tipos de fotos. A abordagem usada para o treinamento e teste e
a mesma usada na Sec. 4.5.1.
Na Fig. 4.16 pode-se ver que a resposta do sistema para as imagens nao vistas da
mesma pessoa treinada sao na media significativamente maiores do as respostas das
fotos de demais pessoas. No caso da rede de n-upla de tamanho igual a 7, o desvio
padrao e consideravelmente alto.
Na Fig. 4.17 sao mostradas fotos de algumas das imagens do rosto treinado. A
Fig. 4.18 mostra algumas das imagens de rostos de outras pessoas usados nos testes
apresentados no segundo e quarto graficos da Fig. 4.16.

(a)

(b)

n-upla = 5, rede testada com imagens n


ao vistas

da mesma pessoa treinada.

n-upla = 5, rede testada com imagens n


ao vistas

de pessoas diferentes da pessoa treinada.

57

(c)

(d)

n-upla = 7, rede testada com imagens n


ao vistas

da mesma pessoa treinada.

n-upla = 7, rede testada com imagens n


ao vistas

de pessoas diferentes da pessoa treinada.

Figura 4.16: Testando n-uplas de diferentes tamanhos usando a tecnica de ranqueamento.


Rede treinada usando a tecnica de validacao cruzada com metodo k-fold com k igual a 10,
grupo total de 100 duplas de imagens.

(a)

foto 1

(b)

foto 2

(c)

foto 3

(d)

foto 4

(e)

foto 5

(f)

foto 6

(g)

foto 7

(h)

foto 8

Figura 4.17: Fotos usando a tecnica de ranquemaneto usadas para treinamento. Fotos
de um mesmo rosto.

58

(a)

foto 1

(b)

foto 2

(c)

foto 3

(d)

foto 4

(e)

foto 5

(f)

foto 6

(g)

foto 7

(h)

foto 8

Figura 4.18: Fotos usando a tecnica de ranqueamento usadas para o teste. Fotos de 2
rostos diferentes.

59

Captulo 5
Conclus
oes
Nesse trabalho uma rede neural sem peso foi implementada usando a linguagem
Python. O objetivo da rede neural era o uso para reconhecimento facial. Primeiramente foram feitos alguns testes para garantir que a rede estava funcionando como
planejado. Depois, o sistema foi testado de fato para o reconhecimento facial. Os
parametros da rede foram alterados para entender-se melhor a influencia de cada
parametro na rede e tentar-se melhorar o desempenho da mesma.
A rede neural sem peso pode ser vista como um sistema realmente versatil, podendo ser usado em diferentes aplicacoes. O sistema apresentou uma resposta satisfatoria para o reconhecimento facial com o uso de imagens de luminancia e de
profundidade, mas ha melhorias que podem ser implementadas.
Uma das maiores dificuldades para o reconhecimento facial e a luminosidade. A
resposta da rede para as fotos de luminancia e dependente da luminosidade. Uma
foto de um mesmo rosto sob diferentes condicoes de luminosidade resulta respostas
da rede significativamente diferentes.
Uma ideia para futuros trabalhos para minimizar a dependencia da luz e aplicar
um pre-processamento nas imagens tanto na fase de treinamento como na fase de
teste. Uma outra linha de pesquisa seria o uso de outras tecnicas mais complexas
para o limiar de segmentacao alem da media da luminancia, como por exemplo a
tecnica de segmentacao de Otsu [13] e a de Tsallis [14].

60

Os resultados obtidos no projeto podem mostrar que o uso de redes neurais sem
peso para o reconhecimento facial e promissor.

61

Refer
encias Bibliogr
aficas
[1] MCCULLOCH, W. S., PITTS, W., A logical calculus of the ideas immanent in
nervous activity, The bulletin of mathematical biophysics, v. 5, n. 4, pp. 115
133, 1943.
[2] RUMELHART, D. E., HINTON, G. E., WILLIAMS, R. J., Parallel Distributed Processing: Explorations in the Microstructure of Cognition, Vol. 1.
chapter Learning Internal Representations by Error Propagation, Cambridge,
MA, USA, MIT Press, pp. 318362, 1986.

[3] MAGALHAES,
P. S., SANTOS, H. D. D., Biometria e autenticacao, , 2003.
[4] JURS, P. C., ISENHOUR, T. L., Chemical applications of pattern recognition,
1975.
[5] ALEKSANDER, I., THOMAS, W., BOWDEN, P., WISARD, a radical step
forward in image recognition, Sensor review, v. 4, n. 3, pp. 120124, 1984.
[6] KHAKI, K. M., Weightless Neural Networks for Face and Pattern Recognition:
an Evaluation Using Open-Source Databases, , 2013.
[7] PICTON, P., Neural Networks. Palgrave, 2000.
[8] HIRATA JR, R., Segmentac
ao de imagens por morfologia matem
atica. Ph.D.
dissertation, Instituto de Matematica e Estatstica da Universidade de Sao
Paulo, 07.03. 97., 1997.
[9] DANCIU, G., BANU, S., CALIMAN, A., Shadow removal in depth images
morphology-based for Kinect cameras. In: System Theory, Control and Computing (ICSTCC), 2012 16th International Conference on, pp. 16, Oct 2012.

62

[10] STOWERS, J., HAYES, M., BAINBRIDGE-SMITH, A., Altitude control of


a quadrotor helicopter using depth map from Microsoft Kinect sensor. In:
Mechatronics (ICM), 2011 IEEE International Conference on, pp. 358362,
April 2011.
[11] KHOSHELHAM, K., ELBERINK, S. O., Accuracy and resolution of kinect
depth data for indoor mapping applications, Sensors, v. 12, n. 2, pp. 1437
1454, 2012.
[12] FUSHIKI, T., Estimation of prediction error by using K-fold cross-validation,
Statistics and Computing, v. 21, n. 2, pp. 137146, 2011.
[13] A Threshold Selection Method from Gray-Level Histograms, Systems, Man
and Cybernetics, IEEE Transactions on, v. 9, n. 1, pp. 6266, Jan 1979.
[14] Tsallis, C., Possible generalization of Boltzmann-Gibbs statistics, Journal of
Statistical Physics, v. 52, pp. 479487, Jul. 1988.

63

Das könnte Ihnen auch gefallen