-
APLICACAO DE REDES NEURAIS PARA RECONHECIMENTO
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 Enge-
nheiro.
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.
E permitida a mencao, reproducao parcial ou integral e a
transmissao entre bibli-
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 saude 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 Com-
putacao, e incrvel e inspirador como a relacao aluno professor e
harmoniosa. Obri-
gado 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 Proces-
samento 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 ensi-
namentos, orientacao e incentivo, sem os quais este projeto nao
seria possvel.
v
-
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, profun-
didade, 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
-
Sumario
1 Introducao 1
1.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 1
1.2 Delimitacao . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 1
1.3 Justificativa . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 2
1.4 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 2
1.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 2
1.6 Descricao . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 3
2 Redes Neurais Sem Peso 4
2.1 Redes neurais artificiais . . . . . . . . . . . . . . . . .
. . . . . . . . . 4
2.2 Fases de treinamento e teste . . . . . . . . . . . . . . . .
. . . . . . . 7
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 32
4.1 Metodologia . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 32
ix
-
4.2 Teste da Memoria . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 33
4.3 Algoritmo de treino e teste . . . . . . . . . . . . . . . .
. . . . . . . . 36
4.3.1 Reconhecimento de uma imagem treinada . . . . . . . . . .
. 37
4.3.2 Treinamento multiplo de uma mesma imagem . . . . . . . . .
37
4.3.3 Treinamento multiplo de diferentes imagens . . . . . . . .
. . 38
4.4 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 Conclusoes 60
Bibliografia 62
x
-
Lista de Figuras
2.1 Diagrama de bloco do modelo de Mcculloch-Pitts. Fonte: [1].
. . . . . . . 5
2.2 Exemplo de funcao threshold. . . . . . . . . . . . . . . . .
. . . . . . . . 5
2.3 Diagrama de blocos das camadas de uma rede neural
artificial. Fonte: [2]. 5
2.4 Diagrama de um no de uma rede neural sem peso WiSARD. . . .
. . . . 6
2.5 Fase de treinamento. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 8
2.6 Fase de treinamento - Primeira imagem. . . . . . . . . . . .
. . . . . . . 9
2.7 Fase de treinamento - Segunda imagem. . . . . . . . . . . .
. . . . . . . 9
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 resolucao 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 simbo-
lizam a execucao de uma acao. 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. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 25
3.3 Interface do programa. . . . . . . . . . . . . . . . . . . .
. . . . . . . . 26
3.7 Programa rodando na opcao (11) Testar rede com camera. . . .
. . . . 28
3.4 Fluxograma das opcoes de treino 5, 6 e 7. . . . . . . . . .
. . . . . . . . 29
xi
-
3.5 Fluxograma das opcoes de treino 8 e 9. . . . . . . . . . . .
. . . . . . . 30
3.6 Fluxograma das opcoes de treino 10, 11 e 12. . . . . . . . .
. . . . . . . 31
4.1 Memoria com o treinamento da rede. Rede treinada com 8
imagens de
luminancia e de profundidade. . . . . . . . . . . . . . . . . .
. . . . . . 35
4.2 Fotos de luminancia 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 multiplas 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
ranquea-
mento. 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
ranquea-
mento. 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. . . . . . . . . . . .
. . . . 132.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
Introducao
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 reconheci-
mento 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 Delimitacao
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 Open-
Source Databases, Khaki, 2013.
1
-
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 reconheci-
mento 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 sis-
tema 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 ar-
tificiais, 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 Descricao
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 artifi-
ciais. 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 reconhe-
cimento facial. Ideias de melhorias para trabalhos futuros serao
dadas.
3
-
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 ultima
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 proces-
samento [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
4
-
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 multiplas
camadas: uma camada
de entrada, uma camada de sada e multiplas 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 Alek-
sander [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 numero de
funcoes. Onumero de funcoes e dado pela divisao entre o numero
total de entradas N e o
numero de entradas por agrupamento n: Nn . Esses agrupamentos
sao denominados
de n-uplas. Caso o tamanho da n-upla n nao seja divisvel pelo
pelo numero total
de entradas N , o numero de funcoes m sera o valor da divisao Nn
truncada. As-
sim, algumas entradas nao sao associadas a nenhuma n-upla e nao
sao usadas pela
rede neural. Esse numero de entradas nao utilizadas normalmente
e tao pequeno
comparado com numero total de entradas que nao afeta o
desempenho da rede.
O numero 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 = Nn 2n, quanto maior for n, o numero 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 reco-
nhecimento 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 se-
paradas: 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 mos-trado na Fig. 2.5. O numero 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
correspon-
dente 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 penultimo bit da memoria da
funcao F1 e o
primeiro bit da F2 e o ultimo da F3, como ilustrado na Fig.
2.6.
8
-
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 per-
manece 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 di-
ferentes 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:
9
-
Funcao Threshold =
8
-
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 generalizacao
As n-uplas sao definidas pelos agrupamentos das entradas. O
tamanho das n-
ulpas - o numero de entradas por agrupamento - define o numero
de funcoes de uma
rede neural. Quanto maior o tamanho das n-uplas, menor o numero
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 numero de entradas por agrupamento e
unitario e quando
ele e o numero 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 Nn = 21 N1 = 2N ,
onde Ne o numero 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 capaci-
dade 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
mais difcil de saturar. E uma relacao de trade-o, aumentando o
tamanho da n-
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 Representacao 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, otamanho de memoria pode ser calculado pela
expressao:
2n (66 45)n
= 2n 2970n
, onde n e o tamanho das n-uplas.
Na Tab. 2.1, o tamanho da memoria e calculado para diferentes
tamanhos de
n-uplas n, considerando o numero 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 memoria
1 742.5 bytes
2 742.5 bytes
4 1.49 KB
8 11.88 KB
16 1.52 GB
32 49.83 TB
Tabela 2.1: Tamanho da n-upla Tamanho da memoria.
2.4.1 Segmentacao 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 dissi-
milhancas. Os metodos baseados em dissimilhancas sao usados para
a deteccao de
pontos, linhas ou arestas. Ja os metodos baseados em
similaridade buscam repre-
sentar a imagem usando algum criterio para separar os objetos de
caractersticas
semelhantes. Um dos metodos mais simples e o metodo de
Threshold, muito utili-
zado 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 repre-
sentacao 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 estabe-
lecer 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 resolucao na segunda.
2.4.2 Lidando com nveis de cinza
Para reconhecimento facial, do ponto de vista da inspiracao
biologica, seria ne-
cessario 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 numero 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
A B C 1A C B 2B A C 3B C A 4C A B 5C B A 6
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. Pelaordem 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 en-
tanto, 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 numero de funcoes pelo numero 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 = Numero de Funcoes Numero de ordens de
ranqueamento=N
n n!
= N (n 1)!, onde N e o numero 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 damemoria 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 memoria
1 371.25 bytes
2 371.25 bytes
4 2.23 KB
8 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-fundidade
(c) foto 2 - cor (d) foto 2 - pro-fundidade
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 Modulo Rede
O modulo Rede define a estrutura da rede neural sem peso. Esse
modulo tem 10
atributos: linhas, colunas, tamanhoNupla, numFuncoes, funcoes,
memoria 2d, me-
moria profundidade, threshold, vezes treinadas, nomeArquivo, uns
2d e uns profundidade.
Os atributos linhas e colunas sao as dimensoes das imagens que a
rede esta espe-
rando treinar ou testar. O tamanhoNupla guarda o tamanho das
n-uplas, ou seja,
o numero de entradas por agrupamento da rede, enquanto o
numFuncoes guarda o
numero de funcoes da rede.
O atributo funcoes guarda as funcoes que fazem o mapeamento dos
pxeis das ima-
gens. 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 pseudo-
randomicos. 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 Modulo 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, numero de colunas e linhas, numero 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 numeros 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 Modulo 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.
E desejado que a imagem a ser usada na rede neural seja quase
toda composta
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 quan-
tidade 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 inter-
polacao. 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 Modulo Funcoes
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
unica 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 cal-
cula 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 execucao de uma acao. Os blocos amarelos simbolizam tomadas de
decisao. Os blocos
rosas simbolizam um processo pre-definido, uma sub-rotina. E os
blocos brancos simbo-
lizam 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 Modulo Opcoes
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,
numero de linhas, numero de colunas e o tamanho das n-uplas. O
numero 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
numero 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, tes-
tar antes de cada treinamento permitem ao usuario treinar a rede
diretamente da
camera e do sensor de profundidade. Os fluxogramas dessas duas
opcoes sao mos-
trados 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 arquivosde imagens
(b) Opcao (6) Treinar rede com arquivos de imagens, testar rede
antes de cadatreinamento
(c) Opcao (7) Treinar rede com arquivos de imagens, treinar
apenas as naoreconhecidas
Figura 3.4: Fluxograma das opcoes de treino 5, 6 e 7.
29
-
(a) Opcao (8) Treinar rede com camera
(b) Opcao (9) Treinar rede com camera, testar antes de cada
treinamento
Figura 3.5: Fluxograma das opcoes de treino 8 e 9.
30
-
(a) Opcao (10) Testar rede com arquivos de imagem (b) Opcao (11)
Testarrede com camera
(c) Opcao (12) Testar rede com camerae 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 ex-
plicada, sera dado seguimento aos testes. Inicialmente serao
realizados alguns testes
para verificar se a arquitetura do sistema foi implementada de
forma correta. De-
pois 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. Concei-
tos 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 me-
lhorar 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 es-
colhidos parametros fixos para as rede neurais: um tamanho
definido de n-upla, um
mapeamento pseudo-aleatorio fixo e uma quantidade fixa de numero
de treinamen-
tos. 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 Memoria
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 numero de n-uplas da rede. No
segundo
treinamento, a memoria pode ser gravada com mais uns, o numero
de gravacoes
no segundo treinamento pode variar de zero ao numero 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 numero de gravacoes de uns na memoria.
Conforme a rede vai sendo treinada e esperado que o numero 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 numero de n-uplas da rede pode ser
calculado por:
Nn , e o tamanho da memoria pode ser calculado por: N (n 1)!,
onde N e onumero total de pxeis e n e o tamanho das n-uplas. Entao
o numero de n-uplas
e 66457 = 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 numero 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 comfotos 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 numeros 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 numero
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 multiplo de uma mesma imagem, e treinamento multiplo
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.
E esperado receber uma resposta de 100 % ja que as imagens a
serem testadas ja
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 multiplo de uma mesma imagem
Neste teste uma rede sera criada e treinada multiplas 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.
E esperado que o numero 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 numero de uns na memoria realmente permanece inalterado depois
dos multiplos
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 multiplo de diferentes imagens
Neste teste a rede sera treinada com diferentes imagens da mesma
face. Como
as imagens sao diferentes, espera-se que o numero 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 satu-
rada, nao e bom para o sistema. Nesse caso, significa que a
memoria esta apren-
dendo 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 treina-
das com 100 imagens diferentes. O primeiro grafico ilustra uma
rede de n-upla igual
a 4. O numero 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 numero 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 luminancia e de profun-
didade e as tecnicas de representacao
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 ne-
cessario de memoria para o tamanho de n-upla escolhido para
imagens de 66 45pxeis 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 mostraque 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 numero 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 trei-
namento.
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) Rede testada com imagens nao vistas da mesma pessoa
treinada.
(b) Rede testada com imagens nao 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 a`s fotos de cor; a em vermelho e referente a`s 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 ranque-
amento, 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) Rede testada com imagens nao vistas da mesma pessoa
treinada.
(b) Rede testada com imagens nao 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 parametros da rede
Na Sec. 4.4 as tecnicas de representacao de fotos foram
comparadas concluindo-
se 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 alte-
rados com o proposito de comparar suas influencias no sistema.
Quatro parametros
serao analisados: tamanho das n-uplas; mapeamentos
pseudo-randomicos e sequen-
ciais; numero 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 - totali-
zando 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
ultima 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 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) n-upla = 4, rede testada com imagens nao vistasda mesma
pessoa treinada.
(b) n-upla = 4, rede testada com imagens nao vistasde pessoas
diferentes da pessoa treinada.
(c) n-upla = 5, rede testada com imagens nao vistasda mesma
pessoa treinada.
(d) n-upla = 5, rede testada com imagens nao vistasde pessoas
diferentes da pessoa treinada.
50
-
(e) n-upla = 6, rede testada com imagens nao vistasda mesma
pessoa treinada.
(f) n-upla = 6, rede testada com imagens nao vistasde pessoas
diferentes da pessoa treinada.
(g) n-upla = 7, rede testada com imagens nao vistasda mesma
pessoa treinada.
(h) n-upla = 7, rede testada com imagens nao vistasde pessoas
diferentes da pessoa treinada.
(i) n-upla = 8, rede testada com imagens nao vistasda mesma
pessoa treinada.
(j) n-upla = 8, rede testada com imagens nao vistasde 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 a`s 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 a`s 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 a`s fotos nao vistas da mesma pessoa treinada sao
altas, em contrapartida da
baixa respostas da rede a`s 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-randomico
Nessa secao, um tamanho de n-upla sera fixado e diferentes
mapeamentos pseudo-
randomicos 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) rede testada com imagens nao vistas da mesmapessoa
treinada.
(b) rede testada com imagens nao vistas de pessoasdiferentes da
pessoa treinada.
(c) rede testada com imagens nao vistas da mesmapessoa
treinada.
(d) rede testada com imagens nao vistas de pessoasdiferentes da
pessoa treinada.
(e) rede testada com imagens nao vistas da mesmapessoa
treinada.
(f) rede testada com imagens nao vistas de pessoasdiferentes da
pessoa treinada.
53
-
(g) rede testada com imagens nao vistas da mesmapessoa
treinada.
(h) rede testada com imagens nao vistas de pessoasdiferentes 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, conclui-
se 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 numero 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 numero 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 ultimos 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 mapea-
mento 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) rede testada com imagens nao vistas da mesmapessoa
treinada.
(b) rede testada com imagens nao vistas de pessoasdiferentes da
pessoa treinada.
55
-
(c) rede testada com imagens nao vistas da mesmapessoa
treinada.
(d) rede testada com imagens nao vistas de pessoasdiferentes 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 padrao
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 k-
fold 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 - totali-
zando 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