由江朱郭,木安朱,楊楊,範楊,Zhen Lei和Stan Z. li。代碼倉庫由江郭擁有和維護。

[更新]
2021.7.10 :在Gradio上在線運行3DDFA_V2。2021.1.15 :借用更快的網格渲染(加速約3倍,15ms-> 4ms)的密集置端估計的實現,請參見UTILS/RENDER_CTYPES.PY。2020.10.7 :添加延遲中的完整管道的延遲評估,剛剛由python3 latency.py --onnx運行,有關詳細信息,請參見延遲評估。2020.10.6 :添加對麵包箱的onnxRuntime支持,以減少面部檢測延遲,只需附加--onnx操作即可激活它,請參見Faceboxes_onnx.py有關詳細信息。2020.10.2 :添加onnxRuntime支持以大大減少3DMM參數推理潛伏期,只需在運行demo.py時附加--onnx操作,請參見tddfa_onnx.py。2020.9.20 :添加功能,包括姿勢obj和序列ply pose2020.9.19 :添加PNCC(預計的歸一級坐標代碼),UV紋理映射功能,請參見Demo.py中的pncc , uv_tex選項。 這項工作擴展了3DDFA,稱為3DDFA_V2 ,標題為ECCV 2020接受快速,準確和穩定的3D緻密面對齊。補充材料在這裡。在我的實驗室的情況下,上面的GIF顯示了跟踪結果的網絡攝像頭演示。此存儲庫是3DDFA_V2的官方實施。
與3DDFA相比,3DDFA_V2實現了更好的性能和穩定性。此外,3DDFA_V2還包含快速面探測器的麵包箱,而不是DLIB。還包括一個由C ++和Cython編寫的簡單3D渲染。此存儲庫支持OnnxRuntime,並且使用默認骨架進行回歸3MM參數的延遲約為CPU上的1.35ms/Image,單個圖像作為輸入。如果您對此存儲庫有興趣,只需在此Google Colab上嘗試一下即可!歡迎有寶貴的問題,公關和討論嗎?
請參閱要求。 TXT,在MACOS和Linux平台上進行了測試。 Windows用戶可能會參考FQA建築問題。請注意,此存儲庫使用Python3。主要依賴項是pytorch, brew install libomp ,opencv --onnx python和onXruntime libomp 。
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 | 紫外線紋理 |
![]() | ![]() | ![]() |
| 姿勢 | 序列化為.ply | 序列化為.obj |
![]() | ![]() | ![]() |
默認的主鍊是Mobilenet_v1,其輸入尺寸為120x120,默認的預訓練重量為weights/mb1_120x120.pth ,如configs/mb1_120x120.yml所示。該倉庫在Configs/MB05_120X120.yml中提供了另一種配置,其0.5較寬,較小,更快。您可以通過-c或--config選項指定配置。發布的模型顯示在下表中。請注意,使用TensorFlow評估CPU上CPU的推斷時間。
| 模型 | 輸入 | #params | #macs | 推理(TF) |
|---|---|---|---|---|
| Mobilenet | 120x120 | 327萬 | 18350萬 | 〜6.2ms |
| Mobilenet X0.5 | 120x120 | 0.85m | 49.5m | 〜2.9ms |
令人驚訝的是,OnnxRuntime的延遲要小得多。帶有不同線程的CPU上的推理時間如下所示。結果在我的MBP(I5-8259U CPU @ 2.30GHz上的13英寸MacBook Pro)上進行了測試,並使用1.5.1版本的OnnXruntime進行了測試。線程號由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延遲,但面部檢測仍然佔用大部分延遲時間,例如15毫秒,用於720p圖像。 3DMM參數回歸需要一張面的大約1〜2ms,而密集的重建(超過30,000點,即38,365)約為1ms。跟踪應用程序可能會受益於快速3DMM回歸速度,因為每個幀都不需要檢測。使用我的13英寸MacBook Pro(i5-8259U CPU @ 2.30GHz)對延遲進行測試。
默認的OMP_NUM_THREADS設置為4,您可以通過設置os.environ['OMP_NUM_THREADS'] = '$NUM'或在運行Python腳本之前插入export OMP_NUM_THREADS=$NUM 。

什麼是培訓數據?
我們使用300W-LP進行培訓。您可以參考我們的論文以獲取有關培訓的更多詳細信息。由於訓練數據300W-LP中很少有圖像是閉合眼睛,因此關閉時的眼睛標誌不准確。網絡攝像頭演示的一部分也不好。
在Windows上運行。
您可以參考此評論以在Windows上構建NMS。
如果您的工作或研究受益於此存儲庫,請在下面引用兩個圍兜:)和?這個存儲庫。
@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(郭建珠) [Homepage,Google Scholar]: [email protected]或[email protected]或[email protected] (此電子郵件很快就會無效)。