Beruflich Dokumente
Kultur Dokumente
APLICAC
AO
FACIAL
Rio de Janeiro
Agosto de 2015
iii
DEDICATORIA
iv
AGRADECIMENTO
RESUMO
vi
ABSTRACT
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.1
2.2
2.3
Capacidade de generalizacao . . . . . . . . . . . . . . . . . . . . . . . 11
2.4
Segmentacao de Imagens . . . . . . . . . . . . . . . . . . . . . 13
2.4.2
2.4.3
Imagens de profundidade . . . . . . . . . . . . . . . . . . . . . 18
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
32
Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
ix
4.2
Teste da Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3
4.4
4.3.1
4.3.2
Treinamento m
ultiplo de uma mesma imagem . . . . . . . . . 37
4.3.3
Treinamento m
ultiplo de diferentes imagens . . . . . . . . . . 38
4.5
4.5.2
Mapeamento pseudo-randomico . . . . . . . . . . . . . . . . . 52
4.5.3
Mapeamentos sequenciais . . . . . . . . . . . . . . . . . . . . 54
4.5.4
5 Conclus
oes
60
Bibliografia
62
Lista de Figuras
2.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
2.7
2.8
2.9
2.10 Imagens da mesma face - 1 bit de resolucao por pxel na primeira linha, 8
bits de resoluc
ao na segunda. . . . . . . . . . . . . . . . . . . . . . . . . 14
. . . . . . . . 21
3.2
3.3
Interface do programa. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.7
3.4
xi
3.5
. . . . . . . . . . . . . . . . . . 30
3.6
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
4.4
4.5
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
4.8
4.9
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.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
xiii
Lista de Tabelas
2.1
2.2
2.3
xiv
Captulo 1
Introdu
c
ao
1.1
Tema
1.2
Delimita
c
ao
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
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
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.
N
.
n
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
2.2
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].
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.
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
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
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
(66 45)
2970
= 2n
, onde n e o tamanho das n-uplas.
n
n
Tamanho da mem
oria
742.5 bytes
742.5 bytes
1.49 KB
11.88 KB
16
1.52 GB
32
49.83 TB
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
(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
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
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
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
16
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
Tamanho da mem
oria
371.25 bytes
371.25 bytes
2.23 KB
1.87 GB
16
485.47 PB
2.4.3
Imagens de profundidade
(a)
foto 1 - cor
(c)
fundidade
foto 2 - cor
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
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
3.2
M
odulo MinhaImagem
3.3
M
odulo Camera
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
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
25
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.
28
(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
(a)
(b)
Opc
ao (8) Treinar rede com c
amera
Opc
ao (9) Treinar rede com c
amera, testar antes de cada treinamento
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
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
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)!.
34
Figura 4.1: Memoria com o treinamento da rede. Rede treinada com 8 imagens de
luminancia e de profundidade.
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
(a)
foto 1
(b)
foto 2
(c)
foto 3
(d)
foto 4
(e)
foto 5
(f)
foto 6
(g)
foto 7
(h)
foto 8
4.3
4.3.1
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
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)
(b)
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
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)
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
46
(a)
(b)
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
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)
(b)
(c)
(d)
50
(e)
(f)
(g)
(h)
(i)
(j)
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)
pessoa treinada.
(c)
(d)
pessoa treinada.
(e)
(f)
pessoa treinada.
53
(g)
(h)
pessoa treinada.
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)
pessoa treinada.
55
(c)
(d)
pessoa treinada.
4.5.4
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)
57
(c)
(d)
(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
63