一張圖實現3D人臉建模!中科院博士ECCV的新研究

AIBigbull2050發表於2020-09-04

賈浩楠 發自 凹非寺
量子位 報導 | 公眾號 QbitAI

透過一段影片,來重建人臉3D模型,沒什麼稀奇的。

一張圖實現3D人臉建模!中科院博士ECCV的新研究 | 開源

但是,如果只有測試者的一張靜態圖片呢?

來自中科院模式識別實驗室的博士生 郭建珠和他的團隊,提出了一種新的 密集人臉對齊(3D Dense Face Alignment)方法。

一張圖實現3D人臉建模!中科院博士ECCV的新研究 | 開源

新的 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人臉建模!中科院博士ECCV的新研究 | 開源

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

一張圖實現3D人臉建模!中科院博士ECCV的新研究 | 開源

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


一張圖實現3D人臉建模!中科院博士ECCV的新研究 | 開源


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


一張圖實現3D人臉建模!中科院博士ECCV的新研究 | 開源


進行深度影像估計:

一張圖實現3D人臉建模!中科院博士ECCV的新研究 | 開源

還能對影像的PNCC、PAF特徵提取:

一張圖實現3D人臉建模!中科院博士ECCV的新研究 | 開源

3DDFA-V2可以稱得上是一個功能十分強大的面部3D重構工具,同時還集合了其他很多功能。

那麼,3DDFA-V2最關鍵的 照片轉小影片的功能是如何實現的呢?

3D輔助短影片合成

3D密集人臉對齊方法,需要在在影片上執行,它提供相鄰幀間提供穩定的3D重建結果。

所謂穩定,是指在影片的相鄰幀中,重建的三維影像的變化應該與真實物體的細粒度移動保持一致。

然而,現有的大多數方法都無法滿足這一要求,也難以避免隨機抖動的影響。

一張圖實現3D人臉建模!中科院博士ECCV的新研究 | 開源

在二維人臉配準中,時空濾波等後處理是減少抖動的常用策略,但會降低精度,造成幀延遲。

此外,由於沒有公開的三維密集人臉配準的影片資料庫,採用影片進行預訓練的方法也行不通。

那麼還有其他什麼辦法能改善靜態影像轉化影片的穩定性?

一張圖實現3D人臉建模!中科院博士ECCV的新研究 | 開源

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人臉建模!中科院博士ECCV的新研究 | 開源

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

一張圖實現3D人臉建模!中科院博士ECCV的新研究 | 開源

如何上手

目前,團隊已經將3DDFA-V2開源,且安裝使用都非常簡單。

安裝指令:

git clone 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

將給出以下結果:

一張圖實現3D人臉建模!中科院博士ECCV的新研究 | 開源

跟蹤人臉動作的實現只需透過對齊即可。

但如果頭部姿勢偏角大於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:

Github專案地址:

— 完 —


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2717136/,如需轉載,請註明出處,否則將追究法律責任。

相關文章