À propos du projet
face_recognition est une bibliothèque Python et un outil en ligne de commande permettant de reconnaître et de manipuler des visages. Elle est construite sur les modèles de reconnaissance faciale de pointe de dlib, et le fichier README indique une précision de 99,38 % sur le benchmark Labeled Faces in the Wild (LFW). Elle fournit une API simple pour localiser des visages, extraire des points de repère faciaux, calculer des encodages de visage et comparer des visages pour identifier des personnes.
## Fonctionnalités principales
- Trouver tous les visages dans une image avec `face_locations()`, incluant un modèle CNN optionnel basé sur l'apprentissage profond pour une meilleure précision (nécessite CUDA pour de bonnes performances).
- Localiser et délimiter les traits du visage (yeux, nez, bouche, menton) avec `face_landmarks()`, permettant des applications telles que le maquillage numérique.
- Identifier les visages en comparant des encodages faciaux de 128 dimensions générés par `face_encodings()` et appariés via `compare_faces()`.
- Inclut deux programmes en ligne de commande : `face_recognition` pour identifier des personnes connues dans un dossier d'images, et `face_detection` pour afficher les coordonnées de la boîte englobante du visage.
## Installation
- Nécessite Python 3.3+ ou Python 2.7, sur macOS ou Linux. Windows n'est pas officiellement pris en charge mais peut fonctionner avec les instructions fournies par la communauté.
- `dlib` avec les liaisons Python doit être installé en premier (compiler à partir de la source sur macOS/Ubuntu, ou utiliser une machine virtuelle préconfigurée).
- Installer via `pip3 install face_recognition` après avoir installé `cmake` (par exemple, `brew install cmake` sur macOS).
- Des guides de plateforme supplémentaires sont inclus pour Nvidia Jetson Nano, Raspberry Pi 2+, FreeBSD (`pkg install graphics/py-face-recognition`) et Windows.
- Une image Docker est fournie pour un déploiement plus facile sur des hôtes cloud tels que Heroku ou AWS.
## Exemple d'utilisation (Python)
```python
import face_recognition
# Trouver des visages dans une image
image = face_recognition.load_image_file("your_file.jpg")
face_locations = face_recognition.face_locations(image)
# Obtenir les points de repère faciaux
face_landmarks_list = face_recognition.face_landmarks(image)
# Identifier une personne
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 en ligne de commande
- `face_recognition ./known_people/ ./unknown_pictures/` imprime une ligne par visage détecté, avec le nom du fichier et le nom reconnu (ou `unknown_person`).
- `--tolerance 0.54` rend l'appariement plus strict ; `--show-distance true` imprime la distance faciale calculée.
- `--cpus 4` (ou `-1` pour tous les cœurs) permet le traitement parallèle sur les systèmes multi-cœurs.
- `face_detection ./folder_with_pictures/` imprime les coordonnées en pixels haut, droite, bas, gauche pour chaque visage trouvé.
## Scripts d'exemple
Le dépôt inclut de nombreux exemples, notamment :
- Détection de visage avec le modèle HOG par défaut et le modèle d'apprentissage profond CNN.
- Reconnaissance en temps réel par webcam (versions simples et rapides, nécessite OpenCV).
- Reconnaissance faciale dans des fichiers vidéo et sur un Raspberry Pi avec caméra.
- Service web HTTP utilisant Flask.
- Classificateurs K-plus proches voisins (KNN) et SVM pour l'entraînement sur plusieurs images par personne.
- Floutage des visages dans une vidéo de webcam en direct.
## Mises en garde
- Le modèle de reconnaissance est entraîné sur des adultes et peut ne pas être performant sur les enfants avec le seuil de comparaison par défaut de 0,6.
- La précision peut varier selon les groupes ethniques ; le wiki discute des problèmes de précision connus.
- Pour le déploiement, un Dockerfile et des images Docker pré-construites sont inclus, avec prise en charge GPU pour les systèmes Linux utilisant les pilotes Nvidia et nvidia-docker.
Ce projet est largement utilisé comme une enveloppe simple et de haut niveau autour des capacités de reconnaissance faciale de dlib et convient au prototypage et aux applications de production où la détection et l'identification de visages sont nécessaires.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.