馬鴻玥,樸燕,魯明陽
(長春理工大學 電子信息工程學院,長春 130022)
人體姿態估計作為計算機視覺領域中的一個重要研究方向,被廣泛應用于許多方面。例如,利用人體姿態可以進行摔倒檢測或用于增強安保和監控[1];用于健身、體育和舞蹈等教學;訓練機器人,讓機器人“學會”移動自己的關節;電影特效制作或交互游戲中追蹤人體的運動;通過追蹤人體姿態的變化,實現虛擬人物與現實人物動作的融合與同步等。近年來,深度卷積神經網絡不斷應用于人體姿態估計中,使檢測人體骨骼關鍵點變得不繁瑣,并且精確度也得到了很大的提升。但在復雜的環境下,多人會出現遮擋、重疊的現象,使人體姿態估計面臨著挑戰。
基于深度學習的人體姿態估計方法,主要有兩種思路:
(1)Bottom-up方法
第一步對整個圖片進行每個人體關鍵點的檢測,第二步根據檢測到的關鍵點拼接成人形。近幾年,此思路流行的方法有很多,例如Open?Pose[2],主要對編碼人體四肢的位置和方向的關鍵點進行連接,并且學習身體部位的位置和聯系的架構,并且用高效率、高質量的方法產生人體姿態檢測的結果,該模型在標準測試集MPII中可以達到平均79.7 mAP。隨著圖像中人數的增加依然能保持準確率和實時性。但是,在OpenPose模型訓練時存在著標簽問題:由于采用CPM(Critical Path Method)[3]與 PAF(Part Affinity Field)[4]結合的方法,在訓練時,一個 PAF 連接就是對已知的兩個關鍵點進行連接,如果兩個關鍵點中有一個不存在,則不生成PAF標簽,即使模型預測出正確的PAF,訓練時也會被懲罰,容易對模型的訓練造成影響。
(2)Top-down方法
第一步利用目標檢測算法檢測出單個人,第二步對檢測出的個人進行人體關鍵點檢測。Top-down方法的性能通常依賴于人體檢測器的精度,因為人體姿態估計是根據檢測器得出的邊界框中進行的。因此,錯誤的定位和重復的候選框會使姿態估計算法的性能降低。目前,代表性的方法是RMPE[5]:基于兩步法框架的區域的多姿態估計算法,首先對目標進行檢測,形成候選區域,然后根據候選區域進行姿態估計。針對候選區定位不準確的情況下也能正確的檢測人體姿態。該算法在MPII數據集下可以達到平均76.7 mAP。但是,RMPE易受到檢測框的影響,造成漏檢和誤檢,從而影響檢測結果。此外,Mask R-CNN[6]也可以應用到人體姿態估計中,該網絡中的語義分割mask分支可以擴展到人體關鍵點檢測。本文采用Top-down的方法,借鑒了Mask R-CNN中的語義分割mask網絡分支,提出了一種基于改進R-FCN[7]和語義分割相結合的人體姿態估計模型。
目標檢測作為姿態識別的一個子任務,本文將用于目標檢測的R-FCN為基本框架,在此基礎上加以改進,改進后的R-FCN框架具有人體姿態估計的能力,同時,保障運行速度的前提下提升檢測精度。本文創新點如下:
(1)將R-FCN中原有的ResNet-101深度網絡替換為ResNeXt-101[8]深度網絡。其中R-esNeXt-101主要是結合了VGG堆疊和Incept-ion的分裂-轉換-聚合原理,在相同參數情況下,解決了ResNet-101在訓練時錯誤率較高的問題。通過使用相比ResNet-101更少的網絡層數,從而提升準確率和運行速度。
(2)結合文獻[9]中的方法,引用多尺度RPN,通過修改候選區域的比例和尺寸,從而提高對人體定位的準確性,解決多尺度下的人體姿態問題。
(3)在目標檢測R-FCN框架上結合了Mask R-CNN中并行的語義分割mask網絡分支,它與原始的分類與回歸分支進行并聯,使R-FCN具有語義分割的功能,從而實現人體姿態估計。
R-FCN是用于目標檢測的全卷積網絡。與Fast/Faster R-CNN相比,在R-FCN的結構中,使用所有卷積層來構建共享卷積子網絡,殘差網絡(ResNets)[10]作為基礎網絡。此外,針對圖像分類中的平移不變性與目標檢測中的平移方差之間的矛盾,R-FCN采用位置敏感的分數映射來解決。ResNets101作為R-FCN的骨干網絡,在PASCAL VOC 2007數據集和PASCAL VOC 2012數據集上分別實現83.6% mAP和82.0% mAP,同時測試時間可以實現每圖像運行170 ms的速度。
R-FCN是基于區域的二階段框架,包括:(1)區域建議;(2)區域分類。其網絡由共享的全卷積架構組成,使用ResNet-101為主體網絡,采用區域建議網絡(RPN)來提取候選區域(RoI),將RoI分為9個區域,分別代表人體的9個部位,構建一組位置敏感得分圖,映射原圖像的位置響應值,再經過RoI-Pooling層的平均池化操作,最后根據投票機制判斷其類別或者背景。
將位置信息精確地映射到每個RoI中,劃分每個RoI為k×k個bin的矩形網格,每個RoI網格的尺寸大小為w×h,每個bin的尺寸約為,在(i,j)位置的bin(0 ≤i,j≤k-1)中,定義一個位置敏感的RoI平均池化操作,該操作僅在(i,j)分值圖上進行池化:

其中,rc(i,j)是在(i,j)區域基于C類別的池化響應;zi,j,c是K×K×(C+1)維的敏感得分圖,C+1表示C類加上一個背景圖;(x0,y0)代表9個區域的其中一個區域;n是在bin里的像素點個數;Θ表示網絡的所有可學習的參數。(i,j)的范圍為,并且
通過平均得分進行vote,為每個RoI生成一個(C+1)維向量:

然后計算不同類別的softmax響應:

用于評估訓練過程中的交叉熵損失。同時,使用類似的方法處理邊界盒回歸。
在實例分割領域,Mask R-CNN是一個概念簡單、靈活、通用的框架。不僅可以有效地檢測圖像中的對象,而且針對每個實例都可以生成一個高質量的分割掩碼。Mask R-CNN通過添加一個語義分割mask網絡分支來擴展Faster RCNN[11],該分支與現有的用于邊界框識別的分支并行地預測一個對象掩碼。運行速度可以達到每秒5幀。此外,Mask R-CNN還可以用來檢測人體關鍵點。在COCO 2016挑戰賽中,實例分割、目標檢測、人體關鍵點檢測都達到了最好的結果。Mask RCNN的整體架構由Faster R-CNN、ROIAlign 和 FCN(Feature Pyramid Networks)[12]三個模塊組成。其中,Faster R-CNN作為目標檢測模塊,FCN作為語義分割模塊,ROIAlign策略解決了像素偏差問題,三個模塊的結合使Mask RCNN達到了高速、高準確率的效果。
Mask R-CNN作為Faster R-CNN的擴展,主要表現在:
(1)在Faster R-CNN算法的基礎上,增添了FCN網絡以產生對應的語義分割mask網絡分支,從而實現分割任務,并且分割任務與定位、分類任務是同時進行的。
(2)引入了RoIAlign,代替Faster R-CNN中的RoIPooling。因為在RoIPooling中會對像素值進行兩次量化操作,進而會引入量化誤差,造成像素偏差,對分割任務有很大的影響。而RoIAlign則是采用“雙線性插值”算法來估計像素值[13],使原圖中的像素和feature map中的像素完全對齊,這樣不僅會提高檢測的精度,同時也會有利于實例分割。
Mask R-CNN屬于二階段框架,第一階段作用于RPN網絡生產RoIs,第二階段對RPN找到的每個RoI進行分類、定位和生成mask掩碼。如圖1所示,以FPN網絡為骨干網絡,整個架構分為上下兩個分支,上分支經過7×7×256的卷積層以及兩次1×1 024的全連接層分別實現分類和回歸,mask語義分割網絡作為下分支進行了4次14×14×256的卷積操作和一次 28×28×256的反卷積操作,最后輸出為28×28×80的mask。
如圖2所示,整體網絡框架采用以區域為基礎的、全卷積網絡的兩階段框架。模型使用ResNeXt-101進行特征提取,生成特征圖,將最后一層特征圖經過多尺度RPN網絡,輸出為目標候選區域矩形框的集合。模型存在上下并行的兩個分支,上分支利用mask網絡實現語義分割,并且采用one-hot編碼提取人體關鍵點。下分支利用特征圖獲得位置敏感得分圖,同時在特征圖上獲得位置敏感得分映射,再經過池化和投票操作,最后采用softmax函數實現分類和回歸。

圖2 人體姿態識別框架
分類和回歸分別執行位置敏感的RoI平均池化操作。每個RoI上定義的損失函數視為分類損失、回歸損失及語義分割損失之和:

其中,c*表示RoI的ground-truth標簽(c*=0表示為背景);t表示ground-truth框。[c*>0]是一個指示符,如果參數為真,則該指示符等于1,否則等于0。并且設置平衡量λ=1。

公式(5)為分類的交叉熵損失,Lreg(t,t*)為邊界框回歸損失。mask分支的平均二值交叉熵損失如下:

其中,1k表示當第k個通道對應目標的真實類別時為1,否則為0;y表示當前位置的mask的label值,為0或1;x表示當前位置的輸出值,sigmoid(x)表示輸出x經過sigmoid函數變換后的結果。Mask R-CNN中最后輸出的mask的尺寸為m×m×K(28×28×80)。計算Lmask時,僅使用RoI的真實類別的通道損失。
ResNeXt網絡作為ResNet網絡的一個擴展網絡。主要思想是VGG堆疊網絡與分裂-轉換-聚合原理的結合。其中采用深度、寬度和基數作為衡量指標。如圖3所示,圖3(a)為ResNet網絡模塊,輸入通道為 256,依次進行 1×1、3×3、1×1的卷積。輸出通道為256。圖3(b)為ResNeXt網絡模塊,與ResNet網絡模塊相比,ResNeXt網絡模塊共分為32個卷積路徑,輸出與ResNet網絡模塊的輸出相同,且兩個網絡模塊的復雜度相近。

圖3 模塊示意圖
ResNeXt網絡的一個殘差模塊被視為分裂-轉換-聚合的過程,如圖4所示。ResNeXt網絡相當于在卷積層增加了“新”維度,由此一個模塊的總維度數被稱為基數,分裂-轉換-聚合如下:

其中,Ti(x)可以是任意函數;D是要聚合的基數大小。根據式(7)可以得出殘差方程:

其中,y是輸出。

圖4 分裂-轉換-聚合原理
所有的Ti都具有相同的拓撲結構,如圖5所示,每個Ti中的第一個1×1層產生低維嵌入,本文在ResNeXt-101網絡的基礎上將原始的基數32改為64。采用的結構如表1所示,使用ResNeXt網絡作為基礎網絡,可以減少超參數的數量,同時提高模型的準確率。

圖5 本文采用ResNeXt-101網絡模塊

表1 ResNeXt101網絡結構
在多目標檢測中會出現多尺度的目標檢測問題。考慮到目標尺寸之間相差較大,僅用單一的尺寸會影響網絡對多尺度目標的檢測能力[14]。如圖6所示,圖像中目標的尺寸存在差別。例如每張圖像中人所占的比例不同。從圖6(a)、圖 6(b)、圖 6(c)可以看出目標所占的區域依次減小。所以,由于信息位置的差異,實現恰當的卷積就比較困難。信息分布更全局性的圖像傾向較大的卷積核,信息分布比較局部的信息傾向較小的卷積核。

圖6 實例圖片
由此,本文結合文獻[9],借鑒了多尺度RPN結構。通過在同一層上并聯不同尺寸的濾波器解決多尺度問題。如圖7所示,在最后一層特征圖上使用3種不同大小的濾波器來生成候選區域,分別通過 1×1、3×3、5×5卷積實現。經過卷積之后每一個像素點映射原始圖片對應的坐標點,此坐標點作為中心生成3種比例1:1/1:1.5/1:2、3種尺度64/256/512、共9種不同大小的粗粒度的候選區域,如圖8所示。

圖7 多尺度RPN結構

圖8 三種比例、三種尺寸的候選區域框
對多尺度RPN進行RoI-pooling操作,利用反向傳播對網絡進行優化,RoI-pooling的反向傳播公式如下:

其中,xi代表池化前特征圖上的像素點;yr,j代表池化后的第r個候選區域的第j個點;i*(r,j)代表點yr,j像素值的來源(平均池化時選出的平均像素值所在點的坐標)。由上式可以看出,只有當池化后某一個點的像素值在池化過程中采用了當前點xi的像素值(即滿足i=i*(r,j),才在xi處回傳梯度。
本文在R-FCN網絡上添加一個語義分割mask網絡分支,與分類分支和回歸分支并行,添加的mask網絡分支使用全卷積網絡以像素點對應像素點的方式預測分割mask,以RoI分類器選擇的人體區域作為輸入,將人體區域標定15個關鍵點類型,如圖9所示,將人體15個關鍵點一一對應一個mask,并將關鍵點的位置建模為一個one-hot mask。關鍵點坐標的表示方式為:在圖片中關鍵點的絕對坐標值為i∈(i,…,k),其中表示第i個關鍵點的坐標值(xi,yi),然后對其進行歸一化處理。設人體的邊緣框坐標表示為b=(bc,bw,bh),其中bc=(cx,cy)表示邊緣框的中心點,邊緣框坐標可以通過關鍵點的絕對坐標值計算出來。則歸一化的關鍵點坐標(相對坐標)表示為:

其中采用關鍵點坐標歸一化處理的目的是:解決人體相對于圖片的尺寸過大而造成關鍵點坐標值的差距過大的問題,對尺寸的變化具有更好的魯棒性,同時降低回歸的值的范圍及網絡的訓練的難度。由公式(11)可以得出網絡預測的人體區域骨骼關鍵點坐標相對于圖片的絕對位置表示為:


圖9 15個關鍵點標注
如圖10為mask網絡結構,通過多尺度RPN網絡,RoI分類器選擇的正區域分辨率為14×14×256,經過 3×3卷積、2×2卷積、1×1卷積操作,輸出為 28×28×80的 mask,經過 one-hot編碼,最終得到的是每個關鍵點輸出的二值掩碼,其中被標記的關鍵點像素為前景,其余像素均為背景。
本文在兩個標準數據集上對多人姿態進行評估:(1)MPII數據集[15]和(2)MS COCO 數據集[16],這兩個數據集在不同的場景中收集圖像,其中的場景包含生活中的許多現象,如擁擠、尺度變化、遮擋和接觸現象等。

圖10 mask網絡結構
(1)MPII數據集
MPII數據集由3 844個訓練組和1 756個測試組組成,此外,還包含了28 000多個用于單人姿態估計的訓練樣本。本文使用單人數據集中的所有訓練樣本和80%的多人訓練樣本進行訓練,20%用于驗證。
(2)MS COCO數據集
MS COCO數據集包括105 698項訓練樣本和大約80 000項人類實例測試。訓練集包含超過100萬個標記的關鍵點。
本文使用的編程語言是python3.7,采用caffe深度學習框架,程序運行平臺為Anaco-nda3(64bits),操作系統為Windows10(bits),運行環境為GPU顯卡型號為NVIDIA-GTX1080ti-12G。首先對ResNeXt-101網絡進行預訓練,然后用預訓練網絡來初始化特征提取網絡卷積層的權重。設置學習率為0.005,mome-ntum為0.9,weight_decay為0.000 5。網絡經過的迭代共8萬次。
本文在MPII測試集上進行了評估。在MPII測試集中,完整的測試數據集包括人體的頭部、肩部、肘部、腕關節、臀部、膝蓋、腳踝部分。如表2所示,通過與DeeperCut、OpenPose以及文獻[18]進行對比,本文模型可以達到的平均精確度是最高的。在估計腕關節、肘部、腳踝和膝蓋等困難關節方面的平均準確率達到了81%,比之前的最新結果高出0.9%。本文最終得到了手腕的精度為77.6%,膝蓋的精度為80.3%。實驗結果表明,基于改進R-FCN與語義分割相結合的人體姿態估計模型可以提高精確度。在圖11中展示了一些實驗結果圖。實驗證明,本文模型能夠準確地對多人姿態、單人姿態、目標接觸以及目標遮擋姿態進行估計。

圖11 姿態估計效果圖
為了進一步驗證本文方法的有效性,在MS COCO數據集上進行了多組對比實驗,分別對OpenPose、RMPE、Mask-RCNN、以 ResNet101和RPN為基礎R-FCN與mask結合、以及Our模型進行實驗。
MS COCO評估指標中,對象關鍵點相似性(Object Keypoint Similarity,OKS)定義如下:

其中,p為地面實況中人的id;i表示關鍵點的id;dpi表示地面實況中每個人關鍵點與預測關鍵點的歐氏距離;Sp表示當前人的尺度因子即此人在地面實況中所占面積的平方根;σi表示第i個關鍵點的歸一化因子;vpi代表第P個人的第i個關鍵點是否可見;δ用于將可見點選出來進行計算的函數。AP即所有10個OKS閾值的平均精確率,AP50即IoU閾值等于0.5時的平均精確度,AP75即IoU閾值等于0.75時的平均精確度,APM即測量面積在322和962之間的平均精確度,APL即測量面積大于962平均精確度。
由表3可知,本文模型精度優于前三組實驗,OpenPose中存在標簽問題,很容易對模型的訓練造成影響。在目標有缺陷的情況下,Mask-RCNN無法精確的判斷是否為缺陷。由于RMPE容易受到檢測框的影響,造成漏檢和誤檢,從而影響檢測結果。實驗表明,以ResNeXt101和多尺度RPN組合為基礎的R-FCN與mask結合實現的效果最好,精度率達到74.3%。以ResNeXt101為基礎框架的R-FCN能夠更好的對目標進行檢測,結合多尺度RPN結構可以有效的解決目標的不同尺度問題。

表2 各姿態估計模型在MPII數據集上的精確度對比

表3 各姿態估計模型在MS COCO數據集上的性能對比

圖12 不同模型結果對比圖
在圖 12中,圖 12(a)為 Mask R-CNN 模型姿態估計結果,圖12(b)為OpenPose模型姿態估計結果,圖12(c)為本文提出的模型姿態估計結果。在肢體遮擋和人體復雜姿態場景下,圖12(a)只檢測到兩個目標姿態,圖12(b)中遺漏了第三個目標的腿部關鍵點,由于中間目標遮擋了右邊目標,導致無法對腿部遮擋的部分進行估計。實驗表明,當前流行的兩種姿態估計模型處理效果有待提高。本文提出的模型可以成功實現姿態估計,各個關鍵點檢測效果明顯優于另外兩種模型。
本文以深度學習為基礎,進行了人體姿態估計算法的研究,并提出了一種基于改進R-FCN與語義分割相結合的人體姿態估計模型。該模型以目標檢測R-FCN框架加以改進,并添加了Mask R-CNN中mask語義分割網絡,從而提高人體姿態估計算法的性能。同時,為了減少參數復雜度以提高準確率,本文采用ResNeXt-101作為基礎網絡應用于R-FCN網絡結構;并且引用多尺度RPN結構代替傳統的RPN結構,處理候選區域中出現的多尺度問題。通過實驗證明,本文提出的模型可以快速準確的對人體姿態進行估計,并且與其他模型相比,有較高的準確率。