王育堅,李深圳,韓靜園,譚衛(wèi)雄
(北京聯(lián)合大學(xué) 信息學(xué)院,北京 100101)
近年來,三維人臉重建成為計算機視覺、圖像識別等研究領(lǐng)域中的熱點問題。三維人臉重建技術(shù)可以分為基于不同視角的多幅圖像的重建和基于單幅圖像的三維人臉重建?,F(xiàn)實生活中很多場合下,往往只有一張人臉圖片可用,因此,基于單幅圖像的三維人臉重建受到了國內(nèi)學(xué)者的重點關(guān)注。
目前,針對單幅圖像的三維人臉重建,傳統(tǒng)方法有基于模型的方法[1]、基于明暗形狀恢復(fù)的方法[2]等。隨著深度學(xué)習(xí)被引入到三維人臉重建領(lǐng)域,并且取得了比傳統(tǒng)方法更優(yōu)異的效果,而逐漸成為主流的重建方法。Jackson A S等人[3]提出使用VRN(volumetric regression networks)從單個二維圖像直接進行三維面部重建的方法。Feng Y等人[4]設(shè)計了一個名為UV位置圖的二維表示方法,記錄UV空間中完整面部的三維形狀,然后訓(xùn)練一個簡單的卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN),從單個二維圖像中回歸。Chang F J等人[5]提出了直接應(yīng)用于人臉圖像強度,回歸3D表情系數(shù)的29D 向量的ExpNet CNN模型。Tu X G等人[6]針對3D標注訓(xùn)練數(shù)據(jù)短缺問題,提出一種2D輔助自監(jiān)督學(xué)習(xí)方法,利用帶嘈雜地標信息的無約束二維人臉圖像改善三維人臉模型的學(xué)習(xí),在密集人臉對齊和三維人臉重建方面取得了突出的效果。劉成攀等人[7]提出一種基于自監(jiān)督深度學(xué)習(xí)的人臉表征及三維重建方法,將二維人臉的特征點信息映射到三維空間實現(xiàn)三維人臉重建。
在無約束條件下,人臉的表情、姿勢、紋理和內(nèi)在幾何存在很大差異,以上三維人臉重建方法仍然不夠穩(wěn)定,重建的結(jié)果出現(xiàn)臉部不完整、重建臉型偏向平均臉型、表情不夠逼真等問題。針對上述問題,以卷積網(wǎng)絡(luò)模型VGG—16[8]為基礎(chǔ),設(shè)計一種VGG-BN的改進網(wǎng)絡(luò)模型,用于回歸三維形變模型(3D morphable model,3DMM)參數(shù)進行三維人臉重建,并在300W-LP數(shù)據(jù)集上訓(xùn)練,在AFLW2000-3D數(shù)據(jù)集上進行測試。
3DMM是Blanz V等人[9]提出的一種人臉線性表示模型。該模型使用形狀向量S表示人臉的幾何形狀,S=(X1,Y1,Z1,X2,…,Yn,Zn)T∈R3n,其中n是人臉面部的頂點個數(shù),Xi,Yi,Zi是第i個頂點的三維坐標。該模型假設(shè)進行紋理映射時,有效紋理值的數(shù)量等于頂點的數(shù)量,人臉的紋理可通過紋理向量T表示,T=(R1,G1,B1,R2,…,Gn,Bn)T∈R3n,其中Ri,Gi,Bi是第i個頂點對應(yīng)的紋理值。利用m個人臉樣本數(shù)據(jù)構(gòu)建一個可形變的人臉模型,每個人臉樣本由形狀向量Sj和紋理向量Tj表示(0≤j≤m)。
(1)
(2)
最后,分別計算協(xié)方差矩陣的特征值和特征向量,按特征值降序選取前m個最大的特征值γ=(γ1,γ2,…,γm)和δ=(δ1,δ2,…,δm),以及對應(yīng)特征值順序的特征向量s=(s1,s2,…,sm)和使用主成分分析(principal component analysis,PCA)對特征向量和構(gòu)成的正交坐標系進行基礎(chǔ)變換。模型公式如下
(3)
(4)
當模型具有紋理部分時,上述3DMM往往擬合效果不夠好。因此,重建人臉時通常只考慮人臉的形狀部分,當需要紋理時,一般直接從照片中提取紋理進行貼合。針對3DMM對人臉表情處理的不足,Cao C等人[10]提出了FaceWarehouse人臉表情數(shù)據(jù)庫,并將其引入到3DMM中。人臉線性模型可以擴充為
(5)
式中ej為在FaceWarehouse數(shù)據(jù)上,通過PCA得到的表情協(xié)方差矩陣的特征向量,φj為對應(yīng)的表情參數(shù),n為使用的數(shù)據(jù)量數(shù),至此人臉重建問題可以轉(zhuǎn)化為求解形狀參數(shù)α和表情參數(shù)φ的問題。
在獲得三維面部形狀Snew之后,可以使用弱透視投影將三維面部投影到二維圖像平面上
(6)
式中V存儲投影到二維平面上的三維頂點的二維坐標,f為比例因子,Pr為正交投影矩陣,R為由9個參數(shù)組成的投影矩陣,t為平移向量。改進模型中,s采用BFM[11]的40個基,e采用FaceWarehouse的10個基,將這些參數(shù)放在一起形成具有62個參數(shù)的向量P=[f,t,R,α,φ]T。研究的主要目標就是使用深度CNN從單幅圖像中預(yù)測對應(yīng)的三維人臉的參數(shù)P,以重建帶有表情的三維人臉形狀。
CNN已經(jīng)被應(yīng)用于三維人臉重建,Dou P F等人[12]在VGG-Face人臉識別網(wǎng)絡(luò)的基礎(chǔ)上,增加了一個子CNN(fusion-CNN),提出了端到端的三維人臉重建網(wǎng)絡(luò)(UH-E2FAR)。Tuan Tran A等人[13]使用深度殘差網(wǎng)絡(luò)ResNet-101回歸3DMM形狀和紋理參數(shù),用于三維人臉重建。Zhu X Y等人[14]利用級聯(lián)CNN(3DDFA)回歸3DMM參數(shù),用于大姿勢的人臉對齊和三維人臉重建。
目前使用CNN重建三維人臉主要有兩種方式,一是在現(xiàn)有網(wǎng)絡(luò)如AlexNet,VGGNet,DenseNet等基礎(chǔ)上增加網(wǎng)絡(luò)層數(shù)或修改模型結(jié)構(gòu)。另一種是修改網(wǎng)絡(luò)參數(shù),對網(wǎng)絡(luò)中算法進行改進,來提升網(wǎng)絡(luò)模型的性能。本文采用第二種改進思路,通過在卷積操作之后,激活函數(shù)ReLU之前加入批歸一化(batch normalization,BN)層,更改網(wǎng)絡(luò)全連接層參數(shù),調(diào)整優(yōu)化器,使用遷移學(xué)習(xí),提升網(wǎng)絡(luò)模型對參數(shù)的預(yù)測的性能。
改進方法設(shè)計的VGG-BN網(wǎng)絡(luò)模型以VGG-16網(wǎng)絡(luò)為骨架,網(wǎng)絡(luò)模型包含13個卷積層、5個最大池化層、3個全連接層,網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。卷積層網(wǎng)絡(luò)參數(shù)如表1所示。
圖1 網(wǎng)絡(luò)結(jié)構(gòu)
表1 卷積層網(wǎng)絡(luò)參數(shù)
在卷積層中,每個卷積核的大小為3×3,步長為1,填充為1,即卷積之后圖像大小不變。每個卷積層之后緊跟一個激活函數(shù)ReLU,其計算公式為
R=max(0,y)
(7)
式中R為激活函數(shù)的輸出值,y為卷積層的輸出值。ReLU函數(shù)的優(yōu)點在于:當輸入值y大于0時,它的導(dǎo)數(shù)恒為1,保持梯度不衰減,有效緩解了梯度消失問題,加快了網(wǎng)路收斂速度。
對VGG-16網(wǎng)絡(luò)結(jié)構(gòu)的改進點,是在激活函數(shù)ReLU之前加入BN層,即對輸入激活函數(shù)的數(shù)據(jù)進行批量標準化處理,使輸入數(shù)據(jù)的均值為0,方差為1。假設(shè)BN層輸入數(shù)據(jù)為β={x1,x2,…,xm},其中m是單批次輸入數(shù)據(jù)個數(shù),那么
(8)
(9)
(10)
(11)
式中ε為避免分母為0,設(shè)置的極小正數(shù),取值為1×10-5,γ為尺度因子,φ為平移因子。引入γ,φ的原因是xi經(jīng)過式(10)歸一化后被限制在正態(tài)分布下,使得網(wǎng)絡(luò)表達能力下降。γ,φ可通過梯度下降法求得。
在池化層中,每個卷積核的大小為2×2。池化層的作用是從小區(qū)域的特征中剔除不重要的特征,提取新的特征信息。池化方式常用的有最大值池化和平均值池化,改進方法結(jié)構(gòu)采用的是最大值池化方式,實現(xiàn)過程見圖2。
圖2 最大值池化示意
網(wǎng)絡(luò)模型包含3個全連接層,前兩個全連接層都是4 096個通道,第三個全連接層通道原本是1 000,代表1 000個類別。因為本文預(yù)測目標是62個參數(shù),此處將其改為62。前兩個全連接層之后緊跟ReLU激活函數(shù)和Dropout函數(shù)。Dropout函數(shù)的作用是在網(wǎng)絡(luò)訓(xùn)練過程中,按照一定的概率p將神經(jīng)元從網(wǎng)絡(luò)中丟去,這樣使網(wǎng)絡(luò)模型的泛化能力更強,讓網(wǎng)絡(luò)不會太依賴于某些局部特征。改進模型Dropout函數(shù)的失活概率p=0.5。
目前300W-LP和AFLW2000-3D數(shù)據(jù)集被廣泛用于人臉對齊和人臉重建領(lǐng)域。300W-LP是由Zhu X Y等人[14]采用其提出的方法生成61,225個大型樣品,其進一步通過翻轉(zhuǎn)將其擴展到122,450個樣品。每個樣品包括二維人臉圖像和對應(yīng)3DMM系數(shù)。采用其中636 252張圖片和對應(yīng)的3DMM系數(shù)作為訓(xùn)練集,51 602張圖片和對應(yīng)的3DMM系數(shù)作為訓(xùn)練時的驗證集。
將AFLW2000-3D[14]作為獨立測試集。AFLW2000-3D是選擇AFLW的前2000張圖片構(gòu)建而成,每張圖片都有對應(yīng)的3DMM參數(shù)和68個3D人臉特征點。
300W-LP數(shù)據(jù)庫中原始二維圖像大小是450像素×450像素,根據(jù)圖像對應(yīng)的三維信息文件中人臉區(qū)域的二維坐標,將圖像中人臉區(qū)域裁剪并調(diào)整大小為150像素×150像素。對訓(xùn)練數(shù)據(jù)和驗證數(shù)據(jù)集進行歸一化,將所有數(shù)據(jù)都映射為均值為0,方差為1。這里使用均值方差歸一化方法,即
xscale=(x-xmean)/xstd
(12)
式中xmean為均值,xstd為方差,xscale為歸一化后的數(shù)據(jù),即送入CNN的數(shù)據(jù)。對于訓(xùn)練數(shù)據(jù)和驗證數(shù)據(jù)中的目標參數(shù)P也進行均值方差歸一化,即
Pscale=(P-Pmean)/Pstd
(13)
并將均值Pmean和方差Pstd保存。因此,對于網(wǎng)絡(luò)預(yù)測輸出的參數(shù)需要進行反歸一化,即
(14)
式中Pout為深度CNN直接輸出的結(jié)果,為預(yù)測出的參數(shù)。
本文采用定性評價和定量評價兩種評價指標。其中,定性評價是對重建的三維人臉形狀和表情的直觀觀察,定量評價是參考文獻[5]中評價方法,首先,使用迭代最近點(iterative closest points,ICP)算法來找到重建的3D人臉頂點和真實3D人臉頂點之間相應(yīng)最近點,然后計算相應(yīng)最近點之間的歸一化均值誤差(normalized mean error,NME),人臉區(qū)域的邊界框大小用作歸一化因子,NME值越小,說明重建效果越精確。
(15)
式中n為頂點集中頂點個數(shù)。若d小于給定閾值,則停止迭代,否則返回步驟(2),直到滿足收斂條件。
(16)
實驗使用的硬件設(shè)備如下:處理器為Intel?CoreTMi9—9900K CPU @3.6GHz;內(nèi)存8 GB;系統(tǒng)為64位Ubuntu 18.04.3 LTS操作系統(tǒng),運行環(huán)境Python3.6,運行軟件PyCharm,一塊NVIDIA GeForce RTX 2080 Ti GPU,硬盤大小200 GB。
為減少網(wǎng)絡(luò)訓(xùn)練時間和提高網(wǎng)絡(luò)訓(xùn)練效率,在訓(xùn)練過程中采用遷移學(xué)習(xí)方法,引入了預(yù)訓(xùn)練好的VGG-16模型參數(shù)。預(yù)訓(xùn)練好的VGG-16模型是通過ImageNet數(shù)據(jù)庫中的100萬幅圖像訓(xùn)練而成,具有較強的深度特征學(xué)習(xí)能力,其擁有大量已經(jīng)訓(xùn)練完成的參數(shù)和權(quán)重,特別是卷積層關(guān)于圖像的曲線、邊緣、輪廓的特征提取具備較強的能力。
改進模型基于PyTorch深度學(xué)習(xí)框架編碼完成卷積網(wǎng)絡(luò)結(jié)構(gòu)。通過實驗對比,網(wǎng)絡(luò)選擇使用Adam優(yōu)化器,初始學(xué)習(xí)率base_lr設(shè)為0.0001,學(xué)習(xí)率按epoch調(diào)整,當3>epoch>=1,base_lr=base_lr*0.01 ,當epoch>=3,base_lr=base_lr*0.001,動量設(shè)為0.9,L2正則化權(quán)重衰減參數(shù)設(shè)置為1×10-5,訓(xùn)練集批處理大小為64,驗證集批處理大小為8,epoch總數(shù)設(shè)為100。
對于網(wǎng)絡(luò)回歸問題,常用的損失函數(shù)是回歸參數(shù)之間的歐氏距離(parameter distance cost,PDC),即
(17)
(18)
將改進的VGG-16網(wǎng)絡(luò)以及使用遷移學(xué)習(xí)和使用式(18)作為損失函數(shù)的模型集記為VGG-BN,將未改進的VGG-16網(wǎng)絡(luò)以及使用遷移學(xué)習(xí)和使用式(18)作為損失函數(shù)的模型集記為VGG-preVDC,將未改進的VGG-16網(wǎng)絡(luò)以及使用遷移學(xué)習(xí)和使用式(17)作為損失函數(shù)的模型集記為VGG-prePDC,將未改進的VGG-16網(wǎng)絡(luò)以及未使用遷移學(xué)習(xí)和使用式(17)作為損失函數(shù)的模型集記為VGG-PDC。文中只詳細介紹VGG-BN的具體訓(xùn)練參數(shù),其余模型不再贅述。
從圖3中,可以很明顯地看出改進后的網(wǎng)絡(luò)VGG-BN在驗證集上的損失比未改進網(wǎng)絡(luò)結(jié)構(gòu)的VGG-preVDC低的多,驗證了改進方法的可行性。
圖3 訓(xùn)練過程中在驗證集上的損失對比
圖4中第一列為從測試集AFLW2000-3D抽取的二維圖像,第二列、第三列為改進方法VGG-BN重建三維人臉的正面圖和側(cè)面圖,第三列、第四列為文獻[14]方法重建三維人臉的正面圖和側(cè)面圖,第五列、第六列為文獻[5]方法重建三維人臉的正面圖和側(cè)面圖。為保證對比的公平性,文獻[5]和文獻[14]的重建結(jié)果均由對應(yīng)文獻公布的測試程序生成。由圖4中可以看出,改進方法重建的人臉形狀比文獻[5]的重建結(jié)果更加平滑,重建的人耳部分更加完整,同時文獻[5]重建的人臉具有明顯條紋;對比文獻[14],改進方法和文獻[14]的部分重建結(jié)果相差不夠明顯,但圖4第一行中改進方法重建的人臉的嘴張開的大小更加合理,同時改進方法重建結(jié)果的面部細節(jié)相對更加豐富,尤其在眼部位置。
圖4 本文方法VGG-BN和文獻[14]、文獻[5]對比結(jié)果
由于改進方法和文獻[14]方法在測試時均使用dlib人臉檢測器進行人臉特征檢測,同時AFLW2000-3D數(shù)據(jù)集中存在人臉角度偏轉(zhuǎn)較大的圖片,該部分圖片無法檢測到人臉,除去無法檢測到人臉的圖片,共使用AFLW2000-3D數(shù)據(jù)集中的1 496張圖片進行測試評估。從圖5中可以看出,在使用同樣數(shù)量單幅圖像進行重建時,VGG-prePDC的NME值遠低于VGG-PDC的NME值,這說明改進方法使用遷移學(xué)習(xí)提高了模型訓(xùn)練效率;VGG-preVDC的NME值遠低于VGG-prePDC,這說明改進方法提出的損失函數(shù)促進了模型的學(xué)習(xí)效率;同時VGG-BN,VGG-preVDC的NME值都低于文獻[14]的NME值,并且VGG-BN的NME是最低的,表明對模型的改進是可行的。
圖5 在AFLW2000-3D上的累積誤差分布(CED)曲線(來自AFLW2000-3D數(shù)據(jù)集的1496張圖像)
從表2中可以看出,在測試數(shù)據(jù)集上,改進模型VGG-BN的平均NME值最低,比VGG-preVDC的平均NME值低0.12,比文獻[14]的平均NME值低0.15,重建的效果明顯改善。通過實驗和比較分析,可以看出,相對于原來的VGG-16網(wǎng)絡(luò),改進后的VGG-BN網(wǎng)絡(luò)對單幅圖像的圖像特征學(xué)習(xí)能力更強,泛化能力更好。
表2 在AFLW2000-3D上的平均NME
本文介紹了一種基于CNN的單幅圖像三維人臉重建方法,改進網(wǎng)絡(luò)模型VGG-BN以VGG-16為基礎(chǔ),在每個卷積之后添加批歸一化層設(shè)計,預(yù)訓(xùn)練模型引入遷移學(xué)習(xí)技術(shù),直接從二維圖像中回歸3DMM形狀和表情參數(shù),進行三維人臉重建。通過在AFLW2000—3D數(shù)據(jù)集上進行實驗和比較,驗證了改進方法進行三維人臉重建的有效性。下一步將結(jié)合紋理、形狀、表情重建出逼真的3D人臉。