杜召彬 崔霄
長期以來,3D人臉重建技術(shù)一直是計(jì)算機(jī)視覺和光學(xué)成像等領(lǐng)域的研究熱點(diǎn),在人臉識(shí)別[1-2]、視頻編輯[3]和虛擬化妝[4]等方向有著廣泛的應(yīng)用前景[5-8].
目前,自動(dòng)化程度最高、應(yīng)用最廣泛的3D重建方法是基于統(tǒng)計(jì)模型的三維人臉形變模型(3D Morphable Model,3DMM)[9],近年有許多學(xué)者致力于這方面研究[10-11].例如:文獻(xiàn)[12]針對(duì)非正面人臉轉(zhuǎn)化為正面人臉圖像通常會(huì)出現(xiàn)轉(zhuǎn)換前后語義不一致的問題,即局部區(qū)域扭曲現(xiàn)象,提出了一種基于三維形變模型(3DMM)的人臉姿態(tài)矯正方法,從而通過該方法可以生成自然的人臉正面圖像;文獻(xiàn)[13]首先對(duì)2D人臉圖像標(biāo)準(zhǔn)化,使用光照信息和對(duì)稱紋理重建人臉自遮擋區(qū)域的紋理,然后依據(jù)2D-3D點(diǎn)對(duì)應(yīng)關(guān)系從標(biāo)準(zhǔn)化的2D人臉圖像獲取相應(yīng)的3D人臉紋理,結(jié)合人臉形狀和紋理信息,最終得到3D人臉重建結(jié)果;文獻(xiàn)[14]提出一種基于multi-level損失函數(shù)的弱監(jiān)督學(xué)習(xí)模型,結(jié)合傳統(tǒng)三維人臉形變模型(3DMM),直接從大量無標(biāo)簽的二維人臉圖像中學(xué)習(xí)3D人臉特征信息,從而提出了基于單張二維人臉圖像的3D人臉重建算法.
針對(duì)傳統(tǒng)3DMM方式存在過約束,以及不能提供足夠的靈活性來表示高頻變形的問題,本文將非線性3DMM與神經(jīng)網(wǎng)絡(luò)相結(jié)合,提出了一種基于深度3DMM的3D人臉重建算法.
三維形變模型(3DMM)是一種使用面部幾何形狀和反射率來表示人臉的參數(shù)化模型.本文借鑒文獻(xiàn)[15-16]的方法,利用主成分分析法(Principal Component Analysis,PCA)來描述3D人臉空間:
(1)
(2)
于是,可以運(yùn)用3DMM來合成新的面部視圖.首先,利用弱透視投影模型進(jìn)行圖像處理:
V=RS,
(3)
(4)
基于全局的3DMM模型通常對(duì)噪聲和不匹配具有較強(qiáng)魯棒性,但卻存在過約束的現(xiàn)象,不能提供足夠的靈活性來表示高頻變形.為了有效改進(jìn)這方面的不足,本文構(gòu)建了雙通路神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)對(duì)幾何形狀和反射率的自動(dòng)解碼.
發(fā)揮局部路徑與全局路徑相結(jié)合及其在圖像合成中的成功經(jīng)驗(yàn)[17],應(yīng)用于3D人臉重建.解碼器的總體結(jié)構(gòu)如圖1所示,其中一個(gè)由分步卷積層和5個(gè)上采樣步驟組成的全局路徑用于全局推斷,另一個(gè)由若干子網(wǎng)絡(luò)構(gòu)成的局部路徑用于生成人臉不同部位的細(xì)節(jié),包括眼睛、鼻子和嘴等.局部路徑的引入,在以下兩個(gè)方面具有明顯優(yōu)勢(shì):一是由于上采樣步驟較少,局部路徑能夠更好地表達(dá)圖像信息的高頻細(xì)節(jié);二是局部路徑中每個(gè)子網(wǎng)絡(luò)都可以學(xué)習(xí)部分特定的過濾器,這比全域路徑的計(jì)算效率更高.
如圖 1所示,本文將4個(gè)局部路徑綜合輸出到單一的特征張量中,然后通過連續(xù)的卷積層來整合全局路徑與局部路徑信息,并生成最終的反射率/形狀.此外,不同于其他3D人臉重建方式[18-20],本文算法不設(shè)固定的關(guān)鍵信息點(diǎn),3DMM將通過局部路徑與全局路徑相結(jié)合的方式生成人臉反射率和3D人臉空間形狀.
圖1 雙通路神經(jīng)網(wǎng)絡(luò)示意Fig.1 Schematic diagram of dual-path neural network
在線性3DMM中,對(duì)每個(gè)形狀、反射率分量的分解均可以看成是系數(shù)和PCA主成分之間的矩陣乘法.但從神經(jīng)網(wǎng)絡(luò)的角度來看,可將其看作是一個(gè)沒有激活函數(shù)的全連通層的神經(jīng)網(wǎng)絡(luò)[21-22].為了增加模型的表達(dá)能力,本文將淺層網(wǎng)絡(luò)擴(kuò)展到深層架構(gòu),設(shè)計(jì)了一種將3DMM模型與深度神經(jīng)網(wǎng)絡(luò)相結(jié)合的非線性三維形變模型.
如圖2所示,本文使用兩個(gè)深度神經(jīng)網(wǎng)絡(luò)分別將形狀、反射率參數(shù)解碼為3D人臉形狀和反射率.為了使框架端到端可訓(xùn)練,這些參數(shù)由編碼器網(wǎng)絡(luò)估計(jì).在基于物理的渲染層的輔助下,3個(gè)深度網(wǎng)絡(luò)聯(lián)合起來,最終自動(dòng)實(shí)現(xiàn)單張3D人臉重建的目標(biāo).
圖2 基于深度3DMM的3D人臉重建架構(gòu)示意Fig.2 Schematic of 3D face reconstruction based on deep 3DMM
FS(ES(I)),FA(EA(I))),
(5)
式中:K(·)是3D重建的損失函數(shù),將其定義為
K=Krec+λLKlan+λregKreg,
(6)
1) 三維形變重建損失
對(duì)于重建損失有很多的方式,其中最直接的方式是用l1或l2損耗在像素空間中比較圖像.為了更好地處理異常值,本文采用了魯棒性較強(qiáng)的l2,1,其中RGB顏色空間的距離基于l2,求和則基于l1范數(shù)以加強(qiáng)稀疏性[23-24]:
(7)
式中:ν是二維人臉圖像網(wǎng)格覆蓋的像素集合.
(8)
式中:C是神經(jīng)網(wǎng)絡(luò)層φ上的一個(gè)子集;φj(I)是處理I時(shí)得到的第j層維數(shù)為Wj×Hj×Cj的激活函數(shù).
于是,最終的三維形變重建損失是由圖像和特征重建損失組成的加權(quán)平均值:
(9)
式中:λf是權(quán)重系數(shù).
2)三維形變標(biāo)注損失
為了有助于實(shí)現(xiàn)更好的三維形變,本文構(gòu)建了一種標(biāo)注損失,測量估計(jì)和二維圖像與三維形變之間標(biāo)注的歐氏距離:
(10)
式中:U∈R2×68是事前標(biāo)注的二維圖像標(biāo)記信息;d是存儲(chǔ)與標(biāo)記的二維圖像信息對(duì)應(yīng)的68個(gè)3D頂點(diǎn)索引向量.由于三維形變標(biāo)注損失只影響與關(guān)鍵點(diǎn)相關(guān)的頂點(diǎn)[25-26],本文將三維形變標(biāo)注損失僅應(yīng)用于編碼器E,以防止學(xué)習(xí)不需要的信息.
3)三維形變正則化損失
為了確保3D重建的合理性,并能真實(shí)地反映形態(tài)、反射率和光照等因素,本文添加了一些正則化損失項(xiàng):
Kreg=λsymKsym+λconKcon+λsmoKsmo,
(11)
式中:Ksym是反射率對(duì)稱約束;Kcon是反射率保持約束;Ksmo是形狀平滑約束;λsym,λcon,λsmo是權(quán)重系數(shù).
① 反射率對(duì)稱約束
借鑒Tran等[25]利用頂點(diǎn)的UV空間關(guān)系將S和A分別表示為AUV和SUV.考慮人臉的對(duì)稱性,在此設(shè)定了反射率對(duì)稱約束:
Ksym=‖AUV-flip(AUV)‖1,
(12)
式中:flip(·)是水平圖像翻轉(zhuǎn)函數(shù).
② 反射率保持約束
使用反射率對(duì)稱約束可以幫助修正人臉圖像中的全局陰影.然而,面部細(xì)節(jié)如酒窩等,也將嵌入反射率通道中.為了進(jìn)一步消除反射率通道的陰影,遵循假定反射率為分段常數(shù)的視網(wǎng)膜皮層理論[27-28],本文在其梯度的兩個(gè)方向上施加稀疏性約束:
(13)
③ 形狀平滑約束
對(duì)于三維形變,本文通過對(duì)所有頂點(diǎn)位置添加拉普拉斯正則化來實(shí)現(xiàn)平滑約束:
(14)
本文算法訓(xùn)練中選擇了兩個(gè)公開可用的人臉圖像數(shù)據(jù)集:AFLW數(shù)據(jù)集[29]是一個(gè)二維人臉圖像數(shù)據(jù)集,每個(gè)圖像有多達(dá)21處標(biāo)記,每個(gè)標(biāo)記有一個(gè)可見性標(biāo)簽.文獻(xiàn)[29]選擇了一個(gè)偏航角均衡分布的AFLW子集,包括3 901張用于訓(xùn)練的圖像和1 299 張用于測試的圖像,本文也使用相同的子集對(duì)算法進(jìn)行訓(xùn)練和測試.AFW數(shù)據(jù)集[30]包含205張圖像,每張人臉圖像有6處標(biāo)記,每個(gè)標(biāo)記有一個(gè)可見性標(biāo)簽.對(duì)于每張人臉圖像,提供檢測到的包圍框.由于AFW數(shù)據(jù)集圖像數(shù)量相對(duì)較少,本文僅使用該數(shù)據(jù)集進(jìn)行測試.
本文算法仿真使用CPU:Intel Core(TM) i5-8250U;RAM:16 GB;顯卡:Geforce GTX 獨(dú)立GPU的硬件設(shè)備,基于Pyorch深度學(xué)習(xí)框架實(shí)現(xiàn),采用ResNet-50網(wǎng)絡(luò)模型,將最后一層全連接層設(shè)為314,神經(jīng)網(wǎng)絡(luò)采用Adam方法優(yōu)化參數(shù),學(xué)習(xí)率設(shè)為0.001,batch size設(shè)為16,10個(gè)epoch共訓(xùn)練101 360 次迭代,3D重建的損失函數(shù)權(quán)重λL,λreg分別設(shè)為2.6×10-2和4×10-3,三維形變正則化損失項(xiàng)中的λsym,λcon,λsmo分別設(shè)為0.25、0.45和0.3.
以二維人臉圖像作為輸入,運(yùn)用本文算法進(jìn)行3D人臉重建,重建效果如圖3所示.由圖3可知,本文算法能夠準(zhǔn)確獲取二維人臉五官信息,3D重建效果圖能夠還原二維人臉特征,達(dá)到了預(yù)期效果.
圖3 本文算法3D人臉重建效果Fig.3 3D face reconstruction renderings based on the proposed algorithm
為了公平比較本文算法相對(duì)于傳統(tǒng)3DMM算法的改進(jìn)優(yōu)勢(shì),針對(duì)三組不同視角的二維人臉圖像,分別使用兩種算法進(jìn)行3D人臉重建,3D模型如圖 4所示.使用傳統(tǒng)3DMM算法[25,31]進(jìn)行重建,由于單張二維圖像數(shù)據(jù)類型單一、訓(xùn)練數(shù)量以及線性基數(shù)量較少,得到的3D人臉紋理來自3D模型的平均人臉紋理[32],加之傳統(tǒng)3DMM算法存在的過約束現(xiàn)象,不能提供足夠的靈活性來表示高頻變形,使得3D重建圖像的整體平滑度不夠,紋理失真明顯,缺少目標(biāo)人臉的真實(shí)細(xì)節(jié)信息.使用本文算法進(jìn)重建,通過局部路徑與全局路徑相結(jié)合的方式,能夠改善傳統(tǒng)3DMM算法高頻變形表達(dá)能力的不足,獲取面部區(qū)域的紋理細(xì)節(jié),能更好地表現(xiàn)人臉眼睛、鼻子、嘴巴等區(qū)域的細(xì)節(jié)信息,最大程度地還原二維人臉細(xì)節(jié),同時(shí)更好地保留人臉圖像的光照信息.
圖4 算法改進(jìn)仿真分析Fig.4 Simulation analysis of algorithm improvement
為了檢驗(yàn)本文算法,通過對(duì)比仿真3DDFA[33]和DeFA算法[34],來分析本文算法在3D人臉重建方面的比較優(yōu)勢(shì).3D重建算法間的性能比較,通常采用歸一化平均誤差(Normalized Mean Error,NME)作為指標(biāo),歸一化平均誤差是指根據(jù)人臉包圍盒的大小進(jìn)行歸一化,如式(15)[35]所示:
(15)
對(duì)比實(shí)驗(yàn)中,分別將3種算法的3D人臉重建模型與二維樣本圖像的PCA主成分進(jìn)行密集對(duì)齊,以點(diǎn)對(duì)面距離歸一化平均誤差作為橫坐標(biāo)輸入,以處理不同二維圖像的累計(jì)數(shù)量作為縱坐標(biāo)輸入,擬合出算法累積歸一化平均誤差變化曲線,對(duì)比仿真結(jié)果如圖5所示.圖中,本文算法對(duì)應(yīng)歸一化平均誤差曲線的均值為2.03%,3DDFA算法對(duì)應(yīng)歸一化平均誤差曲線的均值為2.46%,DeFA算法對(duì)應(yīng)歸一化平均誤差曲線的均值為4.36%.可以看出,本文算法的3D重建歸一化平均誤差(NME)比3DDFA算法[33]的3D重建結(jié)果降低17.48%,比DeFA算法[34]的3D重建結(jié)果降低53.44%,應(yīng)用效果有明顯的改善.
圖5 算法比對(duì)歸一化平均誤差Fig.5 Comparison of normalized average errors
圖6為本文算法與3DDFA算法、DeFA算法的可視化結(jié)果.可以看出,由于3DDFA和DeFA算法都在3D重建中引入了一些偽跡[25,32],使得人臉重建看起來不自然,相比較本文算法的3D重建形狀更為平滑、自然.
圖6 3D人臉重建效果比對(duì)Fig.6 Comparison of 3D face reconstruction performances
針對(duì)傳統(tǒng)3DMM迭代擬合過程中存在過約束、不能提供足夠的靈活性來表示高頻變形等問題,本文在分析線性三維形變模型的基礎(chǔ)上,構(gòu)建雙通路神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了幾何形狀和反射率的解碼,將淺網(wǎng)絡(luò)擴(kuò)展到深層架構(gòu),設(shè)計(jì)了一種將3DMM模型與神經(jīng)網(wǎng)絡(luò)相結(jié)合的非線性三維形變模型,從而提出了基于深度3DMM的3D人臉重建算法.算法采取局部路徑與全局路徑相結(jié)合的方式,使得每個(gè)子網(wǎng)絡(luò)都可以學(xué)習(xí)特定細(xì)節(jié)信息,在比全域路徑獲得更高計(jì)算效率的同時(shí),能夠更好地表示人臉面部的高頻細(xì)節(jié)信息.從算法比對(duì)和仿真實(shí)驗(yàn)結(jié)果可知,本文算法誤差更低,進(jìn)一步改善了傳統(tǒng)3DMM算法在高頻變形表達(dá)能力方面的不足,通過模型擬合可以實(shí)現(xiàn)高保真的3D人臉重建.