林晉鋼,李東年,陳成軍,趙正旭
(青島理工大學(xué) 機(jī)械與汽車工程學(xué)院,山東 青島 266520)
人手姿態(tài)估計是計算機(jī)視覺領(lǐng)域的重要研究課題之一,廣泛應(yīng)用于人機(jī)交互、機(jī)器人示教學(xué)習(xí)和手勢識別等領(lǐng)域。由于人手結(jié)構(gòu)復(fù)雜、姿態(tài)多變、觀察視角多樣性等特點,基于計算機(jī)視覺的人手姿態(tài)估計是一項具有挑戰(zhàn)性的任務(wù)。目前,基于視覺的人手姿態(tài)估計方法通常分為3類:生成式方法、判別式方法和混合式方法。
生成式方法[1-2]通過設(shè)計目標(biāo)函數(shù)評價預(yù)先建立的人手模型與給定的人手圖像的相似程度,利用某種優(yōu)化算法調(diào)整人手模型姿態(tài),實現(xiàn)它與人手圖像的擬合,并通過縮小目標(biāo)函數(shù)值,實現(xiàn)給定圖像與人手模型的匹配。但該方法需要初始化,且存在高維狀態(tài)空間搜索的難題。判別式方法[3-4]利用大量訓(xùn)練數(shù)據(jù)學(xué)習(xí)一個從圖像特征空間到人手姿態(tài)空間的映射,無需初始化,姿態(tài)估計速度快,但其性能受到訓(xùn)練數(shù)據(jù)的影響?;旌鲜椒椒ǎ?-6]對生成式與判別式方法進(jìn)行了融合,利用判別式方法產(chǎn)生初始結(jié)果,然后使用生成式方法優(yōu)化初始結(jié)果。該方法利用判別式方法解決初始化的問題,基于生成式方法使用時序信息與空間信息約束來平滑預(yù)測結(jié)果。
近年來,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)已經(jīng)廣泛應(yīng)用于三維人手姿態(tài)估計領(lǐng)域?;贑NN 的人手姿態(tài)估計方法通常分為兩類:全局回歸法[7-10]和局部檢測法[11-15]。全局回歸法通常利用深度CNN 提取圖像特征,再利用全連接層回歸人手姿態(tài)參數(shù),但是全連接層全局特征聚合的操作,不能很好地利用局部空間上下文信息。局部檢測法精度較高,通常利用編碼器-解碼器的結(jié)構(gòu)為每個關(guān)節(jié)生成位置熱圖,但解碼器通常使用計算速度緩慢的反卷積操作,而且編碼器-解碼器結(jié)構(gòu)通常利用不可學(xué)習(xí)的后處理方法實現(xiàn)從位置熱圖到關(guān)節(jié)坐標(biāo)的推斷。
Sharp 等[16]通過建立決策叢林來構(gòu)造一個兩層人手姿態(tài)初始估計模塊。兩層姿態(tài)初始估計模塊通過兩階段來對人手姿態(tài)進(jìn)行初始估計。第一階段將人手全局姿態(tài)表示為128 個離散姿態(tài)區(qū)間,通過第一層的預(yù)測器估計人手所屬的姿態(tài)區(qū)間。第二層為每個姿態(tài)區(qū)間獨立訓(xùn)練預(yù)測器,該預(yù)測器在第一層預(yù)測結(jié)果的基礎(chǔ)上細(xì)化回歸人手的全局姿態(tài)。但該方法僅為混合式方法提供粗糙的初始結(jié)果,所預(yù)測的人手全局姿態(tài)精度較差。Liang 等[17]提出具有優(yōu)化葉子節(jié)點的霍夫森林進(jìn)行人手全局姿態(tài)估計,通過學(xué)習(xí)葉子節(jié)點中的投票權(quán)重以抑制錯誤投票對預(yù)測結(jié)果的影響,但該方法依賴于人工制作的復(fù)雜學(xué)習(xí)特征。基于CNN 的人手姿態(tài)估計方法,大多數(shù)側(cè)重于全自由度手部姿態(tài)估計任務(wù)。因此,這些方法在變化的手勢下對人手進(jìn)行全局姿態(tài)估計的準(zhǔn)確性,不能滿足需要精確旋轉(zhuǎn)控制的人機(jī)交互應(yīng)用[17]。在人手直接參與的人機(jī)交互場景中,手部旋轉(zhuǎn)是常見的交互動作,例如在抓取虛擬物體的應(yīng)用場景中,操作者利用抓握動作完成對虛擬物體的抓取,抓取完成后旋轉(zhuǎn)手部用以調(diào)整對虛擬物體的觀察視角。在實際應(yīng)用場景中,可以通過組合使用手勢識別與手部全局姿態(tài)變化識別來實現(xiàn)復(fù)雜的人機(jī)交互動作。一些研究者采用CNN 來進(jìn)行人體頭部全局姿態(tài)估計。Ruiz 等[18]提出一種基于多損失深度CNN 的人體頭部全局姿態(tài)估計方法,通過結(jié)合分類方法和回歸方法優(yōu)勢來提升全局姿態(tài)估計的準(zhǔn)確率。Yang 等[19]提出一種基于回歸與特征聚合的人體頭部全局姿態(tài)估計方法,采用分段軟回歸的方法解決了直接回歸全局姿態(tài)誤差較大的問題。這些全局姿態(tài)估計方法針對近似剛體的人體頭部,并不能為手勢多變的人手提供準(zhǔn)確的全局姿態(tài)預(yù)測。因此,手部全局姿態(tài)的估計是十分有意義的。
深度相機(jī)成像包含距離信息,具有不受光照條件、背景色彩限制等優(yōu)勢,因此被廣泛應(yīng)用于人手姿態(tài)估計領(lǐng)域。根據(jù)相機(jī)成像方式,深度相機(jī)可分為結(jié)構(gòu)光與飛行時間(Time of Flight,TOF)兩類[20]。其中,以Kinect V2 為代表的基于TOF 的消費級深度相機(jī),能夠以低成本獲取準(zhǔn)確的深度圖像?;赥OF 的深度相機(jī)原理是首先通過相機(jī)發(fā)射光脈沖至觀測物體,然后相機(jī)接收從觀測物體反射的光脈沖,最后通過光脈沖飛行往返時間計算二者之間的距離。利用深度圖像求解人手姿態(tài)能夠有效避免二維圖像的歧義性問題。同時,可通過深度圖像獲取手部到相機(jī)的物理距離。利用距離信息可將人手與復(fù)雜背景分離,避免雜亂背景信息的干擾。
人手全局姿態(tài)估計旨在通過輸入圖像估計3D 手部的旋轉(zhuǎn)角度,與之相似的問題還有3D 頭部姿態(tài)估計。值得注意的是,頭部可以近似為剛體,且因為人體生理約束限制,頭部旋轉(zhuǎn)范圍較小;但手部運動范圍大,且手勢多變,相比之下手部全局姿態(tài)估計任務(wù)更具有挑戰(zhàn)性。在數(shù)據(jù)集方面,規(guī)模大、標(biāo)記精度高的數(shù)據(jù)集是保證CNN能夠進(jìn)行有效訓(xùn)練的基礎(chǔ),但現(xiàn)有人手姿態(tài)數(shù)據(jù)集大多采用人手關(guān)節(jié)3D 位置標(biāo)簽,缺少人手全局姿態(tài)標(biāo)簽,且數(shù)據(jù)集中的人手動作存在著無法完整覆蓋手部動作空間的問題。
本文提出一種基于像素投票的人手全局姿態(tài)估計網(wǎng)絡(luò),以深度圖像作為輸入在變化的手勢下估計手部3D 旋轉(zhuǎn)角度。該方法旨在提供更高精度的旋轉(zhuǎn)角度估計以滿足人機(jī)交互中精確旋轉(zhuǎn)控制的需求。同時,針對數(shù)據(jù)集少、動作樣本難以覆蓋整個手部運動空間的問題,本文通過三維渲染引擎OSG 建立人手?jǐn)?shù)據(jù)集合成程序。該程序可實現(xiàn)不同手勢下的人手深度圖像渲染、全局姿態(tài)標(biāo)注工作,為人手全局姿態(tài)估計提供大量高質(zhì)量的訓(xùn)練數(shù)據(jù)。
基于像素投票的手部全局姿態(tài)估計網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。給定一張深度圖像,從圖像中估計手部的全局旋轉(zhuǎn)姿態(tài)θ=(θp,θr,θy),其中,θp,θr,θy分別表示手部全局旋轉(zhuǎn)的俯仰、翻滾和偏航3 個歐拉角。該網(wǎng)絡(luò)基于編碼器-解碼器架構(gòu),包括兩個功能分支:語義分割分支和姿態(tài)估計分支。這兩個分支分別預(yù)測每個像素的語義信息和姿態(tài)投票信息。本文利用語義分割分支分割出手部像素區(qū)域,再利用手部像素姿態(tài)投票信息獲得全局姿態(tài)估計。
圖1 基于像素投票的人手全局姿態(tài)估計網(wǎng)絡(luò)整體結(jié)構(gòu)Fig.1 Overall structure of global hand pose estimation network based on pixel voting
受到DeeplabV3+[21]語義分割網(wǎng)絡(luò)的啟發(fā),這里采用了編碼器-解碼器結(jié)構(gòu)來獲得像素級的語義分割與姿態(tài)預(yù)測。該結(jié)構(gòu)包括用以提取特征信息的編碼器和預(yù)測語義信息與姿態(tài)信息的解碼器。
編碼器由主干網(wǎng)絡(luò)和空洞空間金字塔池化(Atrous Spacial Pyramid Pooling,ASPP)模塊組成。本文采用深度殘差網(wǎng)絡(luò)ResNet101[22]作為主干網(wǎng)絡(luò),用于圖像特征提取。ResNet101 利用躍層連接的方式有效解決了CNN 深度增加所造成的梯度消失、梯度爆炸等問題[23],因此具有更好的學(xué)習(xí)與表達(dá)能力。ResNet101 可以利用公開數(shù)據(jù)集進(jìn)行預(yù)訓(xùn)練,本文采用ImageNet 數(shù)據(jù)集[24]對ResNet101 進(jìn)行預(yù)訓(xùn)練。實驗證明,采用預(yù)訓(xùn)練主干網(wǎng)絡(luò)的模型具有更好的圖像特征提取能力,且后續(xù)訓(xùn)練收斂更快[25]。為使ResNet101 更適合基于像素投票的姿態(tài)估計方法,這里去除了該網(wǎng)絡(luò)的全連接層,并將Conv_x4 輸出的特征圖分辨率從原有輸入圖像1/32 倍調(diào)整為1/16 倍,從而更好地保留空間關(guān)系;并將卷積層Conv_x4的卷積調(diào)整成擴(kuò)張率為2 的擴(kuò)張卷積,從而擴(kuò)大CNN 的感受野。
針對手勢多樣性與姿態(tài)復(fù)雜性的特點,利用ASPP 模塊在多個尺度上捕獲上下文信息,進(jìn)而增加網(wǎng)絡(luò)提取不同手部姿態(tài)特征的能力。ASPP模塊結(jié)構(gòu)如圖2 所示,該模塊由4 個分別為1×1卷積和擴(kuò)張率分別為3,6,9 的3×3 卷積組成。首先,將主干網(wǎng)絡(luò)輸出的特征圖分別輸入ASPP模塊與全局平均池化層獲得5 個通道數(shù)為256,尺度不同的特征圖。然后,將獲得的5 個特征圖在通道維度上進(jìn)行連接,生成1 個通道數(shù)為1 280的融合特征圖。最后,利用1×1 卷積將融合特征圖通道數(shù)從1 280 調(diào)整至256 完成編碼工作。
圖2 ASPP 模塊結(jié)構(gòu)Fig.2 ASPP module structure
解碼器需要將編碼器得到的特征圖上采樣至輸入圖像分辨率。DeeplabV3+的解碼器將得到的特征圖進(jìn)行4 倍雙線性上采樣操作,然后與主干網(wǎng)絡(luò)中具有相同分辨率的低階特征在通道維度上連接。連接前利用1×1 卷積調(diào)整低階特征通道數(shù)量,避免低階特征的大數(shù)目通道(例如256 或512)所導(dǎo)致的訓(xùn)練困難。連接后利用3×3 卷積操作進(jìn)行特征提取。解碼器將編碼器輸出的特征圖進(jìn)行4 倍雙線性上采樣操作,與特征提取主干網(wǎng)絡(luò)中Conv_x2 層所提取的低階特征圖相連接。該低階特征圖有256 個通道,在與編碼器特征圖連接之前利用1×1 卷積調(diào)整至48 個通道。連接后獲得304 個通道的融合特征圖,利用3×3 卷積操作進(jìn)行最后的特征提取。再次利用4倍雙線性上采樣操作得到與輸入圖分辨率相同的特征圖。最后完成解碼工作,輸出包含語義信息與姿態(tài)信息的8 通道特征圖。
雖然利用姿態(tài)估計分支可以預(yù)測每個像素的姿態(tài)投票,并通過匯集所有像素投票的方式得到最終的姿態(tài)預(yù)測結(jié)果。但本文認(rèn)為模型在進(jìn)行人手全局姿態(tài)估計時需更加關(guān)注手部區(qū)域像素,因此應(yīng)區(qū)分深度圖像中像素的類別。為了有效匯總像素姿態(tài)投票,本文通過語義標(biāo)記將圖像中所有像素標(biāo)注為手類或背景,在預(yù)測時通過語義分割分支獲得每個像素的準(zhǔn)確類別。
編碼器-解碼器模塊生成的8 通道特征圖同時包含語義信息與手部全局姿態(tài)信息。本文將特征圖的前兩個通道作為語義分割分支的輸入。輸入語義分割分支的特征圖與原始圖像的分辨率一致,特征圖通道記錄每個像素的語義標(biāo)記分?jǐn)?shù)。利用Softmax 函數(shù)計算每個像素對應(yīng)各個類別的概率,即:
其中:Ki表示每個類別的語義標(biāo)記分?jǐn)?shù),C為所有類別的個數(shù)。
本文目標(biāo)是求解手部全局姿態(tài)θ。因為θ在3D 空間不受約束,其不同維度是不相關(guān)的,因此可以獨立求解每個維度的參數(shù)。每個維度的參數(shù)由歐拉角表示,但歐拉角表示法存在不連續(xù)性,不適用于微分和積分的運算,不利于CNN 的學(xué)習(xí)[26]。為了解決上述問題,本文并不直接預(yù)測每個維度的歐拉角,而是預(yù)測其正弦值與余弦值。那么任意手部全局姿態(tài)θ可用姿態(tài)向量表示,即M=[sinθp,cosθp,sinθr,cosθr,sinθy,cosθy]。這種表示方法具有連續(xù)性,有利于CNN 學(xué)習(xí)圖像特征到旋轉(zhuǎn)姿態(tài)空間的特征映射。
在進(jìn)行全局姿態(tài)估計時,PoseCNN[27]利用三層全連接層完成高階特征信息到全局旋轉(zhuǎn)姿態(tài)的映射。最后一層全連接層直接輸出剛性物體的全局旋轉(zhuǎn)姿態(tài)估計。但本文認(rèn)為利用全連接層完成特征映射會破壞空間信息,不利于解決手勢變化多樣的手部全局姿態(tài)估計問題。所示本方法保留二維特征形式,為每個像素分配姿態(tài)標(biāo)簽,通過像素投票獲得預(yù)測姿態(tài)。
姿態(tài)估計分支將編碼器-解碼器模塊生成特征圖的后6 個通道作為輸入,每個通道對應(yīng)單一維度歐拉角的正弦或余弦姿態(tài)信息?;谇拔乃觯谶M(jìn)行姿態(tài)估計時僅關(guān)注手部位置像素,所以需獲得僅在手部像素保留信息的姿態(tài)標(biāo)簽圖與特征圖。姿態(tài)標(biāo)簽圖的獲取過程如圖3 所示。首先,利用語義標(biāo)簽生成手部掩碼圖。然后,根據(jù)手部全局姿態(tài)生成姿態(tài)標(biāo)簽圖。生成的姿態(tài)標(biāo)簽圖共有6 個通道,尺寸同手部掩碼圖一致,每個通道記錄手部全局姿態(tài)不同維度歐拉角的正弦值或余弦值。最后,利用手部掩碼圖屏蔽姿態(tài)標(biāo)簽圖的背景像素,獲得僅在手部區(qū)域記錄姿態(tài)信息的姿態(tài)標(biāo)簽圖。在訓(xùn)練時,利用手部掩碼圖屏蔽輸入特征圖的背景像素,再利用輸入特征圖與姿態(tài)標(biāo)簽圖進(jìn)行人手全局姿態(tài)估計損失的計算。
圖3 生成姿態(tài)標(biāo)簽圖Fig.3 Generate pose label map
本分支預(yù)測時,手部全局姿態(tài)的獲取過程如圖4 所示。首先,利用語義分割分支生成手部掩碼圖。
圖4 獲取手部全局姿態(tài)Fig.4 Aquisition of global hand pose
該圖用以保留輸入特征圖的手部區(qū)域像素,以保留的手部像素作為投票像素。然后,由式(2)將所有投票像素同一通道的預(yù)測值均值作為對應(yīng)通道的姿態(tài)投票結(jié)果。通過6 個通道對應(yīng)的投票結(jié)果可獲得預(yù)測姿態(tài)向量Mp。最后,預(yù)測姿態(tài)向量Mp通過反正切函數(shù)求解得到預(yù)測的手部全局姿態(tài)θp。本文將像素投票函數(shù)定義為:
其中:N表示手部像素的個數(shù),pn表示每個手部像素,vi表示手部像素每個通道的姿態(tài)投票,Vi表示每個通道的姿態(tài)投票結(jié)果。
本文提出的方法需執(zhí)行兩個任務(wù):語義分割和姿態(tài)估計。這里使用交叉熵(Cross-Entropy)作為損失函數(shù)來訓(xùn)練語義分割分支。對于姿態(tài)估計分支,利用Smooth L1 損失函數(shù)(如式(3))構(gòu)建像素姿態(tài)損失函數(shù)Lpp,該損失定義如式(4)所示。
其中:I表示輸入姿態(tài)特征圖的通道數(shù),li表示每個通道的真實姿態(tài)值,Vi表示手部像素每個通道的姿態(tài)投票值。
本文利用交叉熵?fù)p失函數(shù)與像素姿態(tài)損失函數(shù)共同監(jiān)督基于像素投票的人手全局姿態(tài)估計網(wǎng)絡(luò)的學(xué)習(xí)。網(wǎng)絡(luò)損失函數(shù)為:
其中:Ls表示語義分割分支給出像素類別預(yù)測概率分布與真實像素類別概率分布之間的交叉熵;α表示平衡系數(shù),用于平衡語義分割任務(wù)與姿態(tài)估計任務(wù)之間的關(guān)系。
本文方法在合成數(shù)據(jù)集上進(jìn)行訓(xùn)練和量化評價。此外,利用Kinect V2 深度相機(jī)拍攝真實手部深度圖像進(jìn)行定性測試,以驗證該方法在真實場景下的使用效果。實驗是在擁有4 塊NVIDIA TITANXP GPU,2 個型號為Intel Xeon E5-2650V4@2.2GHz CPU,128 G 內(nèi) 存 的 高性能服務(wù)器上完成的。
本文在Visual Studio 2013 編譯器上,基于開源跨平臺三維渲染引擎OpenSceneGraph(OSG)開發(fā)人手?jǐn)?shù)據(jù)集合成程序。該程序用以生成大量手部深度圖像與對應(yīng)的全局姿態(tài)標(biāo)簽。
合成數(shù)據(jù)集的制備過程如下:首先建立場景,并在場景中加載三維人手模型,然后通過虛擬相機(jī)觀測場景中不同手勢不同姿態(tài)下的三維人手模型。三維人手模型的建模精度越高,越有利于獲得更近似真實人手的圖像數(shù)據(jù),但是使用更高建模精度的三維人手模型進(jìn)行姿態(tài)變換也意味著更高的計算復(fù)雜度。因此,需要平衡模型精度與計算復(fù)雜度之間的需求關(guān)系。人手是由多個指節(jié)與手掌鉸接而成的關(guān)節(jié)式物體。根據(jù)這個特點,本文利用圓臺、球體等幾何基元建立三維人手模型的各個部件,控制模型中的各部件旋轉(zhuǎn)運動,實現(xiàn)人手模型的姿態(tài)變換。根據(jù)Kinect V2 相機(jī)內(nèi)參數(shù)建立虛擬深度相機(jī),通過投影過程將三維人手模型渲染成深度圖像。
根據(jù)人手生理結(jié)構(gòu)對各個關(guān)節(jié)運動的限制生成包含各個關(guān)節(jié)旋轉(zhuǎn)角度的姿態(tài)信息文本。OSG 通過讀取不同手勢下的姿態(tài)信息文本控制人手三維模型各個自由度節(jié)點運動,實現(xiàn)人手三維模型的動作變化。將虛擬深度相機(jī)放置在人手模型正上方1 m 處,拍攝不同姿態(tài)下人手模型對應(yīng)的深度圖像。
人手模型的姿態(tài)變化包括三維人手全局姿態(tài)變化與局部手指關(guān)節(jié)姿態(tài)變化。為了獲取合理的全局姿態(tài),本文根據(jù)真實人手自然運動對人手模型的全局姿態(tài)變換范圍進(jìn)行約束。圖5 為定義的三維人手模型旋轉(zhuǎn)軸,其旋轉(zhuǎn)范圍約束如下:
圖5 人手三維旋轉(zhuǎn)軸示意圖Fig.5 Schematic diagram of hand 3D rotation axis
局部手指關(guān)節(jié)變化通過5 個人手基本動作模板生成,動作模板T1,T2,T3,T4,T5 如圖6 所示。動作模板中每一個手指關(guān)節(jié)可以在小范圍內(nèi)隨機(jī)轉(zhuǎn)動,以此生成基于模板的局部手指關(guān)節(jié)姿態(tài)。在生成姿態(tài)信息文本時,首先根據(jù)隨機(jī)生成的局部手指關(guān)節(jié)姿態(tài)調(diào)整三維人手模型的手指變化,然后在限制范圍內(nèi)隨機(jī)改變?nèi)耸帜P偷娜肿藨B(tài),最后記錄變化后的姿態(tài),輸出信息文本。
圖6 人手基本動作模板Fig.6 Basic hand motion template
本文采用上述方法生成共計2×104張分辨率175×175 的合成深度圖像與對應(yīng)的全局姿態(tài)標(biāo)簽。合成數(shù)據(jù)集部分實例如圖7 所示。
圖7 合成數(shù)據(jù)集部分實例Fig.7 Some examples of synthetic datasets
從真實深度相機(jī)直接獲取人手全局姿態(tài)的真實值是非常困難的,故采用合成圖像來對本文提出的方法進(jìn)行量化評價。用于量化評價的測試集包含5 種基本人手動作,每種動作包含400張深度圖像。網(wǎng)絡(luò)模型在合成數(shù)據(jù)集上進(jìn)行訓(xùn)練,使用隨機(jī)梯度下降(Stochastic Gradient Descent,SGD)算法作為優(yōu)化器,初始學(xué)習(xí)率設(shè)置為0.003 5,batch size 設(shè)置為96,epoch 設(shè)置為70。
4.2.1 超參數(shù)的選擇
本文利用平衡系數(shù)α調(diào)整CNN 的損失函數(shù)。取平衡系數(shù)分別為4,6,8,10,12,14 來訓(xùn)練網(wǎng)絡(luò),圖8 為本文采用不同平衡系數(shù)訓(xùn)練的模型在測試集上的預(yù)測結(jié)果。其中,包括人手全局姿態(tài)3 個歐拉角的絕對誤差以及絕對誤差均值。由此可以發(fā)現(xiàn),當(dāng)平衡系數(shù)α=10 時訓(xùn)練的模型在測試集上表現(xiàn)最好。在該參數(shù)下測量翻滾角、俯仰角、偏航角的絕對誤差均值分別為3.689°,6.201°,5.218°,絕對誤差平均值為5.036°。后續(xù)實驗均在此參數(shù)設(shè)置下進(jìn)行。
圖8 不同平衡系數(shù)下人手全局姿態(tài)預(yù)測誤差Fig.8 Prediction error of global hand pose under different balance factors
4.2.2 實驗結(jié)果及分析
本文利用5 個基本動作模板生成5 個單一動作測試集。每個動作測試集中包含400 張同類動作不同姿態(tài)的人手深度圖像與對應(yīng)全局姿態(tài)標(biāo)簽。為每個動作測試集的400 次全局姿態(tài)預(yù)測結(jié)果計算絕對誤差均值。表1 為本文方法對測試集中各類基本動作的預(yù)測結(jié)果。由此可以發(fā)現(xiàn),本文方法測量動作T1,T2,T3,T4,T5 的人手全局姿態(tài)絕對誤差均值分別為5.835°,5.669°,4.866°,4.275°,4.527°。其中,基本動作T1 的預(yù)測誤差較大,其原因是該動作類似人手握拳動作,處于該動作的人手從不同的角度觀測相似度非常高,具有歧義的手部外觀會使模型預(yù)測結(jié)果產(chǎn)生較大的誤差。
表1 各類基本動作的人手全局姿態(tài)預(yù)測誤差Tab.1 Global hand pose prediction error for various basic actions (°)
為了證明本文所提出方法的有效性,與另外4 種方法進(jìn)行了對比,5 種方法在測試集上預(yù)測結(jié)果的絕對誤差均值如表2 所示。其中,Hopenet[18]是一種基于多損失深度CNN 的人體頭部全局姿態(tài)估計方法,該網(wǎng)絡(luò)使用ResNet50[22]作為主干特征提取網(wǎng)絡(luò),并使用平均絕對誤差(Mean Aver-age Error,MAE)和交叉熵作為損失函數(shù)對網(wǎng)絡(luò)進(jìn)行訓(xùn)練優(yōu)化。對比實驗中,Hopenet[18]的回歸系數(shù)設(shè)置為2。FSA-Net[19]是一種結(jié)合回歸與特征聚合的人體頭部全局姿態(tài)估計方法,該方法使用平均絕對誤差作為損失函數(shù)進(jìn)行訓(xùn)練優(yōu)化。FSA-Net 使用文獻(xiàn)[19]中方差評分函數(shù)進(jìn)行特征聚合。方法1:采用基于像素投票的手部全局姿態(tài)估計網(wǎng)絡(luò)結(jié)構(gòu),但手部全局姿態(tài)標(biāo)簽使用歐拉角表示。方法2:在方法1 的基礎(chǔ)上移除解碼器部分,不使用像素投票方法得出姿態(tài)結(jié)果,使用三層全連接層回歸手部全局姿態(tài)歐拉角。表2為本文方法與對比模型在測試集上的結(jié)果,由此可以發(fā)現(xiàn),本文方法的準(zhǔn)確性明顯優(yōu)于其他方法。由此說明,本文方法更適用于手勢多變的人手全局姿態(tài)估計任務(wù),相比于FSA-Net 與Hopenet,本文方法能夠為人手全局姿態(tài)的3 個參數(shù)提供更準(zhǔn)確的預(yù)測結(jié)果,并且在翻滾角的預(yù)測精度上具有明顯的優(yōu)勢。本文利用正弦值與余弦值表示手部全局姿態(tài)歐拉角的方法,相比于直接將歐拉角作為姿態(tài)標(biāo)簽的方法,精度更高。本文所使用的姿態(tài)表示方式更有利于神經(jīng)網(wǎng)絡(luò)對特征的學(xué)習(xí)。值得注意的是,方法2 相比于其他方法存在較大的誤差,驗證了基于像素投票的姿態(tài)估計方法的有效性。
表2 不同方法在測試集上的人手全局姿態(tài)預(yù)測誤差Tab.2 Global hand pose prediction error of different methods on test dataset (°)
參考其他全局姿態(tài)估計方法[17-18],本文同樣采用不同公差姿態(tài)預(yù)測精度來評估模型性能。不同公差姿態(tài)預(yù)測精度,即全局姿態(tài)預(yù)測絕對誤差小于某個公差的準(zhǔn)確率。圖9 為不同方法在不同公差下對全局姿態(tài)各個參數(shù)的預(yù)測精度??梢园l(fā)現(xiàn),方法1 在公差值為5°時預(yù)測俯仰角的準(zhǔn)確率最高,而在其他誤差公差下,本文方法則具有更高的預(yù)測準(zhǔn)確率。
圖9 不同方法在測試集上的人手全局姿態(tài)預(yù)測精度Fig.9 Global hand pose prediction accuracy of different methods on test dataset
本文方法在NVIDIA TITANXP GPU 上對人手深度圖像進(jìn)行全局姿態(tài)估計的平均速度為30.52 frame/s,可以滿足實時性要求。本文方法對每一張深度測試圖像進(jìn)行處理總耗時約為32.77 ms,其中圖像讀取與預(yù)處理用時約8.36 ms,模型前向傳播與像素投票用時約24.41 ms。
本文采用真實手部深度圖對方法進(jìn)行定性測試,使用Kinect V2 深度相機(jī)采集手部圖像作為輸入。利用深度閾值分割人手區(qū)域,再將人手區(qū)域圖像裁剪成分辨率為175×175 的輸入圖像。本文方法對真實人手深度圖像的全局姿態(tài)預(yù)測結(jié)果如圖10 所示。圖中,第一行為Kinect V2 深度相機(jī)采集的真實深度圖像,第二行為本文方法對真實深度圖像進(jìn)行預(yù)測獲得的人手全局姿態(tài)估計可視化圖。由圖10 可以看出,本文方法在Kinect V2 較為粗糙的深度數(shù)據(jù)下仍可穩(wěn)健地預(yù)測人手全局姿態(tài)。
圖10 真實人手深度圖像全局姿態(tài)預(yù)測結(jié)果Fig.10 Global hand pose prediction results of depth image of real hand
本文提出了一種基于像素投票的方法,在變化的手勢下估計人手全局姿態(tài),采用語義分割的方法確定人手像素位置,通過手部區(qū)域的像素姿態(tài)投票信息來生成穩(wěn)健、準(zhǔn)確的估計結(jié)果。針對人手全局姿態(tài)數(shù)據(jù)集采集困難的問題,設(shè)計開發(fā)了人手?jǐn)?shù)據(jù)集合成程序,為深度神經(jīng)網(wǎng)絡(luò)提供高質(zhì)量的訓(xùn)練數(shù)據(jù)。實驗結(jié)果表明,本文方法的人手全局姿態(tài)預(yù)測誤差均值為5.036°,可以準(zhǔn)確地從深度圖像預(yù)測人手全局姿態(tài),在人機(jī)交互、機(jī)器人模仿學(xué)習(xí)等領(lǐng)域具有廣泛的應(yīng)用前景。但本方法對于俯仰角的預(yù)測誤差較大,在未來的工作中,將對模型像素投票處理方法進(jìn)行優(yōu)化,降低誤差較大的投票對最終結(jié)果的影響,進(jìn)一步提高預(yù)測精度。