Monografia da Iniciação Científica
Estudos de Métodos de Visão Computacional para Reconhecimento de Pessoas
MAC 499 - Trabalho de Formatura - 2000
Aluno: Fábio Pará D' Incecco
Número USP: 3021187
Orientador: Prof. Dr. Roberto Marcondes Cesar Junior
Esta monografia é o resultado da Iniciação Científica desenvolvida por Fábio Pará D' Incecco sob orientação do Prof. Dr. Roberto Marcondes Cesar Junior, entitulada "Estudos de Métodos de Visão Computacional para Reconhecimento de Pessoas".
Os capítulos que constituem essa monografia foram retirados principalmente dos relatórios desta Iniciação Científica que foram enviados à Fapesp referentes aos períodos de 1 de julho de 1999 a 1 de dezembro de 1999 e 1 de dezembro de 1999 a 10 de junho de 2000.
O penúltimo capítulo consiste em fornecer
melhoras que poderiam ser realizadas nos algoritmos que foram desenvolvidos
durante o projeto e o último capítulo destaca alguns artigos
relacionados à reconhecimento de faces que abordam outras técnicas
para prover solução ao problema.
Resumo do plano inicial
O plano inicial para esse projeto consiste em estudar
algoritmos necessários para o reconhecimento de pessoas através
de técnicas de visão computacional. O desenvolvimento desse
projeto de iniciação científica deverá introduzir
o aluno às principais abordagens desenvolvidas para o reconhecimento
de pessoas por computador. O desenvolvimento do presente projeto deverá
ainda incluir a implementação de determinados algoritmos
a serem estudados, o que deverá ser feito em uma linguagem de programação
(como C), ou ainda em scripts do MatLab, para que possam ser analisados
em situações reais.
Capítulo 1
Resumo do Capítulo
Neste relatório estão descritos os trabalhos
que se realizaram no período inicial da concessão da bolsa
de Iniciação Científica, caracterizados pelo estudo
de artigos relacionados a detecção de faces em imagens, além
da implementação de um algoritmo que detecte faces. Esta
implementação ainda está em desenvolvimento, buscando
melhorar a técnica utilizada, e tornando mais robusto o processo
de extração de características importantes da face
(olhos, nariz e boca). Comentam-se também problemas que o algoritmo
precisa tratar e alguns detalhes de implementação. Para finalizar,
comentamos as estratégias futuras a serem usadas, além das
participações do bolsista em eventos realizados na Universidade
de São Paulo.
1. INTRODUÇÃOO objetivo deste capítulo é mostrar como progrediu a primeira fase do projeto de estudos de métodos de visão computacional para reconhecimento de pessoas, feito pelo bolsista Fábio Pará D' Incecco e orientado pelo Prof. Dr. Roberto Marcondes Cesar Junior.
Relembramos que o projeto consiste em estudar algoritmos
necessários para o reconhecimento de pessoas através de técnicas
de visão computacional. Além disso, pretende-se implementar
alguns destes em MatLab ou em linguagem C.
2. DESENVOLVIMENTO DA 1ª FASE DO PROJETOO decorrer da 1ª fase do projeto incluiu além do estudo de artigos sobre o reconhecimento de faces, a elaboração de um algoritmo capaz de detectar e extrair as regiões compreendidas pelos olhos, nariz e boca em uma base de imagens determinada a priori. Também foram estudados alguns artigos sobre a detecção de faces mais específicos para o desenvolvimento e aprimoramento das técnicas usadas na implementação do algoritmo em MatLab.
2.1 DETECÇÃO DE BORDAS
No início, o nosso objetivo era analisar as bordas de uma imagem através de algoritmos que consigam detectá-las. Foi implementado o algoritmo de detecção de bordas pelo método de Canny, por ser um dos algoritmos mais clássicos utilizados em toda a área de pesquisa de Processamento de Imagens [5].
A implementação foi feita em MatLab por ser uma linguagem que possui maior facilidade para o manuseio de matrizes, muito usadas para tratamento com imagens. O algoritmo como entrada um arquivo em tons de cinza e procura por posições nessa imagem que possam identificar possíveis bordas. Após esse processo, os pontos identificados são investigados para confirmar se realmente pertencem a bordas de objetos da imagem ou não. O resultado é uma outra imagem, constando apenas das bordas que o algoritmo considera como válidas.
Um outro algoritmo, já implementado como função primitiva do MatLab, foi usado para comparar o resultado da detecção de bordas. Trata-se do método de detecção de bordas de Sobel [8 e 9], também utilizado em larga escala. Contudo, uma vantagem que o método de Canny possui sobre este é que consegue identificar maior quantidade de bordas mais consistentes e de espessura de um pixel em uma imagem.
Abaixo encontra-se um exemplo da aplicação dos métodos de Sobel e de Canny a uma mesma imagem. Nota-se que o de Canny consegue não só detectar mais bordas, mas também mais detalhes da imagem. Entretanto, um estudo mais aprofundado da influência dos parâmetros no resultado final ainda precisa ser considerado.
Imagem original
Método de Canny
Método de Sobel
Figura 1
Contudo, percebemos que para a tarefa de detecção
de olhos, nariz e boca, o método de Canny possui a desvantagem de
obter bordas além das estritamente necessárias para a extração
das características das regiões que queríamos analisar.
É bom lembrarmos aqui que, para o processo de reconhecimento de
faces através da análise das bordas, o principal objetivo
não é encontrarmos o maior número possível
de contornos, mas sim os melhores e que contenham a informação
mais importante para o nosso estudo. No nosso caso, seriam as linhas que
formam os olhos, o contorno da base do nariz e os dos lábios.
Levando esse objetivo em consideração, tivemos que optar por um detector de bordas com menor grau de complexidade, que pudesse retornar apenas bordas mais significativas para a análise. Decidimos escolher o detector de bordas de Sobel, com uma especialização, que consiste em detectar apenas as bordas horizontais na imagem, pois as regiões que trabalhamos caracterizam-se basicamente pela existência de bordas horizontais. Assume-se faces frontais e verticais. Finalmente, o detector de Sobel é muito mais barato computacionalmente.
Na Figura 2, comparamos o resultado de três detectores
de bordas: Canny, Sobel e Roberts. Este último é indicado
para analisar bordas que estejam em ângulos de 45º
, o que não convém para o nosso trabalho. Mas o principal
objetivo é mostrar um problema que ocorre em detecção
de faces, que é a presença de barba na face analisada, pois
essa causa uma detecção de muitas pequenas bordas (quase
pontos minúsculos). O que para o nosso trabalho podem ser caracterizados
como ruído na imagem, uma vez que estes pontos próximos à
boca podem implicar que o nosso algoritmo simplesmente considere-os como
parte da região analisada.
Figura 2:
Imagem original e os resultados obtidos pelos detectores
de Canny, Sobel e Roberts, respectivamente.
Podemos notar claramente que, na imagem original, a pessoa
possui um pouco de barba e bigode. Analisando o resultado obtido através
do detector de Canny, é possível identificar muito precisamente
que a barba foi capturada quase que completamente e um pouco do bigode
também. Já nos detectores de Sobel e Roberts, toda informação
sobre a barba e o bigode foram eliminados, além disso, as regiões
que queremos analisar estão bem determinadas. Com uma imagem como
a que obtemos como resultado com Sobel, o processo de analisar a imagem
inteira, buscando pontos que nos interesse, torna-se mais rápido,
pois é extremamente visível a olho nu que nas regiões
importantes para nós, a imagem obtida por Sobel tem muito pouco
ruído.
2.2 DETECÇÃO DE OLHOS, NARIZ E BOCA
Retomando o algoritmo que estamos desenvolvendo e já implementamos, mesmo que com solução muito restrita, estamos seguindo uma abordagem que foi comprovada através e estudos psicológicos. O mecanismo de visão do ser humano ao observar uma face, concentra sua atenção na região dos olhos, nariz e boca, olhando muito pouco para as outras regiões da face. A figura 3 abaixo ilustra esse teste. A esse processo que nosso mecanismo de visão possui de escolher regiões específica para analisar, dá-se o nome de atenção seletiva.[10]
(a)
(b)
Figura 3:
Na imagem (a) vemos uma imagem original com uma face,
enquanto na imagem (b) vemos uma demonstração do processo
de atenção seletiva humano aplicado a mesma face.
O que nosso algoritmo tenta fazer é encontrar e extrair os olhos, o nariz e a boca em uma imagem inteira com uma única face. Essa limitação deve-se ao problema de detecção de face ser complexo, dependente muito não só da orientação da face na imagem, mas também a fatores externos como iluminação. Também detalhes que possam existir numa imagem, como por exemplo, bigode, barba, brincos, cicatrizes e marcas de nascença, entre outros, podem causar um erro na detecção.
A idéia básica por trás do algoritmo é tomar o mapa de bordas como um espaço de características ("feature space"). Assim, algoritmos de análise de agrupamentos ("clustering") podem ser aplicados. No nosso caso, aplicamos o algoritmo das K-médias[8].
Para formarmos as regiões onde provavelmente se encontram os olhos, nariz e boca, determinamos 4 pontos iniciais próximos à essas regiões na imagem. A partir daí, para cada ponto da imagem obtida pelo detector de Sobel, verificamos qual a distância euclidiana entre o ponto analisado até cada um dos pontos iniciais. Se esta distância calculada for menor que um certo erro, que na verdade é um número que foi inferido com base nas próprias imagens de teste, o ponto pode ser classificado para uma determinada região, ou não pertencer a nenhuma destas. É válido comentar que após um ponto ser classificado como pertencente a uma região, este não é reclassificado, ou seja, um mesmo ponto não consta de duas regiões ao mesmo tempo.
Ao terminarmos de analisar todos os pontos da imagem,
temos classificados apenas aqueles que passaram pelo nosso critério
de seleção, podemos retornar a imagem original e extrair
as regiões formadas por estes pontos. Nas imagens 5, 6 e 7, podem-se
ver esses passos. Na figura 4 encontra-se o algoritmo geral das K-médias:
inicializa m1, m2, m3 e m4. // m1,m2,m3 e m4 são os pontos iniciais
enquanto m1, m2, m3 ou m4 forem alteradas faça {
classifique todos os pontos de acordo com m1, m2, m3 e m4;
// baseado em distância euclidiana
recalcule m1, m2, m3 e m4 de acordo com os clusters da
classificação do passo anterior;
}
Figura 4: Algoritmo das K-médias
Figura 5:
Nesta imagem temos os pontos que foram classificados
nas regiões de olho esquerdo, olho direito, nariz e boca. Note que
na região entre a boca e o nariz, pontos dos lábios foram
classificados como pertencentes ao nariz incorretamente.
Figura 6:
Agora nesta imagem, determinamos os pontos mínimos
e os máximos de cada região. Com os pontos determinados,
traçamos retas verticais e horizontais, em formato de cruz, para
evidenciá-los.
Figura 7:
As regiões que recuperamos na imagem original,
partindo dos pontos que foram classificados como pertencentes às
regiões de interesse.
Ainda nas regiões que são importantes para
nosso estudo, ocorre classificação incorreta dos pontos da
boca como pertencentes ao nariz, mas não em todas as faces testadas.
A base de imagens que usamos até o presente momento consta de 122
faces de homens e mulheres com idades diferenciadas e expressões
faciais diferentes. Nesse conjunto de imagens, não estamos testando
o algoritmo com pessoas muito barbadas ou com óculos. Esse é
um passo que, dependendo do andamento futuro do projeto, poderá
também entrar no estudo.
3. PERSPECTIVAS PARA O FUTURO DO PROJETO
Atualmente, estamos modificando o algoritmo para trabalhar com a idéia de "forma dos agrupamentos", que segue o mesmo princípio de classificação através da distância entre pontos, mas incorpora também a possibilidade do ponto inicial mudar de valor ao decorrer de passos de iteração de todos os pontos. Ou seja, em um primeiro passo, os pontos iniciais são exatamente aqueles que definimos antes do início do processo. Classificamos todos os pontos e recalculamos a nova posição dos 4 pontos iniciais. Depois disso, classificamos novamente todos os pontos da imagem, de acordo com a medida de distância até os novos pontos calculados. Para essa etapa de modificação do algoritmo, estamos baseando os estudos em [6], mais especificamente no capítulo que trata sobre análise de agrupamentos e em [7], pois este artigo, apesar de não usar propriamente a idéia de cluster, usa uma estratégia que se assemelha ao processo algoritmo que usamos.
Também será posto como objetivo da 2ª fase do projeto o estudo de novos métodos e artigos sobre reconhecimento de faces, especialmente outros tipos de abordagens para a solução de problemas relacionados a detecção de pessoas.
Outro ponto que será explorado é desvincular
o algoritmo da base de imagens de teste, tornando-o assim mais flexível,
e podendo ser usado com diferentes tipos de imagens. Além disso,
problemas descritos acima como detecção de faces em pessoas
com barba ou com óculos serão levados em conta.
4. PARTICIPAÇÃO EM EVENTOS
Nessa seção serão comentadas a participação do bolsista em dois eventos que se realizaram na Universidade de São Paulo, durante essa fase do projeto.
O primeiro evento ocorreu nos dias 18 e 19 de agosto último, no XV Colóquio de Iniciação Científica do Instituto de Matemática e Estatística. Mais especificamente, a apresentação do trabalho ocorreu no dia 19, através de um seminário com duração de 15 minutos, usando transparências que abordavam além da proposta do projeto, um resumo da área de Visão Computacional, objetivando introduzir alguns conceitos que seriam explorados ao explicar as técnicas usadas neste trabalho, (por exemplo, a detecção de bordas).
O segundo evento foi o 7º Simpósio de Iniciação Científica da USP (e 1º Simpósio Internacional de Iniciação Científica da USP), realizado entre os dias 8 e 12 de novembro último no Galpão de Eventos da Escola Politécnica da USP. Para a área de Exatas e Engenharias, na qual o projeto se inclui, os dias do evento foram 8, 9 e 10, sendo que a apresentação do projeto realizou-se no dia 9 das 8:00h às 12:00h, consistindo da montagem de um cartaz e explicação às pessoas que se interessavam sobre o problema que estamos abordando, seus problemas e dificuldades a serem superadas.
Em anexo a este relatório encontram-se cópias
xerográficas dos dois certificados que o bolsista obteve com a participação
nos eventos acima citados.