Обнаруживайте ориентиры лица с помощью Python, используя самую точную в мире сеть выравнивания лиц, способную обнаруживать точки как в 2D, так и в 3D координатах.
Создавайте, используя современный метод выравнивания лица, основанный на глубоком обучении 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/' )
По умолчанию пакет будет использовать детектор лиц SFD. Однако пользователи могут альтернативно использовать dlib, BlazeFace или уже существующие ограничивающие рамки базовой истины.
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' )
Чтобы указать устройство (GPU или CPU), на котором будет выполняться код, можно явно передать флаг устройства:
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' )
Пожалуйста, также посмотрите папку 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 })
Хотя это и не обязательно, для оптимальной производительности (особенно для детектора) настоятельно рекомендуется запускать код с использованием графического процессора с поддержкой CUDA.
Самый простой способ установить его — использовать pip или conda:
Использование пипса | Использование конды |
---|---|
pip install face-alignment | conda install -c 1adrianb face_alignment |
Альтернативно, ниже вы можете найти инструкции по сборке из исходного кода.
Установите pytorch и зависимости pytorch. Пожалуйста, проверьте файл readme pytorch.
git clone https://github.com/1adrianb/face-alignment
pip install -r requirements.txt
python setup.py install
Предоставляется файл Dockerfile для создания образов с поддержкой cuda и cudnn. Дополнительные инструкции по запуску и созданию образа Docker можно найти в исходной документации Docker.
docker build -t face-alignment .
Хотя здесь работа представлена как черный ящик, если вы хотите узнать больше о тонкостях метода, пожалуйста, проверьте оригинал статьи на arxiv или на моей веб-странице.
Все вклады приветствуются. Если вы столкнулись с какой-либо проблемой (включая примеры изображений, где она не удалась), смело открывайте проблему. Если вы планируете добавить новые функции, откройте проблему, чтобы обсудить это, прежде чем делать запрос на включение.
@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}
}
Для цитирования dlib, pytorch или любых других пакетов, использованных здесь, проверьте исходную страницу соответствующих авторов.