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