61
Universidade de São Paulo Escola de Engenharia de São Carlos TRABALHO DE CONCLUSÃO DE CURSO Rafael Taniwaki Aplicação do descritor LMP para o reconhecimento facial ENGENHARIA ELÉTRICA ÊNFASE EM ELETRÔNICA Orientador: Prof. Dr. Adilson Gonzaga São Carlos, 2016

Universidade de São Paulo Escola de Engenharia de ... - USP · imagens até o resultado final. Figura 1: Diagrama de etapas. A obtenção das imagens será feita de duas formas

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Universidade de São Paulo

Escola de Engenharia de São Carlos

TRABALHO DE CONCLUSÃO DE CURSO

Rafael Taniwaki

Aplicação do descritor LMP para o reconhecimento facial

ENGENHARIA ELÉTRICA – ÊNFASE EM ELETRÔNICA

Orientador: Prof. Dr. Adilson Gonzaga

São Carlos, 2016

Universidade de São Paulo

Escola de Engenharia de São Carlos

TRABALHO DE CONCLUSÃO DE CURSO

Rafael Taniwaki

Aplicação do descritor LMP para o reconhecimento facial

Trabalho de Conclusão de Curso – apresentado como parte dos pré-requisitos para a obtenção do título de Engenheiro Eletricista/Eletrônico, à Universidade de São Paulo – USP “Escola de Engenharia de São Carlos – EESC”

Orientador: Prof. Dr. Adilson Gonzaga

São Carlos, 2016

FOLHA DE APROVAÇÃO

Nome: Rafael Taniwaki

Título: "Aplicação do descritor LMP para o reconhecimento facial"

Trabalho de Conclusão de Curso defendido e aprovado emlái.J_JLJ <0. (z

1, pela Comissão Julgadora:

Prof. Associado Adilson Gonzaga - Orientador - SEUEESCIUSP

Profa. Dra. Maria Stela Veludo de Paiva - SEUEESCIUSP

Mestre Raissa Tavares Vieira - Doutoranda-SEUEESCIUSP

Coordenador da CoC-Engenharia Elétrica - EESCIUSP: Prof. Associado José Carlos de Melo Vieira Júnior

DEDICATÓRIA

Dedico este trabalho aos que com palavras de incentivo e/ou renúncia de

momentos de convívio me ajudaram a concluí-lo, de forma especial a minha

família.

AGRADECIMENTOS

Agradeço ao Prof Dr Adilson Gonzaga, por ter compartilhado seu

conhecimento, por suas preciosas orientações e talento como mestre.

À minha família pela solidariedade e aos colegas de classe pelo

companheirismo durante os anos de faculdade,

À Raissa Tavares Vieira pela contribuição com informações relevantes

para a realização deste trabalho.

A Deus, Orientador Maior.

RESUMO

Com os recorrentes casos de furtos de aparelhos eletrônicos, cartões de banco e documentos pessoais (CPF, RG, CNH...) muitas vezes esses objetos são utilizados pelos infratores na tentativa de se obter alguma informação. Tendo esse problema em vista surgiu a ideia de se criar um sistema biométrico baseado no reconhecimento facial, o que possibilitaria, através de um banco de dados, identificar a pessoa e vinculá-la com os seus pertences ou até mesmo verificar se possui alguma pendência com o Estado. Alguns aparelhos móveis já possuem um sistema de desbloqueio via reconhecimento facial, porém muitos deles necessitam de vários registros devido a mudança da iluminação fazendo com que seja necessária a apresentação de uma segunda forma de desbloqueio. Será estudada a possibilidade de se utilizar o descritor LMP (Local Mapped Pattern), desenvolvido no LAVI (Laboratório de Visão Computacional) em programação MatLab (Matrix Laboratory), no reconhecimento facial. Neste trabalho será descrita a metodologia utilizada para obter as imagens utilizadas para testar o método de Viola-Jones, responsável pela segmentação da região da face, e para obter as imagens utilizadas nos testes para o descritor de textura LMP. Também será feita a análise dos resultados obtidos através do método Qui-quadrado para validar a utilização do código LMP como uma “senha” para identificar cada pessoa, mesmo com variações no ambiente e na fisionomia.

Palavras-chave: Reconhecimento facial, Local Mapped Pattern, Viola-Jones

Sumário 1. Introdução .................................................................................................... 1

1.1. Motivação .............................................................................................. 2

1.2. Objetivos ............................................................................................... 2

1.3. Estrutura do Trabalho ............................................................................ 2

2. Fundamentação Teórica .............................................................................. 3

2.2. Viola-Jones ........................................................................................... 3

2.2.1. Imagem Integral ................................................................................. 4

2.2.2. AdaBoost ........................................................................................... 5

2.2.3. Método em Cascata ........................................................................... 7

2.3. LMP (Local Mapped Pattern) ................................................................ 7

2.4. Qui-Quadrado (X²)................................................................................. 8

3. Metodologia ................................................................................................. 9

3.1. Software/Equipamento .......................................................................... 9

3.2. Imagens ................................................................................................ 9

3.3. Algoritmo de Viola-Jones .................................................................... 11

3.4. Algoritmo do LMP ................................................................................ 13

3.5. Algoritmo do Qui-Quadrado (X²) ......................................................... 14

3.6. Programa Principal .............................................................................. 14

4. Resultados ................................................................................................. 15

4.1. Teste do Algoritmo de Viola-Jones ..................................................... 15

4.2. Teste de Identificação ......................................................................... 20

5. Conclusão e continuidade do trabalho ....................................................... 25

5.1. Sugestão de Continuidade do Trabalho .............................................. 28

Referências ...................................................................................................... 29

Apêndice .......................................................................................................... 31

Amostra do banco de imagens utilizado ....................................................... 33

Apêndice A – Códigos em MATLAB (Viola-Jones) ........................................... 35

Apêndice B – Códigos em MATLAB (LMP) ...................................................... 37

Apêndice C – Códigos em MATLAB (Qui-Quadrado) ...................................... 39

Apêndice D – Códigos em MATLAB (Main for) ................................................ 41

Apêndice E – Códigos em MATLAB (Main)...................................................... 43

Função - Leitura das Imagens Base ............................................................. 43

Função - Leitura das Imagens Teste............................................................. 43

Lista de Figuras

Figura 1: Diagrama de etapas. ........................................................................... 1 Figura 2: Resultado da integral de imagem para uma coordenada [1]. .............. 4 Figura 3: Representação gráfica da equação (5) [2]. ......................................... 5 Figura 4: Exemplos de características retangulares definidas para o algorítmo de Viola-Jones. As figuras (A) e (B) representam as características de dois retângulos. A figura (C) mostra a característica de três retângulos, e a figura (D) é a de quatro retângulos [1]................................................................................ 5 Figura 5: Características selecionadas pelo AdaBoost [1]. ................................ 6

Figura 6: ilustração do processo em cascata. .................................................... 7 Figura 7: Diferença de níveis de cinza em uma vizinhança 3x3 [4]. ................... 7

Figura 8: Banco de imagens tiradas pelo celular. ............................................. 10

Figura 9: Imagens retiradas do banco de imagens Faces in the Wild. ............. 10 Figura 10: Ilustração das quatro características estudadas. ............................ 11 Figura 11: Resultado da detecção da face através do algoritmo de Viola-Jones. ......................................................................................................................... 12

Figura 12: Recorte do segmento da imagem correspondente a face detectada pelo algoritmo de Viola-Jones. ......................................................................... 12

Figura 13: Conversão do recorte para níveis de cinza. .................................... 13 Figura 14: Histograma LMP resultante para a face apresentada. .................... 13 Figura 15: Demonstração do cálculo do LMP [4]. ............................................. 14

Figura 16: Resultado da detecção facial utilizando o algoritmo de Viola-Jones [1]. .................................................................................................................... 15

Figura 17: Gráfico com os resultados percentual das detecções nas imagens testes. ............................................................................................................... 16

Figura 18: Caricaturas 3x4 (de Geraldo R. da Silva). ....................................... 18 Figura 19: Gráfico da porcentagem de detecções corretas. ............................. 19

Figura 20: Ocorrência de falso negativo. .......................................................... 19 Figura 21: Número de acertos para cada modificação. .................................... 24

Figura 22: Detecção em condições adversar. .................................................. 25 Figura 23: Gráfico da análise separada por acertos em cada pessoa teste. .... 27 Figura 24: Gráfico da análise separada por números de acertos. .................... 27

Lista de Tabelas Tabela 1: Diretrizes para o treinamento da cascata de detecção [11]. ............. 17 Tabela 2: Resultado para P1 e P2 e suas variações. ....................................... 20 Tabela 3: Resultado para P3 e P4 e suas variações. ....................................... 21 Tabela 4: Resultado para P5 e P6 e suas variações. ....................................... 21 Tabela 5: Resultado para P9 e P10 e suas variações. ..................................... 22

Tabela 6: Resultado para P9 e P10 e suas variações. ..................................... 22 Tabela 7:Resultado para P11 e suas variações. .............................................. 23 Tabela 8: Exemplo de mudança no resultado com a alteração do valor de Beta de 1 para 0,1. ................................................................................................... 26

Lista de Siglas

CPF Cadastro de Pessoa Física

CHN Carteira Nacional de Habilitação

EMV Europay, Mastercard e Visa

LAVI Laboratório de Visão Computacional

LMP Local Mapped Pattern

MATLAB Matrix Laboratory

NFC Near Field Communication

PSO Particle Swarm Optimization

RG Registro Geral

SCM Sample Classification Modifier

X² Qui-Quadrado

1

1. Introdução

Com o desenvolvimento da computação e das tecnologias de captura de imagens, a área de visão computacional vem ganhando espaço gradativamente devido às inúmeras possibilidades de aplicação de seu conceito teórico. Desenvolver e construir sistemas artificiais capazes de retirar informações através da análise de uma imagem ou quaisquer dados multidimensionais é o principal foco de estudo de muitas empresas interessadas no campo da visão computacional. Tão abrangente é a sua aplicação que é possível encontrar exemplos de sua aplicação em diversos setores. A aplicação estudada neste trabalho é voltada para o campo da biometria facial através da utilização do descritor LMP como código gerador das características que irão distinguir uma face da outra. O diagrama da figura 1 mostra cada etapa, desde a obtenção das imagens até o resultado final.

Figura 1: Diagrama de etapas.

A obtenção das imagens será feita de duas formas. Por meio do uso de aparelho celular e pelo uso do banco de imagens Faces in the Wild. Todas as imagens serão utilizadas para testar o método de detecção da face humana de Viola-Jones, porém apenas as imagens obtidas pelo celular serão utilizadas na validação do descritor de textura LMP como um reconhecedor de pessoas. Através das características geradas pelo LMP, o método Qui-quadrado irá avaliar a viabilidade do uso do descritor LMP como um método válido para o reconhecimento facial.

Obtenção das Imagens

Celular

Viola-Jones

LMP

Qui-quadrado

Viabilidade

Comparação

Teste

Banco de imagens Faces in the Wild

Viola-Jones

Viabilidade

Comparação

Teste

método

2

1.1. Motivação Através do convívio na vida profissional com meios de pagamento que

utilizam cartões de plástico EMV (Europay, Mastercard e Visa), mais conhecidos como cartões de chip, foi percebido que com o avanço tecnológico os cartões passaram da utilização da tarja magnética para a utilização dos chips e posteriormente vem sendo utilizados chips com tecnologia sem contato e pagamentos via NFC (Near Field Communication) devido a sua rapidez. Uma característica que não mudou foi a necessidade de possuir um cartão e junto dele lembrar de várias senhas para assegurar a autenticidade do adquirente e para que o mesmo não sofra furtos e/ou fraudes em sua conta pessoal.

Uma alternativa seria a utilização de um sistema biométrico facial que pudesse identificar e validar os serviços sem a necessidade do adquirente precisar decorar diversas senhas, podendo fazer a validação da portabilidade de forma rápida e segura, já que não é necessário que o portador entre em contato com os equipamentos. Além da rapidez, a biometria facial é um método barato quando comparado com as demais formas de biometria. Com apenas uma webcam e um computador a biometria facial pode sem implementada, diferente dos outros métodos que necessitam de equipamentos próprios para a sua aplicação.

1.2. Objetivos

O objetivo deste trabalho é investigar a utilização do descritor de textura

LMP (Local Mapped Pattern) como um extrator de características de um segmento obtido pelo método de Viola-Jones e analisar se essas características obtidas possuem alguma singularidade que permita a sua utilização na identificação pessoal.

Como padrão, será utilizado o método de detecção facial de Viola-Jones para obter o segmento correspondente a face humana, para posteriormente aplicar o descritor de textura LMP.

1.3. Estrutura do Trabalho

Este trabalho de conclusão de curso está dividido da seguinte forma: Capítulo 2 Explanação dos fundamentos teóricos utilizados em cada etapa da

criação da programação responsável pela análise da viabilidade da utilização do descritor de textura LMP como descritor facial.

Capítulo 3 Explanação geral da metodologia e dos algoritmos, divididos em partes. Capítulo 4 Discussão dos resultados. Capítulo 5 Conclusão e sugestões de continuidade.

3

2. Fundamentação Teórica

Neste capítulo serão apresentados os fundamentos teóricos que irão dar base ao trabalho durante todas as etapas da pesquisa. A revisão bibliográfica aqui tem por objetivo dar noção do que será analisado a respeito da aplicação do descritor de textura LMP como método para descrever uma face humana.

Assim será feito primeiramente uma breve contextualização dos métodos utilizados na obtenção dos resultados para viabilizar o LMP como descritor de faces.

2.1. Detecção Facial O primeiro passo no reconhecimento facial é a sua detecção. Em

primeira instância a ideia de reconhecer uma face humana parece ser simples, uma atividade cotidiana para as pessoas. Porém essa função se torna desafiadora para sistemas computacionais devido às diversas variáveis: posição da face, iluminação, características fisiológicas, interferência visual, uso de acessórios, entre outras.

Nesse trabalho será utilizado o método de Viola-Jones para identificar e segmentar a região correspondente a face humana. Como padrão, serão utilizadas fotos em formato 3x4, com variações na iluminação, utilização de acessórios, mudança da expressão facial, obstrução e angulação. As duas últimas alterações serão utilizadas apenas para análise do algoritmo de Viola-Jones.

O segundo passo corresponde a etapa de processamento. O processamento será feito utilizando o descritor de textura LMP, em que o código LMP resultante servirá de base para comparação com as variações testadas (outra face, presença de sorriso, iluminação de flash e uso de acessórios).

O terceiro passo é o método de análise. A análise será feita através da aplicação da distribuição qui-quadrado para comparar o código LMP gerado para cada face base com as faces de teste.

2.2. Viola-Jones

Paul Viola e Michael Jones divulgaram em 2001 o seu detector de objetos que apresentava uma nova forma de representar uma imagem. Chamado de imagem integral (integral image), ele permitia uma análise rápida das características de um objeto [1].

Com base na função de Haar, Viola e Jones desenvolveram um algoritmo que realiza a comparação entre a soma dos pixels de uma área retangular com a soma dos pixels da área retangular vizinha. Através dessas comparações é feito o treinamento das características utilizando o método de aprendizagem AdaBoost e posteriormente é feita a classificação através do método de cascata, que aumenta drasticamente a velocidade de detecção do objeto alvo. Cada passo será descrito nas secções seguintes.

4

2.2.1. Imagem Integral

A imagem integral permite calcular a área retangular definida por uma ou mais coordenadas de uma imagem [1,2]. Usando a equação (1) é possível calcular a imagem integral para uma determinada coordenada.

𝑖𝑖(𝑥, 𝑦) = ∑ 𝑖(𝑥′, 𝑦′)𝑥′<𝑥,𝑦′<𝑦 (1)

em que, ii(x,y) é a imagem integral e i(x,y) é a imagem original. A equação (1) permite calcular a soma dos pixels da coordenada (x,y) até a origem do plano cartesiano. Lembrando que para imagens a origem do plano cartesiano fica localizada no ponto superior esquerdo (figura 2).

Através do par de equações (2) e (3), em que, s(x,y) é a soma cumulativa

da linha, a resultante será a equação (4) que possibilita calcular qualquer segmento tomado no interior da imagem analisada. As funções com coordenadas negativas são consideradas de valor nulo, pois em imagens todas as coordenadas possuem valores superiores positivos.

{𝑠(𝑥, 𝑦) = 𝑠(𝑥, 𝑦 − 1) + 𝑖(𝑥, 𝑦) (2)

𝑖𝑖(𝑥, 𝑦) = 𝑖𝑖(𝑥 − 1, 𝑦) + 𝑠(𝑥, 𝑦) (3)

𝑖𝑖(𝑥, 𝑦) = 𝑖(𝑥, 𝑦) + 𝑖𝑖(𝑥 − 1, 𝑦) + 𝑖𝑖(𝑥, 𝑦 − 1) − 𝑖𝑖(𝑥 − 1, 𝑦 − 1) (4)

Tomando a figura 3 como exemplo, a área do retângulo ABCD é definida

pela equação (5), que nada mais é do que a relação entre as equações (1) e (4).

𝑖𝑖𝐴𝐵𝐶𝐷(𝑥, 𝑦) = 𝑖𝑖𝐷(𝑥′, 𝑦′) + 𝑖𝑖𝐴(𝑥′, 𝑦′) − 𝑖𝑖𝐵(𝑥′, 𝑦′) − 𝑖𝑖𝐶(𝑥′, 𝑦′) (5)

Figura 2: Resultado da integral de imagem para uma coordenada [1].

5

A partir da integral de imagem em conjunto com as características de Haar, Viola e Jones criam um detector que compara a diferença de luminosidade entre duas áreas adjacentes, mostrando ser mais rápida do que a comparação baseada em pixels. A figura 4 mostra quatro possíveis tipos de características-base que são calculadas subtraindo a soma dos valores dos pixels da(s) região(ões) branca(s) com a soma dos valores dos pixels da(s) região(ões) preta(s).

Figura 4: Exemplos de características retangulares definidas para o algorítmo de Viola-Jones. As figuras (A) e (B) representam as características de dois retângulos. A figura (C) mostra a característica de três

retângulos, e a figura (D) é a de quatro retângulos [1].

2.2.2. AdaBoost AdaBoost (Adaptive Boosting) é um algoritmo de aprendizagem, criado

por Yoav Freund e Robert Schapire [3], que pode ser usado para a classificação ou regressão. Embora AdaBoost seja mais resistente à overfitting do que outros algoritmos de aprendizagem de máquina, ele ainda é sensível a dados ruidosos e de valores discrepantes.

AdaBoost é chamado de adaptativo pois ele usa de múltiplas iterações para gerar um único classificador forte. Isso é feito criando vários classificadores fracos iterativamente durante cada ciclo de formação, onde um vetor de ponderação faz com que os classificadores mais fracos sejam combinados para formar um melhor classificador. A margem de precisão dos classificadores fracos

Figura 3: Representação gráfica da equação (5) [2].

6

para o valor esperado é de 51%. AdaBoost é um procedimento eficaz para a busca de um número pequeno de boas características que, no entanto, tem grande variedade. O desafio está em associar o maior peso para os bons classificadores e um peso menor para os classificadores mais fracos. Um método prático é restringir os classificadores fracos em um conjunto de classificação que se restringe a uma única característica. Para essa característica, o classificador fraco determina a melhor função classificadora do limiar (threshold), fazendo com que ocorra um menor número de classificações erradas.

Um classificador fraco, definido pela equação (7), é expresso pela função de característica (f), pelo limiar (θ) e pela polaridade (p). Onde x é uma região da imagem de 24x24 pixels.

ℎ(𝑥) = {1, 𝑠𝑒 𝑝𝑓(𝑥) < 𝑝𝜃0, 𝑐. 𝑐.

(7)

Um classificador forte, definido pela equação (8), é expresso pelo peso

de cada classificador (α).

𝐻(𝑥) = {1, 𝑓(𝑥) ≥

1

2∑ 𝛼

0, 𝑐. 𝑐. (8)

A figura 5 ilustra duas características escolhidas pelo AdaBoost para

reconhecer uma face humana. A característica (A) mede a diferença de intensidade entre a região do olho com a região da bochecha. O algoritmo percebe que a região do olho é mais escura do que a região da bochecha, o mesmo ocorre para a característica (B) onde são comparadas as diferenças de intensidade entre a região dos olhos, região mais escura, com a linha divisória, região mais clara.

Figura 5: Características selecionadas pelo AdaBoost [1].

7

2.2.3. Método em Cascata

Para evitar a perda de tempo computacional, o método em cascata é

aplicado em conjunto com o AdaBoost. As características fortes são postas em sequência para serem aplicadas de forma crescente, filtrando as janelas que não apresentam corretamente as características esperadas. A cada característica, menor será o processamento necessário devido a rejeição dos falsos fragmentos e dos falsos positivos, que reduz o número de análises a serem executadas. A figura 6 ilustra o processo citado.

Figura 6: ilustração do processo em cascata.

2.3. LMP (Local Mapped Pattern)

O descritor LMP [4] [5] assume que cada conjunto de níveis de cinza

distribuídos em uma vizinhança é um padrão. Esse padrão pode ser representado pela diferença dos níveis de cinza das bordas em relação ao valor central. A figura 7 demonstra uma vizinhança de tamanho 3x3 e sua representação em 3D.

Figura 7: Diferença de níveis de cinza em uma vizinhança 3x3 [4].

Cada padrão definido por uma vizinhança WxW pode ser calculado pela

equação (8).

ℎ𝑏 = 𝑟𝑜𝑢𝑛𝑑 (∑ ∑ (𝑓𝑔(𝑖,𝑗)𝑃(𝑘,𝑙))𝑊

𝑙=1𝑊𝑘=1

∑ ∑ 𝑃(𝑘,𝑙)𝑊𝑙=1

𝑊𝑘=1

(𝐵 − 1)) (8)

em que fg(i,j) é a função de mapeamento, P(k,l) é a matriz de peso com valores predefinidos para cada pixel e B é o número de bins do histograma.

8

A equação 8 calcula a soma ponderada da diferença entre cada valor dos pixels da vizinhança com o valor do pixel central, o resultado final é arredondado para o valor inteiro que corresponda a algum valor de bin.

Para análise de texturas, é utilizado como função de mapeamento uma equação comum de uma curva sigmoide definida pela equação (9). Em que, β define a inclinação da curva, A(k,l) é o nível de cinza do pixel da borda da vizinhança e g(i,j) é o nível de cinza do pixel central da vizinhança. A matriz de peso padrão utilizada é uma matriz de 1 de tamanho 3x3.

𝑓𝑔(𝑖, 𝑗) =1

1+𝑒−[𝐴(𝑘,𝑙)−𝑔(𝑖,𝑗)]

𝛽

(9)

2.4. Qui-Quadrado (X²)

Qui-quadrado [6] é uma distribuição utilizada em estatística inferencial, é um teste de hipóteses utilizado para encontrar valores da dispersão para duas variáveis categóricas nominais, avaliando a associação existente entre variáveis qualitativas.

É um teste não paramétrico, ou seja, não depende de parâmetros populacionais como média e variância.

A equação utilizada para o cálculo do X² é a equação (10), que representa a distância Chi-quadrado [7]. A equação de X² tem como parâmetros Pi e Qi, onde Pi é a frequência dos níveis de cinza do LMP da amostra base e Qi é a frequência dos níveis de cinza do LMP da amostra avaliada.

𝑋2(𝑃𝑖𝑄𝑖) =1

2∑

(𝑃𝑖−𝑄𝑖)²

(𝑃𝑖+𝑄𝑖)

255𝑖=0 (10)

9

3. Metodologia

Nas próximas seções serão descritos o equipamento/software e os algoritmos utilizados para obter os dados de análise da viabilidade do uso do LMP para extração de características no processo de reconhecimento facial.

3.1. Software/Equipamento

O software utilizado foi o MatLab (Matrix Laboratory) por ser um software

de ótima qualidade e que possui diversas funcionalidades, além de uma linguagem de programação muito intuitiva para qualquer pessoa que já tenha tido contato com alguma linguagem de programação. Possui compatibilidade com os mais conhecidos sistemas operacionais existentes (Windows, OS, Linux), além de possuir compatibilidade com sistemas móveis como Android e IOS.

Um dos principais motivos da utilização do MatLab no lugar de outros softwares foi a vasta biblioteca de funções matemáticas e algoritmos numéricos, e a presença de Toolbox específicos para processamento de imagens [11] como Computer Vison System Toolbox, Image Processing Toolbox e Image Acquisition Toolbox. A utilização das Toolbox e das funções facilita e melhora o processamento/rendimento da programação, tornando a escrita mais limpa e menos suscetível a erros, pois o programador irá apenas inserir os dados e fazer modificações pontuais. Mesmo inserindo dados errados, o próprio programa irá avisar onde está ocorrendo o erro, seja de escrita ou de valores negados.

As fotos utilizadas foram tiradas de aparelhos móveis de diferentes modelos, alguns deles são: Iphone 6 (câmera traseira 12MP), Sony Xperia SP (câmera traseira 8MP). Alguns pré-processamentos são executados pelo aparelho móvel automaticamente para melhorar o ajuste de luminosidade e de cores (contraste, brilho), e o foco da imagem. Apesar desse pré-processamento ser visualmente agradável aos olhos humanos, essas alterações podem acarretar em mudanças positivas ou negativas na análise final deste trabalho.

3.2. Imagens

Este trabalho avalia dois bancos de imagens: as imagens obtidas através

do uso da câmera de aparelhos móveis (figura 8) e do banco de imagens Faces in the Wild, disponibilizado abertamente pela Universidade de [15].

10

Figura 8: Banco de imagens tiradas pelo celular.

Nos dois bancos as imagens estão no formato 3x4, e apresentam

variações na iluminação, no uso de acessórios, mudança na fisionomia, angulação e obstrução parcial da face. As duas últimas alterações ocorrem apenas no banco de imagens Faces in the Wild. A figura 9 mostra alguns exemplos das faces deste banco.

Figura 9: Imagens retiradas do banco de imagens Faces in the Wild.

11

Neste trabalho foram utilizadas 10 pessoas diferentes com 4 fotos para cada uma delas. Cada pessoa recebeu uma identificação numérica e uma letra inicial que identifica a característica modificada em relação a foto principal (foto base). A figura 10 mostra o que foi modificado para cada foto da 6° pessoa a ser analisada. Pn representa a foto base (padrão 3x4 com fundo branco), Pni representa a utilização de iluminação, Pnm é a representação da foto com uso de algum acessório que possa causar alteração na análise e Pns é a representação da foto com fisionomia alegre (sorriso).

Figura 10: Ilustração das quatro características estudadas.

3.3. Algoritmo de Viola-Jones

O Algoritmo de detecção de faces utilizado (apêndice A) faz uso da

função cascadeObjectDetector(), presente na biblioteca Computer Vision System Toolbox, que realiza a detecção de objetos usando o algoritmo de Viola-Jones [11]. No caso, como a detecção é voltada para faces humanas, o algoritmo procura pelas características de uma face humana vista frontalmente (nariz, olhos, boca). Após encontrar as possíveis faces na imagem analisada (figura 11). O algoritmo recorta, reserva e redimensiona o recorte para posteriormente ser aplicado no descritor LMP (figura 12).

Neste trabalho serão utilizados como parâmetros iniciais do LMP uma vizinhança de 3x3, matriz de peso 3x3 de valores 1, 256 bins, imagem de 125x125 pixels e um β fixo em 1. Os valores de bin e de β foram escolhidos aleatoriamente. Devido ao fato do LMP ser paramétrico, para futuros aprimoramentos, o valor de β e de B devem ser calculados para cada caso de forma a maximizar os resultados obtidos anteriormente com os valores fixos.

12

Figura 11: Resultado da detecção da face através do algoritmo de Viola-Jones.

Figura 12: Recorte do segmento da imagem correspondente a face detectada pelo algoritmo de Viola-

Jones.

É importante lembrar que uma das configurações possíveis de

treinamento de detecção de faces para a função cascadeObjectDetector() é composta pelo descritor LBP (Local Binary Pattern) [11], sendo assim um forte indício favorável a aplicação do LMP como detector de faces, já que o mesmo é uma derivação do LBP. Neste trabalho o LMP será usado apenas para a etapa de classificação da face, deixando a tarefa de identificar o segmento em uma imagem para o algoritmo de Viola-Jones.

13

3.4. Algoritmo do LMP

Uma vez que o processamento feito pelo LMP (apêndice B) é executado em imagens de níveis de cinza, o primeiro processo é a conversão do recorte da face feito pelo algoritmo de Viola-Jones em uma imagem de níveis de cinza através da função rgb2gray() (figura 13).

Figura 13: Conversão do recorte para níveis de cinza.

Após a conversão, é feita uma breve verificação do tamanho da imagem

para que ela não seja processada caso a imagem seja menor do que as dimensões da vizinhança. Neste trabalho a matriz de vizinhança possui tamanho 3x3, sendo assim, 3x3 o tamanho mínimo para a imagem ser processada. Feita a verificação de tamanho, é feito o processamento para o cálculo da equação (8) e da equação (9) para obter o código LMP. O resultado é convertido para o formato uint8 que pode ser representado na forma de histograma, como demonstra a figura 14.

Figura 14: Histograma LMP resultante para a face apresentada.

14

A figura 15 [4] exemplifica como são calculados os códigos LMP no decorrer da imagem analizada.

Figura 15: Demonstração do cálculo do LMP [4].

3.5. Algoritmo do Qui-Quadrado (X²)

No algoritmo destinado ao qui-quadrado é feita a aplicação da equação

(10) para obter a comparação entre as faces a serem examinadas com as faces base (apêndice C).

O cálculo do X² é feito através do uso da função Sample Cassification Modifier que tem como parâmetros de entrada: o número de bins do histograma (B), o número de imagens do conjunto alvo (NI), o número de imagens do conjunto de busca (NI2), os vetores de características do conjunto alvo (IHL) e os vetores de características do conjunto de busca (IHL2).

Em poucas linhas de programação é possível realizar extensos cálculos entre matrizes, com dimensões da casa das centenas, de forma mais prática do que a utilização de comandos como o “for” encadeado (apêndice D). Essa facilidade se dá graças a possibilidade de criar um vetor de células, ou seja, um vetor que pode armazenar vetores/matrizes dentro de cada segmento.

3.6. Programa Principal

O programa principal “Main.m” (apêndice E) faz a chamada das funções

IMG_TESTE e IMG_BASE, que são responsáveis pela leitura das imagens a serem testadas e das imagens base, respectivamente. Seguido pela chamada do algoritmo de Viola-Jones, o programa realiza o processamento para a obtenção do código LMP e realiza a contagem das frequências de ocorrência de cada código LMP da imagem analisada através do comando histcounts().

Após a obtenção das frequências de cada código LMP, é feita a chamada da função sampleClassificationModified para realizar os cálculos do qui-quadrado de cada imagem de teste com cada imagem base, formando uma matriz resultante 10x4. Da matriz de resultados do cálculo do qui-quadrado são retirados quarenta resultados referentes a análise de dez imagens base com quatro variações cada uma, que são analisadas a cada ciclo completo do programa totalizando 400 resultados.

15

4. Resultados A seguir serão apresentados os resultados dos algoritmos relacionados

à detecção e a identificação facial.

4.1. Teste do Algoritmo de Viola-Jones

O algoritmo utilizado foi bem-sucedido na detecção de faces do que o utilizado por Braga [1] em seu trabalho. Realizando os testes de detecção com a mesma imagem utilizada por Braga, onde foram detectados casos de falsos negativos e falsos positivos. O algoritmo de Viola-Jones obteve total êxito em encontrar todas as faces e não detectou os casos de erros presentes no algoritmo de Braga. A figura 16 mostra o resultado de Braga (contorno branco) paralelamente com o resultado atual obtido (contorno amarelo).

Figura 16: Resultado da detecção facial utilizando o algoritmo de Viola-Jones [1].

Cerca de 3000 faces retiradas do banco de imagens Faces in the Wild

(Labeled Faces in the Wild, University of Massachusetts – Amherst 1863) [15], foram utilizadas neste trabalho para testar a eficiência do algoritmo de Viola-Jones. A figura 17 mostra o gráfico referente a taxa de detecções de faces. Foi obtido uma taxa de 88% de acerto para uma análise quantitativa, onde foram testados 5 conjuntos de 90 faces mais as 40 faces utilizadas para a análise qui-quadrada, totalizando 490 faces testadas. É importante citar que na análise quantitativa, foram utilizadas imagens de diferentes configurações, entre elas estão: a utilização de acessórios, angulação do rosto, obstrução visual e

16

iluminação alterada. Para um teste em ambiente controlado, ou seja, imagens com os mesmos padrões, o algoritmo de Viola-Jones obteve 100% de detecção correta.

Figura 17: Gráfico com os resultados percentual das detecções nas imagens testes.

A melhora na resposta do algoritmo de Viola-Jones ocorre devido ao

aumento do número de exemplos negativos e positivos aplicados no treinamento dos classificadores ao longo dos 3 anos de diferença entre este trabalho e o trabalho de Braga. A inserção de novos treinamentos pode ser feita através da função trainCascadeObjectDetector que permite treinar a sua aplicação para casos específicos [11]. Neste trabalho foi utilizado diretamente o método de cascata pré-definido pelo sistema do MatLab para a função referente ao algoritmo de Viola-Jones. A tabela 1 mostra algumas diretrizes a serem seguidas para obter um bom resultado caso seja feita alguma inserção de treinamento.

Positiva; 433; 88%

Negativa; 57; 12%

Detecção

Positiva

Negativa

17

Tabela 1: Diretrizes para o treinamento da cascata de detecção [11].

Condição Consideração

Grande número de treinamentos. Aumenta o número de estágios e causa um aumento na ocorrência de falsos positivos para cada estágio da cascata.

Baixo número de treinamentos. Diminui o número de estágios e causa diminuição na ocorrência de falsos positivos para cada estágio da cascata.

Para diminuir a probabilidade de não detecção.

Aumentar o número de casos positivos. Entretanto, uma alta taxa de casos positivos pode eliminar a taxa desejada de falsos positivos em cada nível da cascata, tornando o detector mais susceptível a detecção de falsos negativos.

Para diminuir o número de falsas detecções.

Aumentar o número de estágios ou diminuir a taxa de falsas detecções por estágio.

A figura 18 mostra um conjunto de caricaturas onde algumas delas foram

detectadas pelo detector facial de Viola-Jones. A detecção de faces desenhadas se faz útil para casos de reconhecimento de suspeitos/perdidos onde se possui apenas o seu retrato falado, que certamente não é um método 100% confiável já que a descrição detalhada baseada apenas na memória de uma pessoa não é muito confiável, porém serve como um meio de filtrar os casos a serem analisados.

18

Figura 18: Caricaturas 3x4 (de Geraldo R. da Silva).

A figura 19 mostra o gráfico das detecções corretas. O gráfico mostra que foi detectado 1 caso de falso positivo e 6 casos de detecções mútuas do total de 433 detecções, esse resultado nos dá uma taxa de 99,8% de acerto, já que detecções mútuas correspondem a detecções corretas. Apesar da taxa de 0,20% de erro na detecção, deve-se verificar o resultado da detecção visualmente antes de passar para a análise do código LMP para evitar uma falsa análise.

19

Figura 19: Gráfico da porcentagem de detecções corretas.

A figura 20 mostra a detecção de falso negativos.

Figura 20: Ocorrência de falso negativo.

Comparativamente, Braga testou 200 imagens e obteve 130 detecções,

das 130 detecções foi relatado 1 caso de falso positivo, que corresponde a 0,7%. Ao final, é obtido o resultado de 65% de detecção de fragmentos que possivelmente correspondam a faces humanas e uma taxa de 99,3% de acerto.

Positivo; 426; 98%

Falso Positivo; 1; 0%

Detecção Mútua; 6; 2%

Casos Positivos

Positivo

Falso Positivo

Detecção Mútua

20

4.2. Teste de Identificação

Para o teste de identificação foram utilizadas apenas as imagens tiradas pelo celular, tendo assim maior controle e definição das modificações analisadas.

Os resultados das comparações entre os valores de X² para a classificação das imagens foram tabelados para facilitar a visualização. Em vermelho estão marcados os campos que deveriam ter o menor valor de qui-quadrado e em azul os casos com valores menores do que o apresentado em vermelho. A variação é calculada através da diferença entre o valor obtido para a face correspondente e o menor valor obtido na mesma coluna. A variação total é calculada pela diferença entre o maior valor e o menor valor. A porcentagem de variação para cada teste é calculada a partir da variação total com a variação. A análise da tabela é feita comparando os valores de cada coluna separadamente, sendo independente o valor de uma coluna com o valor da coluna vizinha.

A tabela 2 mostra os resultados da comparação entre as imagens de teste P1 e P2 e as imagens base, identificadas na primeira linha superior e na primeira coluna à esquerda, respectivamente.

Tabela 2: Resultado para P1 e P2 e suas variações.

P1 P1i P1m P1s P2 P2i P2m P2s

P1 0 22,4 103,3 9 473,4 337,8 103,5 274,5

P2 473,4 368,2 758,2 506,3 0 67 357,9 102,5

P3 110,1 93,1 229,5 108,9 206,8 102,4 36,3 47,6

P4 4,8 19,6 112,5 6,8 487,2 338 114,5 285

P5 698,4 555.9 1054,8 743,4 65,1 158 606,3 237,7

P6 43,8 87,1 47,2 30,1 536,4 335,1 82,4 280

P7 134,6 251,6 14,5 103,9 851,8 612,6 142,8 468,2

P8 334,5 509,2 134,3 303,1 1194,9 959,3 330,8 737,3

P9 65,2 154,9 23,1 48 729,9 523,9 115,1 400,6

P10 577,3 393,2 1124,6 657,7 377,8 495,6 797,4 578,1

Variação 0 2,8 88,8 2,2 0 0 321,6 54,9

Variação total

698,4 536,3 1110,1 736,6 1194,9 892,3 761,1 689,7

Variação (%)

0 0,5 8 0,3 0 0 42,2 8

A tabela 3 mostra os resultados da comparação entre as imagens de

teste P3 e P4 e as imagens base, identificadas na primeira linha superior e na primeira coluna à esquerda, respectivamente.

21

Tabela 3: Resultado para P3 e P4 e suas variações.

P3 P3i P3m P3s P4 P4i P4m P4s

P1 110,1 65,5 104,6 161,1 4,8 131,2 29,8 8,6

P2 206,8 386,6 331 201,3 487,2 885,4 568,9 548,1

P3 0 53,5 41,7 11,4 121,2 288,3 136,8 129,5

P4 121,2 68,8 112,7 178,3 0 139,9 29 11,6

P5 392,7 613,2 552,3 385,8 702,9 1193,1 824,8 792,3

P6 141,8 31,7 64,1 170,7 39,1 86,2 10,1 24,7

P7 270,9 130,7 167,9 281,2 146,5 23 59,7 81,7

P8 503,8 351,1 388,1 496,3 363,6 131,2 241,3 261,3

P9 199,7 98,5 138,4 226,9 77,4 28,4 30,8 33

P10 548,6 740 765,6 657,9 563,3 1215,6 809,6 712,1

Variação 0 21,8 0 0 0 116,9 0 3

Variação total

548,6 708,3 723,9 646,5 702,9 1192,6 795,8 783,7

Variação (%)

0 3,1 0 0 0 9,8 0 0,4

A tabela 4 mostra os resultados da comparação entre as imagens de teste P5 e P6 e as imagens base, identificadas na primeira linha superior e na primeira coluna à esquerda, respectivamente.

Tabela 4: Resultado para P5 e P6 e suas variações.

P5 P5i P5m P5s P6 P6i P6m P6s

P1 698,4 253,5 132,1 564,4 43,8 133,6 122,8 74,3

P2 65,1 74,5 144,1 37,1 536,4 773 644,1 622,2

P3 392,7 67,7 53,7 295,3 141,8 262,9 185,4 168,3

P4 702,9 268,7 139,8 567,8 39,1 143,3 127,8 77

P5 0 191,5 272,4 10,9 766,1 1067 912,9 891,2

P6 766,1 258,1 150,4 636,8 0 64,2 41,7 14,9

P7 1169,5 479,9 359,3 1011,7 95,1 21,3 50,4 44,8

P8 1568,6 766,5 637,3 1395,3 309,9 119,3 193,7 209,9

P9 1021 404,2 277,5 866,5 68 43 65,5 41,8

P10 384,3 521,3 443,1 323,8 783,2 1176 1074,4 967,3

Variação 0 123,8 218,7 0 0 42,9 0 0

Variação total

1568,6 698,8 583,6 1384,4 783,2 1154,7 1032,7 952,4

Variação (%)

0 17,7 37,5 0 0 3,7 0 0

22

A tabela 5 mostra os resultados da comparação entre as imagens de teste P7 e P8 e as imagens base, identificadas na primeira linha superior e na primeira coluna à esquerda, respectivamente.

Tabela 5: Resultado para P9 e P10 e suas variações.

P7 P7i P7m P7s P8 P8i P8m P8s

P1 134,6 75,1 327,9 183,3 334,5 151,8 355,1 401,3

P2 851,8 767,3 1145,6 895,4 1194,9 916,6 1205,8 1313,9

P3 270,9 228,5 473,1 307 503,9 316,1 507,2 576,2

P4 146,5 83,7 343,6 198,7 363,6 165,4 380,9 428,3

P5 1169,5 1051,4 1502,9 1225,1 1568,6 1233,8 1577,6 1703,6

P6 95,1 54,9 218,1 116,7 309,9 113 297,6 348,7

P7 0 14 48 7,8 67,2 3,6 61,5 84,9

P8 67,2 120,7 62,7 63,5 0 56,8 9,9 8,7

P9 16,6 6 117,6 41,7 116 22,5 122,1 151,7

P10 1224 1045,6 1694,7 1351,7 1646,6 1278,5 1726,8 1813,3

Variação 0 8 0 0 0 53,2 0 0

Variação total

1224 1045,4 1646,7 1343,9 1646,6 1274,9 1716,9 1804,6

Variação (%)

0 0,8 0 0 0 4,2 0 0

A tabela 6 mostra os resultados da comparação entre as imagens de teste P9 e P10 e as imagens base, identificadas na primeira linha superior e na primeira coluna à esquerda, respectivamente.

Tabela 6: Resultado para P9 e P10 e suas variações.

P9 P9i P9m P9s P10 P10i P10m P10s

P1 65,2 15,7 227 158,2 577,3 402 753,2 557,5

P2 729 470,7 1006,7 909,6 377,8 120,9 358,4 368,9

P3 199,7 104,3 375,2 304,3 548,6 276,6 637,5 522

P4 77,4 13,4 249,6 177 563,3 395,2 744,8 545,3

P5 1021 696,8 1345 1244 384,3 156 356,2 381,3

P6 68 14,6 192,2 136,3 783,2 527,7 972,6 766,3

P7 16,6 106,4 22,9 5,9 1224 915,9 1419 189,4

P8 116 309,1 16 41,3 1646,6 1313,9 1828,6 1601,7

P9 0 61,7 58,5 23,3 1000,2 742,4 1196,2 968,4

P10 1000,2 654,1 1428,2 1277,5 0 85,8 48,1 5,1

Variação 0 48,3 42,5 17,4 0 0 0 0

Variação total

1021 683,4 1412,2 1271,6 1646,6 1228,1 1780,5 1596,6

Variação (%)

0 7,1 3 1,4 0 0 0 0

23

A tabela 7 mostra os resultados da comparação entre as imagens de teste P11 e as imagens base, identificadas na primeira linha superior e na primeira coluna à esquerda, respectivamente.

Tabela 7:Resultado para P11 e suas variações.

P11 P11i P11m P11s

P1 0,37 10³ 1 10³ 0,5 10³ 0,2 10³

P2 0,3 10³ 0,4 10³ 0,2 10³ 0,3 10³

P3 0,39 10³ 0,8 10³ 0,4 10³ 0,3 10³

P4 0,35 10³ 0,9 10³ 0,5 10³ 0,2 10³

P5 0,35 10³ 0,36 10³ 0,17 10³ 0,4 10³

P6 0,5 10³ 1,16 10³ 0,65 10³ 0,3 10³

P7 0,9 10³ 1,7 10³ 1,1 10³ 0,67 10³

P8 1,35 10³ 2,2 10³ 1,57 10³ 1,06 10³

P9 0,7 10³ 1,5 10³ 0,9 10³ 0,5 10³

P10 0,07 10³ 0,09 10³ 0,1 10³ 0,15 10³

P11 0 0,19 10³ 0,05 10³ 0,03 10³

Variação 0 0,1 10³ 0 0

Variação total 1,35 10³ 1,31 10³ 1,52 10³ 1,03 10³

Variação (%)

0 7,6 0 0

Como esperado, a utilização de acessórios é o maior causador de

variações nas comparações das características obtidas, uma vez que é inserido

um corpo estranho que dificulta a análise da face.

No total foi obtido 61% de acerto e 39% de erro para um Beta fixo no

valor β=1. A média da porcentagem da variação fica em 3,7%, mostrando que o

não sucesso na classificação ocorre por uma diferença muita pequena.

Feita a investigação da possibilidade de viabilizar o descritor de textura

LMP no reconhecimento facial e através da análise dos resultados obtidos (figura

21), conclui-se que a variação na iluminação causa a maior taxa de erro na

seleção correta do indivíduo.

24

Figura 21: Número de acertos para cada modificação.

0

2

4

6

8

10

12

Alteração de condições

Número de acertos

Iluminação Uso de acessórios fisionomia padrão

25

5. Conclusão e continuidade do trabalho

O sistema avaliado neste trabalho é constituído de um algoritmo de

detecção facial, um de extração de características e, por fim, um de análise. O algoritmo de detecção utilizado foi baseado no método de Viola-Jones e apresentou resultado de 88% de detecção correta do total de 490 imagens analisadas em 5 conjuntos de 90 imagens, mais as 44 imagens em padrão 3x4. Analisando os 437 casos de detecção, temos: 430 faces corretas, 1 falso negativo e 6 detecções mútuas. Essa taxa pode chegar perto dos 100% de acerto caso sejam usadas apenas imagens no padrão 3x4, com iluminação controlada e com visão frontal da face. Seguindo este padrão, mesmo com a utilização de acessórios, e com a mudança da fisionomia, o algoritmo é capaz de identificar a face humana, alguns exemplos são exibidos na figura 22.

Figura 22: Detecção em condições adversar.

O algoritmo de extração de características, baseado no descritor de

textura LMP, não teve problemas devido à pré-verificação do tamanho da imagem, que deve ser de tamanho maior do que o tamanho da matriz de vizinhança utilizada, e do redimensionamento feito anteriormente a obtenção do código LMP. O seu resultado é juntamente analisado com o resultado final obtido do algoritmo de análise. O algoritmo de análise, baseado no qui-quadrado, mostrou que o resultado favorável de 60% faz necessária a otimização dos parâmetros Beta e Bin no processo de obtenção do código LMP de cada imagem para eliminar/reduzir a variação de 3,7% do valor esperado e aumentar as chances de sucesso na discriminação do indivíduo. Esse processo irá afetar

26

diretamente no cálculo do código LMP e no vetor de características, favorecendo uma análise otimizada para se obter o valor qui-quadrado.

A tabela 8 mostra um exemplo de como a alteração do Beta pode afetar a análise, melhorando o seu desempenho.

Tabela 8: Exemplo de mudança no resultado com a alteração do valor de Beta de 1 para 0,1.

P1i P1i

P1 22,4 4,2

P2 368,2 276,1

P3 93,1 46,3

P4 19,6 6

P5 555,9 450,7

P6 87,1 23,7

P7 251,6 35,6

P8 509,2 120,9

P9 154,9 25,9

P10 393,2 58,6

Variação 2,8 0

Variação total

536,3 446,5

Variação (%)

0,5 0

BETA 1 0,1

A taxa de 60% de acerto irá aumentar para uma análise com maior

número de faces testes e com otimização dos parâmetros Beta e Bin, como mostra a tabela 8. Os gráficos representados nas figuras 23 e 24, mostram a análise da distribuição da taxa de acertos para cada conjunto de imagem e a frequência de ocorrência de acertos. Apesar do gráfico mostrar um empate entre os conjuntos que tiveram de 25% a 50% de acerto e entre os conjuntos que tiveram de 51% a 100% de acerto, a média ponderada fica em 2,4 acertos por conjunto e tenderá a aumentar com a aplicação dos critérios citados anteriormente.

27

Figura 23: Gráfico da análise separada por acertos em cada pessoa teste.

Figura 24: Gráfico da análise separada por números de acertos.

0

0,5

1

1,5

2

2,5

3

3,5

4

4,5

P1 P2 P3 P4 P5 P6 P7 P8 P9 P10

mer

o d

e ac

erto

s

Gráfico de distribuição de acertos

Iniciais do Conjunto

0

0,5

1

1,5

2

2,5

3

3,5

4

4,5

1 2 3 4

mer

o d

e co

nju

nto

s

Conjuntos com a mesma taxa de acerto

número de valores corretos

28

5.1. Sugestão de Continuidade do Trabalho

Para a continuidade desse trabalho pode ser feita a otimização do detector facial de Viola-Jones melhorando o método de cascata realizando o treinamento do “boosting”, melhorando a detecção para imagens fora do padrão 3x4 definido neste trabalho. Recomenda-se a realização de mais testes para aumentar a base de testes para firmar a viabilidade do uso do LMP como reconhecimento facial.

Pode-se também fazer a aplicação do algoritmo de otimização PSO (Particle Swarm Optimization), desenvolvido por James Kennedy e Russel Eberthart em 1995, para otimizar os valores de Beta e Bin para cada fragmento analisado.

29

Referências [1] Paul Viola, M. J. (13 de Julho de 2001). Robust Real-time Object Detection.

Vancouver, Canadá. [2] Braga, L. F. (2013). Sistemas de Reconhecimento Facial. São Carlos, São

Paulo, Brasil. [3] Yoav Freund, R. E. (20 de Setembro de 1995). A Decision-Theoretic

Generalization of on-Line Learning and an Application to Boosting. Murray Hill, NJ, USA.

[4] Vieira, R. T. (2015). Otimização do descritor paramétrico LMP para a classificação de texturas com variação de rotação. São Carlos, SP, Brasil.

[5] Carolina Toledo Ferraz, O. P. (2014). Feature description based on Mean Local Mapped. São Carlos, SP, Brasil.

[6] PELE, O. &. (2010). The Quadratic-Chi Histogram Distance Family. In: Proceedings of the 11th European Conference on Computer Vision.

[7] Conti, F. (s.d.). Biometria Qui-Quadrado. PA, Brasil. [8]. (s.d.). http://www.mathworks.com/help/?s_tid=hp_ff_l_doc. [9]..(s.d.)https://www.mathworks.com/help/vision/ref/vision.cascadeobject

detector-class.html. [10] Ojala Timo, P. M. (2002). Multiresolution Gray-Scale and Rotation Invariant

Texture Classification with Local Binary Patterns. [11]. (s.d.). Train a Cascade Object Detector,

https://www.mathworks.com/help/vision/ug/train-a-cascade-object-detector.html.

[12] Daniel Maturana, D. M. (s.d.). Face Recognition with Local Binary Patterns, Spatial Pyramid Histograms and Naive Bayes Nearest Neighbor classification. Santiago, Chile.

[13] João Paulo Brognoni Casati, E. L. (2013). Método para segmentação de pele humana em imagens faciais baseado em informações de cor e textura. São Carlos, SP, Brasil.

[14] Kwok-Wai Wong, K.-M. L.-C. (25 de Agosto de 2000). An efficient algorithm for human face detection and facial feature extraction under different conditions. Hung Hom, Hong Kong, China.

[15]. (s.d.). http://vis-www.cs.umass.edu/lfw/#download.

30

31

Apêndice

32

33

Amostra do banco de imagens utilizado

34

35

Apêndice A – Códigos em MATLAB (Viola-Jones) function [result] = Viola_Jones_img( Img ) %Viola_Jones_img( Img ) % Img - input image % Example how to call function:

Viola_Jones_img(imread('name_of_the_picture.jpg'))

faceDetector = vision.CascadeObjectDetector; bboxes = step(faceDetector, Img); figure, imshow(Img), title('Detected faces');hold for i=1:size(bboxes,1) rectangle('Position',bboxes(i,:),'LineWidth',1,'EdgeColor','y'); end num = 1; for i=1:size(bboxes,1) %% Recorte das faces img = imcrop(Img,bboxes(i,:)); %recorta a face

%% Chamando a função LMP img = imresize(img, [125 125]); %mesmo tamanho para todas as

imagens neighborSize = 3; %não mudar!!! bin = 256; %se possível será otimizado beta = 1; %se possível será otimizado result = LMP(img, neighborSize, bin, beta); %tira o histograma

LMP de cada rosto

end end

36

37

Apêndice B – Códigos em MATLAB (LMP) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LMP - Local Mapped Pattern % % Input arguments: % img - Gray scale image. % neighborSize - number of sample point in an square window. % beta - sigmoid function parameter. % bin - number of histogram bins % function result = LMP(img, neighborSize, bin, beta)

% Argumentos de inicialização figure, subplot(1,2,1), imshow(img); img = rgb2gray(img); imshow(img)

%Programa LPM if neighborSize < 3 || floor(neighborSize/2) == 0 error('A vizinhança deve ser um número ímpar maior ou igual a

3!'); end;

img = double(img); img = img(:,:,1);

% Tamanho da imagem original [ysize xsize] = size(img);

if(xsize < neighborSize || ysize < neighborSize) error('Imagem muito pequena. Deve ter pelo menos o tamanho da

janela.'); end

weightMatrix = [1 1 1; 1 1 1; 1 1 1]; % weightMatrix = [1 1 1; 1 0 1; 1 1 1];

border = fix(neighborSize/2); dataMatrix = img(2*border : ysize - border, 2*border : xsize -

border);

[matrixSizeY matrixSizeX] = size(dataMatrix); pertinenceSum = zeros(matrixSizeY, matrixSizeX); weightSum = 0;

for i = 1 : neighborSize for j = 1 : neighborSize weight = weightMatrix(i, j);

windowData = img(i : (i+matrixSizeY) - 1, j : (j+matrixSizeX)

- 1);

expData = windowData - dataMatrix; map = 1./(1 + exp(-expData/beta));

38

mapSum = pertinenceSum + (map * weight); weightSum = weightSum + weight; end end

result = round(mapSum / weightSum * bin); result = uint8(result); subplot(1,2,2), imhist(result);hold end

39

Apêndice C – Códigos em MATLAB (Qui-Quadrado) function MCS = sampleClassificationModified(B,NI,NI2,IHL,IHL2)

% B = bins dos histograma, % NI = número de imagens do conjunto alvo % NI2 = número de imagens do conjunto busca % IHL = vetores de caracteríticas do conjunto alvo % IHL2 = vetores de características do conjunto busca

HistComp = zeros(1, B); HistRef = zeros(1, B); ChiSquare = zeros(1, NI); MatrixChiSquare = zeros(length(NI), NI);

for r = 1 : NI2 HistRef = IHL2{r};

% Comparação da Sample de referência com as demais Samples da base

de dados for p = 1 : NI HistComp = IHL{p};

subMatrix = HistComp - HistRef; subMatrix2 = subMatrix .^2; addMatrix = HistComp + HistRef;

idxZero = find(addMatrix == 0); addMatrix(idxZero) = 1;

DistMat = subMatrix2./addMatrix; DV = sum(DistMat,2);

ChiSquare(p) = DV; %armazena os valores chi-quadrado end

MCS(r, :) = ChiSquare'; end end

40

41

Apêndice D – Códigos em MATLAB (Main for) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Rafael Taniwaki 2016 % % Escola de Engenharia de São Carlos - EESC USP % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear all clc

Img = imread('p1.jpg'); [result] = Viola_Jones_img(Img); N1 = histcounts(result);

Img = imread('p1.jpg'); [result] = Viola_Jones_img(Img); N2 = histcounts(result);

Img = imread('p2.jpg'); [result] = Viola_Jones_img(Img); N3 = histcounts(result);

Img = imread('p3.jpg'); [result] = Viola_Jones_img(Img); N4 = histcounts(result);

Img = imread('p4.jpg'); [result] = Viola_Jones_img(Img); N5 = histcounts(result);

[m n] = size(N1); N12 = 0; N13 = 0; N14 = 0; N15 = 0; for a = 1:1:m for b = 1:1:n if N1(a,b) ~= 0 & N2(a,b) ~= 0 N12=N12+((N2(a,b)-N1(a,b))^2)/(N1(a,b)+N2(a,b)); end if N1(a,b) ~= 0 & N3(a,b) ~= 0 N13=N13+((N3(a,b)-N1(a,b))^2)/(N1(a,b)+N3(a,b)); end if N1(a,b) ~= 0 & N4(a,b) ~= 0 N14=N14+((N4(a,b)-N1(a,b))^2)/(N1(a,b)+N4(a,b)); end if N1(a,b) ~= 0 & N5(a,b) ~= 0 N15=N15+((N5(a,b)-N1(a,b))^2)/(N1(a,b)+N5(a,b)); end end end N12 = N12/2 N13 = N13/2 N14 = N14/2 N15 = N15/2

42

43

Apêndice E – Códigos em MATLAB (Main) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Rafael Taniwaki 2016 % % Escola de Engenharia de São Carlos - EESC USP % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear all clc %% Parâmetros para o SCM B = 256; NI = 4; NI2 = 10;

%% Número do conjunto de imagens a serem analisadas (pn, pni, pnm,

pns) n = 1;

%% Chamada das funções destinadas a leitura das imagens de teste e de

base [IHL] = IMG_TESTE(n); [IHL2] = IMG_BASE(NI2);

%% Chamada do SCM para cálculo do X² MCS = sampleClassificationModified(B,NI,NI2,IHL,IHL2); MCS = MCS/2

Função - Leitura das Imagens Base function [IHL2] = IMG_BASE(NI2)

for i = 1:1:NI2 nome{i} = ['p',num2str(i),'.jpg']; Img = imread(nome{i}); [result] = Viola_Jones_img(Img); IHL2{i} = histcounts(result); end end

Função - Leitura das Imagens Teste function [IHL] = IMG_TESTE(n)

nome{1} = ['p',num2str(n),'.jpg']; nome{2} = ['p',num2str(n),'i.jpg']; nome{3} = ['p',num2str(n),'m.jpg']; nome{4} = ['p',num2str(n),'s.jpg']; for i = 1:1:4 Img = imread(nome{i}); [result] = Viola_Jones_img(Img); IHL{i} = histcounts(result); end end