Detecção e rastreamento de faces em vídeos – Como classificar faces?

VN:RO [1.9.11_1134]
segunda-feira, 7 d março d 2011
Por Filipe M. S. de Campos, Coop10. Siga no Twitter

Finalizando a nossa série de artigos, indicarei textos sobre a teoria responsável pela etapa de classificação das faces e também a aplicação dela no projeto de iniciação científica. .

.

Teoria envolvida

Para a última etapa do projeto, foi necessário conhecer e organizar todas as faces pelos momentos em que elas aparecem nas tomadas do vídeo e a que pessoas elas correspondem. Para isso, foram utilizados alguns conceitos e teorias já apresentados nos artigos anteriores da série, mas também outros tópicos ainda não estudados. Para todos os assuntos, serão listadas fontes interessantes para estudo.

Detecção de características faciais (olhos, nariz, boca):

Técnica de Viola e Jones com as cascatas adequados para cada característica facial. Mais detalhes sobre essa técnica em Detecção e rastreamento de faces em vídeos – Como detectar faces em vídeos?.

Transformação Afim:

Link da Wikipedia sobre transformação afim Link da Wikipedia sobre a matriz de transformação Como realizar transformação afim utilizando o OpenCV Link interessante para um projeto da Universidade do Porto que trata de mosaico de imagens. Com a leitura, além de aprender sobre transformação afim e correlação, você entenderá outra possibilidade de uso desse tipo de transformação e também outras teorias envolvidas para a realização desse projeto.

Correlação:

Fast Normalized Cross-Correlation Como realizar Template Matching utilizando o OpenCV Código exemplo sobre Template Matching utilizando OpenCV

Kmeans:

Link da Wikipedia sobre Kmeans Link explicando sobre Kmeans Link para uma explicação curta e um exemplo Slides explicativos sobre o Kmeans

.

Aplicação no projeto

A ideia central dessa etapa era preparar os dados para a criação da estrutura de indexação a ser utilizada pelo hipervídeo. Para isso, inicialmente, seriam identificadas as expressões faciais para a face de cada pessoa presente em uma tomada. O objetivo era guardar a face mais frontal possível e também os pontos necessários para a transformação afim que ocorre como passo seguinte. Com essa transformação afim e a aplicação da máscara, preparávamos as faces pela criação de um padrão para que elas pudessem ser comparadas através de um método simples como o de correlação. Com o valor da correlação entre as faces calculado, utilizava-se o Kmeans para criar grupos de faces semelhantes, o que corresponderiam a faces de uma mesma pessoa. Os parágrafos abaixo explicarão com mais detalhes essas etapas. Primeiramente, foi adicionado ao sistema uma funcionalidade que permitia extrair de todo quadro do vídeo apenas a imagem de cada face existente. Com a imagem da face; olhos, nariz e boca eram identificados usando o algoritmo de Viola e Jones com um filtro de Haar em cascata adequado para cada caso. Para diminuir a quantidade de falsos positivos para essas características faciais, foram criadas regiões de interesse para cada uma delas e o método citado era aplicado apenas nessas regiões. A partir do retângulo correspondente aos olhos e ao nariz, eram extraídas as coordenadas do centro dessas características. Na figura 1 pode-se observar as características faciais detectadas.

Figura 1 - Pode-se observar o centro encontrado para o nariz, olhos e boca.

Além de útil para a próxima etapa, uma face que contém dois olhos e um nariz, é uma face ”mais frontal” do que uma que não as contém, o que é muito mais interessante para o projeto. Assim, para cada quadro do vídeo, se a imagem da face não possuísse dois olhos e um nariz, tentava-se fazer uma troca pela imagem da face do próximo quadro, contanto que nessa fossem identificadas mais características faciais. Com esse procedimento, o sistema tenta obter a melhor face possível para cada pessoa em uma tomada. O próximo passo foi, utilizando os centros encontrados anteriormente, realizar uma transformação afim da face encontrada para uma face padrão em tons de cinza. Essa tinha um tamanho pré definido (64 pixels de altura e 48 de largura) e também uma posição padrão para os olhos e o nariz (olho esquerdo: (34,26); olho direito: (15,26); nariz: (24,39) ) que foi definida a partir de medições em diversas faces e baseado em proporções faciais encontradas em [1]. Com esse procedimento, tentamos eliminar problemas de translação e rotação de uma face para outra antes da etapa de correlação. Na tentativa de eliminar problemas de iluminação, foi feita uma equalização do histograma. Depois da transformação afim, também era aplicada uma máscara à imagem. Essa máscara permite comparar somente a região dos olhos e do nariz, excluindo regiões inadequadas como a boca e os cantos da imagem já que essas regiões sofrem frequentes modificações inclusive para uma mesma pessoa, o que atrapalharia o processo de cálculo da correlação com o objetivo de encontrar faces de uma mesma pessoa. Na figura 2 observa-se o processo descrito acima para trâs casos.

Figura 2: A figura apresenta, na coluna da esquerda, a face após a transformação afim e equalização do histograma. Ao centro a máscara aplicada à imagem e na coluna da direita o resultado para a aplicação da máscara.

Até esse ponto, os problemas principais estavam relacionados a encontrar os olhos e o nariz nas faces. Nem sempre conseguíamos faces frontais em uma tomada, pois, ou ela realmente não era frontal, ou o detetor falhava, tanto não encontrando a característica desejada quanto devolvendo um falso positivo. O ajuste para esse tipo de detecção se mostrou um trabalho minucioso e longo. Em seguida, deu-se início à próxima etapa. Ela consistiu em calcular a correlação entre todas as imagens e com esses dados, montar uma matriz. Essa matriz era passada para o Kmeans, que separava as faces em grupos, sendo que cada um desses grupos possui faces de uma mesma pessoa que apareceu em diversas tomadas do vídeo. Durante essa parte do projeto, também foi projetado o segundo passo para a retirada de falsos positivos. O processo de correlação já implementado também foi utilizado para calcular a correlação entre a face candidata encontrada no vídeo e uma face padrão ideal composta por uma média de faces humanas. Se o valor resultante for acima de um limiar de alto valor, o candidato é aceito como face, caso contrário, é descartado por se tratar de um falso positivo.

.

É isso aí pessoal, encerra-se aqui essa série de quatro artigos sobre detecção e rastreamento facial dentro do contexto da criação de um hipervídeo. Espero que tenham aproveitado.

.

Referências

[1] R. M. Bertollo, D. L. da Silva, L. Oliveira, R. D. Bergoli, and M. G. de Oliveira. Avaliacao da harmonia facial em relacao as proporcoes divinas de fibonacci. Revista Portuguesa de Estomatologia, Medicina Dentaria e Cirurgia Maxilofacial, 49(N4), 2008. . .

.

.

Artigos da série:

Anterior: Como rastrear faces em vídeos?

.

VN:F [1.9.11_1134]
Rating: 0.0/5 (0 votes cast)
Related Posts with Thumbnails

Filipe Morgado Simões de Campos
Filipe Morgado Simões de Campos

Mestrando em Ciência da Computação no tema de Visão Computacional e formado em Engenharia de Computação (2010). Atualmente, além de ser um dos administradores do Bit a Bit, alia seu mestrado ao empreendedorismo. Ainda, foi cofundador do Amo DinDin (2007) e desenvolveu parceria e produtos de busca com o BuscaPé, sendo um dos idealizadores do Pé Direito (2009).

Tags: , , , , , , , , , , , , , , , , ,

2 Comentários para “Detecção e rastreamento de faces em vídeos – Como classificar faces?”

  1. Adelina

    Filipe, gostei do artigo e tenho uma pergunta. Em infografias que usam 3 x 4 de pessoas,parece que todas tiraram a foto do mesmo jeito. O procedimento é mais ou menos o da medição e colocação que parece ter a mesma proporção?
    Muito obrigada,
    Adelina

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #674

Deixe um Comentário

Spam Protection by WP-SpamFree

Get Adobe Flash playerPlugin by wpburn.com wordpress themes