林怡雪,高尚,王光彩,劉曉欣,范迪
(山東科技大學,青島266590)
人體骨骼關鍵點的定位是人機交互、智能安防、虛擬現實和行為識別等領域的重要部分[1]。人體關鍵點定位方法可分成兩個類別:基于傳統模型的方法和基于深度學習的方法[2]。傳統的人體關鍵點定位方法主要基于可變形組件模型(Deformable Part Model,DPM)[3,4],實現對人體部件的探測、結構化分類及預測。在人體部件探測過程中,需要手動設計SIFT[5]、HOG[6]等算子提取低級特征并進行聚合。因此其最終預測結果會受前期手動提取特征的局限而不能達到令人滿意的效果。
近年來,深度學習逐漸成為主流方法,它能夠克服傳統方法中存在的不足。2014 年Toshev 等人提出的DeepPose[7],直接利用神經網絡回歸關鍵點坐標,但因人體姿勢變化靈活,場景復雜,因此很難預測準確。針對這一問題,Jain 等人提出了一種用熱力圖(heatmap)表示關鍵點的方法,其模型結合了卷積網絡和圖模型兩部分,前者提取特征,后者則學習空間關系[8]。后來Tompson 等人提出了一種全卷積的網絡(Fully Convolutional Network,FCN)模型來學習熱力圖[9],并進一步改進為利用多分支的級聯(cascade)網絡優化定位效果[10]。2016 年Nellwell 提出了一種經典的堆疊沙漏網絡(Stacked Hourglass Network)模型[11],通過重復堆疊的上采樣下采樣和中間監督,將不同尺度的特征聯系起來。
自然場景下多人的人體關鍵點定位更具挑戰。Insafutdinov 等人提出DeepCut[12],用全連接圖(Fully Connected Graph)中的整數線性規劃(Integer Linear Program,ILP)解決分配問題,后續他又在此基礎上加入ResNet[13],改進并提出DeeperCut[14]網絡。OpenPose[15]引入關節引力場(Part Affinity Fields,PAF)使網絡的準確率和速度均有提升。Mask R-CNN[16]通過多任務網絡同時檢測人體位置和預測關鍵點。Fang 等人提出的局部多人姿態估計(Regional Multi-person Pose Estimation,RMPE)方法可以減輕錯誤的人體檢測結果帶來的影響[17]。2018 年微軟提出的Simple Baseline[18]方法利用簡單的網絡結構就能達到較高性能。2019 年中科大和微軟亞洲研究院聯合發布的HRNet(High Resolution Net)[19]利用并行結構保持高分辨率,一舉打破了COCO關鍵點定位比賽的三項紀錄。從算法策略上看,可以把多人關鍵點定位網絡分為自底向上和自頂向下兩類。前者先定位出圖片中的所有關鍵點然后再進行聚類,如文獻[12,14,15],后者先檢測圖片中的人再定位其關鍵點,如文獻[16,17,18,19]。
然而自頂向下方法的效果對人體檢測框依賴比較重,圖片中的遮擋、干擾、復雜背景等容易使結果產生較大誤差。針對這一問題,本文在特征金字塔網絡的基礎上引入注意力模塊,通過權重分配使網絡著重學習有用特征,以提高網絡對關鍵點定位的精度。本文所設計的方法通過COCO 數據集進行了實驗,從實驗結果看,本文加入注意力模型后的CPN,相較于原網絡而言,其平均準確率和平均召回率均有所提升,在單人、多人、干擾復雜、嚴重遮擋等情況下均獲得了很好的定位結果。從與當前主要關鍵點定位算法對比實驗看,本文算法的定位準確率或精度較對比方法有一定提升。
骨骼關鍵點的定位主要是通過對圖片像素點進行預測打分,以確定最有可能為關鍵點的位置。本文所提出算法的框架是在CPN(Cascaded Pyramid Network)[20]的基礎上加入CBAM(Convolutional Block Attention Module)[21]注意力模型機制,以提高網絡輸出的準確率。本文網絡模型如圖1 所示。
CPN 的基礎骨架網絡為ResNet-50。ResNet-50利用數個瓶頸塊(bottleneck)為特征金字塔提供不同深度的特征信息。而CPN 通過分別在其中的第3、7、13、16 個bottleneck 塊后輸出提取的信息并進行融合,由于其輸出特征尺寸逐漸由大變小而命名為特征金字塔網絡。之后,不同大小的特征通過上采樣統一尺寸,并被拼接層(concat layer)以第一維度(即通道方向)組合到一起,其中由淺到深各層上采樣的倍數分別為1、2、4和8。
注意力模型CBAM 被加入到ResNet-50 最深層的bottleneck 之后。此結構可以在不改變整個網絡整體架構的基礎上,通過特征金字塔的逐層上采樣網絡作用在深淺不同的特征信息上。本文網絡輸出圖片中的每一個像素點是骨骼關鍵點的預測概率,并組成熱力圖,之后由soft-argmax 函數將熱力圖轉換為關鍵點的數值坐標并輸出。
關鍵點定位基礎框架采用CPN 級聯金字塔網絡。CPN 網絡是一種自頂向下的人體關鍵點定位網絡,它以人體檢測網絡的輸出為輸入,經過網絡處理定位骨骼關鍵點。CPN 網絡包括兩部分:前期粗略檢測關鍵點的GlobalNet 網絡和微調網絡RefineNet,其結構如圖2 所示。

圖1 引入注意力模型的CPN網絡

圖2 CPN特征金字塔網絡結構
淺層特征在空間上具有較高的分辨率,但是語義上包含的信息量較少;深層特征語義上包含的信息較多,但空間分辨率較低。GlobalNet 利用網絡結構將這兩者結合,它利用骨架網絡ResNet 中的瓶頸塊提取信息,每經過一層處理,特征圖的大小減半,而通道數增加兩倍。在經過特征提取后,GlobalNet 將底層特征進行上采樣,然后與上層特征疊加,實現淺層特征和深層特征融合。經過GlobalNet 的學習,網絡已經能夠基于外觀特征預測出一些容易定位的關鍵點位置(如眼睛),但是另外一些需要基于上下文信息的定位,則需要后面的RefineNet 進行預測。
RefineNet 接收GlobalNet 輸出的特征,并通過concat 層把這些信息拼合起來。同時RefineNet 在不同大小的特征信息后面加入了不同個數的bottleneck 塊進一步細化提取信息。RefineNet 利用L2 損失作為監督,通過減小預測值與真實值之間的歐氏距離,重點學習那些難以學習到的關鍵點(如遮擋)。通過微調,網絡可以在較小尺度的空間上達到效率和性能的平衡。
為了幫助計算機理解圖像,現代深度學習網絡常常會加入注意力機制,其本質是通過對圖像特征信息分配權重系數,來強調對于學習目標有用的重要位置,而抑制某些無關緊要的信息。對于已有人體關鍵點定位網絡而言,精度受限制的一個重要原因是受到復雜背景和遮擋的干擾。對于相距很近甚至緊挨的兩個人,人體檢測框無法完全將兩人區分開。注意力模型能很好地解決這個問題。
本文為了提高CPN 網絡模型的預測精準度,在骨架網絡ResNet-50 的最深層bottleneck 后加入了注意力機制CBAM 模塊,組成新的ResNet 模塊,其模型架構如圖3 所示。

圖3 CBAM注意力機制模型
圖3 注意力模塊可分為通道注意力(channel attention)和空間注意力(spatial attention)兩部分。其中通道注意力通過池化操作學習每個通道的重要度,從而對每個通道分配不同的權重。經過全局最大池化和平均池化后進入多層感知機(Multilayer Perceptron,MLP)進行學習,學習結果疊加后得到通道注意力。
空間注意力的輸入為經過通道注意力加權的特征圖,它學習特征圖譜中各個位置對于需要估計點的重要性程度。分別經過最大池化和平均池化后,將二者按照第一維度進行拼接,之后通過一個大小為3×3 的卷積,最終生成空間注意力。
由于CBAM 中卷積操作都對原特征圖進行了填充(padding),因此輸出不改變特征大小,從而加強了此模塊的可移植性,可以在不改變骨架結構的基礎上插入網絡。
本文方法主要在COCO[22]數據集上進行神經網絡的訓練和評估。此數據集包括143k 多張圖片。其中有訓練集圖片118288 張,驗證集圖片5000 張以及測試集圖片20288 張。COCO 數據集中關于人物的標注有250k 例,共有多達1700k 個人物骨骼關鍵點。COCO的標簽有17 個關鍵點位置坐標,分別為鼻子、左右眼、左右耳、左右肩部、左右手肘、左右手腕、左右臀部、左右膝蓋和左右腳踝。
實驗平臺是NVIDIA RTX 2070 顯卡服務器及Anaconda 環境。網絡輸入的圖片大小統一為256×128 像素,并經過隨機裁剪及翻轉進行數據增強。模型利用公開數據集ImageNet[23]的預訓練模型進行權值初始化。實驗過程中,利用Adam[24]優化器進行梯度下降,初始學習率設為5×10-4,每經過6 輪訓練,學習率減半。
COCO 官方評價方法沿用了類似目標檢測的相似度度量方法,即平均準確率(Average Precision,AP)和平均召回率(Average Recall,AR)并對之做了一定調整,使其適應關鍵點的評估。
COCO 數據集采用OKS(Object Keypoint Similarity)作為關鍵點相似度度量的指標,以此來判斷某個點的預測是否準確,計算公式如下:

上式中OKSp表示圖片中第p 個人的相似度指標,其中i 表示骨骼關鍵點的編號;dpi為第p 個人的第i個關鍵點的預測位置與真實位置之間的歐氏距離;sp為人體p 的尺度因子,定義為人體框面積的平方根;σi是人體骨骼關鍵點的歸一化因子,由人工標注位置偏移的標準差計算得到;vpi為第p 人的第i 個關鍵點的狀態,δ()為克羅內克函數,即只有被標注為可見的人體骨骼關鍵點(v=1)才計入評價指標,其公式如下:

由式(1)可知,兩個關鍵點間的相似度取值在[0,1]之間。選定一個閾值t 后,通過將圖上一點p 的相似度值即OKSp與t 作比較,可以判斷p 是否預測準確。因此測試集上的平均準確率(AP@t)為:

平均準確率的均值AP 運用廣泛,它表示在給定閾值在[0.5,0.95]的范圍內以0.05 為步長遞增下的平均準確率的平均值,其計算公式如下:

本文選取當前主要的關鍵點定位方法進行對比測試。實驗在COCO 數據集上進行訓練并在其test-dev中進行測試對比。對比實驗的網絡有CMU-Pose[25]、Mask R-CNN[8]、G-RMI[26]、PersonLab[27],以及CPN[20]。其中CMU-Pose[25]為2016 年的COCO 人體關鍵點定位比賽的冠軍。評價指標采用AP、AR;閾值為0.5,0.75 的AP、AR;以及其在中型目標下的(APm,ARm)、大目標下的(APl,ARl)。
圖4 本文改進的CPN 網絡及原CPN 的實驗對比結果。由圖4 可知,本文改進CPN 網絡的AP 和AR分別可達到72.3 和78.3,與原CPN 網絡相比分別提高了0.7 和0.3。且在其他閾值及大中目標下的評價指標也均有所提升。

圖4 本文改進網絡與原CPN的比較
圖5 是與CMU-Pose、Mask R-CNN、G-RMI、PersonLab 的對比實驗結果。由圖5 可看到,本文的網絡在定位準確率上的表現明顯優于自底向上的方法如CMU-Pose 和較新的算法PersonLab;較同類自頂向下的算法G-RMI 和Mask R-CNN,本文方法在精度上也有一定程度的提高。

圖5 本文方法與當前主流算法在COCO數據集上的比較
圖6 為本文網絡在不同條件下的實驗效果。圖中人體的17 個關鍵點分別用不同顏色的點標識,并將相關聯的點用彩色線條兩兩連接。結果表明,該網絡不僅能夠在單人圖片如(a)、(d)、(g)中表現良好,且能在多人圖片的復雜干擾情況如(b)、(c)、(e)、(f)中獲得不錯的效果。其中(c)、(g)包含小尺寸人體圖片,(b)、(e)有嚴重遮擋,(b)、(d)包含圖片中關鍵點不全的情況,都能很好的定位關鍵點。

圖6 本文方法在不同條件下的測試效果
針對現有人體關鍵點檢測網絡在多人情況下因遮擋等干擾導致準確率低的問題,本文提出了一種改進CPN 的人體關鍵點定位算法,在原網絡中引入了注意力模型CBAM,很好地發揮了CPN 特征金字塔網絡對深層和淺層的融合,以及注意力模塊分配權重學習有用信息的優勢,提高了關鍵點定位的準確性。通過實驗對比表明,本文方法比較好地改善了原CPN 網絡及當前方法在遮擋、干擾、背景復雜等情況下檢測不準的問題,實現了平均準確率和平均召回率均的提升。后續可以重點解決網絡的輕量化問題,在不影響準確率的基礎上減少參數,提高運行速度。