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.

Documentos relacionados