URL
Transcrição
URL
Uma Melhora para Detecção de Faces Baseado no Algoritmo AdaBoost Diego A. Fernandez Merjildo , Lee Luan Ling (Orientador) Departamento de Comunicações Faculdade de Engenharia Elétrica e Computação Universidade Estadual de Campinas (Unicamp) [email protected], [email protected] Resumo – Neste artigo apresentamos uma melhora no algoritmo de detecção de faces baseado em Adaboost clássico [8] e Li et al. [2]. A fim de evitar o fenômeno de overfitting no processo de treinamento do algoritmo AdaBoost, este trabalho apresenta um método novo para atualizar a distribuição de pesos associada as amostras. Para fazer isto, dividimos a distribuição de pesos e consideramos dois limiares, um limiar das amostras negativas é utilizado para atualizar as amostras negativas e um limiar geral é utilizado para atualizar as positivas. Os resultados experimentais demonstram que a nova abordagem obtém resultados melhores e beneficia o desempenho do algoritmo. Palavras-chave: Detecção de Faces, AdaBoost, Overfitting. 1. Introdução A detecção automática de faces tem sido uma área de pesquisa de muito interesse nos últimos anos, principalmente pela necessidade urgente do reconhecimento de faces em múltiplas aplicações práticas, tais como: monitoramento de segurança, sistemas de vigilância, e sistemas de identificação biométrica [3]. Dentre os trabalhos de maior sucesso podemos salientar o realizado pelo Viola-Jones[8] o qual fez viável às aplicações no mundo real. Lienhart e Maydt [4] generalizaram o conjunto de características do Viola-Jones [8], adicionando características retangulares rotacionadas em 45 graus. Yan et al. [9] propuseram características binarias montadas localmente, mostrando uma grande performance em conjunto de dados padrão de detecção de face. Utilizaram para isso, um procedimento de gradiente descendente, AdaBoost que procura minimizar uma função de erro exponencial. O método determina que dado um conjunto de amostras xi ∈ X, i = 1...N , com etiquetas binarias yi tomando os valores de +1 ou −1, um algoritmo de boosting clássico procura uma combinação linear convexa de classificadores fracos (também chamados de classificadores base ou hipóteses fracas) tal que produza uma taxa de classificação superior aos classificadores fracos individuais. Cada iteração AdaBoost foca em classificar as instancias mal classificadas, de esta forma, o erro de generalização da combinação linear continua descendendo na medida que seu tamanho continua aumentando. AdaBoost possui um potencial elevado para gerar overfitting em presença de amostras muito ruidosas [1], [5], [7]. Com o objetivo de evitar overfitting no processo de treinamento, Li et al. [2] propuseram um método modificado para atualizar a distribuição dos pesos associado às amostras, em principio a ideia seria utilizar um limiar para cada ciclo baseado na media dos pesos, quando o peso da amostra atual seria menor que o limiar então o peso desta amostra seria incrementado, caso contrario diminuído. Neste trabalho propomos uma nova abordagem de atualização dos pesos baseada na criação de diferentes limiares dependendo da etiqueta da amostra. Na seguinte seção sera apresentado o algoritmo proposto, os resultados experimentais serão apresentados na secção 3. Finalmente as conclusões serão apresentados na secção 4. 2. Melhora no Algoritmo Adaboost A fim de evitar o fenômeno do overfitting no treinamento, o presente trabalho propõe um método modificado, o qual considera dois limiares diferentes para atualização da distribuição dos pesos das amostras . É um processo de atualização bastante simples, que segue a ideia do algoritmo clássico onde adicionamos novos parâmetros (os limiares), como se apresenta na Eq. 1. Primeiramente considera-se um limiar baseado na media das amostras negativas λneg o qual será utilizado para a atualização das negativas. Por outro lado, considera-se também, um limiar baseado na media de todas as amostras incluindo negativas e positivas λ o qual será utilizado para a atualização das positivas. Quando uma amostra é classificada corretamente então o peso associado a ela é diminuído e não são considerados os limiares. Por outro lado, quando é classificada de forma errada, podemos considerar dois casos diferentes. Caso a amostra atual seja negativa então o peso associado a ela é aumentado utilizando uma função exponencial, unicamente se o peso atual for menor ou igual ao limiar negativo. De outra forma, quando a amostra classificada de forma errada for positiva, o peso dela será aumentado utilizando uma função exponencial, unicamente se o peso associado for menor ou igual ao limiar geral λ (a media dos pesos de todas as amostras). O processo de treinamento para o Adaboost proposto será apresentado a seguir: • Dado um conjunto S = {(xi , yi ), ..., (xn , yn )}, onde yi ∈ {−1, +1}, o número de amostras positivas e negativas são p e m respectivamente. 1 . • Inicializar a distribuição de pesos W , W + = p1 , W − = m • For t = 1, ..., T 1. Normalizar a distribuição de pesos: Wt,i ← Wt,i /Σnj=1 Wt,j 2. Chamar o algoritmo de classificação fraco e escolher o melhor classificador ht : S{−1, +1} com erro minimo ǫt 1+ǫt 3. Obter αt = 12 ln 1−ǫ t 4. Obter o limiar de todas as amostras e o limiar das amostras negativas no processo iterativo: − 1 Pm 1 Pm+p λneg = m j=1 Wt,j , λ = m+p j=1 Wt,j 5. Atualizar a distribuição de pesos: Wt+1,i = Wt,i exp(−αt ) ht (xi ) = yi W exp(αt ) ht (xi ) 6= yi ∧ [Wt,i ≤ λ ⊕ Wt,i ≤ λneg ] caso contrário. t,i W t,i (1) PT • O classificador forte final é: F (x) = sign( t+1 αt ht (x)) 3. Resultados Experimentais e Analise Nesse trabalho foram utilizadas um total de 8094 amostras no treinamento, as quais variam em de idade, gênero, etnia entre outros. O banco das imagens foi criado a partir de uma coleção de imagens reunidas de diferentes banco de dados, entre os quais podemos mencionar PICS, BioID, UMIST, FEI Face Database e [6]. As imagens estão divididas da seguinte forma: 2526 amostras positivas e 5568 amostras negativas. O ambiente de teste foi uma CPU de 2.93GHz com 7935 MB de memoria, e foi implementado em C++ na plataforma Linux usando o compilador G++. A curva ROC apresentada na figura 1 demonstra o desempenho para as diferentes abordagens. Os valores da AUC (Área embaixo da Curva) para a nossa abordagem foi de 0.9975, sendo que o valor da AUC para a abordagem [2] foi de 0.9962, e o valor da AUC para a implementação clássica [8] foi de 0.9976. A Tabela 1 compara as taxas de detecção e falsos positivos da nossa abordagem com a clássica e a proposta por Li et al. [2]. A mesma tabela demonstra também que a nossa abordagem possui altas taxas de detecção e baixa taxa de falsos positivos. Tabela 1. Comparação das taxas de detecção, falsos positivos e acurácia XX XXX Parâmetros XX XXX Nro. Faces Método X Método Clássico Adaboost [2] Adaboost Proposto 500 500 500 Acertos Nro. Não Faces Falsos Positivos Acurácia 420 = 84,0% 482 = 96,4% 484 = 96,8% 2000 2000 2000 14 17 18 96,64 % 99,0 % 99,04 % 1 Correct Detection Rate 0.95 0.9 0.85 0.8 0.75 Adaboost VJ Adaboost usando Limiar AdaBoost Proposto 0.7 0.65 0 0.005 0.01 0.015 False Positive Rate 0.02 0.025 Figura 1. Curvas ROC comparando o desempenho dos classificadores para o AdaBoost clássico, AdaBoost [2] e AdaBoost proposto. 4. Conclusões Nesse artigo foi apresentado uma nova forma de tratar a atualização de pesos no algoritmo AdaBoost. Com a utilização de dois limiares diferentes verificou-se que foram obtidas melhoras no desempenho do algoritmo. Os resultados experimentais demonstraram que esse método possui uma vantagem baseado na alta taxa de detecção e na baixa taxa de falsos positivos. O valor da AUC’s (área embaixo da curva) do nosso método é maior que da abordagem [2] e não tem muita diferença comparado à abordagem clássica. Contudo, a relação entre a detecção e os falsos positivos do nosso método apresentou melhores resultados que os da abordagem clássica. Referências [1] Thomas G. Dietterich. Ensemble methods in machine learning. In Proceedings of the First International Workshop on Multiple Classifier Systems, MCS ’00, pages 1–15, London, UK, 2000. SpringerVerlag. [2] Gang Li, Yinping Xu, and Jiaying Wang. An improved adaboost face detection algorithm based on optimizing skin color model. In Natural Computation (ICNC), 2010 Sixth International Conference on, volume 4, pages 2013 –2015, aug. 2010. [3] Yingchun Li, Guangda Su, and Yan Shang. Generating optimal face image in face recognition system. In Acoustics, Speech and Signal Processing, 2007. ICASSP 2007. IEEE International Conference on, volume 1, pages I–793 –I–796, april 2007. [4] Rainer Lienhart and Jochen Maydt. An extended set of haar-like features for rapid object detection. In ICIP (1), pages 900–903, 2002. [5] G. Rätsch, T. Onoda, and K.-R. Müller. Soft margins for adaboost. Mach. Learn., 42:287–320, March 2001. [6] F. S. Samaria, F. S. Samaria, A.C. Harter, and Old Addenbrooke’s Site. Parameterisation of a stochastic model for human face identification. [7] Rocco A. Servedio. Smooth boosting and learning with malicious noise. J. Mach. Learn. Res., 4:633– 648, December 2003. [8] Paul Viola and Michael J. Jones. Robust real-time face detection. Int. J. Comput. Vision, 57:137–154, May 2004. [9] Shengye Yan, Shiguang Shan, Xilin Chen, and Wen Gao. Locally assembled binary (lab) feature with feature-centric cascade for fast and accurate face detection. Computer Vision and Pattern Recognition, IEEE Computer Society Conference on, 0:1–7, 2008.