1. 程式人生 > >3D【9】人臉重建:Joint3D Face Reconstruction and Dense Alignment with Position Map Regression

3D【9】人臉重建:Joint3D Face Reconstruction and Dense Alignment with Position Map Regression

該論文同時預測人臉特徵點和3D mesh的頂點座標x,y,z。人臉特徵點沒什麼好說的,現在已經有很多成功的案例了。主要關注該論文是如何預測頂點座標的。其實大概想想,就能夠大致確定直接預測頂點座標是有不少困難的。首先是,你不能把所有的頂點拉成一個向量,用全連線層預測;要用卷積層作為輸出的話,mesh又不能直接表示成一個固定大小的張量(這正好是用cnn來預測所需要解決的問題,比如將mesh立方體化)。

該論文通過將mesh的頂點用uv圖表示,從而達到了將mesh用一個固定大小的張量表示(256×256×3)。一個3D mesh的頂點的紋理座標可以用uv資訊找到。而作者則利用了這一點,將40K的頂點對映到了256×256(60K+個頂點)的圖片過去,每個點的內容為歸一化後的頂點座標x,y,z。作者這個uv圖做的很好,每個頂點對映到這張uv圖上都沒有重疊的。如下:
這裡寫圖片描述


上圖左邊是真是圖片和相應的3D 人臉。右邊上面那一行分別是:真實圖片,uv紋理圖,mesh對映到uv圖上;下一行分別是mesh對映到uv圖上的x,y,z。

有了上面的表示方法,就可以用CNN網路像預測一張圖片那樣直接預測頂點座標了,具體沒什麼好說的。下圖:
這裡寫圖片描述

作者為了更好的預測座標,或者說,為了使預測出來的mesh更有意義。他們在計算損失函式的時候,對不同區域的頂點的誤差進行加權:
這裡寫圖片描述
上圖分別是紋理uv圖,mesh頂點uv圖,不同區域的加權(4個大區域,特徵點,鼻子眼睛嘴,人臉其他部分,脖子),加權比例圖(16:4:3:0)。加權是在損失函式上進行的:
這裡寫圖片描述
其中P和P~ 是預測的座標點和真是的座標點,W就是加權圖。

跑了一下結果,發現該論文重建出來的人臉還是存在問題的,這個問題跟我之前做的遇到問題是一樣的。就是生成的mesh會有明顯的條紋狀出現:
這裡寫圖片描述
期待後續的改進。