王欒欒, 嚴 群,2, 姚劍敏,2, 林志賢
(1.福州大學(xué) 物理與信息工程學(xué)院,福建 福州350108; 2.博感電子科技有限公司,福建 晉江 362200)
隨著圖像處理技術(shù)的發(fā)展,三維人體重建技術(shù)逐漸成為計算機視覺、計算機圖形學(xué)領(lǐng)域中重要的研究課題之一。通過計算機視覺圖像的方式實現(xiàn)人體的表面重建,根據(jù)輸入數(shù)據(jù)檢測出人體的體態(tài)參數(shù),即將這些數(shù)據(jù)轉(zhuǎn)換為三維的數(shù)據(jù)信息。能夠?qū)崿F(xiàn)高效且高還原度的三維人體重建,在面貌還原、游戲與動畫、增強現(xiàn)實(AR),以及虛擬現(xiàn)實(VR)等領(lǐng)域中具有極為深遠的意義[1,2]。
目前,三維人體姿態(tài)重建主要分為4種方式:傳統(tǒng)三維建模、深度相機Kinect建模、基于RGB建模,以及基于模型框架的建模。傳統(tǒng)的三維建模軟件或掃描設(shè)備運用Maya,3Ds MAX等軟件構(gòu)建人體模型,該方法創(chuàng)建過程中存在時間過長的缺點。Kinect(深度)相機具有較強的環(huán)境適應(yīng)力、高精度數(shù)據(jù)采集、高性價比而被廣泛應(yīng)用[3],但Kinect Fusion系統(tǒng)僅適用于靜態(tài)場景,而人體并不能保持絕對靜止的姿態(tài)[4,5]。基于RGB圖像建模可以使用多張 RGB 圖像或僅一張RGB圖像的三維建模[6]。文獻[7]在使用圖>片進行三維重建的過程中,仍需要用戶手動標記數(shù)量繁雜的關(guān)鍵點才能實現(xiàn)精確的模型。為此,有研究人員提出通過模型驅(qū)動建模,利用現(xiàn)有的模型庫利用組合、變形、拼接等方法實現(xiàn)人體模型的重建。第一個三維人體模型庫是 CAESAR(Civilian American and European Surface Anthropometry Resource),通過使用大型激光掃描儀采集將近3 000個完整的人體數(shù)據(jù)信息。Anguelov D等人在此基礎(chǔ)上加入姿態(tài)變形,建立SCAPE(shape completion and animation of people)模型[8]。研究人員根據(jù)身高體重等參數(shù)來調(diào)整模型,但人體軟組織在不同姿態(tài)下與人體基本結(jié)構(gòu)仍存在偏差。2015年,Loper M提出基于頂點的SMPL(skinned multi-person linear)模型[9],相較于SCAPE模型更符合人體結(jié)構(gòu)。SMPL模型是參數(shù)化的三維人體模型,可以通過靜態(tài)圖像自動重構(gòu)三維人體模型的姿態(tài)和形狀。2016年Bogo F等人[10]提出經(jīng)典自動化人體重建方法,從圖像預(yù)測2D身體關(guān)節(jié)位置,將SMPL模型的3D關(guān)節(jié)點投影到圖像上,利用最小化目標函數(shù)將SMPL模型擬合到2D關(guān)節(jié),該目標函數(shù)將懲罰投影與檢測到的2D關(guān)節(jié)之間的誤差最小化。但由于投影效應(yīng)存在偏差,實驗結(jié)果未能達到理想的效果。Lassne C等人[11]對該項目進行擴展研究,獲得了適用于多個人體姿勢數(shù)據(jù)集的3D人體模型,雖然可以生成帶有豐富注釋數(shù)據(jù)的初始數(shù)據(jù)集,但訓(xùn)練結(jié)果仍然差強人意。
為了提高建模的精度和效率,本文提出了一種研究方案,訓(xùn)練U-Net++及PatchGAN對抗生成網(wǎng)絡(luò),計算出三維圖像的法線貼圖和位移貼圖,將貼圖信息采用線性差值方法融合到SMPL模型的表面,這種訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)(CNN)結(jié)合位移貼圖和法線貼圖數(shù)據(jù)的方法,不需要精密復(fù)雜的儀器就可以完成高效精細的三維重建。
本文利用DensePose算法對人體部位進行分割操作,把2D圖像坐標映射到3D人體表面上,實現(xiàn)精確定位和姿態(tài)估計,其具體實現(xiàn)步驟如下:1)先用Faster-RCNN檢測,得到人物區(qū)域檢測圖。掃描圖像生成一個有可能包含一個目標的區(qū)域,繼而生成分類標簽、邊界框和掩碼。2)用傳統(tǒng)神經(jīng)網(wǎng)絡(luò)分塊,通過劃分身體部位來對應(yīng)標注的等距點,對于每個像素,確定它在貼圖上的位置,并進行二維校正。3)分塊后用傳統(tǒng)神經(jīng)網(wǎng)絡(luò)在每一塊分點。使用SMPL模型,將人體分成24份,比如將人腦分為左腦、右腦,將手臂分為前、后兩個面,每個人體部位包含多個點信息。4)將點轉(zhuǎn)換成熱力圖IVU,將2D圖像中人的表面的像素投影到3D人體表面上,也可以在估計出圖像中人體的UV后,將3D模型空間坐標轉(zhuǎn)換為UV坐標后,輸出包括身體分割部位和UV坐標。
首先,輸入多張彩色圖片并對其進行關(guān)節(jié)點的檢測,關(guān)節(jié)點信息和彩色圖片作為輸入數(shù)據(jù)送入CNN中,計算出估計SMPL模型所需的參數(shù)。同時,從輸入的多張圖片中通過計算角度提取得到一張正面圖像,利用DensePose算法對圖像進行分割,并將分割結(jié)果與原圖一起作為對抗生成網(wǎng)絡(luò)的輸入,獲得精細的法線貼圖和位移貼圖。最后,將位移貼圖利用線性差值的方法融合到標準的SMPL模型表面。算法流程如圖1。

圖1 算法流程
通過OpenCV +Visual studio + MATLAB開發(fā)環(huán)境對用戶的照片進行采集,獲得多個1 080像素×1 080像素的圖片。同時,利用位移貼圖將人體表面展開到二維圖像上,使得每個像素對應(yīng)于人體表面的一個三維點。利用DensePose網(wǎng)絡(luò)將正面圖的可見圖像像素映射到UV空間,獲得部分紋理映射圖像,并將其作為網(wǎng)絡(luò)的輸入數(shù)據(jù)。
SMPL模型是一個使用Pose和Shape參數(shù)驅(qū)動的線性人體模型,可以表示人體的不同形狀,具有自然的動作變形,并且模型的軟組織會隨著運動過程發(fā)生連貫的形變。為了添加更多的細節(jié),本文在SMPL標準T模型下添加偏移量D,其模型表述如下
M(β,θ,D)=W(T(β,θ,D),J(β),θ,W)
(1)
T(β,θ,D)=T+BS(β)+BP(θ)+D
(2)
式中T為模型處于T位姿時的模型屬性,W為權(quán)重,J(β)為關(guān)節(jié)點的角度信息,BS(β)和BP(θ)分別為形狀和位置的依賴項,偏移量D使模型擁有更多的凹凸細節(jié),T(β,θ,D)為添加了位置、形態(tài)和偏移量D的模型。
設(shè)計的CNN可以從一個語義圖像預(yù)測三維人體形狀,也可從二維關(guān)節(jié)點檢測計算出每個圖像的位姿信息。姿態(tài)信息通過渲染可用于細化人體形狀,經(jīng)過卷積網(wǎng)絡(luò)后的每幀位姿β和平移參數(shù)D添加到模型中。最終的人體目標模型的函數(shù)表達式為
(3)

(4)
(5)
利用線性回歸因子JB25預(yù)測三維關(guān)節(jié)
NJ3D(I,J,i)=JB25(N3D(I,J,i))
(6)
JB25經(jīng)過訓(xùn)練可以按順序輸出25個與關(guān)節(jié)點位置對應(yīng)的關(guān)節(jié)點信息,估計的人體模型網(wǎng)格可以用相機的內(nèi)置參數(shù)以及圖像的生成函數(shù)RC進行渲染
N2D(I,J,i)=RC(N3D(I,J,i))
(7)
同時,可以通過透視投影法(πc表示投影關(guān)系運算符)將關(guān)節(jié)投影到圖像平面
NJ2D(I,J,i)=πc(NJ3D(I,J,i))
(8)
上述公式均可微,利用這些公式可表示損失函數(shù)。
本文訓(xùn)練了一個網(wǎng)絡(luò),該網(wǎng)絡(luò)可以從局部紋理貼圖預(yù)測并生成法線貼圖和位移貼圖。通過該網(wǎng)絡(luò)可以根據(jù)圖片數(shù)據(jù)信息計算出適用于SMPL 模型的法線貼圖和位移貼圖。該網(wǎng)絡(luò)是一個條件生成對抗網(wǎng)絡(luò),由一個U-Net++網(wǎng)絡(luò)[12]和一個PatchGAN判別器[13]兩部分組成。本文采用了U-Net++網(wǎng)絡(luò)[14](如圖2),相比于以往的U-Net網(wǎng)絡(luò)[15],它可以抓取不同層次的特征,通過特征疊加的方式整合,加入更淺的U-Net結(jié)構(gòu),使得融合時的特征圖尺度差異更小。其中,編碼器和解碼器網(wǎng)絡(luò)通過一系列嵌套的跳躍連接,跳躍連接減小了編碼器和解碼器子網(wǎng)的特征圖之間的語義差距。同時,輸出部分采用了PatchGAN網(wǎng)絡(luò),普通的GAN判別器是將輸入映射成一個實數(shù),而PatchGAN網(wǎng)絡(luò)完全由卷積層構(gòu)成,最后輸出的是一個n×n的矩陣,結(jié)果是將輸出矩陣的均值作為True/False的輸出,輸出矩陣中的每一個輸出,代表著原圖中一個感受野,對應(yīng)原圖的一個Patch。

圖2 U-Net++網(wǎng)絡(luò)結(jié)構(gòu)
將人體曲面參數(shù)化并映射到紋理貼圖,然后用參數(shù)域上的每個像素來記錄三維曲面上相應(yīng)點的位置,從而獲得一張幾何圖像,例如在所有人體的幾何圖像中,左眼角都具有相同的參數(shù)坐標。這些人體曲面需要事先被配準,最后生成三維人體曲面模型。

對于數(shù)據(jù)集中互相對應(yīng)的樣本,估計出模型與掃描得到的真實模型M之間的損失,這種三維形狀監(jiān)督與姿態(tài)不相關(guān)。
空間中的每個頂點損失
(9)
(10)
式中b(Ii)為二值分割掩碼,可以直接從RGB圖像估計。LN2D為二維頂點弱監(jiān)督損失,LN3D為三維頂點弱監(jiān)督損失。
在歐幾里得空間內(nèi)對關(guān)節(jié)添加損失,對姿態(tài)訓(xùn)練進行正則化處理
(11)
同樣地,對二維圖片投影損失也設(shè)置了一個損失函數(shù)
(12)
本文實驗在Ubuntu16.04LTS系統(tǒng)下運行,硬件屬性為8 G DDR4內(nèi)存和1060顯卡。實驗采用的數(shù)據(jù)集為Human 3.6M和UP-3D,其中Human 3.6M涵蓋近360萬形態(tài)各異的圖像信息;UP-3D 的數(shù)據(jù)集源于 Leeds Sports Pose 及其擴展內(nèi)容,具有充足的分割、姿勢和骨骼關(guān)節(jié)點等圖像數(shù)據(jù)[16]。利用本文算法可以對任何人體進行三維重建。實驗只需要人在相機前面旋轉(zhuǎn)一周,從中獲得8~10張圖片即可得到人體的三維模型,實驗配置和操作都比較簡單。
本文重建的效果如圖3所示。對輸入圖片進行人體部位設(shè)置語義標簽以及分割后,通過估計人體的2D關(guān)鍵點之后,通過計算陰影形狀,用對抗網(wǎng)絡(luò)將UV貼圖信息轉(zhuǎn)換為位移貼圖和法線貼圖等信息,匹配到標準的SMPL模型上,擬合重建三維人體表面細節(jié)。同時,為了使模型便于使用,將所有的輸出模型的角度參數(shù)都設(shè)置為標準的靜態(tài)T姿勢,擴大了模型的適用范圍。

圖3 人體重建效果
圖4為不同方法對形狀大小、姿態(tài)各異的人體重建對比。本文與經(jīng)典三維重建算法Octopus[17]進行比較,通過位移貼圖能夠精確地恢復(fù)人體的衣服褶皺及個性化細節(jié),并且相比較于Octopus算法,運行時間上也快了1倍。

圖4 人體重建方法對比展示
在實際生活中,人體經(jīng)常會穿著形態(tài)各異的衣服,以衣領(lǐng)為例,由于衣領(lǐng)相對于人體表面皮膚較為突出,Octopus算法無法重建;相反,本文算法可以通過位移貼圖信息精確建立這種與人體模型偏差較大的點,如圖5所示,由于衣領(lǐng)突出,在圖5(a)中可以明顯地看到衣服偏離人體皮膚;從圖5(b)中可以看出,Octopus算法重建精度差,其重建的模型沒有反映出手臂的運動;實驗表明,本算法能精確的處理這些偏離人體皮膚的人體三維重建。

圖5 不同算法人體重建效果
由于Octopus對于人體的細節(jié)處理的不夠完善,如褶皺以及衣領(lǐng)等細節(jié)顯示較弱,相對于真實的人體有較大的差距,并且衣服發(fā)型凹凸細節(jié)不突出。本文實驗的結(jié)果證明該網(wǎng)絡(luò)可以在13.7 s內(nèi)完成人體的重建工作并能將細節(jié)展現(xiàn)。對于人體三維重建技術(shù)的研究方法,大多數(shù)只能重建沒有穿著衣服的或穿緊身衣的人體表面,對于穿著衣服的人體重建就沒辦法表述,本文與Octopus算法方法進行對比,從圖5中可以看出,當(dāng)人體衣服較為寬松時,Octopus算法無法重建出具有特征的表面,本文算法可以檢測并重建出衣領(lǐng)、褲腳、衣服褶皺、頭發(fā)等細節(jié)。
由表1的數(shù)據(jù)可以看出,本文的重建時間比Octopus算法的重建時間短,這是因為采用了迅速生成位移貼圖的網(wǎng)絡(luò)結(jié)構(gòu),提升了重建模型的效率。

表1 不同人物不同算法重建模型所用時間對比 s
為了更好地驗證網(wǎng)絡(luò)的通用性,本文在三維人體重建檢測數(shù)據(jù)集Human 3.6 M上訓(xùn)練模型并測試網(wǎng)絡(luò)檢測誤差,SMPLify[6]、NBF[18]、HMR[19]、Octopus、本文模型的誤差分別為82.3,59.9,56.8,55.9,56.3 mm。可以看出,本文方法與其他算法相比,重建效果更佳。
本文基于SMPL模型的人體三維重建,提出根據(jù)圖片進行圖像分割及計算關(guān)節(jié)點,然后通過生成對抗網(wǎng)絡(luò)計算出對應(yīng)的法線貼圖和位移貼圖的方法,使得重建的精細化程度大大提升,任務(wù)形象更加逼真,細節(jié)如領(lǐng)口、腰帶等可以充分顯示出來。