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_recognition
ferramenta de linha de comando simples que permite que vocĂŞ faça reconhecimento facial em uma pasta de imagens a partir da linha de comando!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:
Instalação
ExigĂŞncias:
- Python 3+ ou Python 2.7
- MacOS ou Linux (Windows nĂŁo testado)
- TambĂŠm pode ser executado em um Raspberry Pi 2+ (siga estas instruçþes especĂficas)
- Uma imagem VM prĂŠ-configurada tambĂŠm estĂĄ disponĂvel.
Instale este mĂłdulo de pypi usando
pip3
(ou pip2
para Python 2):Pip3 install face_recognition
Observação importante: à muito provåvel que você irå executar em
dlib
problemas 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_recognition
que 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:
Em seguida, vocĂŞ precisa de uma segunda pasta com os arquivos que deseja identificar:
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_recognition
mĂł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!
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.
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! " )
Exemplos de cĂłdigo Python
- Encontrar rostos em uma fotografia
- Identificar caracterĂsticas faciais especĂficas em uma fotografia
- Aplicar (horrivelmente feio) maquiagem digital
- Encontre e reconheça rostos desconhecidos em uma fotografia baseada em fotografias de pessoas conhecidas
- Reconhecer caras em vĂdeo ao vivo usando sua webcam - VersĂŁo simples / mais lenta (requer OpenCV para ser instalado)
- Reconhecer caras em vĂdeo ao vivo usando sua webcam - VersĂŁo mais rĂĄpida (requer OpenCV para ser instalado)
- Reconhecer rostos em um Raspberry Pi com câmera
- Executar um serviço da Web para reconhecer faces via HTTP (Requer o Flask a ser instalado)
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_recognition
depende de dlib
que ĂŠ 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_recognition
em 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 dlib
depois 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:
MemoryError
quando 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_recognition
evitar 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
Postar um comentĂĄrio