Optimization of a face detection algorithm for real-time mobile phone applications - Schwambach Costa, Vítor (2009)
Desde equipamentos de vigillância por vídeo a câmeras digitais e telefones celulares, a detecção de rostos e uma funcionalidade que esta rapidamente ganhando peso no projeto de interfaces de usuario mais inteligentes e tornando a interação homem-maquina cada vez mais natural e intuitiva. Com isto em mente, fabricantes de chips estão embarcando esta tecnologia na sua nova geração de processadores de sinal de imagem (ISP) desenvolvidos especificamente para uso em aparelhos celulares. O foco deste trabalho foi analisar um algoritmo para detecção de rostos para suportar a definição da arquitetura mais adequada a ser usada na solução final. Um algoritmo inicial baseado na tecnica de Cascata de Caracteristicas Simples foi usado como base para este trabalho. O algoritmo inicial, como especificado, leva quase quarenta segundos para processar um unico quadro de imagem no processador alvo, tempo este que inviabilizaria o uso desta solução. Focando na implementação de um novo ISP, o algoritmo foi completamente reescrito, otimizado e propriamente mapeado na plataforma alvo, ao ponto onde um fator de aceleração de 167x foi atingido e uma imagem de pior caso agora leva menos de 250 milissegundos para ser processada. Este numero e ainda mais baixo se for considerada a media em um conjunto maior de imagens ou um vídeo, caindo para cerca de 100 milissegundos por quadro de imagem processado. Não obstante, performance não foi o unico alvo, tambem a quantidade de memoria necessaria foi dramaticamente reduzida. Isto tem um impacto direto na area de silicio requerida pelo circuito e conseq uentemente menores custos de producao e consumo de potência, fatores criticos em um sistema para aplicações moveis. E importante ressaltar que a qualidade não foi deixada de lado e em todas as otimizações realizadas, tomou-se o cuidado de verificar que a qualidade de detecção não tinha sido impactada. Este documento apresenta a pesquisa feita e os resultados obtidos. Começa por uma breve introdução ao assunto de Visão Computacional e aos desafios de projetar uma solução de detecção de rostos. Apos esta introdução, o algoritmo que serviu como base para este trabalho e apresentado juntamente com as otimizações mais relevantes ao nivel algoritmico para melhorar a performance. Na sequência, instruções customizadas desenvolvidas para acelerar a execução do algoritmo na solução final são apresentadas e discutidas