周 健,黃章進
(中國科學技術大學計算機科學與技術學院,合肥 230027)
(?通信作者電子郵箱zhuang@ustc.edu.cn)
基于單張人臉圖片的三維人臉重建和密集人臉對齊是計算機視覺和計算機圖形學領域一項具有挑戰性的任務,在人臉識別、人臉動畫、人臉表情遷移、人臉對齊等方面有著非常廣泛的應用。傳統的二維人臉對齊方法在遇到大姿態人臉圖片和具有遮擋的人臉圖片時往往會受到很大的挑戰,而通過從單張人臉圖片進行三維人臉幾何重建可以很好地應對這些挑戰。由于三維人臉網格模型強大的拓撲性質,三維人臉網格模型的數萬個頂點都可以被視為密集三維人臉對齊可以使用的人臉特征點。傳統的三維人臉重建方法[1-3]主要是基于優化方法,但這些方法通常優化時間復雜度較高、耗時較長,且存在局部最優解以及初始化不佳的問題。在卷積神經網絡(Convolutional Neural Network,CNN)出現之后,基于卷積神經網絡的方法[4-5]在三維人臉重建以及密集人臉對齊方面取得了顯著的成功。這些方法通常使用CNN 來預測三維形變模型(3D Morphable Model,3DMM)[6]的系數,顯著提高了三維人臉重建的質量和效率。基于卷積神經網絡的方法通常需要大量的數據集,這些數據集采集往往代價較高,甚至在很多場景下無法實現。最近一些方法[5,7-8]使用合成數據進行訓練,也有例如300W-LP[4]這樣的公開合成人臉數據集。但是通過合成方法生成的人臉圖片通常與真實圖片之間存在一定的差距,它們在表情、光照、背景方面缺乏多樣性,這往往導致訓練好的卷積神經網絡模型泛化性能較差。
為了解決三維人臉重建數據集缺失的問題,一些最近工作[5,9-11]使用弱監督學習的方法,這些方法僅需要二維人臉圖片及其對應的二維人臉特征點。使用此方法,經過訓練的三維人臉重建模型可以很好地進行三維人臉重建以及密集三維人臉對齊。現階段很容易獲得帶有二維人臉特征點的人臉圖片數據集,因此可以建立大量訓練集以滿足卷積神經網絡的需要。此外,這些二維人臉特征點也可以提供很有價值的人臉信息。目前使用弱監督的三維人臉重建方法的關鍵是使用一種可微分渲染器將重建好的三維人臉渲染到像素層面,并且比較該渲染后圖片與輸入圖片之間的差異。例如Tewari等[5,10]使用渲染后圖片與輸入圖片在像素顏色之間的差異建立損失函數;Genova 等[11]及Tran 等[9]使用人臉識別網絡來建立渲染后圖片與輸入圖片之間的損失。
由于現在廣泛使用的3DMM 只是通過200 張人臉來建立,而且其中大部分都是白人。通過實驗分析,發現目前的3DMM 訓練出的模型會使人臉丟失很多細節信息;同時對于有色人種,重建的紋理質量也會受到很大影響。為了緩解這一現象,本文設計了一個基于弱監督學習的卷積神經網絡模型:將現有的3DMM 作為CNN 中全連接層的初始化權重,直接回歸出輸入人臉圖片對應的三維人臉模型,從而可以從輸入人臉圖片進行準確的三維人臉重建和密集人臉對齊。同時,本文設計了一個新的損失函數,用于對學習到的三維人臉模型進行光滑性約束以及更好地建立輸入人臉圖片和渲染圖片的相似性差異。本文主要有如下技術貢獻:
1)提出了一個端到端的弱監督卷積神經網絡,用全連接層代替3DMM,并使用3DMM 模型參數作為初始化權重,對現有的3DMM進行改進,有效地重建出更精準的三維人臉模型。
2)提出了一種新的損失函數。該損失函數對學習到的三維人臉模型進行光滑性約束,并且使用輸入人臉圖片和渲染后圖片的結構相似性(Structural SIMilarity,SSIM)作為損失。同時,該損失函數對先前訓練中具有較大損失值的特征點進行強化訓練。
通過在AFLW2000-3D和AFLW-LFPA 數據集上和其他方法進行比較,實驗結果表明本文的方法在三維人臉重建和密集人臉對齊兩方面都取得了更好的結果。
三維人臉模型是三維人臉重建中被廣泛使用的人臉模型。與點云相比,三維人臉模型能夠提供人臉形狀、表情以及紋理的先驗知識,而且可以將復雜的三維模型變為一組三維模型的線性組合。因此就可以使用一組系數向量來表達重建的三維人臉模型。
Cootes 等[12]引入主動外觀模型(Active Appearance Model,AAM)作為二維形狀和紋理的統計變形模型。AAM是一種生成模型,在擬合過程中通過優化來恢復某一對象的參數描述;作為二維AAM 的擴展,Blanz 等[6]引入了3DMM。使用主成分分析(Principal Component Analysis,PCA)分解幾何和紋理信息,這有效地減少了形狀和紋理空間尺寸;后來,Gerig 等[13]對3DMM 進行了擴展,在3DMM 中加入了表情;Booth 等[14]給出了9 663 個不同人臉特征的大規模人臉模型(Large Scale Face Model,LSFM),這個模型包含了來自大量不同人群的統計信息;Tran 等[15]提出了一種非線性三維人臉形變模型,直接從大量的無約束人臉圖像中訓練出一個非線性三維形變模型,而不需要采集三維人臉掃描圖像。本文使用3DMM 作為初始化的人臉模型,并使用卷積神經網絡來對3DMM進行改進。
單目三維人臉重建方法通常分為兩大類:基于優化的方法和基于回歸的方法。基于優化的方法通常建立能量函數來描述圖像的一些自然過程。許多方法使用明暗恢復形狀(Shape-From-Shading,SFS)[1,16]或光流(Optical Flow,OF)[2]來模擬圖像信息。這類方法的主要缺點是計算復雜度高,重建速度慢;同時,優化方法對初始化非常敏感,且需要精確的二維特征點檢測[17-18]。
近年來,基于回歸的方法出現頻率不斷增加[4-5,19-20]。特別是卷積神經網絡出現以后,許多方法都基于卷積神經網絡來實現[4-5,7,9,21]。卷積神經網絡通常需要輸入大量數據來進行訓練。然而,目前三維人臉數據集通常較小,因此此前的方法主要分為使用合成數據[7-8,22-23]和使用弱監督[5,10-11,15,24]來代替。但是,合成人臉圖片和真實人臉圖片之間通常會有很大差異。這會導致模型的泛化能力顯著下降,往往在真實人臉圖片上測試效果不理想。因此,當前大多數方法都采用了弱監督學習的方法,不需要人臉圖片對應的三維人臉模型標簽。
Richardson 等[7]使用三維形變模型生成不同形狀、表情以及紋理的圖像,然后將其渲染成二維圖像,這樣就得到了真實三維人臉模型標簽的圖像來進行網絡訓練;但是這有一定局限性,主要是合成人臉圖像和真實人臉圖像之間存在一定差距。Tewari 等[5]訓練了一個自編碼器網絡來回歸形狀、表情、紋理、姿態以及光照,利用回歸得到的參數生成三維人臉模型,然后利用可微分渲染器將三維人臉模型渲染到二維平面上。通過將輸入人臉圖像與渲染后人臉圖像進行比較,建立損失函數。這種方法不需要二維圖像對應的三維人臉模型標簽,結果明顯優于使用合成數據訓練的模型。Richardson等[25]將明暗恢復形狀融入學習過程中,以學習更詳細的細節信息。Jackson 等[21]訓練了一個卷積神經網絡來直接從一張二維圖像中還原三維面部幾何的體素表示,這是一種無模型的方法,不需要三維人臉形變模型。Feng 等[26]訓練卷積神經網絡從單個二維圖像中回歸UV 位置圖,得到相應的三維面部結構,該方法也不依賴于任何先驗人臉模型。Deng 等[24]使用了同一個人的多張圖片進行訓練,多張圖片可以從不同視角補充信息,具有防遮擋的優點。Shi等[27]通過訓練卷積神經網絡,從游戲中的面部圖像重建出相匹配的卡通人臉模型。Chang 等[28]使用了三個深層卷積神經網絡,分別從一張人臉圖片估計出三維人臉形狀、視角和表情。這些方法大多數使用3DMM 作為三維人臉模型。但是3DMM 只是建立在少量人臉圖片上,且人種單一。這導致訓練出來的3DMM 模型易丟失細節信息,同時不易泛化到其他有色人種。基于此,本文將3DMM 作為全連接層的初始化權重并設計了一個基于弱監督學習的卷積神經網絡,從而可以對輸入人臉圖片進行準確的三維人臉重建,取得更好的效果。
在計算機視覺領域,人臉對齊問題長期以來吸引了很多關注。傳統的二維人臉對齊方法主要是定位一組稀疏的人臉關鍵點,比如說AAM[12]以及約束局部模型(Constrained Local Model,CLM)[29]。近年來,隨著深度學習的不斷發展,基于卷積神經網絡的方法[30-31]在二維人臉對齊方面取得了最先進的性能。但是二維人臉對齊有一定局限性,它們通常只能檢測人臉上可見的特征點,因此當人臉的姿態較大或者出現遮擋時,一些人臉特征點變得不可見,這些方法便無法處理。
最近,學者們開始研究三維人臉對齊,主要是使用3DMM進行擬合[4,32-33]或者是將2D 人臉圖像和3D 人臉模板進行匹配[34-35]。基于模型的三維重建方法可以通過選擇三維重建模型中的x、y 坐標來實現二維的人臉對齊任務。文獻[4,36]均使用特定的方法來對3DMM 進行擬合來完成人臉對齊任務。文獻[37-38]使用深度神經網絡直接預測熱力圖來獲得三維人臉特征點,并且實現了較為先進的性能。文獻[20,39-40]對于3DMM 的系數進行估計,然后將估計出的三維人臉特征點投影到二維空間中,這樣可以顯著提高效率。近些年來,密集人臉對齊任務開始受到越來越多的關注,目標是實現大姿態人臉圖像的密集三維對齊。Liu 等[41]使用多重約束來訓練CNN模型,估計3DMM的系數,可以實現密集的三維估計。文獻[36,42]利用深度卷積神經網絡在只考慮可見區域的情況下學習二維人臉圖像和三維模板之間的關系。
這些方法通常僅在特征點處建立損失函數,而忽略像素層面的信息。本文的方法綜合了特征點和像素層面的信息,并且使用了SSIM 作為損失函數來衡量輸入人臉圖片和渲染后圖片的相似性。實驗表明,本文方法取得了更好的效果。
本章主要介紹提出的三維人臉重建算法模型。整體流程如圖1 所示,它的目的是訓練一個卷積神經網絡回歸模型。回歸模型輸入一張224×224×3大小的人臉圖片以及其對應的二維人臉特征點信息,經過VGG-16[43]回歸出人臉的3DMM 系數、相機參數以及球諧光照系數,隨后通過兩個全連接層對三維人臉模型的形狀和紋理進行改進。通過加入球諧光照重建出對應的三維人臉模型,隨后使用全透視投影經過一個可微分渲染器將重建出的三維人臉模型渲染到二維平面上,建立特征點、像素空間和人臉光滑性損失函數。最后通過反向傳播訓練整體網絡。

圖1 三維人臉重建算法流程Fig.1 Flowchart of 3D face reconstruction algorithm
由于人臉比較復雜,很難直接回歸出三維人臉模型,因此現階段學者們廣泛使用3DMM 來進行三維人臉重建。3DMM不僅能夠保證人臉重建中不會出現非人臉的情況,也可以建立不同臉型之間的對應關系。但是目前通常使用的三維形變模型BFM09(2009 Basel Face Model)[6]存在訓練數據少、數據集中人臉多樣性不足等缺點,導致重建質量不佳、人臉易丟失細節。
為解決人臉模型不能反映足夠的人臉細節這一問題,本文對現有的3DMM 進行改進。由于三維形變模型的實質是一個多維的三維形變函數,它是基于大量的三維人臉的掃描模型的線性組合,因此三維形變模型可以看作一個線性模型,這和神經網絡中全連接層的結構是一致的。本文將參數與3DMM 進行結合、重建出三維人臉這一過程看作一個全連接層操作,通過在全連接層中引入更多參數,并且使用已有的3DMM 模型作為初始化參數,進而使得人臉模型更加符合真實人臉的分布。
本方法采用參數化的三維人臉幾何模型S={si∈R3|1 ≤i ≤N}作為初始的人臉幾何模型,其中N=35 709為頂點個數。同時采用參數化的人臉紋理模型T={ti∈R3|1 ≤i ≤N}作為初始的人臉紋理模型。如式(1)所示:

通過建立兩個全連接層FCshape和FCtexture來對現有的人臉形狀和紋理的PCA 基進行改進。全連接層FCshape的大小為199×107 127,輸入為199 和3DMM 中人臉形狀的PCA 基的個數一致,輸出107 127 為頂點的個數35 709 乘以3,并使用3DMM 中人臉形狀的PCA 基Eshape作為初始化權重,從而得到改進的人臉形狀Snew_shape。同理,全連接層FCtexture的大小為199×107 127,使用3DMM 中人臉紋理的PCA 基Etex作為初始化權重,得到改進的人臉紋理模型Tnew_texture。最終的三維人臉重建結果如式(2)所示:

相機模型用于將人臉網格模型從三維空間轉化到二維平面。和文獻[11]相同,本文使用全透視投影模型。相機在世界坐標系中的位置和方向由旋轉矩陣R ∈SO(3)(三維旋轉群)和平移向量m ∈R3來表示,如式(3)所示:

其中:p ∈R3為頂點在世界坐標系下的坐標,q ∈R2為頂點在圖像平面的坐標,Π:R3→R2為全透視投影模型將相機坐標系變為像素平面坐標系。
本方法假設光照是低頻的,并且將人臉表面近似看作一個蘭伯特曲面。基于這兩個假設,本文使用球諧函數[45]來表示光照。頂點顏色C(ti,ni,γ)由網格頂點紋理ti∈R3、網格頂點法向量ni∈R3和光照系數γ ∈R27來計算,如式(4)所示:

其中Hb:R3→R 是球諧基函數,γ={rb∈R3|1 ≤b ≤B2}是對應的光照系數。本文使用前三階B=3。
本文提出的三維人臉重建模型主要包括兩個模塊:一個是基于卷積神經網絡的回歸模塊,將一張人臉圖片輸入卷積神經網絡,回歸出對應的三維人臉的3DMM 系數、球諧光照參數以及相機模型參數;另一個是三維形變模型改進模塊,以現有的3DMM 作為全連接層的初始化權重,直接回歸出三維人臉模型的形狀和紋理。
本方法采用VGG-16[43]作為回歸模塊。回歸模塊的輸入為一張224×224大小的RGB人臉圖片。要回歸的三維人臉參數x ∈R495包含3DMM 形狀參數α ∈R199、3DMM 紋理參數β ∈R199、3DMM 表情參數δ ∈R64、相機旋轉R ∈SO(3)、相機平移m ∈R3以及球諧光照參數γ ∈R27如式(5)所示:

編碼器包含13 個卷積層,每個卷積層后都接著一個ReLU(Rectified Linear Unit)激活層。在第2、4、7、10 以及13卷積層后接著最大池化層。卷積層后面跟著三個全連接層,大小分別為4 096、4 096和495。
三維形變模型改進模塊包含兩個全連接層,分別連接在α 和β 參數的后面,大小分別為199×107 127 和199×107 127。分別使用3DMM 中人臉形狀和紋理的PCA 基作為初始化權重。
本文設計了一種新的損失函數。該損失函數不僅考慮到特征點和像素空間的信息,而且對于學習到的三維人臉模型進行了光滑性約束,有效提升了重建的質量。新的損失函數包含六項,如式(6)所示:

其中:Lland(x)和Lland_error(x)為特征點對齊的損失函數和特征點增強訓練的損失函數,Lphoto(x)為原圖和三維人臉渲染圖片像素之間差異的損失函數,Lssim(x)為原圖和三維人臉渲染圖片之間SSIM 的損失函數,Lsmooth(x)為三維人臉模型光滑性約束損失函數,Lreg(x)是正則化項損失函數。為了平衡各個部分的損失函數,本方法將權重設置為ωland=400、ωland_error=2 000、ωphoto=100、ωssim=2、ωsmooth=50以及ωreg=1。2.5.1 特征點損失函數
本方法將二維人臉圖片的特征點作為一種弱監督信息來訓練神經網絡,同時使用現階段比較先進的人臉特征點檢測算法[38]來檢測訓練集中人臉圖片的68 個關鍵點。損失函數Lland(x)如式(7)所示:

其中wi為特征點對應的權重。固定的52 個特征點權重為1,16 個輪廓特征點的權重為0.5,固定特征點和輪廓特征點的選取如圖2 所示,其中人臉中間顯示實心菱形的52 個點為固定特征點,人臉邊界顯示空心菱形的16 個點為輪廓特征點。是人臉二維特征點的真實標簽,ki∈{1,2,…,N}是對應的三維人臉模型頂點索引,vki是重建出的三維人臉模型投影到像素平面的坐標。

圖2 人臉特征點示意圖Fig.2 Schematic diagram of facial feature points
為了加強訓練那些誤差相對較大的特征點,在第5 次迭代后,加入損失函數Lland_error(x)如式(8)所示:

其中ei為固定的52 個特征點分別在上一個迭代中訓練中的平均誤差。
2.5.2 像素損失函數
像素損失函數Lphoto(x)的目標是使渲染后的圖像和輸入圖像盡可能相近,將重建好的三維人臉模型渲染到像素空間上,和輸入單目人臉圖片進行對齊。為了將三維人臉模型渲染到二維平面上,本方法使用了可微分渲染器[11]。將渲染圖片與輸入單目人臉圖片進行匹配,比較它們在像素空間的相似性。損失函數Lphoto(x)如式(9)所示:

其中:V 為像素平面上所有經過投影得到的人臉區域像素點的集合,n 為V 中像素點的個數,Ii為輸入的單目人臉圖片在i位置的顏色,Ii'為將三維人臉模型渲染到像素空間后得到的圖像在i位置的顏色。
2.5.3 SSIM損失函數
SSIM 損失函數的目標是保障輸入圖像和渲染圖像的結構相似性。通過添加SSIM 損失函數,可以更好地重建三維人臉模型的紋理。損失函數Lssim(x)如式(10)所示:

2.5.4 三維人臉光滑性約束
為了防止三維人臉重建的結果出現面片翻轉、表面粗糙等情況,本文引入了三維人臉的光滑性約束,來保證重建出的三維人臉模型形狀光滑。損失函數Lsmooth(x)如式(11)所示:

其中:N為三維人臉模型的頂點個數,di為三維人臉模型第i個頂點的度,Adjj為三維人臉模型第j個頂點的鄰居索引的集合,vi為三維人臉模型第i個頂點的坐標。
2.5.5 正則化項
在訓練過程中,為了防止訓練過程中出現三維人臉形狀和表情變形,本方法在回歸的3DMM 系數上加入正則化項的損失,它能夠讓預測得到3DMM 的系數強制滿足先驗的正態分布。損失函數Lreg(x)如式(12)所示:

其中:ωα=2 × 10-5,ωβ=2 × 10-2,ωδ=4 × 10-4。
在一些真實的人臉圖片和數據集上測試本方法在三維人臉重建和密集人臉對齊上的性能。首先,介紹實驗的訓練細節和測試數據集;然后,展示本方法和其他方法進行比較的實驗結果;最后,給出是否使用3DMM 改進模塊和是否在損失函數中使用三維人臉光滑性約束的消融實驗。
Bulat 等[38]的方法可以檢測出較為粗糙的68 個完整特征點,但是當人臉圖片中人臉角度較大時,可能會出現特征點檢測誤差較大的情況。因此本文對人臉角度超過45°的人臉圖片手動進行篩選,過濾掉特征點誤差較大的圖片,本方法從CelebA[46]和300W-LP中選取了共約250 000張人臉圖片(如圖3 所示)用于訓練卷積神經網絡,并對這些圖片進行數據增強。數據增強包括圖片翻轉、圖片隨機旋轉以及模擬光照。圖片翻轉為對圖片進行水平翻轉,在訓練過程中對于圖片進行隨機選擇是否進行翻轉操作,是否翻轉操作的概率均為50%。圖片旋轉操作是對人臉圖片基于中心點按照順時針方向旋轉-30°~30°、旋轉角度為-30°~30°的均勻分布。此外,為了降低光照對于人臉圖片的影響,本方法對于訓練集中的人臉圖片進行模擬光照操作。模擬光照操作對人臉圖片的顏色通道RGB 隨機乘上0.7~1.3,三個通道獨立操作,概率分布為滿足從0.7~1.3的均勻分布。
卷積神經網絡的輸入圖片大小為224×224×3。在卷積神經網絡的訓練過程中,批量大小為16,學習器為Adam 優化器[47],初始學習率為1× 10-5,在5個迭代之后衰減到1× 10-6。
對于損失函數Lloss(x),特征點損失項、像素損失項以及SSIM 損失項提供了弱監督的信息來幫助神經網絡進行訓練,它們是較強的損失項,這三個損失項的數值越小,說明現有的卷積神經網絡模型在訓練集上的表現越好。經過實驗研究發現:特征點、像素以及SSIM 損失項的數值比為2∶2∶1 時能保證三項損失之間的平衡,效果最好,因此本文選擇ωland=400、ωland_error=2 000、ωphoto=100 以及ωssim=2。但這三個損失項的數值越小并不代表訓練出的卷積神經網絡模型表達能力越好,因為可能導致過擬合的問題,因此本文在損失函數中加入懲罰項來進行約束。懲罰項過大,會導致卷積神經網絡模型陷入欠擬合;而懲罰項過小,會導致卷積神經網絡陷入過擬合。因此經過實驗分析,本文在選擇ωsmooth=50 以及ωreg=1 時效果最好。

圖3 訓練集中部分真實場景人臉圖片Fig.3 Some real scene face images in the training set
AFLW2000-3D 是通過選擇AFLW 數據集中前2 000 張圖片構建的。每張人臉圖片有對應的3DMM 系數以及68 個三維人臉特征點位置。本文使用這個數據集來驗證三維人臉重建以及密集人臉對齊的效果。
AFLW-LFPA[48]是AFLW 數據集的另外一個擴展,它是根據人臉姿態從AFLW 中選擇圖像構建的。它包含1 299 張測試圖像,具有平衡的偏航角分布。每張人臉圖片都有34 個人臉關鍵點。本文使用這個數據集來評估模型在密集人臉對齊任務上的性能。
作為三維人臉重建的應用,本實驗首先驗證本方法在ALFW2000-3D上的效果,效果如圖4所示,其中第一行為輸入圖片,第二行為密集人臉對齊效果。為了將本方法和其他相關方法進行比較,本實驗采用歸一化平均誤差(Normalized Mean Error,NME)[4]來作為評價算法性能的指標。歸一化平均誤差是根據人臉包圍盒的大小進行歸一化,如式(13)所示:

其中:T 為點的個數,d 為人臉真實的包圍盒長寬之積的平方根,計算公式為分別為預測的點坐標和測試集上的標簽。
本實驗采用68 個稀疏的特征點來進行衡量密集人臉對齊效果,68 個稀疏的特征點可以看作是密集人臉特征點的一個采樣。本實驗采用歸一化平均誤差分別在AFLW2000-3D和AFLW-LFPA[48]上和其他方法進行比較。由于AFLW2000-3D 中人臉偏航角的分布不均勻,因此為了使得偏航角的絕對值在[0°,30°]、(30°,60°]以及(60°,90°]上均勻分布,本文和文獻[4]一樣,隨機從AFLW2000-3D 選擇696 張人臉圖片進行測試,使得各個角度的人臉圖片比例為1∶1∶1。

圖4 密集人臉對齊效果Fig.4 Results of dense face alignment
表1 展示了本方法和其他方法在AFLW2000-3D(68 個特征點)和AFLW-LFPA(34 個特征點)上的比較結果。評判標準使用歸一化平均誤差(%)。在AFLW2000-3D 中,分別計算偏航角的絕對值在[0°,30°]、(30°,60°]和(60°,90°]度的歸一化平均誤差以及所有圖片上的歸一化平均誤差。在AFLW-LFPA[48]上使用所有圖片上的歸一化平均誤差。歸一化平均誤差越小,人臉對齊的效果越好。相關方法的數據信息都從相關論文中直接獲取,“—”表示沒有相應的數據。從表中可以看出,本方法在ALFW2000-3D 和AFLW-LFPA 這兩個數據集上都展現出了比其他方法更低的歸一化平均誤差,同時在不同的人臉姿態中也展現了很好的魯棒性,這表明本方法可以很好地對大姿態的人臉圖片進行密集人臉對齊。

表1 密集人臉對齊歸一化平均誤差結果 單位:%Tab.1 NME results of dense face alignment unit:%
本實驗在AFLW2000-3D 上測試了所提方法的三維人臉重建效果,并將結果與3DDFA[4]以及DeFA[41]進行比較。如圖5所示。首先,使用迭代最近點(Iterative Closest Point,ICP)來將預測的三維人臉和真實的三維點云標簽進行對齊;然后,計算點云之間的均方誤差(Mean Square Error,MSE);隨后,使用包圍盒大小進行歸一化,來得到歸一化平均誤差。表2 展示了本文方法和其他方法的比較結果,評判標準使用歸一化平均誤差(%),其中,歸一化平均誤差越小,三維人臉重建效果越好。由表中可以得出,本方法的歸一化平均誤差比3DDFA低0.18,比DeFA 低2.08。因此本方法展示出了更好的效果。

圖5 三維人臉重建效果Fig.5 Results of 3D face reconstruction

表2 三維人臉重建歸一化平均誤差結果 單位:%Tab.2 NME results of 3D face reconstruction unit:%
為了驗證不同模塊對實驗效果的影響,本文分為兩個部分進行消融實驗:第一個部分為是否添加3DMM 改進模塊;第二個部分為是否在損失函數中使用三維人臉光滑性約束的損失項。
3.5.1 是否改進3DMM
表3 展示了是否添加3DMM 改進模塊在AFLW2000-3D數據集上的比較結果,其中“不改進3DMM”表示不使用3DMM 改進模塊,“改進3DMM”表示使用3DMM 改進模塊,“對齊NME”表示在密集人臉對齊上的NME,“重建NME”表示在三維人臉重建上的NME。從表3 中可以看出,對于密集人臉對齊,添加了3DMM 改進模塊之后,在AFLW2000-3D 數據集上歸一化平均誤差降低了0.39,這說明3DMM 改進模塊起到了明顯的效果。在三維人臉重建方面,添加了3DMM 改進模塊之后歸一化平均誤差降低了0.06。這說明改進3DMM在三維人臉重建和密集人臉對齊兩方面都起到了關鍵的作用,改進了3DMM之后,效果有了明顯的提升。

表3 是否改進3DMM的歸一化平均誤差結果 單位:%Tab.3 NME results before and after 3DMM improvement unit:%
3.5.2 是否使用三維人臉光滑性約束
在損失函數中添加三維人臉光滑性約束保障了重建出的三維模型局部光滑,這會對三維人臉重建產生較大影響,而對密集人臉對齊影響較小,因此本實驗主要分析是否添加光滑性約束對三維人臉重建的影響。圖6 展示了是否添加三維人臉光滑性約束的效果。可以看出,當未使用三維人臉光滑性約束時,重建出的三維人臉模型出現了面片翻轉、表面粗糙的情況,重建的質量不佳;在添加光滑性約束后,效果有了明顯提升。這說明三維人臉光滑性約束起到了至關重要的作用。

圖6 是否使用三維人臉光滑性約束重建效果Fig.6 3D face reconstruction results with and without 3D face smoothness constraint
本文提出了一個基于弱監督學習的端到端的卷積神經網絡模型,用于從單張人臉圖片進行三維人臉重建和密集人臉對齊。通過將現有的3DMM 模型作為卷積神經網絡全連接層的一部分,本文對現有的3DMM 模型進行改進,有效地重建出更精準的三維人臉模型,提高了模型的泛化能力。本文設計了一個新的損失函數,通過對學習到的三維人臉模型加入光滑性約束,并且使用輸入人臉圖片和渲染后圖片的SSIM 作為損失,有效地提升了重建質量。同時本文的方法在不同的人臉姿態中都展現了很好的魯棒性,可以對大姿態的人臉圖片有效地進行三維人臉重建和密集人臉對齊。在AFLW2000-3D 和AFLW-LFPA 數據集上的實驗結果表明,本文的方法在三維人臉重建和密集人臉對齊方面均優于以前的方法。在未來工作中,將繼續改進三維人臉模型以重建出更詳細的面部信息,例如胡須、痣和皺紋等。