一张图实现3D人脸建模!这是中科院博士生入选ECCV的新研究 | 开源
賈浩楠發(fā)自凹非寺
量子位報道公眾號 QbitAI
通過一段視頻,來重建人臉 3D 模型,沒什么稀奇的。
但是,如果只有測試者的一張靜態(tài)圖片呢?
來自中科院模式識別實驗室的博士生郭建珠和他的團(tuán)隊,提出了一種新的密集人臉對齊(3D Dense Face Alignment)方法。
新的3DDFA方法,最關(guān)鍵的核心,是3D 輔助短視頻合成方法,它能模擬平面內(nèi)和平面外的人臉移動,將一幅靜止圖像轉(zhuǎn)換為短視頻。
由此來完成模型的識別和訓(xùn)練。
郭同學(xué)的這篇論文Towards Fast, Accurate and Stable 3D Dense Face Alignmen,已經(jīng)被 ECCV 2020 收錄。
3DDFA-V2:一靜一動
這其實是作者發(fā)布的 3DDFA 的第二個版本,兩年前,團(tuán)隊已經(jīng)發(fā)表了 3DDFA 的第一版。
新版本具有更好的性能和穩(wěn)定性。此外,3DDFA_V2 集成了快速人臉檢測器 FaceBoxes,取代了原來的 Dlib,同時還包括由 C++ 和 Cython 編寫的簡單 3D 渲染。
3DDFA 能做到“動若脫兔”(面部特征識別、對齊):
還有動態(tài)的 3D 人臉建模:
3DDFA 的另一面,“靜若處子”(靜態(tài)照片 3D 人臉重建):
除了一靜一動,3DDFA 還能根據(jù)照片對人物姿態(tài)做出簡單估計:
進(jìn)行深度圖像估計:
還能對圖像的 PNCC、PAF 特征提取:
3DDFA-V2 可以稱得上是一個功能十分強(qiáng)大的面部 3D 重構(gòu)工具,同時還集合了其他很多功能。
那么,3DDFA-V2 最關(guān)鍵的照片轉(zhuǎn)小視頻的功能是如何實現(xiàn)的呢?
3D 輔助短視頻合成
3D 密集人臉對齊方法,需要在在視頻上運行,它提供相鄰幀間提供穩(wěn)定的 3D 重建結(jié)果。
所謂穩(wěn)定,是指在視頻的相鄰幀中,重建的三維圖像的變化應(yīng)該與真實物體的細(xì)粒度移動保持一致。
然而,現(xiàn)有的大多數(shù)方法都無法滿足這一要求,也難以避免隨機(jī)抖動的影響。
在二維人臉配準(zhǔn)中,時空濾波等后處理是減少抖動的常用策略,但會降低精度,造成幀延遲。
此外,由于沒有公開的三維密集人臉配準(zhǔn)的視頻數(shù)據(jù)庫,采用視頻進(jìn)行預(yù)訓(xùn)練的方法也行不通。
那么還有其他什么辦法能改善靜態(tài)圖像轉(zhuǎn)化視頻的穩(wěn)定性?
3DDFA-V2 中采用的是批處理級的 3D 輔助短視頻合成策略。
將一幅靜態(tài)圖像擴(kuò)展到多個相鄰的幀,由此形成一個 mini-batch 的合成短視頻。
一般來說,一個視頻的基本模式可以分成:
1、噪聲。我們將噪聲建模為 P (X)=x+N(0,2), 其中 E=a2I
2、運動模糊。運動模糊可以表示為 M (X)=K*x,其中K是卷積核(算子*表示卷積)。
3、平面內(nèi)旋轉(zhuǎn)。給定兩個相鄰幀 xt和 xt+1,平面從xt和 xt+1變化可以描述為相似變換 T(·)
其中Δs為比例擾動,Δθ為旋轉(zhuǎn)擾動,Δt1 和Δt2 為平移擾動。
由于人臉具有相似的三維結(jié)構(gòu),同理也能夠合成平面外的人臉移動。
人臉剖面F(-)最初是為了解決大姿勢的人臉對準(zhǔn)問題而提出的,它被用來逐步增加人臉的偏航角?φ和俯仰角?γ。
具體來說,以小批量的方式對多張靜止圖像進(jìn)行采樣,對于每張靜止圖像 x0,對其進(jìn)行稍微平滑的變換,生成一個有n個相鄰幀的合成視頻:
3D 輔助短視頻合成幀中,相鄰兩幀如何合成:
如何上手
目前,團(tuán)隊已經(jīng)將 3DDFA-V2 開源,且安裝使用都非常簡單。
安裝指令:
git clone
https://github.com/cleardusk/3DDFA_V2.gitcd 3DDFA_V2
安裝完成后,需要構(gòu)建 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
將給出以下結(jié)果:
跟蹤人臉動作的實現(xiàn)只需通過對齊即可。
但如果頭部姿勢偏角大于 90°或運動太快,則對齊可能會失敗。可以考慮使用閾值來精細(xì)地檢查跟蹤狀態(tài)。
加載完成后,可以用任意圖像作為輸入,運行算法:
python3 main.py -f samples/test1.jpg
如果你能在終端看到輸出日志,這說明成功運行,等待結(jié)果即可:
Dump tp samples/test1_0.ply
Save 68 3d landmarks to samples/test1_0.txt
Dump obj with sampled texture to samples/test1_0.obj
Dump tp samples/test1_1.ply
Save 68 3d landmarks to samples/test1_1.txt
Dump obj with sampled texture to samples/test1_1.obj
Dump to samples/test1_pose.jpg
Dump to samples/test1_depth.png
Dump to samples/test1_pncc.png
Save visualization result to samples/test1_3DDFA.jpg
3DDFA-V2 對計算機(jī)的軟硬件都有一些要求:
PyTorch 0.4.1 版本以上
Python 3.6 版本以上(帶有 Numpy、Scipy、Matplotlib 庫)
系統(tǒng):Linux 或 macOS
研究團(tuán)隊推薦的硬件條件為一塊英偉達(dá) GTX 1080GPU 和 i5-8259UCPU。
當(dāng)然,除了老黃的卡,你也可以直接在谷歌 Colab 上體驗!
如果這個工具對你有幫助的話,趕緊來試試吧!
3DDFA-V2 谷歌 Collab:
https://colab.research.google.com/drive/1OKciI0ETCpWdRjP-VOGpBulDJojYfgWv
Github 項目地址:
https://github.com/cleardusk/3DDFA_V2
總結(jié)
以上是生活随笔為你收集整理的一张图实现3D人脸建模!这是中科院博士生入选ECCV的新研究 | 开源的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对付审稿人“强迫引用”,新方法来了,Na
- 下一篇: 同性之间有可能有后代吗?