吳 越,董蘭芳
(中國科學(xué)技術(shù)大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,合肥 230027)
隨著計算機技術(shù)的發(fā)展,三維人臉重建成為計算機視覺領(lǐng)域熱門的研究課題.相較于二維人臉,三維人臉包含更多特征信息,能夠應(yīng)用于更豐富的實際生活場景,如人臉識別[1]、影視娛樂[2]、醫(yī)療美容[3]等.
近年來,基于單張二維人臉圖像重建三維人臉的工作取得了巨大的成功[4],本文將現(xiàn)有三維人臉重建技術(shù)大致分為兩大類:傳統(tǒng)重建方法和基于深度學(xué)習(xí)的重建方法.目前自動化程度最高、應(yīng)用最廣泛的傳統(tǒng)重建方法是基于統(tǒng)計模型的三維人臉形變模型(3D Morphable Model,3DMM)[5],但該方法主要問題是其迭代擬合過程中的計算代價過大、重建效率偏低.
隨著深度學(xué)習(xí)在計算機視覺領(lǐng)域取得重大突破,很多學(xué)者研究了如何利用深度學(xué)習(xí)對二維人臉圖像進行3DMM 三維人臉形狀和紋理系數(shù)估計.深層神經(jīng)網(wǎng)絡(luò)提供了從圖像像素到三維模型參數(shù)的回歸學(xué)習(xí)能力,然而利用深度學(xué)習(xí)進行三維人臉重建的首要問題是獲取三維人臉數(shù)據(jù)的代價過高,訓(xùn)練數(shù)據(jù)不足.
一種常用的解決訓(xùn)練數(shù)據(jù)不足的方案是先通過傳統(tǒng)的三維人臉重建方法生成大量三維人臉合成數(shù)據(jù)作為訓(xùn)練數(shù)據(jù).Tran 等[6]針對訓(xùn)練數(shù)據(jù)不足的問題,利用一種多圖像3DMM 估計方法生成足量帶標(biāo)簽的三維人臉數(shù)據(jù),并在ResNet-101 上訓(xùn)練回歸3DMM 模型系數(shù),實現(xiàn)基于單張二維人臉圖像的三維人臉重建.Richardson 等[7]通過隨機采樣3DMM 模型,修改模型參數(shù)后生成新的三維人臉后進行渲染得到二維圖像,將生成的新的三維人臉和渲染投影后的二維圖像作為一組訓(xùn)練對并作為CNN 網(wǎng)絡(luò)模型的輸入.然而,當(dāng)面對二維人臉圖像中存在遮擋、不尋常的光照時,這些純粹由合成數(shù)據(jù)訓(xùn)練的網(wǎng)絡(luò)表現(xiàn)的并不好.除此以外,大量的實驗結(jié)果表明合成的圖像往往缺乏真實特征,對重建精度易產(chǎn)生負面影響.
另一種解決訓(xùn)練數(shù)據(jù)不足的方法是直接從大量無三維標(biāo)注的二維人臉圖像中學(xué)習(xí)3DMM 系數(shù).Tewari等[8]首先提出了從無標(biāo)簽的二維人臉圖像中直接學(xué)習(xí)3DMM 系數(shù)的方法,他們訓(xùn)練了一個自動編解碼網(wǎng)絡(luò)以同時預(yù)測3DMM 人臉形狀、紋理、姿勢、光線等參數(shù),該方法不需要三維標(biāo)注與二維人臉圖像的監(jiān)督數(shù)據(jù)對.然而,由于該方法的訓(xùn)練損失函數(shù)是基于圖像像素的,網(wǎng)絡(luò)容易混淆相關(guān)變量之間的變化.Genova等[9]進一步改進了這一方法,通過使用預(yù)先訓(xùn)練的人臉識別網(wǎng)絡(luò),如VGG-Face 或谷歌的FaceNet,在損失函數(shù)中添加了高層特征的約束.
此外,目前大多數(shù)基于單張圖像的三維人臉重建算法只重建三維人臉幾何形狀信息,后續(xù)為增強真實感直接使用紋理貼圖方法將圖像中人臉紋理映射到三維人臉上.該方法最大的問題是由于人臉圖像存在不可見區(qū)域,側(cè)臉、耳朵以及脖子處的紋理將無法獲取;對于存在遮擋或大姿態(tài)情況下的二維人臉圖像,大面積不可見區(qū)域的人臉紋理更是無法直接從二維圖像中提取.
針對以上問題,本文提出一種可同時重建三維人臉形狀和紋理信息的弱監(jiān)督學(xué)習(xí)算法.首先針對訓(xùn)練數(shù)據(jù)不足問題,本文設(shè)計了一種multi-level 的弱監(jiān)督損失函數(shù),可直接從大量二維人臉圖像中學(xué)習(xí)多種弱監(jiān)督信息來監(jiān)督網(wǎng)絡(luò)模型學(xué)習(xí).對于人臉紋理重建,本文通過可微分渲染器SoftRas[10]將重建后的三維人臉渲染至二維圖像平面與輸入人臉圖像建立起像素級別的弱監(jiān)督信息,從而實現(xiàn)對人臉紋理信息的約束與重建.此外為避免遮擋對人臉紋理重建造成影響,本文首先利用基于CelebAMask-HQ 數(shù)據(jù)集[11]訓(xùn)練的人臉解析分割算法去除遮擋.實驗結(jié)果顯示,相較于其它三維人臉重建算法,本文算法的重建質(zhì)量與重建精度均有顯著提升.
本文提出的重建算法的整體框架如圖1所示.給定無三維標(biāo)簽的二維人臉圖像I,先用人臉解析分割算法計算人臉分割掩碼mask,利用該mask 可去除人臉面部的遮擋并使模型更關(guān)注人臉中如眼、眉毛等重要部位.此外利用目前最先進的人臉特征點檢測算法[12]計算68 個人臉特征點lmk 作為弱監(jiān)督信息.隨后將去遮擋后的圖像作為輸入,通過CNN 模型回歸輸出代表各關(guān)鍵系數(shù)的特征向量,包括3DMM、位姿以及光照參數(shù),完成三維人臉重建.為實現(xiàn)重建三維人臉紋理信息,給定位姿和光照參數(shù),利用可微分渲染器SoftRas將重建三維人臉映射到二維圖像平面,得到渲染圖像I',從而實現(xiàn)與輸入圖像I之間的像素級別的紋理監(jiān)督信號.將輸入圖像和渲染圖像輸入一個人臉識別網(wǎng)絡(luò)計算高維度的身份識別損失,實現(xiàn)一種基于multi-level損失函數(shù)的CNN 網(wǎng)絡(luò)模型,以取得更好的重建結(jié)果.
圖1 模型訓(xùn)練流程圖
為實現(xiàn)同時重建三維人臉形狀和紋理信息,需要借助CNN 卷積神經(jīng)網(wǎng)絡(luò)強大的特征提取能力,從二維人臉圖像中提取3DMM 人臉參數(shù)、位姿參數(shù)以及光照參數(shù)以實現(xiàn)基于單張二維人臉圖像的三維人臉重建.
(1)三維人臉形變模型3DMM
傳統(tǒng)三維人臉形變模型3DMM 將三維人臉統(tǒng)一用兩個向量表示:
其中,形狀向量S表示三維人臉形狀,紋理向量T表示三維人臉紋理.由于人臉空間被假設(shè)為一個線性空間,任何一張三維人臉都可以由線性子空間內(nèi)的其它三維人臉線性組合表示,利用主成分分析法PCA 進行降維與去相關(guān)后,新的三維人臉模型可表示為:
其中,S和T分別代表平均人臉形狀和紋理向量,Aid,Aexp和Atex分別表示人臉形狀、表情和紋理PCA 主成分.本文中的三維人臉形狀和紋理信息來源于Basel Face Mode 模型[13],三維人臉表情信息來源于FaceWarehouse三維人臉表情庫[14].通過改變3DMM人臉形狀參數(shù) α、表情參數(shù) β以及紋理參數(shù)δ,即可生成新的三維人臉.
(2)相機模型
假設(shè)三維人臉中頂點為V3d,通過弱透視投影將三維人臉頂點投影至二維平面頂點v的過程可表示為:
其中,f為縮放因子,P是相機矩陣,因本文使用弱透視投影模型,P為正交矩陣[[1,0,0],[0,1,0]],R為旋轉(zhuǎn)矩陣,t為平移向量.三維人臉的位姿參數(shù)即可用[f,R,t]表示.
(3)光照模型
光照模型,也稱明暗模型,用于計算物體某點處的光強.光照估計就是從圖片中獲取光照信息,從而降低光照對紋理的影響.本文采用球諧函數(shù)(Spherical Harmonics,SH)來估計二維人臉圖像中的光照信息.
對于三維人臉模型中的一點p,點p處的像素紋理信息即為p處的反照率(去除光照和陰影后的皮膚紋理) 乘以球諧基函數(shù)的線性組合:
其中,t代表頂點p處的皮膚紋理,n=(nx,ny,nz)代表法線方向,hj代表9個球諧基函數(shù),γj表示球諧基函數(shù)的系數(shù),即光照系數(shù).
綜上,為實現(xiàn)基于單張二維人臉圖像的三維人臉形狀和紋理重建任務(wù),需準(zhǔn)確預(yù)測輸入人臉圖像的各關(guān)鍵參數(shù),包括3DMM 人臉形狀參數(shù) α ∈R100、人臉表情參數(shù) β ∈R80、人臉紋理參數(shù)δ ∈R100、人臉位姿參數(shù)m∈R7以 及光照條件參數(shù)γ ∈R27.
為了在三維人臉模型和二維渲染人臉圖像間建立起像素級別的監(jiān)督,使用可微分渲染器(Soft-Rasterizer,SoftRas)對重建后的三維人臉渲染生成二維人臉圖像,從而重建出精度更高,更有真實感的三維人臉.
可微分渲染器SoftRas 將渲染過程看作是一個聚合函數(shù),不同于傳統(tǒng)渲染器只選擇最近的三角形的顏色的離散采樣操作,SoftRas 假設(shè)所有的網(wǎng)格三角形對每個渲染的像素都有概率貢獻,融合所有三角形對渲染像素的概率貢獻,即可獲得最終的渲染結(jié)果.作為一個真正可微分的渲染框架,SoftRas 能夠生成從像素到三維網(wǎng)格頂點、紋理、法向量等屬性的有效梯度,因此可以將SoftRas 作為一個通用框架應(yīng)用在深度神經(jīng)網(wǎng)絡(luò)模型中,從而為基于單張無三維標(biāo)簽圖像的三維重建任務(wù)提供一種像素級別的監(jiān)督信號.
由于訓(xùn)練數(shù)據(jù)中很可能會因為人臉區(qū)域內(nèi)存在如頭發(fā)、帽子、眼鏡等遮擋物,造成重建后相應(yīng)遮擋區(qū)域內(nèi)的人臉紋理出現(xiàn)問題.因此需要對訓(xùn)練數(shù)據(jù)進行預(yù)處理以避免遮擋物對最終的重建效果造成影響.
在實際數(shù)據(jù)中,最常見的遮擋是頭發(fā)對人臉的遮擋,而傳統(tǒng)的膚色檢測算法并不能很好區(qū)分與膚色像素相近的頭發(fā).因此本文采用基于CelebAMask-HQ 數(shù)據(jù)集的人臉解析分割算法,為輸入圖像去除遮擋.
CelebAMask-HQ 數(shù)據(jù)集是一個高分辨率的人臉圖像集,每張圖像都定義了19 種面部屬性的分割掩碼,包括人臉器官如皮膚、眼睛、眉毛、頭發(fā)等,以及一些外界遮擋如眼鏡、帽子等物體.本文在CelebAMask-HQ數(shù)據(jù)集上訓(xùn)練語義分割網(wǎng)絡(luò)BiseNet[15],實現(xiàn)一個人臉解析分割算法,為訓(xùn)練數(shù)據(jù)計算人臉圖像的分割掩碼mask,從而在計算像素級損失時僅計算去除遮擋的人臉區(qū)域,該人臉解析分割算法效果如圖2所示.
本文僅通過無三維標(biāo)簽的二維人臉數(shù)據(jù)重建三維人臉,因此,如何設(shè)計有效的弱監(jiān)督信號對最終的重建效果至關(guān)重要.為了實現(xiàn)輸入人臉圖像與渲染人臉圖像間的對應(yīng)關(guān)系,本算法充分考慮了圖像的多個維度層面的特征,包括低維度的加權(quán)像素級光度損失,中層的人臉特征點損失以及作為高維度的人臉身份識別損失,最終實現(xiàn)一種multi-level 的弱監(jiān)督損失函數(shù).因此,整個網(wǎng)絡(luò)模型的目的是最小化如下?lián)p失函數(shù):
其中,λpixel,λlmk,λid,λreg是控制損失項重要性的常數(shù).
圖2 人臉解析分割算法示例
(1)低層加權(quán)像素級損失
為使輸入圖像和重建渲染圖像盡可能相似,最簡單直觀的方法是直接計算兩張圖像間低維度的像素差異.得益于人臉解析分割算法,不僅能檢測出如頭發(fā)、帽子等遮擋物,還可以根據(jù)分割掩碼mask 準(zhǔn)確判斷各人臉器官如眉毛、眼睛等在圖像中的位置.因此,在計算這部分損失時,添加一定的權(quán)重讓模型更加關(guān)注這些人臉特征部位的紋理,使重建三維人臉紋理更具真實感.該部分低維度的加權(quán)像素損失可定義為:
其中,V代表了渲染后人臉圖像的可見區(qū)域,(i,j)代表可見區(qū)域內(nèi)的像素位置,因此,只需要取輸入圖像內(nèi)相同區(qū)域進行比較即可.此外,M代表掩碼權(quán)重,主要作用是通過分割掩碼mask 判斷該可見區(qū)域內(nèi)是否存在如頭發(fā)、帽子等遮擋物,若存在則將該區(qū)域權(quán)重設(shè)為0,以避免遮擋對重建造成影響.此外,將眼睛、眉毛等人臉重要器官區(qū)域的權(quán)重設(shè)為2,其它人臉區(qū)域如皮膚等權(quán)重仍設(shè)為1.
(2)中層人臉特征點損失
本文利用目前最先進的人臉特征點檢測算法來檢測無標(biāo)簽二維圖像的68 個人臉特征點{qn}作為一種弱監(jiān)督信號,并將重建后的三維人臉投影至二維平面得到重建后的68 個人臉特征點使用專門為人臉特征點檢測任務(wù)設(shè)計的損失函數(shù)Wing Loss[16],計算一個中層特征的人臉特征點損失:
其中,ΔQlmk=q′n?qn,代表了根據(jù)檢測得到的人臉特征點與重建得到的人臉特征點間的誤差.通過特征點損失,能夠有效引導(dǎo)網(wǎng)絡(luò)模型對人臉形狀、表情以及姿態(tài)參數(shù)的學(xué)習(xí).
(3)高層人臉身份損失
僅使用低維的像素級損失很可能會導(dǎo)致局部極小值問題,因此考慮圖像的高維度特征,對于一個人臉識別網(wǎng)絡(luò),從輸入圖像和重建圖像中提取的人臉特征信息是有一定關(guān)聯(lián)的.ArcFace[17]是目前最優(yōu)秀的人臉識別網(wǎng)絡(luò),給定一張二維人臉圖像,ArcFace 可輸出一個512 維的人臉特征向量.因此,本算法在訓(xùn)練過程中利用預(yù)訓(xùn)練的ArcFace 人臉識別網(wǎng)絡(luò),同時提取輸入二維人臉圖像I和重建渲染圖像I'的512 維人臉特征向量f(I)和f(I′),并計算兩者之間的余弦距離:
通過該損失,可以避免模型出現(xiàn)局部極小值問題.此外,對于人臉識別網(wǎng)絡(luò),盡管同一個人在多張圖像中呈現(xiàn)不同的位姿、表情,最終識別的結(jié)果仍是同一個人.基于人臉識別網(wǎng)絡(luò)這一特性,本算法在計算高維度的人臉身份損失時,通過對重建后的三維人臉的位姿與表情參數(shù)隨機添加一個偏置,變換后的人臉渲染圖像I''與輸入圖像I中的人臉身份應(yīng)仍是一致的.同理,兩張渲染圖像的人臉身份也應(yīng)是一致的,即:
因此,本算法在計算人臉身份損失時,對重建得到的人臉表情 β和位姿參數(shù)m進行小范圍的隨機變換,實現(xiàn)多視角多表情的人臉身份損失,從而能夠訓(xùn)練出更魯棒的網(wǎng)絡(luò)模型.
(4)正則化損失
由于3DMM 參數(shù)是服從正態(tài)分布的,若從二維無標(biāo)簽人臉圖像中回歸的3DMM 參數(shù)值偏離零點太多,則重建的三維人臉可能是扭曲的,因此為了防止人臉形狀和紋理退化,為回歸的3DMM 人臉形狀、表情和紋理參數(shù)添加了正則化損失項作為一種弱監(jiān)督損失:
綜上,通過上述介紹的multi-level 的多種弱監(jiān)督損失函數(shù),可以在不同程度上約束待回歸的人臉形狀、表情、紋理、位姿以及光照參數(shù),從而能夠訓(xùn)練出一個魯棒且具有真實感的三維人臉重建網(wǎng)絡(luò)模型.
本文算法基于Pytorch 深度學(xué)習(xí)框架,采用ResNet-50 網(wǎng)絡(luò)模型,將最后一層全連接層修改為314 維,并采用Adam 方法優(yōu)化參數(shù),設(shè)置初始學(xué)習(xí)率為1×10-4,batch size 設(shè)為16,共訓(xùn)練101 340 次迭代,10 個epoch.訓(xùn)練過程中,各損失函數(shù)的權(quán)重 λpixel、λlmk、λid、λreg分別設(shè)置為3.0、2.4×10-3、0.24 和4×10-4,正則化損失項中的 ωid、ωexp和ωtex分別設(shè)置為1.2、0.8 和0.001.
為能夠定性定量地評估本章算法的重建結(jié)果,將從重建質(zhì)量以及重建精度兩方面來驗證模型的有效性.重建質(zhì)量部分首先將本算法在特定圖像上的重建結(jié)果與目前一些先進的三維人臉重建算法如Tran 等[6]、MoFA[8]以及Genova 等[9]算法的重建結(jié)果在不同的人臉數(shù)據(jù)集如MoFA-test 以及LFW 數(shù)據(jù)集上選擇若干人臉圖像進行視覺上的對比比較,如圖3與圖4所示,部分實驗結(jié)果圖來源于文獻[9].
圖3 部分MoFA-test 數(shù)據(jù)上的重建質(zhì)量對比
由圖3與圖4可以看出,本文算法對于人臉形狀和紋理的重建都優(yōu)于另外幾種算法,本文算法重建得到的三維人臉的面部輪廓以及五官形狀與輸入圖像更為一致,更能體現(xiàn)人臉的身份特征.此外,其它幾種算法在面對不同膚色不同光照的人臉圖像時重建得到的人臉紋理信息并沒有較大差別,相較而言本文算法能夠更加真實地反映人臉紋理信息.除了人臉形狀和紋理信息外,本文算法還可以準(zhǔn)確預(yù)測輸入人臉圖像的表情.
圖4 部分LFW 數(shù)據(jù)上的重建質(zhì)量對比
為了驗證本文算法在大姿態(tài)或遮擋情況下仍能較好完成三維人臉形狀和紋理重建,在二維人臉圖像中存在大姿態(tài)或遮擋的情況與普通的紋理貼圖方法進行了對比實驗,如圖5所示.可以看出,對于存在遮擋或大姿態(tài)的人臉圖像,被遮擋部分的紋理信息并不能夠從輸入二維人臉圖像中提取,因此傳統(tǒng)的紋理貼圖方法將無法提取不可見區(qū)域的紋理信息,得益于人臉解析分割算法,在面對存在遮擋或大姿態(tài)的人臉圖像時,本文算法仍能重建出具有真實身份特征的真實感三維人臉.
圖5 遮擋或大姿態(tài)情況下人臉紋理貼圖與重建結(jié)果對比
最后,為驗證本文人臉重建算法的魯棒性,對同一身份處于不同姿態(tài)、表情、光照條件下的多張二維人臉圖像進行重建,結(jié)果如圖6所示.實驗結(jié)果表明,本算法提出的多視角多表情的高維度人臉身份損失能夠有效提升重建模型的魯棒性,對于同一身份在不同表情、姿勢、光照條件下仍能輸出較為一致的三維人臉模型.
圖6 同一身份在不同表情、姿態(tài)、光照條件下的三維人臉
為了評估本算法的重建精度,將本算法重建得到的三維人臉模型與MICC 數(shù)據(jù)集中的ground truth 三維真值人臉模型進行定量的對比評估,并與目前一些優(yōu)秀的三維人臉重建算法進行了比較.
MICC 數(shù)據(jù)集中除了利用專業(yè)設(shè)備掃描得到的作為ground truth 的真實三維人臉掃描模型外,還包括53 個受試者的3 段短視頻,包括交互、室內(nèi)以及室外3 種場景.與其它基于單張圖像重建的算法類似,本文對視頻中的每一幀圖像都進行三維人臉重建,并取平均作為最終的三維人臉模型.
為公平比較本算法與文獻[6]、文獻[9]等算法之間的重建精度,首先采用文獻[6]中的方法,用球心在鼻尖,半徑為95 mm 的球體對真實三維人臉網(wǎng)絡(luò)進行裁剪,從而只考慮人臉面部區(qū)域的重建精度.隨后,采用文獻[9]中的對齊方法,將重建三維人臉網(wǎng)格與真實三維人臉網(wǎng)格進行密集對齊,隨后計算point-to-plane點對面距離誤差.表1展示了不同算法在MICC 數(shù)據(jù)集中載3 種不同視頻片段下的重建三維人臉與真實三維人臉間的點對面距離的平均誤差(以mm 為單位).
表1 不同重建算法在MICC 數(shù)據(jù)集上的平均誤差
由上表結(jié)果表明,與其它兩種先進的重建算法相比,本算法最終的重建精度取得了約10%的提升,其中一個主要原因是文獻[9]算法雖然考慮了高維度的身份損失,但沒有考慮低維度的像素級損失,本算法不僅通過可微分渲染器實現(xiàn)了一種加權(quán)光度像素損失,還實現(xiàn)了多姿勢多表情的身份識別損失,在一定程度上提升了模型參數(shù)回歸的能力.
本文提出了一種基于單張二維人臉圖像的同時重建三維人臉形狀和紋理信息的算法.為解決訓(xùn)練數(shù)據(jù)不足問題,本文設(shè)計了一種multi-level 的弱監(jiān)督損失函數(shù),直接從大量二維人臉圖像中學(xué)習(xí)多種弱監(jiān)督信息.為避免遮擋對人臉紋理重建造成影響,本文利用一種人臉解析分割算法進行預(yù)處理.實驗結(jié)果顯示,相較于其它算法,本文算法的重建質(zhì)量與重建精度均有顯著提升,且本算法對二維圖像中存在遮擋或大姿態(tài)等問題有較強的魯棒性.然而,目前本方法受限于三維人臉形變模型3DMM,重建出的三維人臉表面有些平滑,并不能很好地凸顯人臉皮膚紋理細節(jié)特征,因此在接下來的工作中,將考慮研究一種更為細節(jié)的三維人臉重建算法,能夠在重建過程中考慮如人臉皺紋等細節(jié)重建,進一步提升重建三維人臉的真實感.