artigo - Universidade Federal do Paraná

Transcrição

artigo - Universidade Federal do Paraná
Estudo sobre Reconhecimento Facial
Felipe Gustavo Bombardelli
Universidade Federal do Paraná
[email protected]
Abstract
DeepFace[11], pode ser dividido em 4 partes: detecção, alinhamento, descrição e classificação.
No passo da detecção frequentemente é utilizado o algoritmo elaborado por [12] para detectar as faces em uma
imagem. Este consiste em passar um filtro de Haar Wavelets
pela imagem e utilizar um classificador para detereminar se
o quadro corresponde a uma face ou não.
No passo do alinhamento, demonstrado na figura 1, o
qual consiste em estimar a orientação da face e a posição
dos olhos, da boca, das sobrancelhas e do nariz. Este
problema segundo o artigo [11] classifica os métodos em 3
grandes conjuntos: aplicar um modelo 3D analı́tico de face
como apresentado nos artigos [5, 13], ou buscar por pontos
baseado em uma base de dados externa ou métodos nãosupervisionado que buscam transformações de similaridade
para os pixeis.
In this paper is showed some algorithms of face recognition, mainly about the new algorithms as DeepNet and
FaceNet and also old algorithms based in methods of processing images. By years this theme was very studied and
in last years with the big amount of data and computing
power, this problem is being solved.
1. Introdução
O reconhecimento restritamente frontal como o caso de
sistemas segurança onde existe um ambiente controlado, já
é possı́vel atingir uma acurácia acima dos 95%, contudo
fatores como a iluminação, diferentes expressões e principalmente posições podem trazer maiores dificuldades e diminiuir a acurácia dos algoritmos.
Contudo com a popularização das redes sociais e mesmo
da própria internet criou-se uma grande quantidade de dados. E a partir dessa grande quantidade junto com novas
técnicas, tanto no processamento de imagens, com os descritores SIFT[8], e tanto no aprendizagem de máquinas,
com SVM e CNN. Além também de um grande aumento da
capacidade de processamento nessas ultimas décadas. Tudo
isso influênciou para um aumento na acurácia dos métodos
de reconhecimento facial. A tal ponto, que os métodos mais
novos tem uma acurácia próxima ao do ser humano para determinadas base de dados.
2. Trabalhos relacionados
Existem diversos métodos propostos para reconhecimento facial, entre os mais recemtes estão a DeepFace[11]
publicado por um grupo da empresa Facebook em 2014 e
a Facenet[10] elaborado por um grupo da empresa Google,
o qual foi vencedor do desafio ILSVRC 2014 e posteriormente melhor avaliado pelo artigo [9].
Também existem alguns algoritmos mais antigos, que
adotaram técnicas de processamento de imagens para a
descrição facial, como é o caso do [4, 1].
Contudo todos esses métodos, segundo o artigo
Figure 1. Figura demostra a regressão matemática realizado pelo
algoritmo descrito em [7] para estimar a posição do queixo, boca,
nariz, olhos e sobrancelhas.
Já no terceiro passo, o objetivo central é criar um descritor para a face de tal modo, que ajude ao classificador
do próximo passo a ter uma taxa de acertos alta. Aqui existe
nos últimos anos um interesse maior na utilização de apren1
dizagem profunda para se encontrar o melhor método para
descrever, sendo que os dois algoritmos tanto da Google,
quanto o do Facebook utilizaram-se desta ferramenta para
elaborar as Convolutional Neural Networks (CNN).
A GoogLeNet, nome em homenagem a rede LeNet, foi
treinada com 1,2 milhões de imagens usando 50.000 para
validação e mais de 100.000 imagens para testes, como
descrito no artigo [10]. Posteriormente no artigo [9] foi
avaliado a arquitetura GoogLeNet elaborada com a arquitetura Zeilerfergus [14], além de também fazer um pequena
comparação com a DeepNet.
No artigo Face Recognition using SIFT Features[4] foi
utilizado um algoritmo tradicional em processamento de
imagens chamado SIFT[8] para a descrição da face ao invés
das CNN. O autor também fez algumas melhorias no SIFT,
o qual apelidou de Volume-Sift(VSIFT) para melhorar o
resultado do reconhecimento. Outros trabalhos também
seguiram o mesmo caminho como por exemplo o Face
recognition using HOG–EBGM[1] e [3].
o descritor SURF ou SIFT). Por final a conversão de todas as imagens é guardada em dois arquivos, train.pkl
e test.pkl;
ci-train Dado um caminho para uma pasta contendo o arquivo train.pkl, treina-se um SVM com parâmetros
variados de C e Gamma, e por final escolhe-se o classificador com maior pontuação e o salva em classifier.pkl;
ci-test Dado um caminho para uma pasta contendo o arquivo classifier.pkl e test.pkl, carrega-se o SVM e
prediz todas as representações contidas no arquivo
test.pkl e ao final do script devolve a acurácia obtida;
Apesar de que no artigo [9] foi apresentado e testado
vários modelos de redes, entretanto no openface é disponibilizado apenas o modelo NN4 (Inception 96x96), o qual
tem uma acurácia menor do que a melhor rede avaliada pelo
artigo, chamado de NN4(Inception 224x224).
Para cada imagem das 3 bases de dados foi realizada a
detecção e o alinhamento. No terceiro passo foi criado 3
descritores diferentes, o descritor extraı́do pela rede NN2 da
GoogLeNet, e também 68 pontos de interesses dados pelo
algoritmo de alinhamento da face, levando em conta, que
para cada ponto foi extraı́do um descritor SIFT e também
um descritor SURF. Portanto existe neste trabalho avaliou
3 meios de descrever as faces da imagens. A CNN com
X números, o SIFT com 68*128 números e o SURF com
68*64 números.
Por final foi utilizado dois classificadores diferentes, um
SVM com kernel linear e RBF, sendo que os parâmetros C
variaram entre [0.1,1,10,100] e o valor de gama variaram
entre [0.001,0.0001], e por segundo foi avaliado um classificador usando o algoritmo k-NN.
O SVM frequentemente tem uma acurácia superior ao
k-NN, contudo quando necessita uma aprendizagem online
o k-NN tem uma enorme vantagem. Pois o custo de adição
de uma nova instância no classificador é extremamente simples. Enquanto o SVM terá um custo computacional muito
alto para retreinar todo classificador com a nova instância.
3. Desenvolvimento
Existe o código aberto openface desenvolvido pelo grupo
da Google, o qual implementa o reconhecimento de face
apresentado no artigo [9]. A implementação foi elaborado
parte em Python e outra parte em Lua. Toda a parte de
detecção, alinhamento e classificação foi feito em Python.
Enquanto a parte de criação do descritor e a conversão da
imagem para o descritor aprendido pela CNN feito em Lua.
A detecção e o alinhamento são feitos a partir da
implementação destes algoritmos pela biblioteca D-Lib. Já
o treinamento da rede CNN da GoogLeNet foi utilizado a
implementação da biblioteca Torch para a linguagem Lua.
Por final o código utiliza um SVM para classificar os
descritores utilizando a implementação feita pela biblioteca
Sklearn.
Para conseguir a executar o reconhecimento de face do
openface leva um tempo, pois existem varios scripts que devem ser executados para finalmente executar o classificador
do openface. Contudo para este trabalho, foi elaborado 4
scripts para esta tarefa utilizando em parte do código openface.
4. Metodologia
A metodologia de avaliação consiste em testes sobre 3
bases de dados abertas: A Label Face in the Wild(LFW),
Yale e por ultimo a base de dados ORL.
A base de dados Label Face in the Wild(LFW) é utilizada
nos artigos [9, 11] e contém 5749 celebridades com ao todo
13233 imagens de dimensão igual a 250x250 coletadas na
internet. Contudo apenas 610 destas pessoas tem mais de 5
fotos disponiveis, o restante das pessoas tem menos de 4 fotos e muitas delas tem apenas 1 foto disponivel. Assim para
poder fazer os testes com imagens diferentes dos treinos foi
utilizado apenas imagens destas 610 pessoas, ou seja, 6733
ci-split Dado como entrada um caminho para um pasta,
onde contém diversas pastas que representam pessoas.
Para cada pessoa, ou seja, para cada pasta contém um
conjunto de imagens desta pessoa. Ao final do script
obtem-se uma nova pasta com a divisão de conjunto de
treino e o conjunto de testes;
ci-create Dado um caminho para uma pasta com um conjunto de treino e um conjunto de teste, converte-se as
imagens de cada conjunto para a representação desejada (CNN com o modelo NN-2 da GoogLeNet ou com
2
imagens sendo elas divididas em 3829 imagens para treino
(57%) e 2904 para testes (43%).
As imagens do LFW são bastante diversas com pessoas
em diferentes posições, expressões e iluminação, além do
fundo também diferenciar muito para cada imagem. Um
exemplo de imagens desta base de dados pode ser ser visto
na figura 2.
Figure 3. Imagens de uma pessoa da base de dados da Yale.
Note que a posição da face sempre se mantem e o fundo sempre é branco, contudo varia a expressão da pessoa e também a
iluminação.
Figure 2. Imagens de Sylvester Stallone contidas na base de dados
LFW[6]. Note que diferentes das outras 2 bases de dados, os rostos
estão em diferentes posições e o fundo pode ter muitos detalhes.
A base de dados Yale contém ao todo 165 fotos de
15 pessoas sendo, que para cada pessoa é disponı́vel 11
fotos com dimensão de 320x243 e sistematicamente em
diferentes expressões (alegre, triste, dormindo, surpreso,
piscando, com oculos, sem oculos, normal) e diferentes
iluminações (luz central, luz a esquerda e luz a direita), resultando 11 fotos por pessoa.
Um exemplo de imagens desta base de dados pode ser
visto na figura 3 e diferentemente da LFW, o fundo se
mantem branco com a mesma textura e também a posição
da face sempre se mantem de frente, em outras palavras
nas imagens é alterado apenas caracteristicas da face e da
iluminição.
Já a base de dados ORL contém ao todo 400 fotos com
dimensão de 92x112 e um conjunto de 40 pessoas com 10
fotos cada. Nesta base de dados as imagens são bem focadas
no rosto da pessoa e com o mı́nimo de fundo possivel, como
pode-se notal na figura 4.
Figure 4. Imagens retiradas da base de dados ORL.Note que as
fotos estão bem focalizadas no rosto das pessoas com o mı́nimo
de influência do fundo. Além que algumas imagens são muito
parecidas entre si, com minimas diferenças de expressão.
própria de alinhamento da face baseado em modelos 3D e
também um novo descritor elaborado por uma CNN, assim
como a facenet. Segundo o artigo[11] o método elaborado
tem uma acurácia de 97,35% na base de dados LFW e reduz em torno de 27% a taxa de erros comparado ao estado
da arte, antes da publicação da facenet[9] e se aproxima da
acuracia de um ser humano.
O Resultado da Deepface pode ser visto no gráfico 5, o
qual mostra a acurácia do ser humano em 97,5% e a melhor arquitetura da DeepFace com a acurácia de 97,35%, e
também faz a comparação com outros algoritmos.
Já, se ao invés de utilizar um descritor gerado por CNN
utilizar um descritor tradicional no processamento de imagens como SIFT[8] e o SURF[2] também obtém resultado
5. Resultados
No artigo [9] foi realizado testes com duas diferentes arquiteturas: a ZeilerFergus e a arquitetura GoogLeNet proposta em [10] e por final cita que a acurácia obtida pelo
método proposto é de em torno de 98,87% de acurácia na
base de dados LFW, sendo possivel aumentar para 99,63%
quando ajustado melhor o alinhamento da face.
Já o Deepface foi elaborado pelo facebook e publicado no artigo [11]. Este método tem uma implementação
3
plexa, o descritor NN-2 obteve uma acurácia melhor, que a
técnicas tradicionais de processamento de imagem.
Figure 7. Gráfico com resultado do SVM com melhor pontuação.
No eixo X consta as 3 bases de dados testadas e no eixo Y a porcentagem de acertos para cada descritor, sendo eles NN2, SIFT e
SURF.
Figure 5. Figura retirada do artigo [11], o qual demostra a acurácia
de vários algoritmos com a base de dados LFW
Enquanto no gráfico 8 mostra os resultados obtidos pelo
classificador 1-NN para as bases de dados.
satisfatórios para base de dados simples como Yale e ORL,
assim como podemos ver no gráfico 6 o resultado do trabalho [4], onde o descritor SIFT e sua melhoria VolumeSIFT (VSIFT) tem uma taxa de erro utilizando 20 pontos
chaves de próximo a 5%, portanto uma acurácia próxima de
95% na base de dados ORL.
Figure 8. Gráfico com resultado do k-NN com melhor pontuação,
ou seja, 1-NN. No eixo X consta as 3 bases de dados testadas e no
eixo Y a porcentagem de acertos para cada descritor, sendo eles
NN2, SIFT e SURF.
6. Conclusão
Apesar do artigo da Facenet apresentar resultados com
acurácia próximo aos 97%, nos testes realizados utilizando
o openface disponı́vel não chegou nem próximo a acurácia
mencionada. Sendo que, para as bases de dados simples
e pequenas os descritores SIFT e SURF obtiveram uma
acurácia maior do que a rede NN2.
A acurácia dos descritores SIFT e SURF foram excelentes nas bases de dados YALE e ORL pois as imagens
não tinha variação de posição e o fundo pouco influênciava
nos resultados, já que era composto por uma unica cor sem
textura. Enquanto na base de LFW o SIFT e SURF teve
péssimo desempenho pois o método aplicado era bastante
simples e não considera a orientação da face e muito influenciada pelo fundo.
Figure 6. Gráfico retirado do artigo [4], o qual demostra a taxa de
erro no eixo Y pela quantidade de pontos chaves no eixo X. Sendo
que o erro mı́nimo está no uso de mais de 20 pontos chaves e tem
apenas um erro de 5%, ou seja, uma acurácia de 95%
No gráfico 7 pode-se observar os resultados obtidos pela
alteração do código openface. Nele consta os resultados do
classificador SVM, onde o melhor parametro para as 3 bases
dados foi o uso de um kernel linear com C setado em 1.
Pode-se notar em 7, que para as bases simples Yale e
ORL o descritor SIFT e SURF tiveram acurácia próximo
a 100% e também um desempenho melhor que o descritor
NN-2. Contudo para a base de dados maior e mais com4
Já a rede NN2 disponibilizada no repositório openface
teve baixa acurácia devido provavelmente a utilização de
um algoritmo simples para o alinhamento da face. Pois no
artigo Facenet é mencionado o uso de um algoritmo proprietário para o alinhamento, diferentemente do algoritmo
disponibilizado. Levando em conta que o modelo NN2 foi
o mesmo utilizado no artigo citado e também o treinamento
da SVM teve os mesmo parâmetros utilizados pela DeepNet, então a única diferença é o alinhamento.
Portanto, o grande diferencial dos algoritmos de reconhecimento facial está no alinhamento correto da face e
eliminação do fundo para que não influencie no descritor.
Já a questão do descritor, os algoritmos baseados em Gradientes de Histogramas são robustos suficientes para serem
poucos influenciados pela iluminação e ruı́dos, e também a
CNN mostraram eficientes para criar modelos de descritores
também.
[8] David G. Lowe. Distinctive image features from scaleinvariant keypoints. Int. J. Comput. Vision, 60(2):91–
110, November 2004.
[9] Florian Schroff, Dmitry Kalenichenko, and James
Philbin. Facenet: A unified embedding for face recognition and clustering. In CVPR, pages 815–823. IEEE,
2015.
[10] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre
Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, and Andrew Rabinovich. Going deeper with convolutions. CoRR,
abs/1409.4842, 2014.
[11] Yaniv Taigman, Ming Yang, Marc’Aurelio Ranzato,
and Lior Wolf. Deepface: Closing the gap to humanlevel performance in face verification. In Conference
on Computer Vision and Pattern Recognition (CVPR),
2014.
References
[1] Alberto Albiol, David Monzo, Antoine Martin, Jorge
Sastre, and Antonio Albiol. Face recognition using
hog–ebgm. Pattern Recognition Letters, 29(10):1537
– 1543, 2008.
[12] Paul Viola and Michael J. Jones. Robust real-time face
detection. Int. J. Comput. Vision, 57(2):137–154, May
2004.
[13] Dong Yi, Zhen Lei, and S.Z. Li. Towards pose robust face recognition. In Computer Vision and Pattern Recognition (CVPR), 2013 IEEE Conference on,
pages 3539–3545, June 2013.
[2] Herbert Bay, Andreas Ess, Tinne Tuytelaars, and
Luc Van Gool.
Speeded-up robust features
(surf). Computer Vision and Image Understanding,
110(3):346 – 359, 2008. Similarity Matching in Computer Vision and Multimedia.
[14] MatthewD. Zeiler and Rob Fergus. Visualizing and
understanding convolutional networks. In David Fleet,
Tomas Pajdla, Bernt Schiele, and Tinne Tuytelaars,
editors, Computer Vision – ECCV 2014, volume 8689
of Lecture Notes in Computer Science, pages 818–
833. Springer International Publishing, 2014.
[3] T. Berg and P. N. Belhumeur. Tom-vs-pete classifiers
and identity preserving alignment for face verification.
June 2012.
[4] Cong Geng and Xudong Jiang. Face recognition using
sift features. In Image Processing (ICIP), 2009 16th
IEEE International Conference on, pages 3313–3316,
Nov 2009.
[5] T. Hassner. Viewing real-world faces in 3d. In Computer Vision (ICCV), 2013 IEEE International Conference on, pages 3607–3614, Dec 2013.
[6] Gary B. Huang, Manu Ramesh, Tamara Berg, and Erik
Learned-Miller. Labeled faces in the wild: A database
for studying face recognition in unconstrained environments. Technical Report 07-49, University of Massachusetts, Amherst, October 2007.
[7] Vahid Kazemi and Josephine Sullivan. One millisecond face alignment with an ensemble of regression
trees. In Proceedings of the 2014 IEEE Conference
on Computer Vision and Pattern Recognition, CVPR
’14, pages 1867–1874, Washington, DC, USA, 2014.
IEEE Computer Society.
5

Documentos relacionados