鄭涵,田猛,趙延峰,王先培
(武漢大學(xué)電子信息學(xué)院,武漢 430072)
手作為人體上重要部分之一,是人類與外界傳遞信息的重要方式。手部位姿估計(jì)作為人機(jī)交互技術(shù)的熱點(diǎn)項(xiàng)目之一,廣泛應(yīng)用于虛擬現(xiàn)實(shí)(virtual reality,VR)和增強(qiáng)現(xiàn)實(shí)(augmented reality,AR)等應(yīng)用中。手部檢測(cè)和手部位姿估計(jì)助力于體感游戲的發(fā)展和實(shí)現(xiàn),精確的手部位姿估計(jì)算法可以提高用戶游戲體驗(yàn),并為后續(xù)更為高深的技術(shù)提供基礎(chǔ)支持。手部位姿估計(jì)在3D建模領(lǐng)域也有廣泛的應(yīng)用,現(xiàn)在已經(jīng)有一些工作能實(shí)時(shí)建模出手部模型。但是由于存在手關(guān)節(jié)自由度高,檢測(cè)目標(biāo)小,以及手部的自遮擋等問(wèn)題,已有手部位姿估計(jì)算法存在精度低魯棒性較差等問(wèn)題。
當(dāng)前常用的手勢(shì)姿態(tài)估計(jì)方法主要分為3類[1-2]。第一類是生成方法,該方法計(jì)算量大,魯棒性差。Boukhayma等[3]采用編碼器來(lái)生成手模型的形狀,姿勢(shì)和視角參數(shù),以獲得手的3D網(wǎng)格參數(shù)及其底層 3D 骨架。第二類是判別方法,該方法需要大量的數(shù)據(jù)支持,隨著深度學(xué)習(xí)的發(fā)展,該方法逐漸被推廣使用[4]。劉家祥[5]采用深度學(xué)習(xí)從3個(gè)方面研究三維手勢(shì)估計(jì)方法。Kulon等[6]使用循環(huán)結(jié)構(gòu)的網(wǎng)格卷積解碼器來(lái)恢復(fù) 3D 手網(wǎng)格和手部姿態(tài)。第三類是混合式方法,該方法結(jié)合了兩種方法的優(yōu)點(diǎn)[7-8],既不需要建立復(fù)雜的手部模型,也不依賴于模型初始化,手部模型的約束可以減少不合理的預(yù)測(cè)動(dòng)作,減小計(jì)算量,提高檢測(cè)的魯棒性。Liu 等[9]利用對(duì)武術(shù)三維手勢(shì)特征進(jìn)行提取和分類;然后,利用手部形態(tài)拓?fù)浣Y(jié)構(gòu)模擬手部關(guān)節(jié)的依賴性,得到手部關(guān)節(jié)的三維坐標(biāo)。最后,利用姿態(tài)回歸模塊實(shí)現(xiàn)武術(shù)手勢(shì)動(dòng)作的姿態(tài)估計(jì)。
手部檢測(cè)是完成手部位姿估計(jì)算法重要的一步。手部檢測(cè)算法可以分為傳統(tǒng)的檢測(cè)識(shí)別方法和基于深度學(xué)習(xí)方法。傳統(tǒng)的手部檢測(cè)方法主要依賴于顏色特征[10-11],或其他先驗(yàn)知識(shí)提取的目標(biāo)特征,受環(huán)境影響大,魯棒性差。唐文權(quán)等[12]基于膚色進(jìn)行人手檢測(cè),先對(duì)基于光補(bǔ)償?shù)哪w色模型估算和糾正,再進(jìn)行非線性轉(zhuǎn)換得到橢圓膚色模型,再進(jìn)行一系列操作連接人手候選區(qū)域。基于深度學(xué)習(xí)的方法具有識(shí)別速度快,識(shí)別精度高的優(yōu)點(diǎn)。其中具有代表性的是基于候選區(qū)域的卷積神經(jīng)網(wǎng)絡(luò),F(xiàn)aster R-CNN對(duì)目標(biāo)檢測(cè)的速度做了很大的提升,很多研究者將該算法應(yīng)用于手部檢測(cè)。馬鵬程[13]在Faster R-CNN的基礎(chǔ)上使用特征金字塔(feature pyramid networks,F(xiàn)RN)代替區(qū)域生成網(wǎng)絡(luò)(region proposal network,RPN),并且在ROI Pooling層加入注意力機(jī)制,提高了檢測(cè)精度和速度。張勛等[14]采用Faster R-CNN網(wǎng)絡(luò)對(duì)建議框做目標(biāo)檢測(cè)和分類實(shí)現(xiàn)手勢(shì)端到端的識(shí)別。劉壯等[15]在原有的Faster R-CNN檢測(cè)框架的基礎(chǔ)上,增加了Depth通道,并在特征層面上將其余RGB通道信息進(jìn)行融合,實(shí)現(xiàn)手部檢測(cè)。但是Faster R-CNN網(wǎng)絡(luò)在小目標(biāo)檢測(cè)等方面還存在缺陷。
以基于改進(jìn)的Faster R-CNN的手部位姿估計(jì)算法為研究背景,通過(guò)對(duì)目前存在的難點(diǎn)分析,將手部位姿估計(jì)分為手部檢測(cè)和手部關(guān)鍵點(diǎn)檢測(cè)。首先提出一種改進(jìn)的 Faster R-CNN 網(wǎng)絡(luò)用于手部檢測(cè)。將深度相機(jī)采集的原始深度圖進(jìn)行預(yù)處理,與 RGB 圖圖像通道保持統(tǒng)一尺度[16],從而初步過(guò)濾掉背景信息,然后提出深度特征提取網(wǎng)絡(luò),來(lái)替換 Faster R-CNN 的特征提取模塊,使算法能夠適應(yīng)多通道多尺度的圖像數(shù)據(jù),最后在網(wǎng)絡(luò)的頭網(wǎng)絡(luò)中增加 handside分支來(lái)區(qū)分左手和右手,進(jìn)而獲得精度更高的手部檢測(cè)結(jié)果,解決手部在圖像中檢測(cè)目標(biāo)較小的問(wèn)題。
在改進(jìn) Faster R-CNN 網(wǎng)絡(luò)基礎(chǔ)上增加了頭網(wǎng)絡(luò)分支用以訓(xùn)練輸出 MANO (hand model with articulated and non-rigid deformations)手部模型的姿態(tài)參數(shù)和形狀參數(shù),并根據(jù)手部特征重新設(shè)計(jì)了兩個(gè)損失函數(shù)用來(lái)約束 MANO 參數(shù)的訓(xùn)練。MANO 手部模型是一種參數(shù)化的手部網(wǎng)格模型,通過(guò)網(wǎng)絡(luò)回歸得到的姿態(tài)參數(shù)和形狀參數(shù)能控制MANO 生成手部模型,進(jìn)而得到手部的關(guān)鍵點(diǎn)三維坐標(biāo),從而有效解決手部自遮擋等問(wèn)題。
如圖1所示,改進(jìn)后的手部檢測(cè)算法包括特征提取模塊、RPN、特征圖的分類預(yù)測(cè)、包圍框預(yù)測(cè),與基于Faster R-CNN的目標(biāo)檢測(cè)算法類似?,F(xiàn)改進(jìn)特征提取網(wǎng)絡(luò),提出深度特征融合網(wǎng)絡(luò)來(lái)將RGB圖像的語(yǔ)義特征與深度圖像的位置特征進(jìn)行融合,解決手部檢測(cè)中存在的遮擋問(wèn)題和尺度問(wèn)題。并將Faster R-CNN算法中的ROI最大值池化更改為ROI Align,提高了算法的運(yùn)行速度及小目標(biāo)檢測(cè)的準(zhǔn)確性。
圖1 手部檢測(cè)算法基本網(wǎng)絡(luò)框圖Fig.1 Basic network block diagram of hand detection algorithm
深度相機(jī)直接獲得的深度圖不可避免地包含噪聲甚至異常值,如果直接用來(lái)訓(xùn)練網(wǎng)絡(luò),可能會(huì)導(dǎo)致預(yù)測(cè)結(jié)果偏差。因此,在訓(xùn)練之前需要對(duì)深度圖進(jìn)行去噪和歸一化處理。本文中使用雙邊濾波進(jìn)行深度圖降噪,使用最大最小標(biāo)準(zhǔn)化對(duì)深度圖進(jìn)行歸一化處理,與 RGB 圖圖像通道保持統(tǒng)一尺度,從而初步過(guò)濾掉背景信息。
Faster R-CNN在進(jìn)行特征提取時(shí),選擇了 VGG16 網(wǎng)絡(luò)的最后一層輸出來(lái)做提取出的特征圖。在卷積的過(guò)程中,小目標(biāo)的語(yǔ)義特征大概率作為背景而被拋棄。導(dǎo)致了Faster R-CNN難以提取小目標(biāo)。
FPN可以信息融合將低層特征圖的位置信息與高層特征圖的語(yǔ)義信息進(jìn)行融合?;诖怂枷耄瑢⒑胸S富的位姿信息的深度圖特征和含有豐富語(yǔ)義信息的 RGB圖特征進(jìn)行數(shù)據(jù)層融合,提出了一種新的特征融合網(wǎng)絡(luò)來(lái)聯(lián)合提取 RGB-D 圖像特征。深度特征融合網(wǎng)絡(luò)如圖2所示。
圖2 深度特征融合網(wǎng)絡(luò)Fig.2 Deep feature fusion network
將傳統(tǒng)Faster R-CNN網(wǎng)絡(luò)中的對(duì)ROI的最大值池化,更改為 ROI Align,即通過(guò)雙線性插值的方法來(lái)使特征圖像素級(jí)對(duì)齊。文獻(xiàn)[17]證明,這種做法不僅可以提高整體運(yùn)算速度,還可以提高對(duì)小目標(biāo)的檢測(cè)準(zhǔn)確性。
原始的 Faster R-CNN 的損失函數(shù)包括兩個(gè)部分,即分類損失函數(shù)Lcls和回歸損失函數(shù)Lreg。
(1)
綜上,本文提出的改進(jìn)Faster R-CNN算法的總損失函數(shù)為
Ltotal=Lcls+Lreg+Lhs
(2)
圖3所示為一個(gè)由MANO[18]模型生成的手部網(wǎng)格。根據(jù)MANO的手部模型,可以很容易地根據(jù)稀疏權(quán)重關(guān)系獲得除了5個(gè)手指指尖以外的16個(gè)控制手部整體運(yùn)動(dòng)的骨骼關(guān)節(jié)點(diǎn)。MANO也根據(jù)左右手鏡像的先驗(yàn)知識(shí),從右手的模型中生成了左手模型,保證了左右手模型的一致性。MANO手部模型一共有778個(gè)參數(shù),為了簡(jiǎn)化計(jì)算難度,降低計(jì)算復(fù)雜度,引入形狀參數(shù)β和姿勢(shì)參數(shù)θ來(lái)控制手部模型的位姿。由此可以得到MANO手部模型的計(jì)算公式為
圖3 MANO手部模型Fig.3 MANO the model of hand
(3)
M(β,θ)=f[T(β,θ),θ,W,J(θ)]
(4)
J(θ)=F[T+Bs(β)]
(5)
由式(3)~式(5)可以看出,只需要給定形狀參數(shù)β和姿勢(shì)參數(shù)θ,就可以從標(biāo)準(zhǔn)手部模型中生成對(duì)應(yīng)形狀與姿態(tài)的手部模型。
由此設(shè)計(jì)出一個(gè)基本的網(wǎng)絡(luò)框架,如圖4所示。
圖4 基于MANO的手部位姿估計(jì)基準(zhǔn)網(wǎng)絡(luò)框架Fig.4 A benchmark network framework for hand pose estimation based on MANO
將手部檢測(cè)后分割出的手部圖片直接輸入到手部位姿估計(jì)網(wǎng)絡(luò)框架中得出手部關(guān)鍵點(diǎn)信息。但是使用兩個(gè)不同的深度學(xué)習(xí)網(wǎng)絡(luò),不僅導(dǎo)致訓(xùn)練時(shí)復(fù)雜,預(yù)測(cè)的結(jié)果難以控制,也會(huì)進(jìn)行過(guò)多不必要的計(jì)算(例如進(jìn)行了兩次特征提取),使運(yùn)行速度過(guò)慢。
針對(duì)上述問(wèn)題,借鑒多任務(wù)網(wǎng)絡(luò)思想,將手部位姿估計(jì)基本網(wǎng)絡(luò)框架加入到本文改進(jìn)的 Faster R-CNN中,改進(jìn)后的網(wǎng)框架如圖5所示。
圖5 多任務(wù)手部位姿估計(jì)網(wǎng)絡(luò)基本框圖Fig.5 Basic block diagram of multi-task hand pose estimation network
MANO手部模型為了訓(xùn)練自己定義了兩個(gè)損失函數(shù),分別為形狀損失Lβ和姿態(tài)損失Lθ[17]。
然而本文選用的數(shù)據(jù)庫(kù),大部分真值標(biāo)注都不包含姿態(tài)參數(shù)θ和形狀參數(shù)β,因此 MANO 模型并不適用目前大部分的主流的手部位姿估計(jì)數(shù)據(jù)庫(kù)。但是如果不對(duì)形狀參數(shù)進(jìn)行約束,MANO 網(wǎng)絡(luò)模型可能會(huì)出現(xiàn)過(guò)粗或者過(guò)細(xì)的手部模型,從而影響從手部模型中提取的骨骼關(guān)節(jié)點(diǎn)結(jié)果。如果不對(duì)姿態(tài)參數(shù)進(jìn)行約束,MANO 網(wǎng)絡(luò)模型可能會(huì)出現(xiàn)異常姿態(tài)的手部模型。
為了約束形狀參數(shù),假定所有數(shù)據(jù)庫(kù)中手部的形狀都是標(biāo)準(zhǔn)大小,即人為設(shè)定數(shù)據(jù)庫(kù)中所有的形狀參數(shù)的真值β*=0。將Lβ重新定義為
(6)
根據(jù)先驗(yàn)知識(shí),手部的姿態(tài)是由包括手指指尖在內(nèi)的21個(gè)骨骼關(guān)鍵點(diǎn)來(lái)共同控制,因此通過(guò)獲得MANO手部模型中21個(gè)骨骼關(guān)鍵點(diǎn)的空間位置信息就可以達(dá)到約束 MANO手部模型的姿態(tài)參數(shù)θ。選擇了MANO模型上包括指尖在內(nèi)的21個(gè)骨骼關(guān)節(jié)點(diǎn)三維位置與對(duì)應(yīng)真值差值來(lái)計(jì)算姿態(tài)損失函數(shù),計(jì)算公式為
(7)
綜上,本文提出的手部位姿估計(jì)算法的總損失函數(shù)為
Ltotal=λclsLcls+λregLreg+λhsLhs+λβL′β+λcoiLcoi
(8)
式(8)中:λcls、λreg、λhs、λβ、λcoi分別為對(duì)應(yīng)損失函數(shù)的平衡權(quán)重。本文訓(xùn)練時(shí),取值λcls=λreg=λhs=λβ=λcoi=1。
所有的訓(xùn)練和驗(yàn)證都在NVIDIA Quadro RTX 6000顯卡上運(yùn)行,操作系統(tǒng)為Ubuntu18.04,CUDA 版本為10.2以及cudnn版本為7.5,初始學(xué)習(xí)率為 0.02,每回合下降4%。
本文主要研究集中在 NYU[19]、ICVL[20]、MSRA[21]、first-person hand action benchmark[22](F-PHAB)4個(gè)數(shù)據(jù)庫(kù)。其中前3個(gè)主要是裸手的數(shù)據(jù)庫(kù),最后一個(gè)是手物交互的數(shù)據(jù)庫(kù)。
在目前的三維手部位姿估計(jì)算法中,研究學(xué)者一般采用手部共21個(gè)骨骼關(guān)節(jié)點(diǎn)作為位姿估計(jì)的關(guān)鍵點(diǎn)。與之對(duì)應(yīng)的,采用關(guān)鍵點(diǎn)坐標(biāo)的均方誤差值(key-point mean square error,KMSE)來(lái)評(píng)估算法的有效性。
關(guān)鍵點(diǎn)誤差 KMSE 可以定義為圖像上預(yù)測(cè)關(guān)鍵點(diǎn)坐標(biāo)與對(duì)應(yīng)真值坐標(biāo)之間的歐式距離,公式為
(9)
(10)
式中:KMSE為所有關(guān)鍵點(diǎn)的總誤差;I為關(guān)鍵點(diǎn)總數(shù)量;KMSE,i為第i個(gè)關(guān)鍵點(diǎn)的均方誤差值;n為測(cè)試視頻的總共幀數(shù);(xij,yij,zij)為第j幀圖像的第i個(gè)關(guān)鍵點(diǎn)的估計(jì)坐標(biāo)值;(Xij,Yij,Zij)為第j幀圖像的第i個(gè)關(guān)鍵點(diǎn)坐標(biāo)值的真值。
3.3.1 手部檢測(cè)算法
為了驗(yàn)證改進(jìn) Faster R-CNN 的方法的有效性,選擇F-PHAB 數(shù)據(jù)庫(kù),并將原始的 Faster R-CNN 方法與本文改進(jìn)的方法進(jìn)行了對(duì)比。由于數(shù)據(jù)庫(kù)中并沒(méi)有手部的真值框,因此將骨骼關(guān)節(jié)點(diǎn)的三維坐標(biāo)映射到二維圖像上的最大包圍框定義為真值框。為了擴(kuò)充數(shù)據(jù)庫(kù),根據(jù)左右手鏡像關(guān)系,將訓(xùn)練集數(shù)據(jù)進(jìn)行鏡像翻轉(zhuǎn)處理。從不同場(chǎng)景中隨機(jī)選擇了40 000 張作為訓(xùn)練集,選擇 10 000 張作為測(cè)試集,進(jìn)行了對(duì)比試驗(yàn)。由于手部檢測(cè)任務(wù)實(shí)際上有3類目標(biāo):左手、右手和背景,因此選擇了準(zhǔn)確率來(lái)作為評(píng)價(jià)標(biāo)準(zhǔn)。
從表1可以看出,將深度圖像作為 RGB 圖像中的圖像通道可以一定程度上提高遮擋情況下的手部檢測(cè)結(jié)果,但是實(shí)際效果并不理想,而本文的方法在識(shí)別準(zhǔn)確率上要全面優(yōu)于Faster R-CNN。圖6中,綠框代表預(yù)測(cè)為左手區(qū)域,紅框代表預(yù)測(cè)為右手區(qū)域。場(chǎng)景一和場(chǎng)景二均為測(cè)試集數(shù)據(jù),場(chǎng)景一中左手大部分區(qū)域都被物體遮擋,從圖6中可以看出,無(wú)論輸入數(shù)據(jù)是 RGB 圖像還是RGB-D 數(shù)據(jù),F(xiàn)aster R-CNN 只能檢測(cè)到部分左手信息,而本文方法可以檢測(cè)到幾乎完整的左手信息。場(chǎng)景二中左手并沒(méi)有完全在圖內(nèi),F(xiàn)aster R-CNN 并不能檢測(cè)到左手,而本文方法能有效的檢測(cè)到左手。場(chǎng)景三取材于日常生活中,手部位置距離相機(jī)很近,F(xiàn)aster R-CNN 由于沒(méi)有多尺度的特征提取網(wǎng)絡(luò),雖然檢測(cè)到了手,但是無(wú)法精確定位。使用本文方法,手部信息大部分都在框內(nèi),只有大拇指中極少的部分在框外。在3種場(chǎng)景下,本文方法均有較好的識(shí)別結(jié)果。從定性和定量的角度來(lái)看,本文提出的改進(jìn)方法相較于Faster R-CNN算法具有更好地檢測(cè)結(jié)果。
表1 本文方法與Faster R-CNN的評(píng)價(jià)指標(biāo)對(duì)比Table 1 Comparison of evaluation indicators between this paper and Faster R-CNN
圖6 不同場(chǎng)景下手部檢測(cè)結(jié)果Fig.6 Hand detection results in different scenarios
3.3.2 手部關(guān)鍵點(diǎn)提取
為了評(píng)估本章方法的有效性,將在3個(gè)常用數(shù)據(jù)庫(kù) ICVL、NYU、MSRA 上分別計(jì)算關(guān)鍵點(diǎn)平均誤差 KMSE,并將結(jié)果與目前主流的算法進(jìn)行比較。由表2所示,本文提出的算法在 NYU 和 ICVL 均與最優(yōu)的方法相當(dāng),其中 ICVL 數(shù)據(jù)庫(kù)由于遮擋較少,識(shí)別相對(duì)簡(jiǎn)單,因而達(dá)到了當(dāng)前最優(yōu)效果。相對(duì)而言,在 MSRA 數(shù)據(jù)集的誤差與最優(yōu)方法誤差相差 0.3 mm,這與該數(shù)據(jù)庫(kù)場(chǎng)景復(fù)雜,包含人員較多和自遮擋問(wèn)題較嚴(yán)重有一定關(guān)系。綜上所示,本文算法能夠一定程度上解決手部位姿估計(jì)存在的高自由度、手部目標(biāo)過(guò)小、手部自遮擋問(wèn)題和尺度問(wèn)題,較為準(zhǔn)確地估計(jì)出圖像中的手部位姿。手部位姿估計(jì)的可視化結(jié)果如圖7所示。即使手部有部分被物體遮擋,依舊可以繪制出手部關(guān)鍵點(diǎn)信息。綜上所述,本文算法能較好地解決手部遮擋問(wèn)題,實(shí)現(xiàn)手部的位姿估計(jì)。
圖7 手部位姿估計(jì)可視化結(jié)果Fig.7 The visualization results of hand pose estimation
表2 本文算法與主流算法在不同數(shù)據(jù)集上的比較Table 2 Comparison of the algorithm in this paper and the mainstream algorithm on different data sets
本文設(shè)計(jì)并實(shí)現(xiàn)了基于改進(jìn)Faster R-CNN網(wǎng)絡(luò)的手部位姿估計(jì)算法。提出了改進(jìn)的Faster R-CNN網(wǎng)絡(luò)進(jìn)行手部檢測(cè),并在此基礎(chǔ)上提出了基于MANO手部模型的手部位姿估計(jì)。實(shí)驗(yàn)表明,手部檢測(cè)結(jié)果中存在的自遮擋和尺度問(wèn)題得到了解決,并且檢測(cè)結(jié)果的準(zhǔn)確性有所提高。通過(guò)與主流算法的對(duì)比可以證明,本文算法能夠較為準(zhǔn)確地得到手部位姿估計(jì)的結(jié)果。在未來(lái)的工作中,將進(jìn)一步對(duì)手部姿態(tài)估計(jì)中手部動(dòng)作的意義進(jìn)行理解。