Sobre o projeto
face_recognition é uma biblioteca Python e ferramenta de linha de comando para reconhecer e manipular rostos. Ela é construída sobre os modelos de reconhecimento facial de última geração da dlib, e o README relata 99,38% de precisão no benchmark Labeled Faces in the Wild (LFW). Ela fornece uma API simples para localizar rostos, extrair marcos faciais, calcular codificações faciais e comparar rostos para identificar pessoas.
## Principais Recursos
- Encontre todos os rostos em uma imagem com `face_locations()`, incluindo um modelo CNN opcional baseado em aprendizado profundo para maior precisão (requer CUDA para um bom desempenho).
- Localize e contorne características faciais (olhos, nariz, boca, queixo) com `face_landmarks()`, permitindo aplicações como maquiagem digital.
- Identifique rostos comparando codificações faciais de 128 dimensões geradas por `face_encodings()` e correspondidas usando `compare_faces()`.
- Inclui dois programas de linha de comando: `face_recognition` para identificar pessoas conhecidas em uma pasta de imagens, e `face_detection` para exibir as coordenadas da caixa delimitadora do rosto.
## Instalação
- Requer Python 3.3+ ou Python 2.7, no macOS ou Linux. O Windows não é oficialmente suportado, mas pode funcionar com instruções fornecidas pela comunidade.
- O `dlib` com bindings Python deve ser instalado primeiro (compile a partir do código-fonte no macOS/Ubuntu, ou use uma VM pré-configurada).
- Instale via `pip3 install face_recognition` após instalar o `cmake` (por exemplo, `brew install cmake` no macOS).
- Guias adicionais de plataforma estão incluídos para Nvidia Jetson Nano, Raspberry Pi 2+, FreeBSD (`pkg install graphics/py-face-recognition`) e Windows.
- Uma imagem Docker é fornecida para facilitar a implantação em hosts de nuvem como Heroku ou AWS.
## Exemplo de Uso (Python)
```python
import face_recognition
# Encontrar rostos em uma imagem
image = face_recognition.load_image_file("your_file.jpg")
face_locations = face_recognition.face_locations(image)
# Obter marcos faciais
face_landmarks_list = face_recognition.face_landmarks(image)
# Identificar uma pessoa
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]
results = face_recognition.compare_faces([biden_encoding], unknown_encoding)
```
## Interface de Linha de Comando
- `face_recognition ./known_people/ ./unknown_pictures/` imprime uma linha por rosto detectado, com o nome do arquivo e o nome reconhecido (ou `unknown_person`).
- `--tolerance 0.54` torna a correspondência mais rigorosa; `--show-distance true` imprime a distância facial calculada.
- `--cpus 4` (ou `-1` para todos os núcleos) permite processamento paralelo em sistemas multi-core.
- `face_detection ./folder_with_pictures/` imprime as coordenadas de pixel superior, direito, inferior e esquerdo para cada rosto encontrado.
## Scripts de Exemplo
O repositório inclui muitos exemplos, incluindo:
- Detecção facial com o modelo HOG padrão e o modelo de aprendizado profundo CNN.
- Reconhecimento de webcam em tempo real (versões simples e mais rápidas, requer OpenCV).
- Reconhecimento facial em arquivos de vídeo e em um Raspberry Pi com câmera.
- Serviço web HTTP usando Flask.
- Classificadores K-vizinhos mais próximos (KNN) e SVM para treinamento em várias imagens por pessoa.
- Desfoque de rostos em vídeo de webcam ao vivo.
## Ressalvas
- O modelo de reconhecimento é treinado em adultos e pode não ter um bom desempenho em crianças com o limite de comparação padrão de 0,6.
- A precisão pode variar entre grupos étnicos; a wiki discute problemas de precisão conhecidos.
- Para implantação, um Dockerfile e imagens Docker pré-construídas estão incluídos, com suporte a GPU para sistemas Linux usando drivers Nvidia e nvidia-docker.
Este projeto é amplamente utilizado como um wrapper simples e de alto nível em torno dos recursos de reconhecimento facial da dlib e é adequado para prototipagem e aplicações de produção onde a detecção e identificação facial são necessárias.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.