2D 座標と 3D 座標の両方で点を検出できる、世界で最も正確な顔位置合わせネットワークを使用して、Python から顔のランドマークを検出します。
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 対応 GPU を使用してコードを実行することを強くお勧めします。
これをインストールする最も簡単な方法は、pip または conda を使用することです。
ピップの使用 | conda の使用 |
---|---|
pip install face-alignment | conda install -c 1adrianb face_alignment |
あるいは、ソースからビルドする手順を以下に示します。
pytorch と pytorch の依存関係をインストールします。これについては、pytorch readme を確認してください。
git clone https://github.com/1adrianb/face-alignment
pip install -r requirements.txt
python setup.py install
cuda サポートと cudnn を使用してイメージを構築するための Dockerfile が提供されています。 Docker イメージの実行と構築の詳細については、元の Docker ドキュメントを確認してください。
docker build -t face-alignment .
ここでは作業はブラックボックスとして示されていますが、このメソッドの内部構造について詳しく知りたい場合は、arxiv または私の Web ページのいずれかで元の論文を確認してください。
すべての貢献を歓迎します。何か問題が発生した場合 (失敗した画像の例を含む)、お気軽に問題を開いてください。新しい機能を追加する予定がある場合は、プル リクエストを行う前に問題を開いて議論してください。
@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、またはその他のパッケージを引用する場合は、それぞれの作成者の元のページを確認してください。