一張圖實(shí)現(xiàn)3D人臉建模!中科院博士ECCV的新研究 | 開源
3DDFA-V2:一靜一動(dòng)
賈浩楠 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
通過一段視頻,來重建人臉3D模型,沒什么稀奇的。
但是,如果只有測(cè)試者的一張靜態(tài)圖片呢?
來自中科院模式識(shí)別實(shí)驗(yàn)室的博士生郭建珠和他的團(tuán)隊(duì),提出了一種新的密集人臉對(duì)齊(3D Dense Face Alignment)方法。
新的3DDFA方法,最關(guān)鍵的核心,是3D輔助短視頻合成方法,它能模擬平面內(nèi)和平面外的人臉移動(dòng),將一幅靜止圖像轉(zhuǎn)換為短視頻。
由此來完成模型的識(shí)別和訓(xùn)練。
郭同學(xué)的這篇論文Towards Fast, Accurate and Stable 3D Dense Face Alignmen,已經(jīng)被ECCV 2020收錄。
3DDFA-V2:一靜一動(dòng)
這其實(shí)是作者發(fā)布的3DDFA的第二個(gè)版本,兩年前,團(tuán)隊(duì)已經(jīng)發(fā)表了3DDFA的第一版。
新版本具有更好的性能和穩(wěn)定性。此外,3DDFA_V2集成了快速人臉檢測(cè)器FaceBoxes,取代了原來的Dlib,同時(shí)還包括由C++和Cython編寫的簡(jiǎn)單3D渲染。
3DDFA能做到“動(dòng)若脫兔”(面部特征識(shí)別、對(duì)齊):
還有動(dòng)態(tài)的3D人臉建模:
3DDFA的另一面,“靜若處子”(靜態(tài)照片3D人臉重建):
除了一靜一動(dòng),3DDFA還能根據(jù)照片對(duì)人物姿態(tài)做出簡(jiǎn)單估計(jì):
進(jìn)行深度圖像估計(jì):
還能對(duì)圖像的PNCC、PAF特征提?。?/p>
3DDFA-V2可以稱得上是一個(gè)功能十分強(qiáng)大的面部3D重構(gòu)工具,同時(shí)還集合了其他很多功能。
那么,3DDFA-V2最關(guān)鍵的照片轉(zhuǎn)小視頻的功能是如何實(shí)現(xiàn)的呢?
3D輔助短視頻合成
3D密集人臉對(duì)齊方法,需要在在視頻上運(yùn)行,它提供相鄰幀間提供穩(wěn)定的3D重建結(jié)果。
所謂穩(wěn)定,是指在視頻的相鄰幀中,重建的三維圖像的變化應(yīng)該與真實(shí)物體的細(xì)粒度移動(dòng)保持一致。
然而,現(xiàn)有的大多數(shù)方法都無法滿足這一要求,也難以避免隨機(jī)抖動(dòng)的影響。
在二維人臉配準(zhǔn)中,時(shí)空濾波等后處理是減少抖動(dòng)的常用策略,但會(huì)降低精度,造成幀延遲。
此外,由于沒有公開的三維密集人臉配準(zhǔn)的視頻數(shù)據(jù)庫,采用視頻進(jìn)行預(yù)訓(xùn)練的方法也行不通。
那么還有其他什么辦法能改善靜態(tài)圖像轉(zhuǎn)化視頻的穩(wěn)定性?
3DDFA-V2中采用的是批處理級(jí)的3D輔助短視頻合成策略。
將一幅靜態(tài)圖像擴(kuò)展到多個(gè)相鄰的幀,由此形成一個(gè)mini-batch的合成短視頻。
一般來說,一個(gè)視頻的基本模式可以分成:
1、噪聲。我們將噪聲建模為 P(X)=x+N(0,2), 其中 E=a2I
2、運(yùn)動(dòng)模糊。運(yùn)動(dòng)模糊可以表示為 M(X)=K*x,其中K是卷積核(算子*表示卷積)。
3、平面內(nèi)旋轉(zhuǎn)。給定兩個(gè)相鄰幀 xt和 xt+1,平面 從xt和 xt+1變化可以描述為相似變換 T(·)
其中Δs為比例擾動(dòng),Δθ為旋轉(zhuǎn)擾動(dòng),Δt1和Δt2為平移擾動(dòng)。
由于人臉具有相似的三維結(jié)構(gòu),同理也能夠合成平面外的人臉移動(dòng)。
人臉剖面F(-)最初是為了解決大姿勢(shì)的人臉對(duì)準(zhǔn)問題而提出的,它被用來逐步增加人臉的偏航角?φ和俯仰角?γ。
具體來說,以小批量的方式對(duì)多張靜止圖像進(jìn)行采樣,對(duì)于每張靜止圖像x0,對(duì)其進(jìn)行稍微平滑的變換,生成一個(gè)有n個(gè)相鄰幀的合成視頻:
3D輔助短視頻合成幀中,相鄰兩幀如何合成:
如何上手
目前,團(tuán)隊(duì)已經(jīng)將3DDFA-V2開源,且安裝使用都非常簡(jiǎn)單。
安裝指令:
git clone https://github.com/cleardusk/3DDFA_V2.gitcd 3DDFA_V2
安裝完成后,需要構(gòu)建cython版本的NMS和Sim3DR:
sh ./build.sh
運(yùn)行演示:
# 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
例如,運(yùn)行
python3 demo.py -f examples/inputs/emma.jpg -o 3d
將給出以下結(jié)果:
跟蹤人臉動(dòng)作的實(shí)現(xiàn)只需通過對(duì)齊即可。
但如果頭部姿勢(shì)偏角大于90°或運(yùn)動(dòng)太快,則對(duì)齊可能會(huì)失敗??梢钥紤]使用閾值來精細(xì)地檢查跟蹤狀態(tài)。
加載完成后,可以用任意圖像作為輸入,運(yùn)行算法:
python3 main.py -f samples/test1.jpg
如果你能在終端看到輸出日志,這說明成功運(yùn)行,等待結(jié)果即可:
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對(duì)計(jì)算機(jī)的軟硬件都有一些要求:
PyTorch 0.4.1版本以上
Python 3.6版本以上(帶有Numpy、Scipy、Matplotlib庫)
系統(tǒng):Linux或macOS
研究團(tuán)隊(duì)推薦的硬件條件為一塊英偉達(dá)GTX 1080?GPU和i5-8259U?CPU。
當(dāng)然,除了老黃的卡,你也可以直接在谷歌Colab上體驗(yàn)!
如果這個(gè)工具對(duì)你有幫助的話,趕緊來試試吧!
3DDFA-V2谷歌Collab:
https://colab.research.google.com/drive/1OKciI0ETCpWdRjP-VOGpBulDJojYfgWv
Github項(xiàng)目地址:
https://github.com/cleardusk/3DDFA_V2
- 具身智能洶涌,激光雷達(dá)爆單:頭部玩家600%年增長(zhǎng),出貨超20萬臺(tái)2025-08-08
- 智能座艙率先L3!AI Agent上車顛覆體驗(yàn),千里科技WAIC交卷2025-07-28
- 千里科技聯(lián)手階躍星辰、吉利發(fā)布下一代智能座艙Agent OS2025-07-26
- 老黃剛走,全球最強(qiáng)算力Robotaxi方案落地中國2025-07-24