DOE AGORA Qualquer valor

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