اكتشف معالم الوجه من 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' )
من أجل تحديد الجهاز (وحدة معالجة الرسومات أو وحدة المعالجة المركزية) الذي سيتم تشغيل الكود عليه، يمكن تمرير علامة الجهاز بشكل صريح:
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 بها.
أسهل طريقة لتثبيته هي استخدام النقطة أو conda:
باستخدام النقطة | باستخدام كوندا |
---|---|
pip install face-alignment | conda install -c 1adrianb face_alignment |
وبدلاً من ذلك، يمكنك العثور أدناه على تعليمات لإنشائه من المصدر.
تثبيت تبعيات pytorch و pytorch. يرجى التحقق من التمهيدي pytorch لهذا الغرض.
git clone https://github.com/1adrianb/face-alignment
pip install -r requirements.txt
python setup.py install
يتم توفير ملف Dockerfile لإنشاء الصور بدعم cuda وcudnn. لمزيد من الإرشادات حول تشغيل وإنشاء صورة عامل إرساء، راجع وثائق 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 أو أي حزم أخرى مستخدمة هنا، يرجى التحقق من الصفحة الأصلية لمؤلفيها.