Detecte puntos de referencia faciales desde Python utilizando la red de alineación facial más precisa del mundo, capaz de detectar puntos en coordenadas 2D y 3D.
Construya utilizando el método de alineación facial basado en aprendizaje profundo de última generación 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/' )
De forma predeterminada, el paquete utilizará el detector facial SFD. Sin embargo, los usuarios pueden utilizar alternativamente dlib, BlazeFace o cuadros delimitadores de verdad terrestre preexistentes.
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' )
Para especificar el dispositivo (GPU o CPU) en el que se ejecutará el código, se puede pasar explícitamente la bandera del dispositivo:
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' )
Consulte también la carpeta de 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 })
Si bien no es necesario, para un rendimiento óptimo (especialmente para el detector), se recomienda ejecutar el código utilizando una GPU habilitada para CUDA.
La forma más sencilla de instalarlo es utilizando pip o conda:
Usando pepita | Usando conda |
---|---|
pip install face-alignment | conda install -c 1adrianb face_alignment |
Alternativamente, a continuación puede encontrar instrucciones para compilarlo desde la fuente.
Instale las dependencias de pytorch y pytorch. Consulte el archivo Léame de pytorch para esto.
git clone https://github.com/1adrianb/face-alignment
pip install -r requirements.txt
python setup.py install
Se proporciona un Dockerfile para crear imágenes con soporte cuda y cudnn. Para obtener más instrucciones sobre cómo ejecutar y crear una imagen de Docker, consulte la documentación original de Docker.
docker build -t face-alignment .
Si bien aquí el trabajo se presenta como una caja negra, si desea obtener más información sobre los entresijos del método, consulte el artículo original en arxiv o en mi página web.
Todas las contribuciones son bienvenidas. Si encuentra algún problema (incluidos ejemplos de imágenes en las que falla), no dude en abrir un problema. Si planea agregar nuevas funciones, abra un problema para discutir esto antes de realizar una solicitud de extracción.
@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}
}
Para citar dlib, pytorch o cualquier otro paquete utilizado aquí, consulte la página original de sus respectivos autores.