Erkennen Sie Gesichtsmarkierungen mit Python mithilfe des weltweit genauesten Gesichtsausrichtungsnetzwerks, das Punkte sowohl in 2D- als auch in 3D-Koordinaten erkennen kann.
Erstellen Sie mit der hochmodernen, auf Deep Learning basierenden Gesichtsausrichtungsmethode von 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/' )
Standardmäßig verwendet das Paket den SFD-Gesichtsdetektor. Allerdings können die Benutzer alternativ dlib, BlazeFace oder bereits vorhandene Ground-Truth-Bounding-Boxen verwenden.
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' )
Um das Gerät (GPU oder CPU) anzugeben, auf dem der Code ausgeführt wird, kann man das Geräteflag explizit übergeben:
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' )
Bitte beachten Sie auch den 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 })
Obwohl dies nicht erforderlich ist, wird für eine optimale Leistung (insbesondere für den Detektor) dringend empfohlen, den Code mit einer CUDA-fähigen GPU auszuführen.
Der einfachste Weg, es zu installieren, ist die Verwendung von pip oder conda:
Pip verwenden | Conda verwenden |
---|---|
pip install face-alignment | conda install -c 1adrianb face_alignment |
Alternativ finden Sie unten eine Anleitung zum Erstellen aus dem Quellcode.
Installieren Sie Pytorch und Pytorch-Abhängigkeiten. Bitte überprüfen Sie hierzu die Pytorch-Readme-Datei.
git clone https://github.com/1adrianb/face-alignment
pip install -r requirements.txt
python setup.py install
Zum Erstellen von Images mit Cuda-Unterstützung und Cudnn wird eine Docker-Datei bereitgestellt. Weitere Anweisungen zum Ausführen und Erstellen eines Docker-Images finden Sie in der ursprünglichen Docker-Dokumentation.
docker build -t face-alignment .
Während die Arbeit hier als Blackbox präsentiert wird, schauen Sie sich bitte das Originalpapier entweder auf arxiv oder auf meiner Webseite an, wenn Sie mehr über die Besonderheiten der Methode erfahren möchten.
Alle Beiträge sind willkommen. Wenn Sie auf ein Problem stoßen (einschließlich Beispielbildern, bei denen es fehlschlägt), können Sie gerne ein Problem eröffnen. Wenn Sie vorhaben, neue Funktionen hinzuzufügen, öffnen Sie bitte ein Problem, um dies zu besprechen, bevor Sie eine Pull-Anfrage stellen.
@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}
}
Informationen zum Zitieren von dlib, pytorch oder anderen hier verwendeten Paketen finden Sie auf der Originalseite der jeweiligen Autoren.