宅男福音DeepFake進階版!基於位置映射圖網絡進行3D人臉重建

策劃編輯 | Natalie
做者 | Favio Vázquez
譯者 | 郝毅
編輯 | Natalie
AI 前線導讀: 位置映射圖網絡(PRN)是一種端到端的使用聯合迴歸解決稠密排列和 3D 人臉重建的方法。本文是 AI 前線的第 36 篇論文導讀,咱們將對 PRN 方法進行簡要的解釋,並介紹其在計算機視覺中的應用,最後還會附上開源代碼和操做方法,快來動手試試看吧!

更多優質內容請關注微信公衆號「AI 前線」,(ID:ai-front)

想象一下在將來,咱們在遠程通話的時候,經過全息投影可讓你感受到說話的人就在你面前。而如今,一種基於計算機視覺的相似應用已經產生了。python

在過去的十年裏,許多計算機視覺研究方向的重要團部隊在 3D 人臉重建以及人臉對齊方面取得了不少使人興奮的進展。其中最主要的是將卷積神經網絡做爲一種人工神經網絡應用於這方面。然而,因爲用於映射的人臉 3D 模型的不完善,重建後的空間具備侷限性,這就致使大部分人臉 3D 重建放方法的效果並不理想。git

位置映射地圖網絡 (PRN)

上圖是 PRN 的結構,綠色的矩形表示殘差塊,藍色的矩形表示轉置卷積層github

在最近的一篇論文中,Yao Feng 團隊提出一種端到端的方法——位置映射地圖網絡 (PRN),該方法將稠密對齊和重建 3D 形狀聯合起來解決。在人臉 3D 對齊和重建方面,該方法在多個數據庫上都遠超以前的方法。數據庫

更詳細地說,他們設計了一種 UV 位置映射(https://en.wikipedia.org/wiki/UV_mapping ),它是一種記錄了全部面部點雲三維座標的二維圖像,在每一個 UV 多邊形中都保留了語義信息。而後使用一種加權損失訓練一個簡單的編碼 - 解碼網絡,這個網絡從單張 2D 面部圖像獲得 UV 位置映射。微信

上圖是該方法的部分結果,奇數行是人臉對齊結果 (僅顯示 68 點),偶數行是 3d 重建結果
網絡

這篇論文的貢獻主要在這些方面:app

  • 首次使用端到端的方式解決了人臉對齊和三維人臉重建的問題,該方法不受低維空間的限制。框架

  • 爲了直接獲得 3D 人臉結構和稠密對齊,咱們開發了一種名爲 UV 位置面的表示方法,它記錄了 3D 人臉的位置信息,並提供與 UV 空間上每一個點所對應的語義信息。性能

  • 在訓練階段,咱們提出了一種權重 mask,它爲位置圖上每一個點分配不一樣的權重,並計算權重損失。實驗代表,這種設計有助於提高網絡的性能。測試

  • 最後,咱們提供了一種輕量級的框架可以達到 100fps,這個框架能夠直接從單張 2D 人臉圖像得到人臉的 3D 重建結果。

  • 在 AFLW2000-3D 數據庫和 Florence 數據庫上,相比於目前最好的方法,該方法在 3D 人臉重建和稠密面部對齊上都相對得到了 25% 提高。

實現方法

該方法的代碼使用 Tensorflow 的 python 接口完成。該項目的官方網址爲:https://github.com/YadiraF/PRNet 。若是你想測試一下人臉重建的效果,你須要安裝如下環境:

  • Python 2.7(包括 numpy,skimage,scipy 庫)

  • Tensorflow 版本需大於等於 1.4

  • dlib(用於人臉檢測,若是可以提供人臉的邊界框則不須要安裝該擴展)

  • opencv2(用於顯示測試結果)

訓練好的模型能夠在這裏下載:百度網盤(https://pan.baidu.com/s/10vuV7m00OHLcsihaC-Adsw ),谷歌網盤(https://drive.google.com/file/d/1UoE-XuW1SDLUjZmJPkIZ1MLxvQFgmTFH/view?usp=sharing ),目前這個代碼仍在開發過程當中,該團隊將會不斷完善並在將來提供更多靈活的功能。

應用
基礎應用
  • 用於人臉對齊:對於可見和非可見的面部關鍵點均可以進行稠密對齊 (68 點)。

  • 3D 人臉重建:經過單張圖片得到人臉 3D 模型關鍵點以及對應的顏色。結果能夠保存爲以.obj 爲後綴的 mesh data,在 Meshlab 或者微軟的 3D Builder 中能夠直接加載。固然,不可見區域的紋理會由於自遮擋而產生變形。

擴展應用
  • 3D 姿態估計:不一樣於只用 68 個關鍵點進行面部姿態檢測,使用 3D 模型中的全部關鍵點 (超過四萬個) 能夠得到更準確的姿態預測結果。

  • 深度圖像:

  • 紋理編輯:能夠進行數據加強,對於輸入的人臉圖像,能夠更改其特定區域的紋理,例如眼睛:

  • 換臉:使用另外一我的的臉部替換某個特定圖像中的面部,並能夠適應該圖像中人臉的姿式。

使用方法
  • 克隆項目

  • 使用百度網盤或谷歌網盤下載訓練好的 PRN 模型,將他們存入路徑 Data/net-data

  • 運行測試代碼

  • 使用本身的圖像測試

運行 python demo.py --help 能夠得到更多幫助信息。

論文原文:

https://arxiv.org/pdf/1803.07835.pdf

英文原文:

3D Face Reconstruction with Position Map Regression Networks

https://heartbeat.fritz.ai/3d-face-reconstruction-with-position-map-regression-networks-

相關文章
相關標籤/搜索