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.