Viola Jones Face Detector
Transcript of Viola Jones Face Detector
Viola Jones Face DetectorViola Jones Face DetectorTúlio Ligneul SantosTúlio Ligneul Santos
Agenda
● Objetivo● Fundamentos● Treinamento● Detecção● Exemplos● Conclusões● Trabalho Futuro● Referências
Objetivo
● Criar detector de faces:– Método Viola-Jones [1];– Razoável taxa de verdadeiro-positivos.
Fundamentos
● Método Viola-Jones– Utiliza features retangulares:
● À principio, podem ter dimensões e posições arbitrárias dentro de uma sub-janela w;
● Possuem valores calculados sobre a imagem;● f (w)=∑
w
p preto−∑w
pbranco
f (w): valor do feature na janela w ;
∑w
p preto : somatório dos pixels na região preta ;
∑w
pbranco : somatório dos pixels na região branca.
Fundamentos
● Método Viola-Jones– Utiliza representação da integral da imagem.
● Definida por:
● Cálculo do valor de um feature em O(1).
ii( x , y)= ∑x⩽x ' , y⩽ y '
i( x ' , y ' )
A B
C D
1 2
3 4
∑D
pixels=ii(4)+ii (1)−(ii(2)+ii(3))
w : 24x24 pixelsf : feature ;p : polaridade ;θ : theshold.
h(w , p , f ,θ)={1, se pf (w)< pθ0, caso contrário}
Fundamentos
● Método Viola-Jones:
– Classificador Fraco:
– Classificador Forte:
sub-janela de
C (w)={1, se∑t=1
T
αt h t (w)⩽12 ∑
t=1
T
ht (w)
0, caso contrário }T: número de classificadores fracos;h
t(w):valor do t-ésimo classificador fraco;
αt: constante calculada durante o treinamento.
Fundamentos
● Método Viola-Jones:
– Cascata de Classificadores(Fortes):● Procura detectar negativos rapidamente
– Positivos passam por toda a cascata
Nível 1A entrada é uma face?
Entrada Nível 2A entrada é uma face?
Talvez
Não
Não
Descartar entrada Descartar entrada
Talvez
Treinamento● Classificador Forte: Treinamento pelo algoritmo AdaBoost:
– Dadas as imagens exemplo (x1,y
1), ..., (xn,yn) de 24x24 pixels:
● yi = 0,1 para imagens negativas e positivas respectivamente.
– Inicializar pesos ωi = 1/2m, 1/2l para yi = 0,1 respectivamente.
● m = número de exemplos negativos;● l = número de exemplos positivos.
– Para t = 1,...,T:● Normalizar os pesos:
● Selecionar o melhor classificador fraco em relação ao erro:
● Definir ht(x) = h(x, ft , pt, θt) onde ft, pt, e θt são os minimizadores de ϵt.;
● Atualizar os pesos: , com
– ei = 0 se o i-ésimo exemplo foi classificado corretamente e 1, caso contrário.
● Calcular:
ωt+1, i=ωt ,i βt1−e i βt=
ϵt
1−ϵt
αt=log( 1βt
)
ωt , i=ωt , i
∑j=1
n
ωt , j
ϵt=min f , p ,θ(∑i
n
ωi∣h( xi , f , p ,θ)−y i∣)
Treinamento● Cascata de Classificadores:
– Sejam:● Fi: taxa de falso-positivos até o i-ésimo nível da cascata;
● Di: taxa de detecção (verdadeiro-positivos) até o i-ésimo nível da cascata;
● i : número de níveis na cascata.
– Definir:● Ftarget: taxa alvo de falso-positivos;
● f: taxa máxima de falso-positivos por camada;● d: taxa minima de detecção por camada.
– Iniciar treinamento com:● P: conjunto dos exemplos positivos;● N: conjunto dos exemplos negativos;● F0 = 1; D0 = 1;
● i = 0.
Treinamento● Cascata de Classificadores:
– Enquanto Fi > Ftarget:
● i+=1; ni= 0; Fi = Fi-1;
● Enquanto Fi > f * Fi-1:
– ni+=1;
– Usar N e P para treinar 1 classificador com ni features;● Inserir classificador no final da cascata;
– Avaliar cascata no conjunto de validação e determinar Di;
– Enquanto Di < d * Di-1 :● Reduzir o threshold do i-ésimo classificador ;
– Avaliar cascata no conjunto de validação e determinar Fi
– Se Fi ≤ f * Fi-1:● Remover o i-ésimo classificador da cascata.
● N = Ø;● Se Fi > Ftarget:
– Avaliar o detector no conjunto de imagens negativas;● Colocar todos os falso-positivos em N;
Treinamento● Geração de exemplos:
– Negativos:● Sub-janelas aleatórias de 24x24 pixels retiradas de imagens
negativas:– 1192 imagens obtidas por navegação no google imagens.
– Positivos:● Imagens positivas obtidas no Face Detection Data Set and
Benchmark (FDDB) [2]● Utilizou-se o detector de faces do OpenCv para detectar faces
nas imagens;● Removeu-se manualmente falso-positivos;
– Processamento adicional:● Conversão para escala de cinza;● Escala para 24x24 pixels;● Normalização:
– Média nula e variância unitária.
Treinamento● Parâmetros:
– Imagens:● Treinamento:
– 4916 Positivas– 6000 Negativas
● Validação– 5000 Positivas– 10000 Negativas
– Para cada classificador fraco treinado são analisados 400 features;
– 10 camadas● Taxa máxima de falso-positivos f = 0.39 por camada:
– Ftotal ≤ (0.39)10 ≈ 6.2 * 10-5;● Taxa mínima de detecção (verdadeiro-positivos) d = 0.93
por camada:– Dtotal ≥ (0.93)10 ≈ 0.48;
Detecção● Carregar detector treinado:
– De um aquivo .xml● Tamanho inicial da sub-janela: t = 24x24 pixels;● Fator de escala s = 1;● Enquanto tamanho da sub-janela < tamanho da imagem:
– Varrer a imagem com a sub-janela:● Realizar deslocamentos de s pixels;● Avaliando a sub-janela com a cascata;● Se uma face for detectada:
– Salvar sub-janela.– Escalar a sub-janela:
● t = t * 1.25;● s = s * 1.25;
Detecção
● Agrupar sub-janelas em conjuntos disjuntos;● Descartar conjuntos com menos de 10 sub-janelas;● Fundir as sub-janelas em cada conjunto;● Marcar detecções na imagem original.
Detecção
Video retirado de OpenCV Face Detection: Visualized [3]
Exemplos
Exemplos
Conclusões● Dificuldades:
– Dimensionamento do detector:● Definir taxas de detecção e falso-positivos;● Definir número de níveis da cascata
– Geração de imagens negativas para o treino:● A cada nível se torna mais difícil encontrar falso-positivos.
● Viola-Jones:– Imagens positivas selecionadas à mão:
● Seguindo um procedimento definido.– 6060 features:
● 38 camadas/níveis:
● Resultados:– Pouco eficiente
● Alta taxa de falso-positivos;● Baixa taxa de detecção.
– Prova a validade do método
Trabalho Futuro● Selecionar novas imagens positivas:
– Usar procedimento sugerido por Viola e Jones [1].● Validação cruzada:
– Utilizar conjuntos de treino e teste independentes.● Retreino do detector:
– Maior cuidado:● Taxas máximas e mínimas de detecção e falso-positivos
podem ser variadas de camada à camada.● Avaliar diferentes classificadores para a mesma camada.
– Ex: com números de features diferentes.– Buscar maior velocidade de detecção.
● Paralelização do treinamento:– Aumento da velocidade de treino.
Referências
[1] Viola, P., e Jones, M. - “Robust Real-Time Face Detection”, International Journal of Computer Vision 57(2), 137-154, 2004.
[2] University of Massachusetts - “Face Detection Data Set and Benchmark (FDDB)”, http://vis-www.cs.umass.edu/fddb/, último acesso em 27/06/2011.
[3] Harvey, A. - “OpenCV Face Detection: Visualized”, http://vimeo.com/12774628, último acesso em 28/06/2011.
● Repositório do projeto em servidor Git:– [email protected]:tulio/imageprocessing.git