Reconhecimento facial com #Python

Reconhecimento facial

Reconhecer e manipular rostos do Python ou da linha de comando com a biblioteca de reconhecimento facial mais simples do mundo.
OBS: use o botĂŁo tradutor e leia em inglĂŞs ĂŠ o idioma fonte ok.


ConstruĂ­do usando o reconhecimento de rosto state-of-the-art do dlib construĂ­do com aprendizagem profunda. O modelo tem uma precisĂŁo de 99,38% no rĂłtulo Labeled Faces in the Wild .
Isso tambĂŠm fornece uma face_recognitionferramenta de linha de comando simples que permite que vocĂŞ faça reconhecimento facial em uma pasta de imagens a partir da linha de comando!
PyPI Status da compilação Status da documentação

CaracterĂ­sticas

Encontrar rostos em imagens

Encontre todas as faces que aparecem em uma imagem:
Import face_recognition
Image = face_recognition.load_image_file ( " your_file.jpg " )
Face_locations = face_recognition.face_locations (imagem)

Localizar e manipular caracterĂ­sticas faciais em imagens

Obtenha os locais e contornos dos olhos, nariz, boca e queixo de cada pessoa.
Import face_recognition
Image = face_recognition.load_image_file ( " your_file.jpg " )
Face_landmarks_list = face_recognition.face_landmarks (imagem)
Encontrar caracterĂ­sticas faciais ĂŠ super Ăştil para muitas coisas importantes. Mas vocĂŞ tambĂŠm pode usar para coisas realmente estĂşpidas como aplicar a maquiagem digital (pense em 'Meitu'):

Identificar rostos em imagens

Reconheça quem aparece em cada foto.
Import face_recognition
Known_image = face_recognition.load_image_file ( " biden.jpg " )
Unknown_image = face_recognition.load_image_file ( " unknown.jpg " )

Biden_encoding = face_recognition.face_encodings (known_image) [ 0 ]
Unknown_encoding = face_recognition.face_encodings (unknown_image) [ 0 ]

Resultados = face_recognition.compare_faces ([biden_encoding], unknown_encoding)
VocĂŞ pode atĂŠ usar esta biblioteca com outras bibliotecas Python para fazer reconhecimento de rosto em tempo real:
Veja este exemplo para o cĂłdigo.

Instalação

ExigĂŞncias:
Instale este mĂłdulo de pypi usando pip3(ou pip2para Python 2):
Pip3 install face_recognition
Observação importante: É muito provĂĄvel que vocĂŞ irĂĄ executar em dlibproblemas quando pip tenta compilar a dependĂŞncia. Se isso acontecer, confira este guia para instalar dlib de origem (em vez de pip) para corrigir o erro:
ApĂłs a instalação manual dlib, tente executar pip3 install face_recognition novamente para concluir a instalação.
Se vocĂŞ ainda tiver problemas para instalar isso, vocĂŞ tambĂŠm pode experimentar esta VM prĂŠ-configurada .

Uso

Interface da Linha de comando

Quando vocĂŞ instala face_recognition, vocĂŞ recebe um simples programa de linha de comando chamado face_recognitionque vocĂŞ pode usar para reconhecer rostos em uma fotografia ou pasta cheia de fotografias.
Primeiro, vocĂŞ precisa fornecer uma pasta com uma imagem de cada pessoa que vocĂŞ jĂĄ conhece. Deve haver um arquivo de imagem para cada pessoa com os arquivos nomeados de acordo com quem estĂĄ na imagem:
conhecido
Em seguida, vocĂŞ precisa de uma segunda pasta com os arquivos que deseja identificar:
desconhecido
Em seguida, basta executar o comando face_recognition, passando na pasta de pessoas conhecidas ea pasta (ou imagem Ăşnica) com pessoas desconhecidas e ele informa quem estĂĄ em cada imagem:
$ Face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/

/unknown_pictures/unknown.jpg, Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
HĂĄ uma linha na saĂ­da para cada face. Os dados sĂŁo separados por vĂ­rgulas com o nome do arquivo e o nome da pessoa encontrada.
Um unknown_personĂŠ um rosto na imagem que nĂŁo corresponde a ninguĂŠm na sua pasta de pessoas conhecidas.
Se vocĂŞ simplesmente quiser saber os nomes das pessoas em cada fotografia, mas nĂŁo se preocupam com nomes de arquivo, vocĂŞ pode fazer isso:
$ Face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/ | Cut -d ' , ' -f2

Barack Obama
pessoa desconhecida

MĂłdulo Python

VocĂŞ pode importar o face_recognitionmĂłdulo e, em seguida, facilmente manipular rostos com apenas um par de linhas de cĂłdigo. Ă‰ super fĂĄcil!
Localizar automaticamente todas as faces em uma imagem
Import face_recognition

Image = face_recognition.load_image_file ( " my_picture.jpg " )
Face_locations = face_recognition.face_locations (imagem)

# Face_locations ĂŠ agora uma matriz listando as coordenadas de cada face!
Veja este exemplo para experimentĂĄ-lo.
Localizar automaticamente as caracterĂ­sticas faciais de uma pessoa em uma imagem
Import face_recognition

Image = face_recognition.load_image_file ( " my_picture.jpg " )
Face_landmarks_list = face_recognition.face_landmarks (imagem)

# Face_landmarks_list agora ĂŠ uma matriz com os locais de cada recurso facial em cada face. 
# Face_landmarks_list [0] ['left_eye'] seria o local eo contorno do olho esquerdo da primeira pessoa.
Veja este exemplo para experimentĂĄ-lo.
Reconhecer rostos em imagens e identificar quem sĂŁo
Import face_recognition

Picture_of_me = face_recognition.load_image_file ( " me.jpg " )
My_face_encoding = face_recognition.face_encodings (picture_of_me) [ 0 ]

# My_face_encoding agora contÊm uma "codificação" universal dos meus recursos faciais que podem ser comparados a qualquer outra imagem de um rosto!

Unknown_picture = face_recognition.load_image_file ( " unknown.jpg " )
Unknown_face_encoding = face_recognition.face_encodings (unknown_picture) [ 0 ]

# Agora podemos ver as duas codificaçþes face são da mesma pessoa com `compare_faces`!

Resultados = face_recognition.compare_faces ([my_face_encoding], unknown_face_encoding)

If results [ 0 ] ==  True :
     print ( " É uma foto de mim! " )
 Else :
     print ( " NĂŁo ĂŠ uma foto de mim! " )
Veja este exemplo para experimentĂĄ-lo.

Exemplos de cĂłdigo Python

Todos os exemplos estĂŁo disponĂ­veis aqui .

Como funciona o reconhecimento facial

Se vocĂŞ quiser saber como o local de rosto e trabalho de reconhecimento em vez de depender de uma biblioteca caixa preta, leia o meu artigo .

Ressalvas

  • O modelo de reconhecimento facial ĂŠ treinado em adultos e nĂŁo funciona muito bem em crianças. Ele tende a misturar as crianças bastante fĂĄcil usando o limite de comparação padrĂŁo de 0,6.

Implantação em hosts de nuvem (Heroku, AWS, etc.)

Desde que face_recognitiondepende de dlibque ĂŠ escrito em C ++, pode ser complicado implantar um aplicativo usando-o para um provedor de hospedagem em nuvem como Heroku ou AWS.
Para tornar as coisas mais fĂĄceis, hĂĄ um exemplo Dockerfile neste repo que mostra como executar um aplicativo construĂ­do face_recognitionem um container Docker . Com isso, vocĂŞ deve ser capaz de implantar em qualquer serviço que suporte imagens Docker.

Problemas comuns

Problema: Illegal instruction (core dumped)ao usar o face_recognition ou exemplos em execução.
Solução: dlibĂŠ compilado com suporte SSE4 ou AVX, mas sua CPU ĂŠ muito antiga e nĂŁo suporta isso. VocĂŞ precisarĂĄ recompilar dlibdepois de fazer a alteração de cĂłdigo descrita aqui .
Problema: RuntimeError: Unsupported image type, must be 8bit gray or RGB image.ao executar os exemplos da webcam.
Solução: Sua webcam provavelmente nĂŁo estĂĄ configurada corretamente com o OpenCV. Olhe aqui para mais .
Problema: MemoryErrorquando executadopip2 install face_recognition
Solução: O arquivo face_recognition_models ĂŠ muito grande para a memĂłria cache de pip disponĂ­vel. Em vez disso, tente pip2 --no-cache-dir install face_recognitionevitar o problema.

obrigado

  • Muitos, muitos agradecimentos ao rei de Davis ( @nulhom ) para criar o dlib e para fornecer a detecção facial equipada da função e modelos encoding da cara usados ​​nesta biblioteca. Para obter mais informaçþes sobre o ResNet que alimenta as codificaçþes face, confira seu blog .
  • Obrigado a todos que trabalham em todas as fantĂĄsticas bibliotecas de dados de Python como numpy, scipy, scikit-image, travesseiro, etc, etc, que torna este tipo de coisas tĂŁo fĂĄcil e divertido em Python.
  • Graças ao Cookiecutter e ao projeto de projeto audreyr / cookiecutter-pypackage para tornar a embalagem do projeto Python mais tolerĂĄvel.

ComentĂĄrios

Ebook

Postagens mais visitadas