一張圖實現3D人臉建模!中科院博士ECCV的新研究
賈浩楠 發自 凹非寺
量子位 報導 | 公眾號 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 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:
Github專案地址:
— 完 —
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2717136/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 實現 AI 換臉的第一步:人臉搜尋AI
- JavaScript人臉檢測的實現方法JavaScript
- 蒙娜麗莎.gif:三星新研究用一張影象合成動圖,無需3D建模3D
- OpenCv人臉檢測技術-(實現抖音特效-給人臉戴上墨鏡)OpenCV特效
- 「技術綜述」人臉年齡估計研究現狀
- 3D人臉技術漫遊指南3D
- 中科院:研究發現植物幹細胞命運決定新機制
- 機器學習實戰-SVM模型實現人臉識別機器學習模型
- 四款支援3D人臉識別手機推薦 3D人臉識別手機有哪些3D
- 阿里研究院:發現新農人——2014新農人研究報告阿里
- OPPO Find X 3D人臉識別功能 支援刷臉支付3D
- 3D遊戲角色模型建模| ZBrush製作3D獸人3D遊戲模型ZBrush
- 3分鐘內實現人臉檢測
- 純前端實現人臉識別-提取-合成前端
- 基於多視角照片的3D人臉重建3D
- 這是一篇人臉檢測基本實現最好懂的實踐指南了!
- 研究人員發現新的類 Spectre 攻擊 SplitSpectre
- 實用的3D建模軟體:Metasequoia for Mac3DMac
- 如何理解並實現一個簡單的人臉識別演算法(下):人臉識別演算法
- 基於opencv實現簡單人臉檢測OpenCV
- 萌新如何用Python實現人臉替換?Python
- 使用 OpenCV 與 Face++ 實現人臉解鎖OpenCV
- 刷臉認證如何實現人臉又快又準完成校驗?
- 如何快速實現人臉識別通道?一文了解具體技巧
- 首條3D刷臉地鐵開始運營:國內首條3D人臉識別地鐵一分鐘可通過40人3D
- 首條3D刷臉地鐵開始運營:國內首條3D人臉識別地鐵一分鐘可透過40人3D
- 建模重要性:使用建模工具發現Paxos實現中的一個錯誤 - brooker
- 基於Android平臺實現人臉識別Android
- 如何用Excel 9步實現CNN人臉識別ExcelCNN
- 使用tensorflow實現人臉融合轉移原始碼原始碼
- 人臉識別技術,讓科幻成為現實
- AI換臉實戰教學(FaceSwap的使用)---------第一步Extration:提取人臉。AI
- 收藏了!3D建模軟體大全,想入門3D建模的小夥伴一定不要錯過3D
- 研究人員新發現一種極為隱蔽的Linux惡意軟體Linux
- Python實現人臉識別功能,face_recognition的使用 | 機器學習Python機器學習
- 如何用OpenCV在Python中實現人臉檢測OpenCVPython
- matlab實現人臉識別(數學基礎原理)Matlab
- 手把手教你實現人臉識別,有手就行