Détectez les repères faciaux à partir de Python à l'aide du réseau d'alignement de visage le plus précis au monde, capable de détecter des points en coordonnées 2D et 3D.
Créez à l'aide de la méthode d'alignement du visage basée sur l'apprentissage en profondeur de pointe de FAN.
import face_alignment
from skimage import io
fa = face_alignment . FaceAlignment ( face_alignment . LandmarksType . TWO_D , flip_input = False )
input = io . imread ( '../test/assets/aflw-test.jpg' )
preds = fa . get_landmarks ( input )
import face_alignment
from skimage import io
fa = face_alignment . FaceAlignment ( face_alignment . LandmarksType . THREE_D , flip_input = False )
input = io . imread ( '../test/assets/aflw-test.jpg' )
preds = fa . get_landmarks ( input )
import face_alignment
from skimage import io
fa = face_alignment . FaceAlignment ( face_alignment . LandmarksType . TWO_D , flip_input = False )
preds = fa . get_landmarks_from_directory ( '../test/assets/' )
Par défaut, le package utilisera le détecteur de visage SFD. Cependant, les utilisateurs peuvent également utiliser dlib, BlazeFace ou des cadres de délimitation de vérité terrain préexistants.
import face_alignment
# sfd for SFD, dlib for Dlib and folder for existing bounding boxes.
fa = face_alignment . FaceAlignment ( face_alignment . LandmarksType . TWO_D , face_detector = 'sfd' )
Afin de spécifier le périphérique (GPU ou CPU) sur lequel le code sera exécuté, on peut passer explicitement l'indicateur de périphérique :
import torch
import face_alignment
# cuda for CUDA, mps for Apple M1/2 GPUs.
fa = face_alignment . FaceAlignment ( face_alignment . LandmarksType . TWO_D , device = 'cpu' )
# running using lower precision
fa = fa = face_alignment . FaceAlignment ( face_alignment . LandmarksType . TWO_D , dtype = torch . bfloat16 , device = 'cuda' )
Veuillez également consulter le dossier examples
# dlib (fast, may miss faces)
model = FaceAlignment ( landmarks_type = LandmarksType . TWO_D , face_detector = 'dlib' )
# SFD (likely best results, but slowest)
model = FaceAlignment ( landmarks_type = LandmarksType . TWO_D , face_detector = 'sfd' )
# Blazeface (front camera model)
model = FaceAlignment ( landmarks_type = LandmarksType . TWO_D , face_detector = 'blazeface' )
# Blazeface (back camera model)
model = FaceAlignment ( landmarks_type = LandmarksType . TWO_D , face_detector = 'blazeface' , face_detector_kwargs = { 'back_model' : True })
Bien que cela ne soit pas obligatoire, pour des performances optimales (en particulier pour le détecteur), il est fortement recommandé d'exécuter le code à l'aide d'un GPU compatible CUDA.
Le moyen le plus simple de l'installer consiste à utiliser pip ou conda :
Utiliser pip | Utiliser conda |
---|---|
pip install face-alignment | conda install -c 1adrianb face_alignment |
Alternativement, ci-dessous, vous pouvez trouver des instructions pour le construire à partir des sources.
Installez pytorch et les dépendances pytorch. Veuillez consulter le fichier readme de pytorch pour cela.
git clone https://github.com/1adrianb/face-alignment
pip install -r requirements.txt
python setup.py install
Un Dockerfile est fourni pour créer des images avec le support cuda et cudnn. Pour plus d'instructions sur l'exécution et la création d'une image Docker, consultez la documentation Docker d'origine.
docker build -t face-alignment .
Bien qu'ici le travail soit présenté comme une boîte noire, si vous souhaitez en savoir plus sur les détails de la méthode, veuillez consulter l'article original sur arxiv ou sur ma page Web.
Toutes les contributions sont les bienvenues. Si vous rencontrez un problème (y compris des exemples d'images où il échoue), n'hésitez pas à ouvrir un problème. Si vous envisagez d'ajouter de nouvelles fonctionnalités, veuillez ouvrir un problème pour en discuter avant de faire une pull request.
@inproceedings{bulat2017far,
title={How far are we from solving the 2D & 3D Face Alignment problem? (and a dataset of 230,000 3D facial landmarks)},
author={Bulat, Adrian and Tzimiropoulos, Georgios},
booktitle={International Conference on Computer Vision},
year={2017}
}
Pour citer dlib, pytorch ou tout autre package utilisé ici, veuillez consulter la page originale de leurs auteurs respectifs.