一張圖實現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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 蒙娜麗莎.gif:三星新研究用一張影象合成動圖,無需3D建模3D
- 萌新如何用Python實現人臉替換?Python
- 實現 AI 換臉的第一步:人臉搜尋AI
- 前端人臉識別--兩張臉相似度前端
- 人臉活體檢測人臉識別:眨眼+張口
- 實現簡單的輪播圖(單張圖片、多張圖片)
- 妙招:使用Python實現圖片在人臉識別並顯示Python
- 3D人臉技術漫遊指南3D
- 公安部第三研究所研究員張豔博士分享如何做好個人資訊保安保護要求
- 中科院:研究發現植物幹細胞命運決定新機制
- 四款支援3D人臉識別手機推薦 3D人臉識別手機有哪些3D
- 「技術綜述」人臉年齡估計研究現狀
- OPPO Find X 3D人臉識別功能 支援刷臉支付3D
- 實用的3D建模軟體:Metasequoia for Mac3DMac
- OpenCv人臉檢測技術-(實現抖音特效-給人臉戴上墨鏡)OpenCV特效
- 3分鐘內實現人臉檢測
- 這是一篇人臉檢測基本實現最好懂的實踐指南了!
- 3D遊戲角色模型建模| ZBrush製作3D獸人3D遊戲模型ZBrush
- 怎樣畫一張人見人愛的資料治理框架圖?框架
- 一張圖帶你理解和實現RabbitMQ的延遲佇列功能MQ佇列
- 建模重要性:使用建模工具發現Paxos實現中的一個錯誤 - brooker
- Three.js實現臉書元宇宙3D動態LogoJS元宇宙3DGo
- 研究人員發現新的類 Spectre 攻擊 SplitSpectre
- 刷臉認證如何實現人臉又快又準完成校驗?
- 基於Android平臺實現人臉識別Android
- 基於opencv實現簡單人臉檢測OpenCV
- 收藏了!3D建模軟體大全,想入門3D建模的小夥伴一定不要錯過3D
- CAXA 3D實體設計2023啟用版:創新引領,重塑3D建模體驗3D
- 輕鬆復現一張AI圖片AI
- 如何快速實現人臉識別通道?一文了解具體技巧
- 一週新聞縱覽:8元可買3萬張人臉照片,黑客入侵烏干達支付系統黑客
- 首條3D刷臉地鐵開始運營:國內首條3D人臉識別地鐵一分鐘可通過40人3D
- 首條3D刷臉地鐵開始運營:國內首條3D人臉識別地鐵一分鐘可透過40人3D
- opencv安裝實錄附十幾行C++實現的一個人臉識別demoOpenCVC++
- 最危險的博士研究:毒販黑幫如何像經營公司一樣剝削人
- AI換臉實戰教學(FaceSwap的使用)---------第一步Extration:提取人臉。AI
- 如何用Excel 9步實現CNN人臉識別ExcelCNN
- matlab實現人臉識別(數學基礎原理)Matlab