劉 濤, 楊 璐, 邵肖偉
(1 天津市先進機電系統設計與智能控制重點實驗室(天津理工大學), 天津 300384; 2 機電工程國家級實驗教學示范中心(天津理工大學), 天津 300384; 3 日本東京大學 空間信息科學中心, 柏市 2778568)
人體姿態估計是計算機視覺領域中一個重要的研究任務。該任務旨在定位人體部位的關節點(例如:頭、肩膀、手腕等),并將關節點正確連接起來形成人體骨架。而對此展開研究、付諸應用則將對包括人體行為的理解[1-2]、人體的重識別[3]、人機交互等在內的諸多領域發展有著積極的意義。
過去,人體姿態識別多采用圖結構模型(pictorial structure models),主要包括三大部分。首先通過圖模型來描述人體的約束關系,其次使用人體部件觀測模型對人體部件外觀建立模型,最后依據約束信息和部件外觀模型進行圖結構的推理,從而估計人體姿態[4-5]。但是這些方法都不能很好地解決人體姿態估計的問題。
得益于深度學習的發展,卷積神經網絡在圖像領域中取得了可觀的研究成果。近些年來,越來越多的人使用CNN來解決人體姿態估計問題。基于CNN的人體姿態估計大致可分為兩大類:自上而下和自下而上。對此可闡釋如下。
自上而下先檢測圖像中人的位置,生成包含人的邊界框,然后對框中的人體進行姿態估計。文獻[6]使用Faster-RCNN[7]檢測圖片中的人并生成邊界框,使用全卷積的ResNet對每一個邊界框中的任務預測關節點的熱圖(heatmap)和坐標進行補償,融合這兩部分信息得到人體關節點的定位。文獻[8]使用對稱的空間轉換網絡和參數化姿態非極大值抑制來解決定位誤差和冗余檢測的問題。文獻[9]采用級聯的金字塔結構增大網絡的感受野來獲得上下文信息,以此來檢測遮擋的關節點。文獻[10]則在網絡中插入反卷積層來替代上采樣和卷積組成的結構,將低分辨率的特征圖擴張為原圖大小。自上而下的方法依賴于人體檢測的準確性,但在人體情況存在遮擋時,無法正確地進行估計。
自下而上則直接檢測人體的關節點,根據關節點的熱圖、點與點之間連接的概率,根據圖論知識將關節點分類到人,并且連接起來。文獻[11-12]將人體部分連接關系轉換為整數線性規劃(integer linear program)來進行人體姿態的估計。文獻[13]使用基于部件模型來處理語義層的推理和對象部分關聯性。文獻[14]采用嵌入式連接(Associative Embedding)將關節點的檢測與分類組合到一個過程,實現端到端的網絡。然而,自下而上需要建立復雜的推理過程。
綜上,雖然人體姿態估計領域有許多的研究,但是大部分都是基于RGB圖像,結合CNN針對深度圖場景下的研究不多,文獻[15]采用點云數據作為輸入來解決深度圖場景,但是點云數據獲取遠沒有深度數據獲取便利。并且深度圖像在一些涉及私密環境下比RGB圖像有更好的隱私保護性。針對深度圖像場景下的人體姿態估計問題,本文使用自下而上,基于PAF[16]的人體姿態估計方法。通過構建卷積神經網絡,進行關節點特征檢測和PAF信息的提取,將這些信息通過圖論匹配方法來構建人體姿態。
人體姿態估計包括檢測人體的關節點,并正確地將這些關節點連接起來這兩部分任務。一般關節點定義為:鼻、左眼、右眼、左耳、右耳、脖子、左肩、右肩、左肘、右肘、左腕、右腕、左髖、右髖、左膝、右膝、左腳踝、右腳踝。COCO[17]人體姿態模型的定義如圖1所示。kinematic tree定義的人體姿態模型如圖2所示。DensePose[18]所定義的人體姿態模型如圖3所示。ITOP深度場景所定義的人體姿態模型如圖4所示。

圖1 COCO姿態 圖2 kinematic tree姿態
本文采用ITOP(Invariant-top view dataset)[19]數據集,ITOP數據集由點云數據轉換為240×320的深度圖片,包含2種視角,即:側面圖和俯視圖,訓練集兩種視角分別為39 795張,測試集兩種視角分別為10 501張。ITOP數據集的展示如圖5所示。

圖3 DensePose姿態 圖4 ITOP姿態

圖5 ITOP數據集
圖6展示了模型的結構。首先將圖片輸入到VGG19[20]中,得到特征圖的集合F= (F1,F2,…,Fx),x代表特征圖的個數。網絡分為2個分支。第一個分支通過VGG19輸出的特征圖F產生對人體關節點的置信圖,即L1=h1(F);第二個分支同樣采用F產生關聯域信息,即S1=p1(F)。h1和p1分別為第一階段CNN的映射關系,這樣的一個過程稱為階段1,下一個階段將前一個階段的輸出與F結合作為輸入:
Lt=ht(F,Lt-1,St-1),?t≥2,
(1)
St=pt(F,Lt-1,St-1),?t≥2,
(2)
其中,ht和pt分別表示第t階段CNN的映射關系。
對于每一個階段的每一個分支采用L2損失函數來估計預測位置和真實位置存在的差異。并且對于一些數據中關節點位置沒有標注的情況,t階段的損失函數可以表示為:
(3)
(4)

(5)
(6)

圖6 模型結構
對于檢測到的人體部件(頭、肩等-即關節點),需要對身體部件的關聯性進行置信度的預測(檢測到的關節點是否屬于同一人)。PAF是一個二維的向量場,保存著2個關節點連接間的位置信息和方向信息,研究得到的手肘到手的PAF信息如圖7所示,包含了手肘到手腕的方向信息,得到的連接稱為肢干。每個肢干對應著2個關節點的關聯域。

圖7 PAF信息

v=(xj2,i-xj1,i)/‖xj2,i-xj1,i‖2,
(7)
對于肢干上點的定義如下:
0≤v·(k-xj1,x)≤lc,i,
(8)
v⊥·(p-xj1,i)≤σl,
(9)
其中,肢干寬度σl為像素距離,肢干長度lc,i=‖xj2,i-xj1,i‖2,v⊥為v的垂直向量。

圖8 PAF坐標
在測試過程中,計算沿著候選關節點位置線段上相應PAF的積分,來測量關節點之間的關聯,得到每一段肢干的信息。即對于2個候選關節點dj1和dj2,從預測的關聯域中取點u,通過取到的點來判斷兩關節點的關聯性。計算時需用到的公式為:
(10)
其中,k(u)為關聯域間的點,對應數學公式具體如下:
k(u)=(1-u)dj1+udj2.
(11)


n∈{1,...,Nj2}},
(12)
對于肢干上一對關節點的最優匹配問題則可以轉化為最大權值的二分圖匹配(maximum weight bipartite graph matching)[22]問題。在圖匹配問題中,圖的節點為人體關節點的檢測坐標,記為Dj1和Dj2,圖的邊(edges)是檢測關節點之間可能存在的連接。每條邊通過公式(11)進行加權計和運算,通過圖中的2條邊共享一個節點來選擇邊的子集,轉化為找到邊的最大權值。此時,其數學公式可寫作如下運算形式:
(13)
其中,Ec為肢干c匹配的總權重;z為肢干c的子集;Emn為公式(10)中關節點之間的關聯,公式(13)保證兩點共用一個邊。最后使用Hungarian算法[23]獲得最佳匹配結果。
實驗環境基于服務器下進行,顯卡配置為4塊12 GB的NVIDIA TITAN V,操作系統為Ubuntu16.04。代碼語言選用Python和深度學習框架Pytorch。
訓練時大小為每批次64,初始學習率為0.001,最大迭代次數為38 000,動量為0.9,權值衰減為10 000步,30 000步,每次衰減為原來的一半,優化方式為Adam,優化器參數為0.9,0.999,10e-8。
本文在ITOP數據上訓練,對數據關節點進行處理,使其與COCO關節點檢測數據格式相同,并采用COCO的人體姿態模型。網絡訓練的損失曲線圖如圖9所示。在網絡迭代到前1 000次左右快速收斂,在后面的步數中緩慢下降,藍色區域選取的為10 K~30 K的損失收斂情況,通過右邊的小圖為圖9中藍色方框框選出的詳細結果圖,損失在10 K時的0.035緩慢下降到30 K時的0.025;綠色區域為30 K~38 K的損失收斂情況,綠色折線圖為區域的詳細結果圖,從30 K時的0.028左右緩慢收斂到0.020以下。

圖9 訓練損失圖
繼而,研究又得到網絡在各個階段關節點熱度圖和PAF信息的損失曲線圖如圖10所示。圖10中顯示了每個階段關節點熱度圖的損失曲線圖收斂情況,分別選取了不同步數,從stage2中的0.003 5到最后stage6的0.002 5。每個階段肢干PAF信息的損失曲線圖收斂情況如圖11所示,同樣選取了不同步數時的結果。結果可知網絡的總損失等于每個階段關節點熱度圖損失值和肢干PAF損失值的總和。模型在測試集上的檢測結果如圖12所示。

圖10 關節點熱度損失圖

圖11 PAF損失圖

圖12 模型預測結果
基于深度圖像的人體姿態估計具有非常大的研究意義,特別針對一些家庭等高度隱私的環境。本文采用PAF和CNN結合的方法,通過連接關節點信息和肢干信息來估計深度圖下的人體姿態。在深度數據集上的實驗表明,算法體現出了良好的性能,模型在測試集上預測的結果表明了算法在深度圖場景下其能夠準確的估計人體姿態。