鄭承緒, 姚劍敏,2, 嚴 群,2, 林志賢
(1.福州大學 物理與信息工程學院,福建 福州 350108;2.晉江市博感電子科技有限公司,福建 晉江 362200)
計算機技術(shù)和信息技術(shù)飛速發(fā)展,使得對使用三維技術(shù)的需求也與日俱增。三維建模的相關(guān)項目逐漸進入到了社會的各行各業(yè),包括機械、醫(yī)學、影視娛樂甚至教育領(lǐng)域,三維技術(shù)都扮演著越來越重要的角色,成為計算機領(lǐng)域的重要課題之一。傳統(tǒng)意義上的三維人體模型的制作仍然是基于專業(yè)人員通過相應(yīng)的建模軟件將模型從無到有一步一步制作出來,其中所需要消耗的時間和精力是十分巨大的。或是使用三維捕捉技術(shù)、三維掃描技術(shù)等進行人體建模,但這需要在模特身上裝配大量定位設(shè)備、在環(huán)境中配置多個多功能攝像頭,專業(yè)度極高、器件價格也非常昂貴,難以在大眾領(lǐng)域應(yīng)用。
近年來,深度學習算法廣泛發(fā)展,大量研究者開始通過多種方法訓(xùn)練神經(jīng)網(wǎng)絡(luò)以進行三維重建工作。在人體建模方面,Danerek R等人[1]提出了通過利用動作捕捉器獲得的人體和姿勢訓(xùn)練神經(jīng)網(wǎng)絡(luò)來估計三維頂點位移重建人所穿著的三維衣物。Kanazawa A等人[2]提出了不需要2D與3D配對監(jiān)督的三維人體重建,運用三維回歸迭代和求解先驗姿勢來對圖像中的人物進行三維重建。Alldieck T等人[3]實現(xiàn)了只通過單目相機拍攝序列幀就能進行的重建。在圖上標注人體關(guān)鍵點,利用鏡頭至人物輪廓的射線集視椎體的變換獲取數(shù)據(jù)并使用SMPL(skinned multi-person linear)[4]進行重建。之后,Alldieck T等人又提出了一種基于深度學習的網(wǎng)絡(luò)模型[5]。能較之前使用更少的輸入圖像重建,并且提升了重建的速度和精度。Zheng Z等人[6]運用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)以及多尺度特征轉(zhuǎn)換法,利用從SMPL模型、RGB圖像中重建人體及衣服。在面部重建與訓(xùn)練方面。劉成攀等人[7]提出了一種臉部三維重建方法,使用了自監(jiān)督的表征法映射特征實現(xiàn)三維人臉重建。Chen A等人[8]的方法回歸運算單個輸入視圖的幾何殘差,來重建出較為精細的面部結(jié)構(gòu)。而Wu F等人[9]的方法基于多個輸入圖像,回歸運算了可變形的面部模型。
本文受此啟發(fā),將端到端可學習的多視圖三維面部重建[10]與基于序列幀的三維人體重建[5]方法相結(jié)合,使用特征圖金字塔[11]和多損失函數(shù),結(jié)合了基于學習的方法的穩(wěn)定性以及幾何推斷方法的通用性,有效提升了重建精度。
闡述三維人體模型的生成與優(yōu)化。首先,介紹三維人體模型生成架構(gòu),包括編碼器和解碼器兩個模塊;接著,描述生成高精度面部模型的算法與內(nèi)部結(jié)構(gòu);最后,介紹模型訓(xùn)練時引入的損失函數(shù)。
圖1所示為三維人體重建網(wǎng)絡(luò)模型框架。該網(wǎng)絡(luò)的作用是從單目RGB 相機拍攝的人物獲取輸入序列圖像,以創(chuàng)建一個與人物對應(yīng)的三維人體模型。該模型能夠一定程度地還原被拍攝者的身材外型,頭發(fā)以及衣服等內(nèi)容。由于人體是一個復(fù)雜的非剛性物體,為了盡量減小非剛性形變,需要拍攝保持一個大致的“A形姿勢”并旋轉(zhuǎn)一周的人物來進行三維重建。為此而訓(xùn)練的CNN,能夠從數(shù)張輸入幀推斷出一個三維網(wǎng)格模型,并且能利用該網(wǎng)絡(luò)的解碼器部分來細化身體形狀以盡量還原被拍攝者的身材體型以及外觀。
圖1 三維人體重建網(wǎng)絡(luò)模型框架
該網(wǎng)絡(luò)使用了一種參數(shù)化的人體模型SMPL[4],能夠以調(diào)節(jié)參數(shù)以及調(diào)整偏移量的方式來體現(xiàn)人物的特定體型、衣著與頭發(fā)等特征。是將姿勢θ和形狀β映射到其總共6 890個頂點上來表示人體特征的函數(shù)。通過修改θ和β的值,以及在標準模型項T上加入偏移量D,就能通過如下函數(shù)獲得一個具有特定體型與姿態(tài)的人體模型
M(β,θ,D)=W(T(β,θ,D),J(β),θ,W)
(1)
式中W為具有權(quán)重W的線性混合函數(shù),J為骨骼關(guān)節(jié)點集。
盡管該模型能夠在一定程度上還原對象的體型和衣著外觀,并且只需要使用簡單拍攝的單目RGB圖像序列就能生成,但也因此,重建出的模型肯定具有一定的誤差,尤其在于該模型對于臉部形狀細節(jié)的提取程度很低,但臉部是辨識一個人物的重要標志之一,要實現(xiàn)更高精度的人體重建,更細致的臉部建模是一個關(guān)鍵。由此引入非剛體三維臉部建模方法[10]以提升重建的精確度。重建效果對比如圖2。
圖2 三維人體重建(左),使用面部優(yōu)化重建(中),模特(右)
本文引入非剛體三維面部建模來改善模型面部的精度。這是一個通過輸入的圖像序列之間的外觀一致性關(guān)系來建立面部三維模型的深度神經(jīng)網(wǎng)絡(luò)。該框架主要由:特征提取、生成自適應(yīng)性人臉模型和非剛體多圖像重建3個部分組成。在本節(jié)中,首先介紹非剛體多視圖重建部分是如何通過深度學習與求解器集成的,然后介紹自適應(yīng)性面部模型的原理,最后介紹多級重建方法和損失函數(shù)。
1.2.1 非剛體多輸入視圖的重建
給定同一個人物的M個不同表情與視角的面部圖像組{Ii}M,面部三維幾何估計Vi,和對應(yīng)的六自由度頭部姿勢pi,就可以通過在訓(xùn)練中盡可能降低外觀連續(xù)性的誤差與界標擬合誤差來建立公式,命名為非剛體多視圖優(yōu)化。該方法能夠重建出高度還原被拍攝者樣貌的面部模型。本文將該模型應(yīng)用于文獻[5]的方法模型上,能夠顯著提升臉部模型的精細度。圖3顯示了非剛體多視圖建模方法的網(wǎng)絡(luò)框架。
圖3 非剛體多視圖重建網(wǎng)絡(luò)的框架
參數(shù)化:該結(jié)構(gòu)使用弱透視的相機將頭部姿勢模型參數(shù)化為p=(s,R,t)。其中,s為尺度因子,R為三維旋轉(zhuǎn)矩陣SO(3),t為二維空間坐標,表示p在二維圖像平面上的平移量。接著構(gòu)建三維到二維的投影函數(shù)∏,將三維空間的點v映射到二維圖像平面
(2)
然后參數(shù)化臉部形狀V=f(x)。其中,f(x)為生成器函數(shù),V為三維空間的參數(shù)。f(x)將低維度的參數(shù)向量x映射至含有所有頂點的三維坐標向量上。因此,非剛體多視圖重建的參數(shù)就可以表示為X=(s,R,t,x)。
目標函數(shù)
E=λαEα+λlEl
(3)
式中Eα為每一個輸入圖像之間的外觀一致性誤差,而El為臉部標記的對齊誤差。兩個λ參數(shù)是用于平衡兩個目標的權(quán)重。
通常來說,Eα的計算都是以圖像序列之間的圖像強度值變化為指標的??梢酝ㄟ^使用式(2)將每一張視圖的三維重建結(jié)果(Vi,pi)投影至二維圖像Ii上,并使用雙線性插值法獲取它們的圖像強度采樣。這樣就獲得了每一個頂點上對應(yīng)的圖像強度I(vi)。然后計算每一對不同的視圖(i和j)中對應(yīng)頂點之間的圖像強度之差,再對所有視圖中的所有該差值綜合取平均值??偨Y(jié)獲得如下公式
(4)
(5)
(6)
1.2.2 目標和求解器
極度非凸的強度空間可能會使得求解模型優(yōu)化變得非常困難,受到剛體三維重建[12]和動作評估方法[13]的啟發(fā),引入了與此兩個方面相關(guān)的深度學習內(nèi)容。
(7)
步長的預(yù)測:為了保證訓(xùn)練效果的穩(wěn)定與可靠,需要嚴格控制梯度下降的步長α。但是該方法能夠根據(jù)所有的頂點和視圖的平均值和輸入圖像序列之間的絕對殘差來學習預(yù)測步長α。
1.2.3 適應(yīng)性的臉部模型
為了能夠更好地利用現(xiàn)有的三維可變形模型而不受制于其表現(xiàn)能力,要使用含有2個線性子空間的適應(yīng)性人臉模型參數(shù)x=(xbfm,xadap)。臉部的形狀V如式(8)所示
(8)
F′i=F′fpn(Ii)
(9)
這樣就獲取了M個特征圖。接下來就能通過將這些特征圖和初步重建結(jié)果送入基準網(wǎng)絡(luò)Fbasis以構(gòu)建出適應(yīng)性基準Badap
(10)
1.2.4 多級重建
使用多級重建的方法以構(gòu)建出更加具有細節(jié)的三維人臉模型。具體而言,即將整個重建模型的過程劃分為3個等級l(l=1,2,3)逐步優(yōu)化
(11)
給定網(wǎng)格真實值,FPN的步長預(yù)測和基準網(wǎng)絡(luò)Fbasis,在計算過模型之間的深度對齊與密集對齊之后,就能計算在每一次迭代、優(yōu)化時的每一個重建頂點和頂點真實值之間的距離L2。對于深度對齊項,需要計算
(12)
(13)
其中,深度對齊損失Lv_dep也會對姿態(tài)進行計算,而密集對齊損失Lv_den只計算模型之間的幾何誤差。
同時,為了確保表面的方向正確,需要運用余弦相似度來監(jiān)督每個頂點的法線
Lnorm=∑(1-cos(ngt,nalign))
(14)
為了在提高表面平滑度的同時保留細節(jié),還需要引入邊緣損失
(15)
式中E為預(yù)定義的標準模板邊緣。最后,還需要一個臉部標記損失式Lland,和式(5)較為相似。綜上所述,得出綜合損失函數(shù)
L=λ1Lv_den+λ2Lv_den+λ3Lnorm+λ4Ledge+λ5Lland
(16)
式中λ1~5均為超參數(shù),用以調(diào)節(jié)不同損失項的權(quán)重。
本文采用ESRC三維臉部數(shù)據(jù)集進行訓(xùn)練。該數(shù)據(jù)集包含超過130個不同年齡、不同膚色的人物的照片和對應(yīng)的高質(zhì)量三維掃描模型。其中大多數(shù)人物都含有8組不同表情的模型,每一組的掃描模型都帶有各個不同頭部偏航角的RGB圖像。
由于這批數(shù)據(jù)的數(shù)量還不足以訓(xùn)練神經(jīng)網(wǎng)絡(luò),為了減少工作量,本文方法對圖像進行了諸如曝光、壓暗等渲染處理,提高數(shù)據(jù)的多樣性,最終擴充到大約7 000張。
本文設(shè)計使用TensorFlow深度學習框架,通過Pytorch實現(xiàn);使用Nvidia-1080Ti設(shè)備來訓(xùn)練網(wǎng)絡(luò);計算機配置為Windows10操作系統(tǒng),8 G內(nèi)存。在多級優(yōu)化重建過程中,所使用特征圖的分辨率分別是32×32,64×64,128×128。這個過程還會在每級的運算中對參數(shù)進行3次的迭代更新。
首先評估輸入視圖數(shù)量對該方法的影響。本文方法從數(shù)據(jù)集中被拍攝者的圖像中隨機選取4個圖像,并按照頭部偏角由小到大的順序進行排序,分別測試輸入圖像數(shù)為2張、3張、4張時的重建效果。由于輸入2張圖像是使用的是首尾2張圖,故最后只計算第一張圖像和第四張圖像的誤差更為合理。結(jié)果如表1所示,通過引入更多的序列視圖,該方法的平均幾何誤差將會減少,證明了多視圖輸入對于降低誤差的有效性。最后一行是三維人體重建的平均頂點誤差對比。經(jīng)過實驗得出,非剛性面部重建的頂點誤差在輸入4張以上圖像時達到收斂,誤差值為1.18 mm。而三維人體重建的頂點誤差在輸入8張以上圖像時達到收斂,臉部平均頂點誤差約為3.20 mm,明顯大于該方法的誤差,證明了使用非剛體臉部三維重建優(yōu)化的有效性,能夠顯著提升對象的面部辨識度。
表1 不同視圖輸入數(shù)的平均幾何誤差
此外,還需研究多級重建對于減小誤差的有效性。表2為使用BU3DFE數(shù)據(jù)集下的定量分析結(jié)果。
表2 多級重建下的誤差
可見,幾何誤差和標準差隨著每一級優(yōu)化而逐級降低,證明多級了優(yōu)化的有效性。圖4為三維人體重建結(jié)合了非剛體面部重建模型的效果對比。
圖4 (a)輸入圖集;(b)三維人體重建;(c)非剛體多視圖面部三維重建;(d)面部效果對比
表3為引入FPN的本文方法的面部重建與其他文獻[15,16]2種方法的誤差對比,證明了本文方法的有效性。表4為了驗證本文方法在實際應(yīng)用時的有效性而進行了一項調(diào)查。拍攝并生成了6組本文方法與文獻[5]的方法的三維重建模型,并向每個參與調(diào)查者展示和隨機詢問:“哪個重建模型更加能辨認出是圖像中的人(辨識度)、哪個模型具有更多的細節(jié)(細節(jié))”。
表3 與其他方法的誤差對比
表4 調(diào)查的結(jié)果 %
調(diào)查結(jié)果如表3所示,分別有超過96 %和超過97 %的參與調(diào)查者認為本文方法所重建出的模型具有更高的辨識度和細節(jié),證明了本文方法的有效性。
本文詳細介紹了非剛性面部多視圖重建網(wǎng)絡(luò),這是為重建出高精度人臉三維模型而設(shè)計的。本實驗在原有的通過單目RGB相機拍攝序列圖像以重建三維人體的模型中引入非剛性面部重建模型,添加FPN,能夠幫助重建出更高精度的面部模型。應(yīng)用于重建三維人體的面部時,能夠顯著提升人物的辨識度。實驗結(jié)果證明:面部頂點誤差能夠顯著降低,達到1 mm級別的誤差水平。以及在調(diào)查中超過96 %的參與者認為本文方法具有更好的效果,證明了該方法對于大眾領(lǐng)域使用普通非專業(yè)設(shè)備就能獲得個性化的、識別度更高的三維模型有一定幫助。