張風(fēng)雷
(武漢郵電科學(xué)研究院 武漢 430074)
現(xiàn)今主要的人機(jī)交互媒介為鼠標(biāo)和觸摸屏;在混合現(xiàn)實(shí)時(shí)代,主要的人機(jī)交互媒介將為手[1~2]。故而,學(xué)術(shù)界和產(chǎn)業(yè)界都在積極開(kāi)展與手有關(guān)的計(jì)算機(jī)視覺(jué)研究,手的關(guān)鍵點(diǎn)估計(jì)也成為近年來(lái)的研究熱點(diǎn)之一。所謂“手的關(guān)鍵點(diǎn)估計(jì)”是指根據(jù)一張包含手的RGB圖像,估計(jì)手的關(guān)鍵點(diǎn)在圖像上的位置。
姿態(tài)機(jī)[3](Pose Machine)是一種成熟的2D 人體姿態(tài)估計(jì)方法,其具有強(qiáng)大的對(duì)人體關(guān)鍵點(diǎn)間復(fù)雜的上下文關(guān)聯(lián)的表示力(representation power)。卷積神經(jīng)網(wǎng)絡(luò)廣泛應(yīng)用于計(jì)算機(jī)視覺(jué)領(lǐng)域中,其具有出色的圖像特征提取能力[4~5]。
本文提出了一種基于姿態(tài)機(jī)和卷積神經(jīng)網(wǎng)絡(luò)的手的關(guān)鍵點(diǎn)估計(jì)方法。該方法的要點(diǎn)如下:
1)鑒于手的關(guān)鍵點(diǎn)估計(jì)和2D人體姿態(tài)估計(jì)的相似性,將姿態(tài)機(jī)應(yīng)用于手的關(guān)鍵點(diǎn)估計(jì)問(wèn)題;
2)為了利用卷積神經(jīng)網(wǎng)絡(luò)的出色的圖像特征提取能力,用卷積神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)姿態(tài)機(jī)的各個(gè)組件。
本文比較了該方法與目前先進(jìn)的手的關(guān)鍵點(diǎn)估計(jì)方法Multiview Bootstrapping[6];測(cè)試表明,兩者具有相當(dāng)?shù)念A(yù)測(cè)性能。
本節(jié)按照發(fā)展脈絡(luò),依序介紹推斷機(jī)[7](Inference Machine)、姿態(tài)機(jī)。
概率圖模型廣泛應(yīng)用于計(jì)算機(jī)視覺(jué)中,對(duì)其中的大多數(shù)來(lái)說(shuō),精確的推斷難以實(shí)現(xiàn),從而需要采用 MCMC(Markov Chain Monte Carlo)、置信傳播(Belief Propagation)等近似推斷算法。
推斷機(jī)將消息傳遞(message-passing)類的概率圖模型近似推斷算法(如置信傳播)視為依次在圖模型中某些節(jié)點(diǎn)進(jìn)行的分類過(guò)程的序列。
假定因子圖G,令 x1,x2,…為G中的變量節(jié)點(diǎn),a1,a2,…為G 中的因子節(jié)點(diǎn);令 ne(d)為與節(jié)點(diǎn)d相鄰的節(jié)點(diǎn)的集合,φa(Xa)為因子節(jié)點(diǎn)a的勢(shì)函數(shù)。
置信傳播算法中變量節(jié)點(diǎn)至因子節(jié)點(diǎn)、因子節(jié)點(diǎn)至變量節(jié)點(diǎn)的消息分別如式(1)、式(2)所示:
消息傳遞過(guò)程收斂后,變量節(jié)點(diǎn)的分布如式(3)所示:
將式(2)分別代入式(1)、式(3),得到式(4)、式(5):
式(4)可 視 為 輸 入 為 {μy→b|y∈ne(b)x,b∈ne(x)a},輸出為 μx→a的分類過(guò)程;式(5)可視為輸入為{μy→b|y∈ne(b)x,b∈ne(x)},輸出為 p(x)的分類過(guò)程;如此,置信傳播可視為依次在G中所有變量節(jié)點(diǎn)進(jìn)行的分類過(guò)程的序列。
圖1為置信傳播中進(jìn)行的兩種分類過(guò)程的示意圖。
圖1 置信傳播中進(jìn)行的兩種分類過(guò)程的示意圖
圖2 為將概率圖模型展開(kāi)為分類過(guò)程的序列的一個(gè)例子。深色方塊表示變量節(jié)點(diǎn)至因子節(jié)點(diǎn)的一次消息傳遞,如深色方塊A1表示變量節(jié)點(diǎn)A至因子節(jié)點(diǎn)1的一次消息傳遞;淺色方塊表示獲得變量節(jié)點(diǎn)的分布的分類過(guò)程,如淺色方塊A表示獲得變量節(jié)點(diǎn)A的分布的分類過(guò)程;方塊間的箭頭表示過(guò)程間的依賴關(guān)系,如淺色方塊A以C2、B1兩者的輸出為輸入。
圖2 將概率圖模型展開(kāi)為分類過(guò)程的序列的一個(gè)例子
于是,用置信傳播算法訓(xùn)練一個(gè)概率圖模型可視為訓(xùn)練一組分類器。
更進(jìn)一步,不將分類器的形式局限于式(4)、式(5),就能使用Logistic回歸、支持向量機(jī)等各種分類算法。
概率圖模型大多顯式地建模變量節(jié)點(diǎn)間的上下文關(guān)聯(lián);與之不同,在推斷機(jī)中,變量節(jié)點(diǎn)間的上下文關(guān)聯(lián)由分類器在訓(xùn)練過(guò)程中“習(xí)得”。事實(shí)上,推斷機(jī)的(潛在的)表示力等價(jià)于一個(gè)變量節(jié)點(diǎn)間全連接的概率圖模型。
在消息傳遞類的概率圖模型近似推斷算法中,消息的傳遞可以是同步的,也可以是異步的;對(duì)應(yīng)地,推斷機(jī)分為同步推斷機(jī)和異步推斷機(jī)兩種。
姿態(tài)機(jī)將推斷機(jī)應(yīng)用于人體姿態(tài)估計(jì)。推斷機(jī)并不對(duì)概率圖模型中的變量節(jié)點(diǎn)間的上下文關(guān)聯(lián)顯式地建模,而是讓其由分類器在訓(xùn)練過(guò)程中“習(xí)得”,這使得姿態(tài)機(jī)在人體姿態(tài)估計(jì)中具有比概率圖模型更強(qiáng)的表示力。
姿態(tài)機(jī)將人體姿態(tài)估計(jì)視為一個(gè)結(jié)構(gòu)化預(yù)測(cè)問(wèn)題:令輸入圖像的寬度、高度分別為W、H,令人體關(guān)鍵點(diǎn)的個(gè)數(shù)為 P ,令 Z={(x,y)|x∈[0,W),y∈ [0,H)},則輸出為 Y=(Y1,…,YP),其中 Yp∈Z為第p個(gè)關(guān)鍵點(diǎn)在圖像上的位置。
姿態(tài)機(jī)可視為一個(gè)同步推斷機(jī),其中的變量節(jié)點(diǎn)為Y1,…,YP。姿態(tài)機(jī)的推斷過(guò)程分為T個(gè)階段,每個(gè)階段對(duì)應(yīng)于一輪消息傳遞;對(duì)t=1,…,T,“多類”分類器gt根據(jù)輸入圖像的特征,以及前驅(qū)階段的“多類”分類器的輸出,得到Y(jié)1,…,YP的“置信圖隨著t的增大,分類器給出變量節(jié)點(diǎn)分布的漸進(jìn)改善的估計(jì),如式(6)所示。
圖3為姿態(tài)機(jī)的示意圖,圖中只畫出了前兩個(gè)階段。
圖3 姿態(tài)機(jī)的示意圖
鑒于手的關(guān)鍵點(diǎn)估計(jì)與2D人體姿態(tài)估計(jì)的相似性,本文將姿態(tài)機(jī)應(yīng)用于手的關(guān)鍵點(diǎn)估計(jì)問(wèn)題。用于手的關(guān)鍵點(diǎn)檢測(cè)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)思路如下:對(duì)姿態(tài)機(jī)的每個(gè)階段,將其中的特征提取器和分類器用一個(gè)卷積神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)。經(jīng)過(guò)反復(fù)實(shí)驗(yàn)、分析、改進(jìn),得到如表1所示的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)?!癈onv.”表示卷積層,“ks=3,nf=64”表示卷積核的尺寸為3×3,卷積核的個(gè)數(shù)為64;“max_pool”表示池化層,“池”的大小為2×2。
表1 用于手的關(guān)鍵點(diǎn)估計(jì)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
名稱 類型 參數(shù) “尺寸”conv6_1 conv6_2 conv6_3 conv6_4 conv6_5 conv6_6 conv6_7 ks=7,nf=128 ks=7,nf=128 ks=7,nf=128 ks=7,nf=128 ks=7,nf=128 ks=1,nf=128 ks=1,nf=21(32,32,128)(32,32,128)(32,32,128)(32,32,128)(32,32,128)(32,32,128)(32,32,21)(32,32,149)conv7_1 conv7_1 conv7_1 conv7_1 conv7_1 conv7_1 conv7_1 Conv.+ReLU Conv.+ReLU Conv.+ReLU Conv.+ReLU Conv.+ReLU Conv.+ReLU Conv.+ReLU Concat(conv4_7,conv6_7)Conv.+ReLU Conv.+ReLU Conv.+ReLU Conv.+ReLU Conv.+ReLU Conv.+ReLU Conv.+ReLU ks=7,nf=128 ks=7,nf=128 ks=7,nf=128 ks=7,nf=128 ks=7,nf=128 ks=1,nf=128 ks=1,nf=21(32,32,128)(32,32,128)(32,32,128)(32,32,128)(32,32,128)(32,32,128)(32,32,21)
表1所示的卷積神經(jīng)網(wǎng)絡(luò)由3個(gè)階段組成。conv1_1至 conv5_2為階段 1,其中 conv1_1至conv4_7用于提取圖像特征;conv6_1至conv6_7為階段2;conv7_1至conv7_7為階段3。分別對(duì)conv5_2、conv6_7、conv7_7進(jìn)行雙線性插值,將其“尺寸”縮放為(256,256,21),得到手的21個(gè)關(guān)鍵點(diǎn)在圖像中的位置的“得分圖”score_maps5_2、score_maps6_7、score_maps7_7。
訓(xùn)練數(shù)據(jù)來(lái)自數(shù)據(jù)集 Rendered Hand Pose[8]和數(shù)據(jù)集Stereo Hand Pose[9]。為了適配本課題的需求,分別對(duì)兩者進(jìn)行了簡(jiǎn)單的預(yù)處理,得到數(shù)據(jù)集R(包含43986個(gè)實(shí)例)、數(shù)據(jù)集S(包含36000個(gè)實(shí)例)。數(shù)據(jù)集R和數(shù)據(jù)集S中的實(shí)例包含的項(xiàng)如表2所示。
表2 數(shù)據(jù)集R和數(shù)據(jù)集S中的實(shí)例包含的項(xiàng)
損失函數(shù)定義為score_maps與score_maps5_2、score_maps6_7、score_maps7_7的“差異”之和。
具體的訓(xùn)練過(guò)程如下:
1)將數(shù)據(jù)集R按9∶1的比例劃分為訓(xùn)練集R-train和驗(yàn)證集R-val,將數(shù)據(jù)集S按8∶2的比例劃分為訓(xùn)練集S-train和驗(yàn)證集S-val;
2)用數(shù)據(jù)集R-train、S-train聯(lián)合訓(xùn)練(交替地將數(shù)據(jù)集R-train、S-train的實(shí)例輸入系統(tǒng)),說(shuō)明如下:批的大小為8;優(yōu)化方法為Adam;總共迭代30000次;學(xué)習(xí)率為中為n迭代次數(shù)。
對(duì)score_maps7_7—手的21個(gè)關(guān)鍵點(diǎn)在圖像中的位置的“得分圖”—中的每張“得分圖”,取其中“亮度”最高的點(diǎn)的位置為其對(duì)應(yīng)的手的關(guān)鍵點(diǎn)在圖像中的位置。如此,便由score_maps7_7得到uv7_7—手的21個(gè)關(guān)鍵點(diǎn)在圖像中的位置。
評(píng)估模型的預(yù)測(cè)性能的指標(biāo)為其估計(jì)的手的關(guān)鍵點(diǎn)在圖像中的位置的平均偏差?。圖4為訓(xùn)練時(shí)模型的?曲線,橫軸為迭代次數(shù)(單位為k),豎軸為?的值(單位為像素)。
圖4 訓(xùn)練時(shí)模型的?曲線
作者用若干張包含手的RGB圖像測(cè)試了本文提出的手的關(guān)鍵點(diǎn)估計(jì)方法的預(yù)測(cè)性能。
圖5是手的關(guān)鍵點(diǎn)估計(jì)成功的一個(gè)例子,輸入圖像為2018年1月作者拍攝的自己的右手。
圖5 手的關(guān)鍵點(diǎn)估計(jì)成功的一個(gè)例子
圖6 是手的關(guān)鍵點(diǎn)估計(jì)失敗的一個(gè)例子,輸入圖像為2018年1月作者拍攝的自己的右手。
通常用PCK曲線來(lái)評(píng)估手的關(guān)鍵點(diǎn)估計(jì)方法的預(yù)測(cè)性能;若PCK曲線上有一點(diǎn)(6,0.10),則表示估計(jì)出的關(guān)鍵點(diǎn)中有百分之十與其真實(shí)位置的距離小于6像素。
圖6 手的關(guān)鍵點(diǎn)估計(jì)失敗的一個(gè)例子
作者比較了本文提出的方法與當(dāng)前先進(jìn)的手的關(guān)鍵點(diǎn)估計(jì)方法Multiview Bootstrapping的預(yù)測(cè)性能,圖7為兩者的PCK曲線,可以看出兩者具有相當(dāng)?shù)念A(yù)測(cè)性能。
圖7 本文提出的方法和Multiview Bootstrapping方法的PCK曲線
本文提出的手的關(guān)鍵點(diǎn)估計(jì)方法是數(shù)據(jù)驅(qū)動(dòng)的,這意味著訓(xùn)練數(shù)據(jù)的質(zhì)量對(duì)其預(yù)測(cè)性能至關(guān)重要[10~12]。數(shù)據(jù)集R、S存在手勢(shì)的多樣性不夠的問(wèn)題,尤其是手指間有重疊的實(shí)例十分少見(jiàn);這解釋了圖6中手的關(guān)鍵點(diǎn)估計(jì)的失敗。
本文提出了一種手的關(guān)鍵點(diǎn)估計(jì)方法,其將姿態(tài)機(jī)應(yīng)用于手的關(guān)鍵點(diǎn)估計(jì)問(wèn)題,并用卷積神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)姿態(tài)機(jī)的各個(gè)組件。測(cè)試表明,本文提出的方法具有與目前先進(jìn)的手的關(guān)鍵點(diǎn)估計(jì)方法相當(dāng)?shù)念A(yù)測(cè)性能。
進(jìn)一步的研究應(yīng)當(dāng)著力于探討如何獲取高質(zhì)量的訓(xùn)練數(shù)據(jù)。獲取訓(xùn)練數(shù)據(jù)的方式有以下兩種:1)利用3D建模軟件(如Blender)和游戲引擎(如Unity),在“虛擬世界”中合成[13~15];2)通過(guò)攝像機(jī)等設(shè)備,在“真實(shí)世界”中采集,再由人工標(biāo)注。方式1)成本低(絕大部分工作可自動(dòng)化),且數(shù)據(jù)精度高;方式2)成本高(需要耗費(fèi)大量人力),且數(shù)據(jù)精度低。通常用由方式1)獲取的數(shù)據(jù)和由方式2)獲取的數(shù)據(jù)聯(lián)合訓(xùn)練,以利用后者補(bǔ)償前者中“虛擬”與“真實(shí)”的差異,這對(duì)于保證系統(tǒng)在“真實(shí)世界”中的預(yù)測(cè)性能是十分重要的。用方式1)獲取高質(zhì)量的訓(xùn)練數(shù)據(jù)的關(guān)鍵是可編程的手的3D模型組件,通過(guò)將其設(shè)定成各種不同的手勢(shì),“融合”進(jìn)各種不同的“虛擬場(chǎng)景”,以實(shí)現(xiàn)數(shù)據(jù)集的多樣性,這可以作為進(jìn)一步研究的一個(gè)課題。