壽旭峰,盧書芳,高 飛
(浙江工業(yè)大學 計算機科學與技術學院,杭州 310023)
三維人體重建一直是計算機視覺領域一個重要的研究問題.精確的三維人體模型可以被運用在人體測量、三維動畫、虛擬試衣等諸多的領域.特別是在人體測量上的應用,相比于傳統(tǒng)的手工測量,三維人體可以獲得更多的人體體積和面積的信息.目前隨著我國國民經(jīng)濟水平的快速提高,移動設備開始大規(guī)模普及,同時由于移動設備的計算能力大幅度提高,使得通過移動設備來重建三維人體成為可能.然而,與普通的計算機相比,移動設備的計算資源仍然相對較少,同時存儲空間也相對較小.這使得通過移動設備實現(xiàn)三維人體重建具有一定難度.
通常三維人體模型可以通過三維人體掃描獲得,如TC2,SHLtd,VITLtd等掃描系統(tǒng),但是存在價格昂貴的問題,不能大規(guī)模的推廣,并且要求被掃描者的穿著必須盡可能貼身,以減少模型的誤差.近年來,通過卷積神經(jīng)網(wǎng)絡從視頻和圖像中重建的三維人體已經(jīng)達到了較好的結果.Alldieck等[1]將視頻中不同角度的身體姿勢轉(zhuǎn)換為標準的T型姿勢,然后將其輪廓作為約束項來生成三維人體.Kanazawa等[2]提出了一個端到端的卷積網(wǎng)絡來實現(xiàn)從單張圖片中建立三維人體模型.他們利用SMPL[3]模型來表示三維人體結構,用卷積編碼器和3D回歸模塊來預測SMPL模型的參數(shù),同時構建了一個辨別網(wǎng)絡來判斷預測結果的真實性.Smith等[4]通過語義分割的方法對人體正面和側(cè)面圖像分割,獲得人體掩膜,并將人體掩膜和掩膜的置信圖作為卷積網(wǎng)絡的輸入來預測SMPL模型的參數(shù),以構建三維人體.
然而,由于卷積神經(jīng)網(wǎng)絡的計算量較大,模型參數(shù)較多,并不能將這些方法直接運用于移動端.另外,由于圖像中的人物可能穿著較為寬松,導致這些方法重建出的三維人體與實際人體存在一定的誤差.針對這一點,Zhu等[5]采用的是通過手動標注凈身輪廓關鍵點結合凈身輪廓數(shù)據(jù)庫構建正面和側(cè)面凈身輪廓,然后根據(jù)凈身輪廓采用ct-FFD算法建立三維人體.Zhu等[6]提出了一種基于Grab-Cut和模板匹配的方法提取正面和側(cè)面人體凈身輪廓,再建立三維人體模型.但是該方法只能用于簡單背景,對于復雜的背景并不能較好的處理.
針對上述問題,本文提出了一種適用于移動設備的從正面和側(cè)面圖像中重建三維人體的方法.該方法首先通過分割網(wǎng)絡獲得凈身人體輪廓,然后通過卷積神經(jīng)網(wǎng)絡從凈身輪廓中回歸三維人體模型的參數(shù),最后從這些參數(shù)中重建高精度的人體模型.對于三維人體模型則是采用了SMPL模型來進行參數(shù)化表示.同時,考慮到移動設備計算資源和存儲容量有限的問題,本文利用知識蒸餾的方式對人體體型和姿態(tài)參數(shù)預測網(wǎng)絡進行了輕量化處理.
自從2012年AlexNet獲得ImageNet圖像識別挑戰(zhàn)賽的冠軍開始,卷積神經(jīng)網(wǎng)絡CNN開始被廣泛地運用于圖像分割,分類,關鍵點檢測,目標識別等領域,并且均取得了比較矚目的成就.但是,CNN也存在著一些缺點,例如計算量較大,模型參數(shù)量較大等的缺陷.這也使得其不適用于計算性能較差,存儲空間較小的移動設備.
為了解決上述問題,Zhang等[7]提出了ShuffleNet,通過對卷積進行分組連接的方式提高了分組卷積的預測效率.在文獻[8]中,Ma等人提出了內(nèi)存訪問成本作為GPU運行卷積網(wǎng)絡的速度指標.同時他們發(fā)現(xiàn)針對GPU平臺,對卷積網(wǎng)絡進行過多的分組會降低其并行性,從而減慢速度.針對這些問題,Howard等[9]提出了一種高效的卷積網(wǎng)絡模型MobileNet.他們通過將普通的卷積操作利用深度可分離卷積進行代替,并且減少卷積網(wǎng)絡的通道數(shù)和分辨率來減少卷積網(wǎng)絡的計算量.在文獻[10]中,Sandler等人在MobileNet的基礎上提出了MobileNetV2模型.他們通過線性 Bottleneck層來減少網(wǎng)絡激活過程中特征的丟失,同時使用倒殘塊(Inverted residual block)來擴張中間層的特征.在文獻[11]中,Howard等人通過NetAdapt算法搜索獲得一個高效的輕量級網(wǎng)絡,并且用h-swish激活函數(shù)代替swish激活函數(shù),用h-sigmoid函數(shù)代替sigmoid函數(shù)以減少計算量,同時增加了SE模塊提高網(wǎng)絡的精度.
不同于MobileNet,ShuffleNet等網(wǎng)絡采用的輕量化方法,知識蒸餾則是通過將教師網(wǎng)絡中的知識遷移到學生網(wǎng)絡中來實現(xiàn)模型的壓縮和輕量化.Hinton等[12]通過已經(jīng)完成訓練的教師網(wǎng)絡對未標注數(shù)據(jù)生成預測標簽,然后利用預測標簽和真實的標簽來訓練學生網(wǎng)絡.相比于真實的標簽,這些預測的標簽包含更多已經(jīng)完成訓練的教師網(wǎng)絡的信息,從而使得學生網(wǎng)絡在較少參數(shù)的情況下獲得相對較好的預測效果.在文獻[13]中,Yim等人在教師模型和學生模型之間添加了L2損失,保證了兩個網(wǎng)絡在預測過程中提取的圖像特征的一致性,從而提高學生網(wǎng)絡的預測效果.在文獻[14]中,Zhang等人則是將知識蒸餾的方法運用于人體關鍵點檢測中,在保證關鍵點檢測的精度的同時,提高了網(wǎng)絡的檢測速度.在文獻[15]中,Li等人則用知識蒸餾的方法對GAN網(wǎng)絡進行了壓縮.
整體設計方案的流程如圖1所示.首先構建了一個輕量化的人體凈身輪廓分割網(wǎng)絡,該網(wǎng)絡主要通過基于MobileNetV2的DeepLabV3+[16]網(wǎng)絡實現(xiàn),并且采用標注了凈身輪廓的數(shù)據(jù)集對其進行訓練.然后對三維人體模型采用SMPL模型參數(shù)化表示,并且構造了一個利用知識蒸餾壓縮的卷積網(wǎng)絡模型,從正面凈身輪廓和側(cè)面凈身輪廓圖像中回歸三維人體的參數(shù).之后根據(jù)所獲得的人體參數(shù)構建三維人體模型.最終,將其部署至移動設備上.
圖1 三維人體模型建立流程圖Fig.1 Framework diagram of three dimensional human body reconstruction
由于現(xiàn)有的人體分割數(shù)據(jù)集通常會把衣服標注為人體的一部分,所以直接基于這些數(shù)據(jù)集訓練卷積網(wǎng)絡時,其輸出的預測結果為包含衣服的分割結果,從而影響后續(xù)的三維人體重建.圖2展示了凈身輪廓與普通帶衣服輪廓的示意圖,圖2(a)為帶衣服的人體輪廓,圖2(b)為凈身人體輪廓.為解決該問題,本方法采用了一個包含人體凈身輪廓標注的圖像數(shù)據(jù)來訓練分割網(wǎng)絡.該數(shù)據(jù)集包括8000對正面和側(cè)面圖像,每張圖像均包含對應的人體凈身輪廓標注.
圖2 帶衣服輪廓與凈身輪廓Fig.2 Profile with clothes and profile without clothes
同時為了適應于移動端計算資源較少和存儲空間較小的特點,本文采用了以MobileNetV2為主干網(wǎng)絡的DeepLabV3+分割網(wǎng)絡實現(xiàn)人體凈身輪廓分割.在訓練過程中,將凈身輪廓分為正面,側(cè)面和背景3類,對于網(wǎng)絡的輸出采用交叉熵損失(Cross Entropy Loss)對每個像素進行分類,判斷為正面,側(cè)面還是背景.式(1)為交叉熵損失的計算方式,xi為像素x在其真實分類i下的值.
(1)
由于缺少與人體凈身輪廓數(shù)據(jù)集對應三維人體模型數(shù)據(jù).本文將SMPL模型投影,獲得對應人體凈身輪廓掩膜的方法來構建人體凈身輪廓合成掩膜數(shù)據(jù)集.SMPL模型是一種數(shù)據(jù)驅(qū)動的三維人體模型,其通過輸入人體體型參數(shù)β和關節(jié)旋轉(zhuǎn)參數(shù)θ,然后根據(jù)θ通過正向動力學(Forward Kinematics)連接人體骨骼,最后通過線性蒙皮形變生成共包含6890個頂點,13776個面片的三維人體.公式(2)、公式(3)為SMPL的表達式,T為人體平均模型,Bs(β)和Bp(θ)為SMPL模型頂點相對于T的偏移函數(shù),J(β)為形狀參數(shù)函數(shù),w為混合權重,W為標準線性混合蒙皮函數(shù).其中體型參數(shù)β通過組成成分分析(PCA)的前10個系數(shù)控制.關節(jié)旋轉(zhuǎn)參數(shù)θ由23個關節(jié)點三維旋轉(zhuǎn)角度組成.與傳統(tǒng)的線性混合蒙皮(LBS)模型相比,SMPL模型在關節(jié)處更加真實.
M(β,θ)=W(Tp(β,θ),J(β),θ,w)
(2)
Tp(β,θ)=T+Bs(β)+Bp(θ)
(3)
為了使得由SMPL模型生成的三維人體具有多樣性和真實性,本文采用男性和女性兩種不同的SMPL模型分別擬合三維人體模型數(shù)據(jù)庫MPII Human Shape,生成符合真實人體體型分布的SMPL模型.MPII Human Shape 是一個基于大型的商業(yè)人體掃描數(shù)據(jù)集CAESAR生成的三維人體模型數(shù)據(jù)庫,共包含4300個標準姿勢人體模型,每個模型由6449個頂點,12894個面組成.
對于SMPL人體模型和MPII模型之間的差異通過倒角距離來衡量.計算公式為:
(4)
其中P1為SMPL模型的頂點集合,p1為SMPL模型上的頂點,P2為MPII模型的頂點集合,p2為MPII模型上的頂點.SMPL模型頂點可以根據(jù)式(2)、式(3)式得到.通過信賴域方法dogleg優(yōu)化,使得SMPL中的所有頂點到MPII模型中距離最近頂點的距離和最小,同時使得MPII模型中所有頂點到SMPL模型中的最近頂點的距離和最小.為了防止擬合過程陷入局部最優(yōu)解,在優(yōu)化前先將MPII模型進行縮放,平移和旋轉(zhuǎn)變換,使得其與初始的SMPL模型處于同一位置,同樣的身高,之后先優(yōu)化θ使SMPL模型的姿態(tài)與MPII模型保持基本一致.然后,再同時對θ和β進行優(yōu)化.
完成SMPL模型對MPII模型擬合之后,為了進一步擴充模型的數(shù)量,本文對SMPL參數(shù)添加小范圍的隨機擾動.具體做法為在SMPL模型的β參數(shù)上下[-0.5,0.5]的范圍內(nèi)隨機取值,對于θ參數(shù)也在其上下[-0.5,0.5]的范圍內(nèi)隨機取值.
之后對SMPL模型進行正面和側(cè)面的投影以生成人體凈身掩膜數(shù)據(jù)集.由于相機在實際拍攝人體正面和側(cè)面圖像過程中,可能存在一定角度的偏移,為了能使網(wǎng)絡更好地處理這些情況,本文將相機的拍攝角度和相機位置均添加了一個隨機偏移量.最后,總共生成了40000對正面和側(cè)面凈身輪廓掩膜作為訓練集,2500對作為驗證集,2500對作為測試集.
圖3顯示了本文所采用網(wǎng)絡的具體結構.對于男性和女性SMPL參數(shù)預測網(wǎng)絡,采用相同的結構,均由教師網(wǎng)絡和學生網(wǎng)絡兩部分構成,教師網(wǎng)絡與學生網(wǎng)絡的主干網(wǎng)絡分別采用ResNet18和MobileNetv3.
對于教師網(wǎng)絡,本文先采用原始ResNet18作為主干網(wǎng)絡,從正面圖和側(cè)面圖中分別提取512通道的特征.然后分別對正面和側(cè)面512通道的特征采用最大池化操作獲得特征T1,T2.為了進一步提高SMPL參數(shù)的預測精度,將身高和體重信息采用全連接的方式進行編碼,然后將特征T1,T2及身高體重的編碼信息按通道數(shù)連接融合,最后采用全連接的方式分別回歸體型參數(shù)TPβ和姿態(tài)參數(shù)TPθ.
圖3 知識蒸餾網(wǎng)絡Fig.3 Knowledge distillation network
對于學生網(wǎng)絡,由于移動設備的計算資源和存儲空間等限制,本文把教師網(wǎng)絡中的主干網(wǎng)絡由Resnet18替換為MobileNetV3.相比ResNet18,MobileNetV3的參數(shù)量以及計算量更適合于移動平臺運行.為了使學生網(wǎng)絡也能夠獲得一個較準確的參數(shù),本文在教師網(wǎng)絡和學生網(wǎng)絡之間加入了2個中間監(jiān)督,分別計算T1特征和S1特征,T2特征和S2特征之間的差異,確保教師網(wǎng)絡和學生網(wǎng)絡的中間層特征一致.對于教師網(wǎng)絡和學生網(wǎng)絡的特征通道數(shù)不匹配的情況,則采用linear層對學生模塊中的特征的通道數(shù)進行調(diào)整,然后與教師網(wǎng)絡進行比較.同時在學生網(wǎng)絡中,采用了h-swish函數(shù)近似代替sigmoid函數(shù)對特征進行激活,h-swish的公式如公式(5).與sigmoid函數(shù)相比,h-swish的計算量更小,更適合移動平臺運行.
(5)
(6)
(7)
(8)
在人體凈身輪廓分割網(wǎng)絡DeepLabV3+的訓練過程中,設置BatchSize為16.對于分割網(wǎng)絡的主干MobileNet-V2,用在ImageNet上預訓練的權重來初始化,設置初始學習率為1e-3,每迭代10個epoch學習率減半.分割網(wǎng)絡其他部分的初始學習率為1e-2,同樣在訓練過程中每迭代10個epoch學習率減半.分割網(wǎng)絡在整個訓練過程中共迭代70個epoch,采用的優(yōu)化器為SGD優(yōu)化器,并且設置動量為0.9,權重衰減值為0.0005.
對于男性和女性SMPL人體模型參數(shù)預測網(wǎng)絡本文采用相同的訓練方式.先對教師網(wǎng)絡進行訓練,然后對學生網(wǎng)絡進行訓練.對于教師網(wǎng)絡設置BatchSize為16,初始學習率為1e-3,迭代至10個epoch后降為1e-4,迭代至25個epoch后降為1e-5,迭代至45個epoch后降為1e-6,最后迭代至80個epoch停止.采用的優(yōu)化器為Admin優(yōu)化器.完成教師網(wǎng)絡的訓練后,利用教師網(wǎng)絡對學生網(wǎng)絡進行訓練,學生網(wǎng)絡的訓練參數(shù)與教師網(wǎng)絡的訓練參數(shù)一致.
對于基于MobileNetV2的人體凈身輪廓分割網(wǎng)絡DeepLabV3+,本文將其與CE2P[17],Gated-scnn[18],DenseASPP[19],HRNet[20]等方法進行了對比,采用了平均并交比(mIoU),平均精度(Avg.Acc.),像素精度(pixel Acc.),預測速度(speed),模型參數(shù)量(param),輸入圖像大小(size),模型計算量(flops)等指標作為評判標準.其結果如表1.對于網(wǎng)絡模型的預測速度,本文采用i5-8300H CPU進行測試.可以發(fā)現(xiàn),本文的DeeplabV3+網(wǎng)絡在mIoU,Avg.Acc.和pixel Acc.中,與精度最高的分割網(wǎng)絡HRNet分別只相差1.42,0.68和0.28,預測速度比HRNet快3.7倍,同時計算量比HRNet減少3倍,參數(shù)量比HRNet減少11倍.因此本文選取該網(wǎng)絡來對人體凈身輪廓進行分割.
表1 壓縮后的DeepLabV3+與其他分割網(wǎng)絡的對比Table 1 Comparison between compressed DeepLabV3+ and other segmented networks
對于三維人體參數(shù)預測網(wǎng)絡,為了證明知識蒸餾對于學生網(wǎng)絡的積極影響,本文將教師網(wǎng)絡移除,對學生網(wǎng)絡單獨訓練來進行對比.圖4分別展示了單個學生網(wǎng)絡和在教師網(wǎng)絡引導下的學生網(wǎng)絡訓練過程中在驗證集上預測的SMPL模型頂點與真實頂點誤差.可以發(fā)現(xiàn)相比單個學生網(wǎng)絡,添加知識蒸餾的學生網(wǎng)絡頂點誤差下降更快.表2則顯示單個教師網(wǎng)絡,單個學生網(wǎng)絡,知識蒸餾的學生網(wǎng)絡在參數(shù)量(param),計算量(flops),測試集上的SMPL模型頂點誤差(mean error),以及模型預測速度(speed)上的對比.SMPL模型的頂點誤差采用網(wǎng)絡預測的體型參數(shù)β和姿態(tài)參數(shù)θ作為輸入,根據(jù)式(2)、式(3)計算獲得SMPL模型的6890個頂點,并與實際SMPL模型頂點計算平均歐式距離得到.模型預測速度分別在i58300H和Kryo765上測試得到.對比表2的第3和第5行,可以發(fā)現(xiàn),相比于單個學生網(wǎng)絡,知識蒸餾后的學生網(wǎng)絡在保持模型參數(shù),模型預測速度不變的情況下,預測的男性SMPL人體模型比單個學生網(wǎng)絡在測試集上誤差小1.4mm,女性則為11.3mm.在移動端的Kryo765 CPU上測試時,與教師網(wǎng)絡相比,本文的學生網(wǎng)絡在預測速度上快0.5fps,并且參數(shù)量僅為教師模型的1/20.
圖4 知識蒸餾在訓練過程中對學生網(wǎng)絡的影響Fig.4 Influence of knowledge distillation on student network in the process of training
表2 學生網(wǎng)絡、知識蒸餾的學生網(wǎng)絡與教師網(wǎng)絡的對比Table 2 Comparison of student network,knowledge distillation student network and teacher network
圖5 姿態(tài)參數(shù)對構建SMPL人體模型的影響Fig.5 Influence of posture parameters on the construction of SMPL human body model
表3顯示本文知識蒸餾后的學生網(wǎng)絡與HMR[2],HS-Net[21]等網(wǎng)絡在預測速度上的比較.可以看出,相比其他方法,本文提出的方法在參數(shù)量上大幅度縮小,并且網(wǎng)絡的預測速度也有提高.
表3 不同方法的參數(shù)量與預測速度Table 3 Parameters and prediction speed of different methods
圖6顯示了對真實人體圖像的凈身輪廓分割和三維人體重建結果.本文三維人體重建模型總大小為68.35MB,包括DeepLabV3+分割網(wǎng)絡22.17MB,知識蒸餾后的男性和女性學生網(wǎng)絡各4.59MB,男性和女性SMPL人體模型各18.5MB.本文在移動設備的CPU Kryo 765上進行一次正面、側(cè)面凈身輪廓分割和人體參數(shù)預測的平均用時為4.5秒.
圖6 人體凈身輪廓分割以及重建結果Fig.6 Segmentation and reconstruction results of under the clothes body profile
同時,本文還對知識蒸餾后的學生網(wǎng)絡預測的三維人體進行尺寸測量,并與HMR[2],HS-Net[21],Chen[22],Xi[23],Boisvert[24]這5種方法在腰圍,胸圍,臀圍,手腕,下臂,上臂,大腿,腳踝等8個部位的尺寸上進行了比較.為了獲得更加公平的結果,對4個男性人體和3個女性人體進行了測試.本文對每個人體拍攝了4張正面和4張側(cè)面圖像,然后將屬于同一個人的正面圖像和測面圖像進行隨機組合,獲得112組測試用例.同時對每個測試人體重復測量3次,然后取均值作為測試人體的真實尺寸.對于三維人體模型的尺寸,先計算對應部位的周長,然后將周長乘上真實人體和三維模型之間的比例系數(shù)得到.表4顯示了本文的方法與其他三維人體重建方法在人體尺寸上的誤差對比.本文發(fā)現(xiàn)由于不同人體在手腕和腳踝等位置的尺寸差異不大,因此本文的方法在這些部位的預測結果也較好;相反,不同人體在腰圍和臀圍等位置尺寸差異較大,因此這些部位的預測誤差較大,在2cm左右.最終,本研究在這些部位的平均誤差為1.6cm.
表4 三維人體模型的尺寸測量誤差對比Table 4 Comparison of measurement errors of three dimensional human body model
本文提出了一種適用于移動設備的從正面和側(cè)面圖像中重建三維人體的方法.首先,使用基于MobileNet-V2的DeepLabV3+分割網(wǎng)絡從人體正面圖像和側(cè)面圖像中分割獲得正面和側(cè)面凈身輪廓二值掩膜.然后采用SMPL人體模型對三維人體進行參數(shù)化表示,并將SMPL模型對MPII三維人體掃描數(shù)據(jù)庫進行擬合,獲得符合實際人體形狀的SMPL人體模型.之后,針對移動端計算資源有限,存儲空間有限等問題,利用了知識蒸餾的方法提高學生網(wǎng)絡的預測精度.測試結果表明,知識蒸餾后的學生網(wǎng)絡比沒有進行知識蒸餾的學生網(wǎng)絡預測的SMPL參數(shù)更加精確.最后,將DeepLabV3+網(wǎng)絡和知識蒸餾后的學生網(wǎng)絡部署至移動設備運行.
然而,本文的方法還存在檢測的姿態(tài)較為單一,預測速度距離實時性還有一定的差距.后續(xù)的研究仍然需要進一步改進.