ตรวจจับจุดสังเกตบนใบหน้าจาก Python โดยใช้เครือข่ายการจัดตำแหน่งใบหน้าที่แม่นยำที่สุดในโลก ซึ่งสามารถตรวจจับจุดต่างๆ ได้ในพิกัดทั้ง 2 มิติและ 3 มิติ
สร้างโดยใช้วิธีการจัดตำแหน่งใบหน้าด้วยการเรียนรู้เชิงลึกที่ล้ำสมัยของ 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 })
แม้ว่าจะไม่จำเป็นก็ตาม เพื่อประสิทธิภาพสูงสุด (โดยเฉพาะสำหรับตัวตรวจจับ) ขอแนะนำ เป็นอย่างยิ่ง ให้รันโค้ดโดยใช้ GPU ที่เปิดใช้งาน CUDA
วิธีที่ง่ายที่สุดในการติดตั้งคือใช้ pip หรือ conda:
การใช้ pip | การใช้คอนดา |
---|---|
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
Dockerfile มีไว้เพื่อสร้างอิมเมจด้วยการรองรับ cuda และ cudnn สำหรับคำแนะนำเพิ่มเติมเกี่ยวกับการรันและการสร้างอิมเมจนักเทียบท่า ให้ตรวจสอบเอกสารประกอบนักเทียบท่าดั้งเดิม
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 หรือแพ็คเกจอื่น ๆ ที่ใช้ที่นี่ โปรดตรวจสอบหน้าต้นฉบับของผู้เขียนที่เกี่ยวข้อง