劉 濤, 楊 璐, 邵肖偉
(1 天津市先進(jìn)機(jī)電系統(tǒng)設(shè)計(jì)與智能控制重點(diǎn)實(shí)驗(yàn)室(天津理工大學(xué)), 天津 300384; 2 機(jī)電工程國(guó)家級(jí)實(shí)驗(yàn)教學(xué)示范中心(天津理工大學(xué)), 天津 300384; 3 日本東京大學(xué) 空間信息科學(xué)中心, 柏市 2778568)
人體姿態(tài)估計(jì)是計(jì)算機(jī)視覺(jué)領(lǐng)域中一個(gè)重要的研究任務(wù)。該任務(wù)旨在定位人體部位的關(guān)節(jié)點(diǎn)(例如:頭、肩膀、手腕等),并將關(guān)節(jié)點(diǎn)正確連接起來(lái)形成人體骨架。而對(duì)此展開(kāi)研究、付諸應(yīng)用則將對(duì)包括人體行為的理解[1-2]、人體的重識(shí)別[3]、人機(jī)交互等在內(nèi)的諸多領(lǐng)域發(fā)展有著積極的意義。
過(guò)去,人體姿態(tài)識(shí)別多采用圖結(jié)構(gòu)模型(pictorial structure models),主要包括三大部分。首先通過(guò)圖模型來(lái)描述人體的約束關(guān)系,其次使用人體部件觀測(cè)模型對(duì)人體部件外觀建立模型,最后依據(jù)約束信息和部件外觀模型進(jìn)行圖結(jié)構(gòu)的推理,從而估計(jì)人體姿態(tài)[4-5]。但是這些方法都不能很好地解決人體姿態(tài)估計(jì)的問(wèn)題。
得益于深度學(xué)習(xí)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)在圖像領(lǐng)域中取得了可觀的研究成果。近些年來(lái),越來(lái)越多的人使用CNN來(lái)解決人體姿態(tài)估計(jì)問(wèn)題?;贑NN的人體姿態(tài)估計(jì)大致可分為兩大類(lèi):自上而下和自下而上。對(duì)此可闡釋如下。
自上而下先檢測(cè)圖像中人的位置,生成包含人的邊界框,然后對(duì)框中的人體進(jìn)行姿態(tài)估計(jì)。文獻(xiàn)[6]使用Faster-RCNN[7]檢測(cè)圖片中的人并生成邊界框,使用全卷積的ResNet對(duì)每一個(gè)邊界框中的任務(wù)預(yù)測(cè)關(guān)節(jié)點(diǎn)的熱圖(heatmap)和坐標(biāo)進(jìn)行補(bǔ)償,融合這兩部分信息得到人體關(guān)節(jié)點(diǎn)的定位。文獻(xiàn)[8]使用對(duì)稱(chēng)的空間轉(zhuǎn)換網(wǎng)絡(luò)和參數(shù)化姿態(tài)非極大值抑制來(lái)解決定位誤差和冗余檢測(cè)的問(wèn)題。文獻(xiàn)[9]采用級(jí)聯(lián)的金字塔結(jié)構(gòu)增大網(wǎng)絡(luò)的感受野來(lái)獲得上下文信息,以此來(lái)檢測(cè)遮擋的關(guān)節(jié)點(diǎn)。文獻(xiàn)[10]則在網(wǎng)絡(luò)中插入反卷積層來(lái)替代上采樣和卷積組成的結(jié)構(gòu),將低分辨率的特征圖擴(kuò)張為原圖大小。自上而下的方法依賴(lài)于人體檢測(cè)的準(zhǔn)確性,但在人體情況存在遮擋時(shí),無(wú)法正確地進(jìn)行估計(jì)。
自下而上則直接檢測(cè)人體的關(guān)節(jié)點(diǎn),根據(jù)關(guān)節(jié)點(diǎn)的熱圖、點(diǎn)與點(diǎn)之間連接的概率,根據(jù)圖論知識(shí)將關(guān)節(jié)點(diǎn)分類(lèi)到人,并且連接起來(lái)。文獻(xiàn)[11-12]將人體部分連接關(guān)系轉(zhuǎn)換為整數(shù)線性規(guī)劃(integer linear program)來(lái)進(jìn)行人體姿態(tài)的估計(jì)。文獻(xiàn)[13]使用基于部件模型來(lái)處理語(yǔ)義層的推理和對(duì)象部分關(guān)聯(lián)性。文獻(xiàn)[14]采用嵌入式連接(Associative Embedding)將關(guān)節(jié)點(diǎn)的檢測(cè)與分類(lèi)組合到一個(gè)過(guò)程,實(shí)現(xiàn)端到端的網(wǎng)絡(luò)。然而,自下而上需要建立復(fù)雜的推理過(guò)程。
綜上,雖然人體姿態(tài)估計(jì)領(lǐng)域有許多的研究,但是大部分都是基于RGB圖像,結(jié)合CNN針對(duì)深度圖場(chǎng)景下的研究不多,文獻(xiàn)[15]采用點(diǎn)云數(shù)據(jù)作為輸入來(lái)解決深度圖場(chǎng)景,但是點(diǎn)云數(shù)據(jù)獲取遠(yuǎn)沒(méi)有深度數(shù)據(jù)獲取便利。并且深度圖像在一些涉及私密環(huán)境下比RGB圖像有更好的隱私保護(hù)性。針對(duì)深度圖像場(chǎng)景下的人體姿態(tài)估計(jì)問(wèn)題,本文使用自下而上,基于PAF[16]的人體姿態(tài)估計(jì)方法。通過(guò)構(gòu)建卷積神經(jīng)網(wǎng)絡(luò),進(jìn)行關(guān)節(jié)點(diǎn)特征檢測(cè)和PAF信息的提取,將這些信息通過(guò)圖論匹配方法來(lái)構(gòu)建人體姿態(tài)。
人體姿態(tài)估計(jì)包括檢測(cè)人體的關(guān)節(jié)點(diǎn),并正確地將這些關(guān)節(jié)點(diǎn)連接起來(lái)這兩部分任務(wù)。一般關(guān)節(jié)點(diǎn)定義為:鼻、左眼、右眼、左耳、右耳、脖子、左肩、右肩、左肘、右肘、左腕、右腕、左髖、右髖、左膝、右膝、左腳踝、右腳踝。COCO[17]人體姿態(tài)模型的定義如圖1所示。kinematic tree定義的人體姿態(tài)模型如圖2所示。DensePose[18]所定義的人體姿態(tài)模型如圖3所示。ITOP深度場(chǎng)景所定義的人體姿態(tài)模型如圖4所示。
圖1 COCO姿態(tài) 圖2 kinematic tree姿態(tài)
本文采用ITOP(Invariant-top view dataset)[19]數(shù)據(jù)集,ITOP數(shù)據(jù)集由點(diǎn)云數(shù)據(jù)轉(zhuǎn)換為240×320的深度圖片,包含2種視角,即:側(cè)面圖和俯視圖,訓(xùn)練集兩種視角分別為39 795張,測(cè)試集兩種視角分別為10 501張。ITOP數(shù)據(jù)集的展示如圖5所示。
圖3 DensePose姿態(tài) 圖4 ITOP姿態(tài)
圖5 ITOP數(shù)據(jù)集
圖6展示了模型的結(jié)構(gòu)。首先將圖片輸入到VGG19[20]中,得到特征圖的集合F= (F1,F2,…,Fx),x代表特征圖的個(gè)數(shù)。網(wǎng)絡(luò)分為2個(gè)分支。第一個(gè)分支通過(guò)VGG19輸出的特征圖F產(chǎn)生對(duì)人體關(guān)節(jié)點(diǎn)的置信圖,即L1=h1(F);第二個(gè)分支同樣采用F產(chǎn)生關(guān)聯(lián)域信息,即S1=p1(F)。h1和p1分別為第一階段CNN的映射關(guān)系,這樣的一個(gè)過(guò)程稱(chēng)為階段1,下一個(gè)階段將前一個(gè)階段的輸出與F結(jié)合作為輸入:
Lt=ht(F,Lt-1,St-1),?t≥2,
(1)
St=pt(F,Lt-1,St-1),?t≥2,
(2)
其中,ht和pt分別表示第t階段CNN的映射關(guān)系。
對(duì)于每一個(gè)階段的每一個(gè)分支采用L2損失函數(shù)來(lái)估計(jì)預(yù)測(cè)位置和真實(shí)位置存在的差異。并且對(duì)于一些數(shù)據(jù)中關(guān)節(jié)點(diǎn)位置沒(méi)有標(biāo)注的情況,t階段的損失函數(shù)可以表示為:
(3)
(4)
(5)
(6)
圖6 模型結(jié)構(gòu)
對(duì)于檢測(cè)到的人體部件(頭、肩等-即關(guān)節(jié)點(diǎn)),需要對(duì)身體部件的關(guān)聯(lián)性進(jìn)行置信度的預(yù)測(cè)(檢測(cè)到的關(guān)節(jié)點(diǎn)是否屬于同一人)。PAF是一個(gè)二維的向量場(chǎng),保存著2個(gè)關(guān)節(jié)點(diǎn)連接間的位置信息和方向信息,研究得到的手肘到手的PAF信息如圖7所示,包含了手肘到手腕的方向信息,得到的連接稱(chēng)為肢干。每個(gè)肢干對(duì)應(yīng)著2個(gè)關(guān)節(jié)點(diǎn)的關(guān)聯(lián)域。
圖7 PAF信息
v=(xj2,i-xj1,i)/‖xj2,i-xj1,i‖2,
(7)
對(duì)于肢干上點(diǎn)的定義如下:
0≤v·(k-xj1,x)≤lc,i,
(8)
v⊥·(p-xj1,i)≤σl,
(9)
其中,肢干寬度σl為像素距離,肢干長(zhǎng)度lc,i=‖xj2,i-xj1,i‖2,v⊥為v的垂直向量。
圖8 PAF坐標(biāo)
在測(cè)試過(guò)程中,計(jì)算沿著候選關(guān)節(jié)點(diǎn)位置線段上相應(yīng)PAF的積分,來(lái)測(cè)量關(guān)節(jié)點(diǎn)之間的關(guān)聯(lián),得到每一段肢干的信息。即對(duì)于2個(gè)候選關(guān)節(jié)點(diǎn)dj1和dj2,從預(yù)測(cè)的關(guān)聯(lián)域中取點(diǎn)u,通過(guò)取到的點(diǎn)來(lái)判斷兩關(guān)節(jié)點(diǎn)的關(guān)聯(lián)性。計(jì)算時(shí)需用到的公式為:
(10)
其中,k(u)為關(guān)聯(lián)域間的點(diǎn),對(duì)應(yīng)數(shù)學(xué)公式具體如下:
k(u)=(1-u)dj1+udj2.
(11)
n∈{1,...,Nj2}},
(12)
對(duì)于肢干上一對(duì)關(guān)節(jié)點(diǎn)的最優(yōu)匹配問(wèn)題則可以轉(zhuǎn)化為最大權(quán)值的二分圖匹配(maximum weight bipartite graph matching)[22]問(wèn)題。在圖匹配問(wèn)題中,圖的節(jié)點(diǎn)為人體關(guān)節(jié)點(diǎn)的檢測(cè)坐標(biāo),記為Dj1和Dj2,圖的邊(edges)是檢測(cè)關(guān)節(jié)點(diǎn)之間可能存在的連接。每條邊通過(guò)公式(11)進(jìn)行加權(quán)計(jì)和運(yùn)算,通過(guò)圖中的2條邊共享一個(gè)節(jié)點(diǎn)來(lái)選擇邊的子集,轉(zhuǎn)化為找到邊的最大權(quán)值。此時(shí),其數(shù)學(xué)公式可寫(xiě)作如下運(yùn)算形式:
(13)
其中,Ec為肢干c匹配的總權(quán)重;z為肢干c的子集;Emn為公式(10)中關(guān)節(jié)點(diǎn)之間的關(guān)聯(lián),公式(13)保證兩點(diǎn)共用一個(gè)邊。最后使用Hungarian算法[23]獲得最佳匹配結(jié)果。
實(shí)驗(yàn)環(huán)境基于服務(wù)器下進(jìn)行,顯卡配置為4塊12 GB的NVIDIA TITAN V,操作系統(tǒng)為Ubuntu16.04。代碼語(yǔ)言選用Python和深度學(xué)習(xí)框架Pytorch。
訓(xùn)練時(shí)大小為每批次64,初始學(xué)習(xí)率為0.001,最大迭代次數(shù)為38 000,動(dòng)量為0.9,權(quán)值衰減為10 000步,30 000步,每次衰減為原來(lái)的一半,優(yōu)化方式為Adam,優(yōu)化器參數(shù)為0.9,0.999,10e-8。
本文在ITOP數(shù)據(jù)上訓(xùn)練,對(duì)數(shù)據(jù)關(guān)節(jié)點(diǎn)進(jìn)行處理,使其與COCO關(guān)節(jié)點(diǎn)檢測(cè)數(shù)據(jù)格式相同,并采用COCO的人體姿態(tài)模型。網(wǎng)絡(luò)訓(xùn)練的損失曲線圖如圖9所示。在網(wǎng)絡(luò)迭代到前1 000次左右快速收斂,在后面的步數(shù)中緩慢下降,藍(lán)色區(qū)域選取的為10 K~30 K的損失收斂情況,通過(guò)右邊的小圖為圖9中藍(lán)色方框框選出的詳細(xì)結(jié)果圖,損失在10 K時(shí)的0.035緩慢下降到30 K時(shí)的0.025;綠色區(qū)域?yàn)?0 K~38 K的損失收斂情況,綠色折線圖為區(qū)域的詳細(xì)結(jié)果圖,從30 K時(shí)的0.028左右緩慢收斂到0.020以下。
圖9 訓(xùn)練損失圖
繼而,研究又得到網(wǎng)絡(luò)在各個(gè)階段關(guān)節(jié)點(diǎn)熱度圖和PAF信息的損失曲線圖如圖10所示。圖10中顯示了每個(gè)階段關(guān)節(jié)點(diǎn)熱度圖的損失曲線圖收斂情況,分別選取了不同步數(shù),從stage2中的0.003 5到最后stage6的0.002 5。每個(gè)階段肢干PAF信息的損失曲線圖收斂情況如圖11所示,同樣選取了不同步數(shù)時(shí)的結(jié)果。結(jié)果可知網(wǎng)絡(luò)的總損失等于每個(gè)階段關(guān)節(jié)點(diǎn)熱度圖損失值和肢干PAF損失值的總和。模型在測(cè)試集上的檢測(cè)結(jié)果如圖12所示。
圖10 關(guān)節(jié)點(diǎn)熱度損失圖
圖11 PAF損失圖
圖12 模型預(yù)測(cè)結(jié)果
基于深度圖像的人體姿態(tài)估計(jì)具有非常大的研究意義,特別針對(duì)一些家庭等高度隱私的環(huán)境。本文采用PAF和CNN結(jié)合的方法,通過(guò)連接關(guān)節(jié)點(diǎn)信息和肢干信息來(lái)估計(jì)深度圖下的人體姿態(tài)。在深度數(shù)據(jù)集上的實(shí)驗(yàn)表明,算法體現(xiàn)出了良好的性能,模型在測(cè)試集上預(yù)測(cè)的結(jié)果表明了算法在深度圖場(chǎng)景下其能夠準(zhǔn)確的估計(jì)人體姿態(tài)。