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