1. 程式人生 > >3D【3】人臉重建:Image Based 3D Face Reconstruction: A Survey閱讀筆記

3D【3】人臉重建:Image Based 3D Face Reconstruction: A Survey閱讀筆記

該論文是09年的一篇3D人臉重建綜述文章。

目前的大部分3D人臉重建系統受限於3d掃描裝置的一些不足:
1、在掃描過程中要求一定的光線條件
2、無法從多個物體同時獲取3D資料
3、沒有反射的區域無法獲得正確資料(如頭髮)
4、無法實時
5、如果是鐳射掃描時,會傷到眼鏡
6、在掃描時以及後處理需要人的輔助
7、3D掃描裝置的大小和價格限制了現實生活中的應用

一個可選的方案是,直接從2D圖片重建出3D人臉。該方法簡單廉價,有比較大的應用市場。

概念術語

一個三維空間的曲面,可以用三角網格或者點雲來表示。
三角網格:M=(V,T),其中V

=p=(x,y,z)是頂點,T=(pi,pj,pk)是一個三角面。
range image:S=(x,y,f(x,y)),也被稱為2.5D image,surface profiles,depth images,depth maps。
下圖是不同術語的一個可視例子。
f1.png-134.5kB

3D人臉重建的一些主題

1、3D人臉資料集

3D重建演算法,需要有從裝置掃描得來的一些3D資料。學術界大多使用MPIUSF資料集。MPI資料集包括了200個掃描人臉,每個有7個視角。USF有218個掃描人臉。

3D人臉掃描資料集製作的原則:
a、樣本要足夠多
b、掃描人臉的頂點要足夠多,這樣才能準確的描述一張人臉
c、資料集應該包括各種型別的人臉,如性別、表情、年齡、人種等
d、應該公開

2、3D人臉對應

在實現3D人臉重建演算法之前,3D掃描人臉的一對一對應非常重要。一般對應可分為,剛性和非剛性。剛性,使用仿射變換矩陣,使得兩個3D人臉距離儘可能的近。而非剛性,是調整某一3D人臉,使其儘可能的於另一個3D人臉一樣。

ICP演算法是一種非常經典的剛性演算法。但在3D人臉重建中ICP是不合適的。

Basel Face Model用的是光流法的非剛性對齊。該方法在紋理變化太大的時候效果不是很好,比如有鬍子和沒有鬍子。因此需要比較多的條件約束(如必須沒有鬍子),同時使用平滑插值避免奇怪的結果。不過該方法能夠適用於不同的解析度。

Hutton使用了Thin Plate Splines方法。該方法要求至少有9個特徵點,根據這些特徵點用剛性變換初始化演算法。然後調整其中某一3D人臉,使其儘可能與另一個3D人臉對齊。對齊後相鄰最近的那些點被當做correspondences。

3、特徵檢測

2D影象的一些特徵點檢測。主要用來:
a、在model-based 3D重建(如BFM)中用來初始化3d人臉的位置資訊
b、定點陣圖片中側臉和正臉的特徵,這樣才能根據給定的人臉調整已經生成的3D人臉
c、在video-based 3D重建中初始化點的跟蹤
d、當人臉來自不同的視角時,能夠有利於配準。

4、一些假設

很多3d人臉重建演算法,都有一些重要的假設。
1、投影型別,包括正交投影和弱透視投影。正交投影不會改變投影后的大小,而弱透視投影會改變(會縮放)。這個假設,使得3d人臉位於圖片的中心,並且距離鏡頭很近。
2、反射率。固定反射率,表示該物體的外觀不因為視角的不同而產生變化。在3D人臉重建中,這個假設認為,人臉是平滑的,沒有油脂、傷疤等紋理不連續。
3、馮氏光照模型,只有一個環境光和一個方向光。在同時擁有室內和室外光時,該假設會失效。
4、對稱性狀/紋理。該假設認為,只要重建出了一半臉,另一半臉可以映象生成。
5、人臉方位約束。如,要求圖片中的人臉必須為正臉。

5、可變形3D模型

1、立體線稿模型
該模型用一些連續的頂點表示一個3D人臉,CANDIDE是利用該方案的一個例子。該模型可以通過Action Units進行變形。Action Unints包括了剛性變換引數、inter-individual變異引數以及within-person變異引數。該模型的一個主要缺點是頂點數太少,以至於重建出來的3D人臉不是太好看。可以增加頂點數,但是同時計算量也會增加。下圖是CANDIDE模型的一個例子。
f2.png-63.2kB
2、統計模型
PCA-based模型是統計模型中應用廣泛的一個模型。統計模型是通過訓練集和臉部外貌達到重建目的。該方法需要同時為性狀和紋理各自訓練一個PCA模型,如下圖:f3.png-116.5kB
重建時可以使用如下公式:

X=Xmu+i=1mαixi
其中X是重建的人臉,Xmu是平均臉,xi是特徵向量,α是要學習的引數。m是選取的重要特徵向量個數。

3D人臉重建方法

3D人臉重建方法分為:example-based,stereo,video以及silhouette-based。example對應的是單張圖片重建,stereo對應的是兩張,video和silhouette對應的是多張圖片。

1、Example-based

Example-based 依賴於整個訓練資料來達到重建的目的,並且為使用一些於3D人臉結構有關的先驗資訊來引導重建。
簡單的來說,example-based方法包含兩個主要的步驟:分別是模型建立階段,和model fitting階段(從圖片重建出3D人臉)。在模型建立階段,利用訓練集可以訓練出一個引數化的人臉模型,該模型可以表示訓練集中的那些3D人臉。在model fitting階段主要包括如下步驟:
1、被重建的3D face的shape和texture引數初始化為0
2、根據shape和texture引數生成一個3D人臉
3、將3D人臉投影到2D影象的人臉中去
4、計算2D影象人臉和3D人臉投影得到的2D人臉相似度
5、用優化演算法優化shape和texture引數。
6、重複2到5步驟,直到給定2D人臉和3D人臉投影得到的人臉最相似。

上面的方法有不少變種。Atick給出了一個統計方法。首先他們將200張3D掃描人臉引數化成柱面座標,然後用剛性變換進行配準。然後用PCA計算訓練資料集的特徵值和特徵向量,這樣一個新的3D人臉可以用如下公式表示:

r(θ,l)=r0(θ,l)+iαiΨi(θ,l)
其中r0(θ,l)是平均臉,Ψiαi分別是特徵向量和需要學習的引數。為了獲得好的重建效果,作者建議平均臉應該按照性別等進行分組。αi引數的學習是通過共軛梯度優化方法最小化一個損失函式。該損失函式是,輸入圖片與用3D人臉渲染出來的圖片之間的距離。在處理過程,他們通過假設Lambertian surface性質,正交投影,固定反射率來簡化光源的位置,方向和強度。

Vetter和Blanz提出了一種與PCA不一樣的方法。在給定一些3D人臉模型後,利用光流法進行配準。每個訓練樣本都用一些頂點和相對應的紋理進行表示。對於一個新的3D人臉通過這些訓練樣本的一個線性加權重建而來,如下公式:

Snew=i=1MciSi,Tnew=i=1MbiTi
其中SnewTnew分別表示新的3D人臉的shape和texture,SiTi表示訓練樣本的shape和texture,cibi表示要學習的引數。
該方法後來也被PCA代替,成了現在大家用的比較廣的Basel Face Model。該方法的重建通過analysis by synthesis的方法優化下面的損失函式: