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

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

.

Dando continuidade à nossa série de artigos, nesse explicarei sobre a teoria envolvida no rastreamento das faces em um vídeo e também sobre a aplicação dessa teoria no projeto.

.

Teoria envolvida

Durante essa etapa do projeto, foi desenvolvida a parte do sistema responsável por rastrear as faces previamente identificadas pelo detector. Para isso, foi utilizado o algoritmo CamShift [1].

O algoritmo do Camshift (Continuously Adaptive Mean Shift) [1] é uma modificação do algoritmo Mean Shift e foi inicialmente criado como uma das partes de um grande projeto que tinha a intenção de melhorar a maneira com que os seres humanos interagem com interfaces gráficas. Por exemplo, em jogos ou na visualizações de objetos 3D, em que o movimento da cabeça do usuário se transforma na movimentação do personagem em um jogo ou a visualização do objeto 3D dessa nova posição.

Bradski argumenta que para um sistema desse tipo ser útil, ele deve ser extremamente eficiente em termos computacionais. Isso se deve já que o rastreador não será o único processo consumindo processamento da CPU, ao contrário, ele será um acessório e deverá permitir que o programa principal, no qual ele enriquece seu funcionamento, possa ocupar uma fatia adequada da CPU. Assim, esse algoritmo foi desenvolvido respeitando esse requisito e também sendo possível utilizá-lo com câmeras de baixo custo e sem a necessidade de calibração.

O algoritmo do Mean Shift foi criado para encontrar picos em uma distribuição de probabilidade. Como a distribuição de probabilidade de um objeto em uma cena de vídeo pode mudar e se mover dinamicamente com o decorrer do tempo, Bradski em [1] modificou tal algoritmo para que este fosse robusto a tais alterações, portanto o Camshift é capaz de seguir uma distribuição de probabilidade que se altere dinamicamente. Além disso, o método é baseado em um histograma para produzir a distribuição de probabilidade de um objeto.

Esse método possui quatro passos básicos para sua execução. O primeiro deles é a criação de um instrumento que permita a representação do objeto a ser seguido, que no caso desse projeto é uma face. Para isso, cria-se um histograma das cores que represente essa face.

O segundo passo é composto pelo cálculo da probabilidade de cada pixel de um quadro do vídeo ser uma face. Após a criação do histograma que é feita no início do processo, o cálculo da probabilidade para os quadros seguintes será baseado nessa distribuição de cores. Pode-se entender esse processo através da observação da figura didática 1 retirada de [2]. Nela é possível observar a criação de uma barra para representar todas as cores presentes no histograma da face. Essa barra é construída empilhando-se todas as barras que representam a quantidade em que uma determinada cor está presente no histograma. Então, utilizando como exemplo a cor representada pela barra mais a direita do histograma, pode-se entender que esta cor corresponde a aproximadamente quarenta e cinco porcento de todas as cores presentes em uma face, ou seja, a probabilidade de um pixel selecionado radomicamente dessa região cair na porção correspondente a essa cor é de quarenta e cinco porcento. Assim, para um pixel qualquer presente no quadro e que possua essa mesma cor, a probabilidade dele corresponder a um pixel da face rastreada é de quarenta e cinco porcento.

Figura 1 - Figura didática com um histograma a esquerda e uma barra a direita que representa todas as cores presentes no histograma do objeto a ser rastreado

O terceiro, é responsável por atualizar a localização da marcação da região do quadro do vídeo em que a face está presente. Para isso, a cada novo quadro, e com a probabilidade de cada pixel ser de uma face calculada, o algoritmo é capaz de perceber tais regiões com grande concentração de altas probabilidades e mover a posição da marcação para o centro dessa nova região.

Na última etapa ocorre o cálculo do tamanho e o ângulo da face para cada mudança na marcação da região correspondente à face. Isso é realizado analisando a escala e a orientação que melhor se adequa aos pixels da região de alta probabilidade da nova região marcada como face. Essa etapa é exclusiva do Camshift se comparado com o Mean Shift, sendo uma das diferenças que são notáveis quando se observa o resultado do rastreamento.

.

Aplicação no projeto

Com a implementação do Camshift no projeto, essa parte do sistema é capaz de rastrear múltiplas faces em um vídeo. Portanto, após uma face ter sido detectada pelo algoritmo de Vila e Jones, o que atualiza sua posição de acordo com sua movimentação é o CamShift. Após a implementação, o método mostrou bons resultados tanto para uma face quanto pra múltiplas faces. Porém, alguns ajustes foram necessários para o melhor funcionamento do sistema.

Foram criadas algumas regras para determinar se o retângulo que demarcava uma face na imagem realmente correspondia a uma face. Para contornar os casos em que uma face saía da imagem, como uma pessoa virando de costas ou saindo da visão da câmera, foi criada uma regra que excluía, para o rastreamento nos quadros seguintes, retângulos menores que vinte pixels em largura e em altura. Também foram criadas regras para excluir retângulos com proporções esticadas de mais na vertical e na horizontal, além da exclusão de um de dois retângulos, caso eles estivessem na mesma posição. Abaixo, na figura 2, pode-se observar o exemplo do caso de uma pessoa virando de costas.

Figura 2 - Exemplo da atuação do rastreamento realizado pelo Camshift. Mesmo com o personagem virando de costas o método mostra-se capaz de seguir a região facial do ator. Quando o personagem estiver totalmente de costas, uma das regras descritas acima atuará e retirará a marcação do vídeo.

Essas regras também contribuem pra o primeiro tratamento que o sistema faz para as faces falso positivas. Já que, quase a totalidade de faces falso positivas possuem, após a análise do CamShift, um retângulo de marcação

muito pequeno ou então esticado de forma a não caracterizar uma face. Assim, essas faces são filtradas pelas regras criadas. Depois dessa etapa do sistema ter sido implementada, é possível perceber que o sistema tornou-se mais robusto como um todo devido a melhor qualidade da detecção das faces, tanto em seu posicionamento pela imagem ao longo dos quadros do vídeo quanto pela quantidade de falsos positivos. Pode-se observar, nas figuras 3 e 4, alguns casos que demonstram a melhoria do sistema.

Figura 3: Inicialmente o personagem olhava para frente, o que gerou uma detecção pelo método de Vila e Jones utilizando um filtro em cascata para faces frontais. Em seguida, ele vira sua face de lado e, com a atuação do rastreamento, a face não é perdida.

Figura 4: Neste caso, pode-se observar uma face rotacionada que ainda está sendo identificada pelo sistema, pois, em algum momento anterior, o ator teve sua face posicionada verticalmente.

Vale ainda acrescentar, que foram notados dois problemas com o rastreamento usando o CamShift. Como seu funcionamento é baseado em cores, o retângulo de marcação da face, em determinados casos específicos, acaba se tornando maior do que o esperado, pois também englobava regiões como a do pescoço ou até mesmo o início do tórax se a roupa da pessoa exibisse essa região. O outro ponto ocorre para situações em que duas faces diferentes estão lado a lado. Nesse caso, as regiões de cada uma das faces se perdiam e invadiam a área da face adjacente.

.

Referências

[1] G. R. Bradski. Real time face and object tracking as a component of a perceptual user interface. In Proceedings of the Fourth IEEE Workshop on Applications of Computer Vision (WACV98), 1998.

[2] Robin Hewitt. Seeing with opencv – part3 – Follow that face, SERVO, 2007.

(http://www.cognotics.com/opencv/servo_2007_series/index.html)

.

.

Artigos da série:

Próximo: Como classificar faces?

Anterior: Como detectar faces em vídeos?

.

VN:F [1.9.11_1134]
Rating: 5.0/5 (1 vote cast)
Detecção e rastreamento de faces em vídeos - Como rastrear faces em vídeos?, 5.0 out of 5 based on 1 rating
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 rastrear faces em vídeos?”

  1. Olá!

    Gostaria de convidar os colegas a participarem do mais novo Fórum de Engenharia, o EngenhariaCompartilhada.com

    A idéia é reunir Estudantes e Profissionais das mais diversas especialidades da Engenharia em um só lugar.

    http://www.engenhariacompartilhada.com

    Venha fazer parte desse projeto! Basta Registrar-se e começar a postar!

    Abraço
    Engº Thiago Pinheiro

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #431
  2. Alexandre

    Prezado Felipe,

    Estou desenvolvendo um trabalho em área correlata e tenho uma proposta de negócios a respeito. Entre em contato no email anexo, abraços.

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

Deixe um Comentário

Spam Protection by WP-SpamFree

Get Adobe Flash playerPlugin by wpburn.com wordpress themes