一張圖實現3D人臉建模!中科院博士ECCV的新研究 | 開源
本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。
通過一段視頻,來重建人臉3D模型,沒什么稀奇的。

但是,如果只有測試者的一張靜態圖片呢?
來自中科院模式識別實驗室的博士生郭建珠和他的團隊,提出了一種新的密集人臉對齊(3D Dense Face Alignment)方法。
新的3DDFA方法,最關鍵的核心,是3D輔助短視頻合成方法,它能模擬平面內和平面外的人臉移動,將一幅靜止圖像轉換為短視頻。
由此來完成模型的識別和訓練。
郭同學的這篇論文Towards Fast, Accurate and Stable 3D Dense Face Alignmen,已經被ECCV 2020收錄。
3DDFA-V2:一靜一動
這其實是作者發布的3DDFA的第二個版本,兩年前,團隊已經發表了3DDFA的第一版。
新版本具有更好的性能和穩定性。此外,3DDFA_V2集成了快速人臉檢測器FaceBoxes,取代了原來的Dlib,同時還包括由C++和Cython編寫的簡單3D渲染。
3DDFA能做到“動若脫兔”(面部特征識別、對齊):

還有動態的3D人臉建模:

3DDFA的另一面,“靜若處子”(靜態照片3D人臉重建):

除了一靜一動,3DDFA還能根據照片對人物姿態做出簡單估計:

進行深度圖像估計:

還能對圖像的PNCC、PAF特征提取:

3DDFA-V2可以稱得上是一個功能十分強大的面部3D重構工具,同時還集合了其他很多功能。
那么,3DDFA-V2最關鍵的照片轉小視頻的功能是如何實現的呢?
3D輔助短視頻合成
3D密集人臉對齊方法,需要在在視頻上運行,它提供相鄰幀間提供穩定的3D重建結果。
所謂穩定,是指在視頻的相鄰幀中,重建的三維圖像的變化應該與真實物體的細粒度移動保持一致。
然而,現有的大多數方法都無法滿足這一要求,也難以避免隨機抖動的影響。

在二維人臉配準中,時空濾波等后處理是減少抖動的常用策略,但會降低精度,造成幀延遲。
此外,由于沒有公開的三維密集人臉配準的視頻數據庫,采用視頻進行預訓練的方法也行不通。
那么還有其他什么辦法能改善靜態圖像轉化視頻的穩定性?
3DDFA-V2中采用的是批處理級的3D輔助短視頻合成策略。
將一幅靜態圖像擴展到多個相鄰的幀,由此形成一個mini-batch的合成短視頻。
一般來說,一個視頻的基本模式可以分成:
1、噪聲。我們將噪聲建模為 P(X)=x+N(0,2), 其中 E=a2I
2、運動模糊。運動模糊可以表示為 M(X)=K*x,其中K是卷積核(算子*表示卷積)。
3、平面內旋轉。給定兩個相鄰幀 xt和 xt+1,平面 從xt和 xt+1變化可以描述為相似變換 T(·)
其中Δs為比例擾動,Δθ為旋轉擾動,Δt1和Δt2為平移擾動。
由于人臉具有相似的三維結構,同理也能夠合成平面外的人臉移動。
人臉剖面F(-)最初是為了解決大姿勢的人臉對準問題而提出的,它被用來逐步增加人臉的偏航角∆φ和俯仰角∆γ。
具體來說,以小批量的方式對多張靜止圖像進行采樣,對于每張靜止圖像x0,對其進行稍微平滑的變換,生成一個有n個相鄰幀的合成視頻:

3D輔助短視頻合成幀中,相鄰兩幀如何合成:

如何上手
目前,團隊已經將3DDFA-V2開源,且安裝使用都非常簡單。
安裝指令:
- git clone https://github.com/cleardusk/3DDFA_V2.gitcd 3DDFA_V2
安裝完成后,需要構建cython版本的NMS和Sim3DR:
- sh ./build.sh
運行演示:
- # running on still image, four options: 2d_sparse, 2d_dense, 3d, depthpython3 demo.py -f examples/inputs/emma.jpg
- # running on videospython3 demo_video.py -f examples/inputs/videos/214.avi
- # running on videos smoothly by looking ahead by `n_next` framespython3 demo_video_smooth.py -f examples/inputs/videos/214.avi
例如,運行
- python3 demo.py -f examples/inputs/emma.jpg -o 3d
將給出以下結果:

跟蹤人臉動作的實現只需通過對齊即可。
但如果頭部姿勢偏角大于90°或運動太快,則對齊可能會失敗。可以考慮使用閾值來精細地檢查跟蹤狀態。
加載完成后,可以用任意圖像作為輸入,運行算法:
- python3 main.py -f samples/test1.jpg
如果你能在終端看到輸出日志,這說明成功運行,等待結果即可:
- Dump tp samples/test1_0.plySave 68 3d landmarks to samples/test1_0.txtDump obj with sampled texture to samples/test1_0.objDump tp samples/test1_1.plySave 68 3d landmarks to samples/test1_1.txtDump obj with sampled texture to samples/test1_1.objDump to samples/test1_pose.jpgDump to samples/test1_depth.pngDump to samples/test1_pncc.pngSave visualization result to samples/test1_3DDFA.jpg
3DDFA-V2對計算機的軟硬件都有一些要求:
PyTorch 0.4.1版本以上
Python 3.6版本以上(帶有Numpy、Scipy、Matplotlib庫)
系統:Linux或macOS
研究團隊推薦的硬件條件為一塊英偉達GTX 1080 GPU和i5-8259U CPU。
當然,除了老黃的卡,你也可以直接在谷歌Colab上體驗!
如果這個工具對你有幫助的話,趕緊來試試吧!
3DDFA-V2谷歌Collab:
https://colab.research.google.com/drive/1OKciI0ETCpWdRjP-VOGpBulDJojYfgWv
Github項目地址:
https://github.com/cleardusk/3DDFA_V2