77
APLICAC ¸ ˜ AO DE REDES NEURAIS PARA RECONHECIMENTO FACIAL Igor Paladino Gomes da Costa Projeto de Gradua¸c˜ ao apresentado ao Curso de Engenharia Eletrˆ onica e de Computa¸ c˜ao da Escola Polit´ ecnica, Universidade Federal do Rio de Janeiro, como parte dos requisitos necess´ arios ` a obten¸ ao do t´ ıtulo de Enge- nheiro. Orientadores: Felipe Maia Galv˜ aoFran¸ca John Stonham Rio de Janeiro Agosto de 2015

Aplicação de Redes Neurais para Reconhecimento Facial

Embed Size (px)

DESCRIPTION

Neste trabalho ser ́a desenvolvido um sistema para reconhecimento facial. Para implementar tal sistema, fara ́-se o uso dos conceitos de redes neurais artificiais. As redes neurais artificiais sa ̃o modelos computacionais inspirados no sistema nervoso central animal que tˆem a capacidade de aprender e reconhecer padr ̃oes. O modelo de rede neural abordado ser ́a o modelo de redes neurais sem peso. Testes ser ̃ao feitos para validar o funcionamento do sistema de reconhecimento desenvolvido com o uso de imagens de cor e de profundidade. Para a aquisic ̧ ̃ao das imagens utilizadas no reconhecimento foi utilizado o dispositivo Kinect (Xbox 360) composto por uma caˆmera convencional e um sensor infra-vermelho de profundidade.Palavras-Chave: reconhecimento facial, redes neurais, aprender, padr ̃oes, profun- didade, Kinect.

Citation preview

  • 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