โดย Jianzhu Guo, Xiangyu Zhu, Yang Yang, Fan Yang, Zhen Lei และ Stan Z. Li รหัส repo เป็นเจ้าของและดูแลโดย Jianzhu Guo

[อัปเดต]
2021.7.10 : เรียกใช้ 3DDFA_V2 ออนไลน์บน Gradio2021.1.15 : ยืมการดำเนินการของการประเมินความหนาแน่นของหัวหนาแน่นสำหรับการเรนเดอร์ตาข่ายที่เร็วขึ้น (เพิ่มความเร็วประมาณ 3x, 15ms-> 4ms) ดู utils/render_ctypes.py สำหรับรายละเอียด2020.10.7 : เพิ่มการประเมินเวลาแฝงของไปป์ไลน์เต็มรูปแบบในเวลาแฝง Py เพียงดำเนินการโดย python3 latency.py --onnx , ดูการประเมินรายละเอียดเวลาแฝง2020.10.6 : เพิ่มการสนับสนุน onnxruntime สำหรับ faceboxes เพื่อลดเวลาแฝงการตรวจจับใบหน้าเพียงผนวกการกระทำ --onnx เพื่อเปิดใช้งานดู faceboxes_onnx.py สำหรับรายละเอียด2020.10.2 : เพิ่มการสนับสนุน onnxruntime เพื่อลดเวลาแฝงการอนุมานพารามิเตอร์ 3DMM อย่างมาก เพียงผนวกการกระทำ --onnx เมื่อเรียกใช้ demo.py ดู tddfa_onnx.py สำหรับรายละเอียด2020.9.20 : เพิ่มคุณสมบัติรวมถึงการประมาณค่าท่าทางและการทำให้เป็นอนุกรมเป็น .-ply และ .OBJ, ดู pose , ply , ตัวเลือก obj ใน Demo.py2020.9.19 : เพิ่ม PNCC (รหัสพิกัดปกติที่คาดการณ์ไว้), คุณสมบัติการแมปพื้นผิว UV, ดู pncc , ตัวเลือก uv_tex ใน demo.py งานนี้ขยาย 3DDFA ชื่อ 3DDFA_V2 ชื่อไปสู่การจัดแนวใบหน้าที่มีความหนาแน่น 3D ที่รวดเร็วแม่นยำและมีเสถียรภาพซึ่งได้รับการยอมรับจาก ECCV 2020 วัสดุเสริมอยู่ที่นี่ GIF ด้านบนแสดงการสาธิตเว็บแคมของผลการติดตามในสถานการณ์ของห้องปฏิบัติการของฉัน repo นี้เป็นการดำเนินการอย่างเป็นทางการของ 3DDFA_v2
เมื่อเปรียบเทียบกับ 3DDFA 3DDFA_V2 จะได้ประสิทธิภาพและเสถียรภาพที่ดีขึ้น นอกจากนี้ 3DDFA_V2 ยังรวมเอาหน้าเว็บเครื่องตรวจจับใบหน้าที่รวดเร็วแทน DLIB ยังรวมถึงการเรนเดอร์ 3 มิติที่เขียนโดย C ++ และ Cython ด้วย repo นี้รองรับ onnxruntime และเวลาแฝงของการถดถอยพารามิเตอร์ 3DMM โดยใช้กระดูกสันหลังเริ่มต้นคือประมาณ 1.35ms/image บน CPU ด้วยภาพเดียวเป็นอินพุต หากคุณสนใจ repo นี้เพียงลองใช้กับ Google Colab นี้! ยินดีต้อนรับสำหรับปัญหาที่มีค่า PRS และการอภิปราย?
ดูข้อกำหนด. txt ทดสอบบนแพลตฟอร์ม MacOS และ Linux ผู้ใช้ Windows อาจอ้างถึง FQA สำหรับการสร้างปัญหา โปรดทราบว่า repo นี้ใช้ Python3 การพึ่งพาที่สำคัญคือ pytorch, numpy, opencv-python และ onnxruntime ฯลฯ หากคุณเรียกใช้การสาธิตด้วย --onnx flag เพื่อเร่งความเร็วคุณอาจต้องติดตั้ง libomp ก่อนเช่น brew install libomp บน macOS
git clone https://github.com/cleardusk/3DDFA_V2.git
cd 3DDFA_V2sh ./build.sh # 1. running on still image, the options include: 2d_sparse, 2d_dense, 3d, depth, pncc, pose, uv_tex, ply, obj
python3 demo.py -f examples/inputs/emma.jpg --onnx # -o [2d_sparse, 2d_dense, 3d, depth, pncc, pose, uv_tex, ply, obj]
# 2. running on videos
python3 demo_video.py -f examples/inputs/videos/214.avi --onnx
# 3. running on videos smoothly by looking ahead by `n_next` frames
python3 demo_video_smooth.py -f examples/inputs/videos/214.avi --onnx
# 4. running on webcam
python3 demo_webcam_smooth.py --onnxการดำเนินการติดตามเป็นเพียงการจัดตำแหน่ง หากหัวโพสท่า> 90 °หรือการเคลื่อนไหวเร็วเกินไปการจัดตำแหน่งอาจล้มเหลว เกณฑ์จะใช้ในการตรวจสอบสถานะการติดตาม แต่ไม่เสถียร
คุณสามารถอ้างถึง demo.ipynb หรือ Google Colab สำหรับการสอนทีละขั้นตอนของการรันบนภาพนิ่ง
ตัวอย่างเช่นการรัน python3 demo.py -f examples/inputs/emma.jpg -o 3d จะให้ผลลัพธ์ด้านล่าง:

อีกตัวอย่างหนึ่ง:

การรันในวิดีโอจะให้:

ผลลัพธ์เพิ่มเติมหรือการสาธิตเพื่อดู: Hathaway
| 2d กระจัดกระจาย | หนาแน่น 2d | 3D |
|---|---|---|
![]() | ![]() | ![]() |
| ความลึก | PNCC | พื้นผิว UV |
![]() | ![]() | ![]() |
| ท่าทาง | การทำให้เป็นอนุกรม | การทำให้เป็นอนุกรมกับ. obj |
![]() | ![]() | ![]() |
กระดูกสันหลังเริ่มต้นคือ mobilenet_v1 ที่มีขนาดอินพุต 120x120 และน้ำหนักที่ได้รับการฝึกอบรมล่วงหน้าเริ่มต้นคือ weights/mb1_120x120.pth แสดงใน configs/mb1_120x120.yml repo นี้ให้การกำหนดค่าอื่นใน configs/mb05_120x120.yml โดยมีปัจจัยกว้าง 0.5 มีขนาดเล็กลงและเร็วขึ้น คุณสามารถระบุตัวเลือก config by -c หรือ --config รุ่นที่ปล่อยออกมาจะแสดงในตารางด้านล่าง โปรดทราบว่าเวลาอนุมานของ CPU ในกระดาษได้รับการประเมินโดยใช้ TensorFlow
| แบบอย่าง | ป้อนข้อมูล | #params | #MACS | การอนุมาน (TF) |
|---|---|---|---|---|
| Mobilenet | 120x120 | 3.27m | 183.5m | ~ 6.2ms |
| Mobilenet x0.5 | 120x120 | 0.85m | 49.5m | ~ 2.9ms |
น่าแปลกที่ แฝงของ onnxruntime นั้นเล็กกว่ามาก เวลาอนุมานของ CPU ที่มีเธรดที่แตกต่างกันแสดงอยู่ด้านล่าง ผลลัพธ์จะถูกทดสอบใน MBP ของฉัน (i5-8259U CPU @ 2.30GHz ใน MacBook Pro ขนาด 13 นิ้ว) โดยมี onnxRuntime เวอร์ชัน 1.5.1 หมายเลขเธรดถูกตั้งค่าโดย os.environ["OMP_NUM_THREADS"] ดู speed_cpu.py สำหรับรายละเอียดเพิ่มเติม
| แบบอย่าง | เธรด = 1 | เธรด = 2 | เธรด = 4 |
|---|---|---|---|
| Mobilenet | 4.4ms | 2.25ms | 1.35ms |
| Mobilenet x0.5 | 1.37ms | 0.7ms | 0.5ms |
ตัวเลือก onnx ช่วยลดเวลาแฝง CPU โดยรวมได้อย่างมาก แต่การตรวจจับใบหน้ายังคงใช้เวลาส่วนใหญ่ในเวลาแฝงเช่น 15ms สำหรับภาพ 720p การถดถอยพารามิเตอร์ 3DMM ใช้เวลาประมาณ 1 ~ 2ms สำหรับใบหน้าเดียวและการสร้างใหม่ที่หนาแน่น (มากกว่า 30,000 คะแนนคือ 38,365) ประมาณ 1ms สำหรับใบหน้าเดียว การติดตามแอปพลิเคชันอาจได้รับประโยชน์จากความเร็วการถดถอย 3DMM ที่รวดเร็วเนื่องจากการตรวจจับไม่จำเป็นสำหรับทุกเฟรม เวลาแฝงได้รับการทดสอบโดยใช้ MacBook Pro ขนาด 13 นิ้ว (I5-8259U CPU @ 2.30GHz)
ค่าเริ่มต้น OMP_NUM_THREADS ถูกตั้งค่า 4 คุณสามารถระบุได้โดยการตั้งค่า os.environ['OMP_NUM_THREADS'] = '$NUM' หรือแทรก export OMP_NUM_THREADS=$NUM ก่อนที่จะเรียกใช้สคริปต์ Python

ข้อมูลการฝึกอบรมคืออะไร?
เราใช้ 300W-LP สำหรับการฝึกอบรม คุณสามารถอ้างถึงเอกสารของเราสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการฝึกอบรม เนื่องจากมีภาพไม่กี่ภาพที่ปิดตาในข้อมูลการฝึกอบรม 300W-LP สถานที่สำคัญของดวงตาจึงไม่ถูกต้องเมื่อปิด ดวงตาส่วนหนึ่งของการสาธิตเว็บแคมก็ไม่ดีเช่นกัน
ทำงานบน Windows
คุณสามารถอ้างถึงความคิดเห็นนี้สำหรับการสร้าง NMS บน Windows
หากผลงานหรือการวิจัยของคุณได้รับประโยชน์จาก repo นี้โปรดอ้างอิงสองผ้ากันเปื้อนด้านล่าง :) และ? repo นี้
@inproceedings{guo2020towards,
title = {Towards Fast, Accurate and Stable 3D Dense Face Alignment},
author = {Guo, Jianzhu and Zhu, Xiangyu and Yang, Yang and Yang, Fan and Lei, Zhen and Li, Stan Z},
booktitle = {Proceedings of the European Conference on Computer Vision (ECCV)},
year = {2020}
}
@misc{3ddfa_cleardusk,
author = {Guo, Jianzhu and Zhu, Xiangyu and Lei, Zhen},
title = {3DDFA},
howpublished = {url{https://github.com/cleardusk/3DDFA}},
year = {2018}
}
Jianzhu Guo (郭建珠) [โฮมเพจ, Google Scholar]: [email protected] หรือ [email protected] หรือ [email protected] (อีเมลนี้จะไม่ถูกต้อง)