喬 迤,曲 毅
(武警工程大學 信息工程學院,陜西 西安 710086)
傳統的2D 人體姿態估計是通過手工提取特征或建立人體模型,來設計2D 人體部件檢測器。WANG Y 等人[1]提出基于多樹模型的人體姿態估計,同時表征人體部件間的運動學約束關系和依賴關系,DANTONE M 等人[2]提出建立依賴于身體部位的非線性聯合回歸器來預測關節位置。在特征的選取上,RAMANAN D 等人[3]使用顏色直方圖來提取部位的外觀特征,SAPP B 等人[4]利用級聯的結構化模型來提取輪廓邊緣和形狀特征,YANG Y 等人[5]使用HOG 特征來建立人體各部位的混合模型。傳統方法受圖像背景、光照、遮擋等的影響較大,并且對于多維特征的選擇主觀性較強,不能很好地適應人體部件的復雜性和環境的變換,因此利用傳統的基于部件模型的方法具有較大的局限性。
隨著深度學習的發展,利用神經網絡提取的特征具有更好的魯棒性,基于深度學習的2D 人體姿態估計利用卷積神經網絡模擬人的視覺系統,通過多層網絡,得到不同感受野下的豐富特征。TOSHEV A[6]等人首次基于級聯的深度神經網絡搭建了人體關節點回歸的網絡框架,從而擺脫了傳統方法無法充分利用圖像整體信息的局限性,實現精準的關節點定位和姿態提取。作為計算機視覺的基本任務,人體姿態估計發展狀況與虛擬現實、人機交互、智能視頻監控和運動行為分析等研究領域都緊密相連。本文主要對基于深度學習的2D 人體姿態估計方法進行梳理和總結,按視頻圖像中的人體數量,將人體姿態估計分為單人和多人場景下的檢測,并分別闡述了人體姿態估計的常用方法,列舉了測試基準數據集和評價準則。此外,本文還對人體姿態估計現階段面臨的問題進行分析,并對該領域未來發展的趨勢進行展望。
2D 人體姿態估計,是通過人體關節點的二維坐標來描述人體骨架信息,基于深度學習的2D 人體姿態估計是通過圖像特征提取,進行關節點檢測和骨架信息恢復,從復雜背景環境中對人體進行分割提取,當前姿態估計的目標在于提高實時檢測速度和檢測精度。根據檢測對象和算法流程的不同,可將其分為人體檢測關節點回歸融合算法和人體關節點檢測聚類算法。前者是利用目標檢測算法將每個人從圖像背景中識別出來,然后對單人姿態進行估計;后者是對圖像中所有的關節點進行檢測,而后對其進行聚類連接成相應個體,從而恢復人體姿態,具體分類如圖1 所示。

圖1 2D 人體姿態估計算法總結
人體檢測關節點回歸融合算法主要包含兩個步驟:首先構建人體檢測器,利用目標檢測算法生成人體提議框(Human Proposals),而后在框內進行人體關節點回歸。
1.1.1 人體檢測算法
人體檢測的任務是要從復雜環境背景中將所關心的部分提取出來,是人體姿態估計的初始化過程。經典的目標檢測的算法可以分為兩類:一類是先產生候選區域(Region Proposals)再利用卷積神經網絡(CNN)分類的目標檢測框架,這類算法是基于區域提取的R-CNN[7]系列算法,如R-CNN[7]、SPP-Net[8]、Fast R-CNN[9]、Faster R-CNN[10];另一類是以YOLO 算法為代表的將目標檢測轉換為回歸問題的目標檢測框架(YOLO、SSD),目標檢測算法的好壞直接關系到后續單人姿態估計的準確度。當前人體姿態估計主要使用Faster R-CNN 作為人體檢測框架。
早在2000 年PAPAGEORGIOU C 等人[11]就提出了早期的目標檢測方法,常用無先驗知識的滑窗遍歷來進行候選區域的選擇,由于檢測區域多尺度變換,容易造成漏檢和誤檢。隨著深度卷積神經網絡的發展,2014 年,GIRSHICK R 等人[7]首次提出基于區域提取的R-CNN算法,利用selective search 獲得約2 000 個候選區域,并對區域大小進行歸一化,輸入神經網絡進行特征提取。針對R-CNN 模型對候選區域尺寸的限制,HE K 等人[8]在此基礎上設計了空間金字塔池化層(Spatial Pyramid Pooling,SPP),使得輸入的候選框大小可以進行縮放。為了降低重復計算節省運算開支,GIRSHICK R 等人[9]在SPP-Net 的基礎上提出Fast R-CNN 算法,用ROI Pooling層代替SPP 層,將分類問題和邊框回歸問題進行了合并,極大加快了檢測速度。DeepCut[12]方法就是先利用算法檢測圖像中的人體關節點,而后將關節點劃分為不同的個人。為了從根本上解決selective search 選擇候選區域慢的問題,2016 年REN S 等人[10]又提出了更快的Faster R-CNN 算法,使用RPN(Region Proposals Network)網絡將候選區域的選取融合到整個網絡結構中,大幅提高了候選框的提取速度和精度。
雖然Faster R-CNN 等算法取得了巨大進展,但是其實時性仍不能滿足實際需求。隨后出現的YOLO、SSD 算法優越性逐步凸顯。Redmon 等人提出了YOLO 方法,實現了端到端的目標檢測,摒棄了之前先劃分候選區域再分類識別的兩步走方法,提出了一種單階段的處理方法,將輸入圖片劃分為7×7 的網格,每個格子最多回歸一種目標,通過邊框回歸進行目標區域的修正[13],該方法舍棄檢測精度換取檢測速度的大幅提升。
1.1.2 關節點回歸算法
通過人體檢測得到包含一個人的bounding box,在單人關節點檢測中對應輸出(Ground Truth)有兩種思路:一種是直接回歸關節點位置坐標(x,y),即基于坐標直接回歸;另一種輸出的是heatmap,heatmap 最大值對應關鍵點的位置,heatmap 的Ground Truth 是以關鍵點為中心的二維高斯分布,即基于熱圖回歸。
(1)基于坐標回歸
基于坐標回歸的單人姿態估計是將人體各關節點的二維坐標作為Ground Truth,使輸入圖像經過端到端的網絡直接映射得到每個關節點的位置坐標。這種從單個點直接回歸的處理方法缺乏魯棒性,姿態估計算法早期多采用這種算法,缺點是忽略了人體部件之間的結構信息,單獨對每個關節點進行回歸。
DeepPose[6]基于AlexNet 網絡多階段端到端回歸人體關節點的二維坐標,無需借助人體模型和檢測器,在初始階段得到關節點的粗略位置,在其周圍鄰域切取小尺寸的子圖像作為下一階段的輸入,后續階段不斷對其進行修正優化,具體結構如圖2 所示,這也奠定了基于坐標回歸方法的基礎。

圖2 DeepPose 結構圖
由于直接從輸入圖像中預測關節點的位置是一個非線性問題,SUN X 等人[14]為了增強結構信息,提出了結構感知的回歸方法,使用骨骼來進行姿態表示,同時利用關節點的連接結構來定義損失函數,以便從2D 姿態擴展到3D 姿態。FAN X 等人[15]基于生理圖像提出一種雙源深度卷積神經網絡(DS-CNN),采用多尺度滑動窗口構建圖像補丁(part patches)實現關節點的檢測和定位。
(2)基于熱圖檢測
基于熱圖檢測的單人姿態估計是用概率圖heatmap來表示關節點的粗略位置,訓練網絡得到的是特征圖(feature map)各像素的概率檢測值。Heatmap 不僅可以反映像素屬于各個關節點的概率分布,還提供了關節點本身和關節點之間的圖像特征。基于熱圖的檢測可以為關節點坐標的檢測提供先驗,使用更為廣泛。
①關節點關系的建模
TOMPSON J 等人[16]提出采用熱圖的方式來回歸關節點,每個關節點占據一個熱圖通道,其二維高斯分布以目標關節點位置為中心,針對得到的關節點有誤檢(false positive)的情況,作者提出建立空間模型(spatial model)進行優化,利用馬爾科夫隨機場來過濾異常關節點,也為多人場景中的關節點聚類提供了解決思路。PAPANDREOU G 等人[17]在此基礎上進行了改進提出了G-RMI,基于全卷積ResNet-101 的網絡結構利用熱圖—偏移解碼器將熱圖(heatmap)和對應的偏移量(offset)結合起來得到精確關節點的定位。為了更好地體現關節之間的依賴關系,YANG W 等人[18]設計了一個可以靈活構建的樹結構模型和循環模型的消息傳遞層,使得DCNN 和部位檢測器進行聯合訓練,但是此方法的計算量依然非常龐大。
②主干網絡結構的改進
人體姿態估計中應用的網絡結構許多都是基于經典神經網絡改進而來的,WEI S E 等人[19]提出一種多階段級聯網絡CPM,使用順序化卷積架構對可學習的空間紋理特征進行序列預測,不斷去修正響應圖,使用神經網絡同時學習圖片特征和空間信息。殘差網絡提出后,NEWELL A 等人[20]提出一種結構對稱的堆疊式沙漏(Stacked Hourglass)架構,使用剩余模塊作為組成單元,如圖3 所示,使用多尺度特征來捕獲各關節點的語義信息和空間位置信息,由于高分辨率是通過上采樣獲得的,因此會有潛在的信息缺失,四階Hourglass 子網絡結構如圖4 所示。FANG H 等人[21]提出的RMPE 是基于對稱空間變換網絡(Symmetric Spatial Transformer Network,SSTN)構建了專門的人體檢測框,提出了參數化姿態非最大值抑制(Parametric Pose NonMaximum-Suppression,p-Pose NMS)來消除冗余,提高了準確率和效率。BULAT A 等人[22]使用了由兩個深層子網組成的CNN 級聯結構,分別是基于ResNet-152 的部位檢測網絡和基于VGG 的回歸網絡。

圖3 Residual 模塊示意圖

圖4 四階Hourglass 子網絡
CHEN Y 等人[12]提出的CPN,構建基于FPN 和Mask-RCNN 的人體檢測器后,級聯兩個子階段的網絡模塊GolbalNet 和RefineNet,第一階段由特征金字塔網絡GolbalNet 負責所有關節點的檢測重點提高明顯部位的檢測精度,第二階段由RefineNet 進行進一步修正。后續許多網絡結構都是以此為基準模型進行改進的,例如LI W等人[23]在此基礎上提出了多階段人體姿態估計網絡MSPN,將CPN 的GlobalNet 作為輕量級的單階段模塊進行堆疊,相鄰階段之間進行特征聚合以保證更高分辨率,MSPN通過將前一個階段的對應的兩個特征圖和當前階段下采樣得到的特征圖相連接,避免由于反復下采樣和上采樣造成的信息丟失。SU K 等人[24]提出Channel Shuffle Module(CSM)來促進特征圖間的跨通道融合,提出Spatial Channel-wise Attention Residual Bottleneck(SCARB)利用注意力機制來學習空間和通道維度的關系。
Hourglass 是自上而下人體姿態估計的開山之作,在此基礎上,KE L 等人[25]基于Hourglass 網絡做了改進,使用多層MSS-Net 進行多尺度監督來加強語義特征學習,而后利用MSR-Net 處理多尺度信息保持全局一致性。為了提高精度有效應對遮擋問題,TANG W 等人[26]在Hourglass 網絡的基礎上提出了DLCM 模型,利用深度神經網絡學習人體的組成結構,可進行自上而下和自下而上的結構推理。
不同于上述兩階段的算法,為了提高檢測效率,NIE X等人[27]提出將人體檢測和關節點回歸兩者統一起來當做單階段來處理的分層結構化姿態表示SPR,直接預測根節點root joint 作為人的中心位置,同時將所有關節點進行層次分割,從root joint 開始預測相鄰層級關節點的偏移量,具體如式(1)所示,從而減輕網絡的預測壓力。

③多尺度特征提取
為了完善在深度卷積神經網絡中特征金字塔的應用,YANG W 等人[28]設計了金字塔殘差模塊(PRM)來克服人體形態變換造成的比例變化增強魯棒性,首先使用不同縮放比例下采樣得到不同尺度的特征圖,而后再通過上采樣將特征圖恢復到相同大小融合形成多尺度特征,這一階段姿態估計的方法大都是從高分辨率特征圖下采樣至低分辨率,再從低分辨率恢復至高分辨率,此過程中會損失部分細節信息,為了使姿態估計預測的關節點更加準確、空間更加精確,SUN K 等人[29]提出了高分辨率的人體姿態估計網絡HRNet,通過在高分辨率特征主網絡中逐漸并行加入低分辨率特征圖子網絡,將不同分辨率feature map 之間的連接從串行改成了并行,在整個過程中一直保持高分辨率分支的存在,各并行網絡之間相互交換信息,實現了不同網絡間的多尺度融合和特征提取。
自下而上的方法通常包括兩個階段,分別是關節點檢測和關節點聚類。即首先對視頻圖像中所有的關節點進行檢測,而后通過對其進行分組聚類,對不同人的關節點進行連接恢復人體姿態,該算法適用于多人場景,較之人體檢測和關節點回歸融合算法計算開銷保持穩定,但是關節分組連接復雜度也會相對提高。代表算法有DeepCut、Associative Embedding、DeeperCut、OpenPose、PIFPAF 等。
PISHCHULIN L 等人[30]首次提出DeepCut,利用Fast R-CNN 來檢測身體關節并進行相應類別標記,而后利用整數線性規劃將這些類別劃分給對應的人從而組合恢復出骨架信息。在此基礎上,INSAFUTDINOV E 等人[31]提出了DeeperCut,采用殘差網絡Resnet 來提高關節檢測精度,使用Image-Conditioned Pairwise Terms 來做優化,壓縮候選區域的節點。為了提高實時檢測效率,CAO Z 等人[32]提出了基于CPM 改進的OpenPose 方法,可以實現單人和多人的人體動作和手指關節等的識別,利用PAF方法給每個肢體構造二維向量來編碼肢體的位置和方向信息,從而提高部位之間的關聯度。如圖5 所示,OpenPose 先通過VGG-19 卷積神經網絡獲取圖像特征,之后經歷兩個分支,上半支路預測關節點置信度,下半支路預測關節點親和度向量完成關節點的匹配,最后利用匈牙利算法將同一個人的關節點進行聚類連接,恢復人體骨架信息,這一方法獲得了2016 年COCO 關鍵點挑戰賽的冠軍。

圖5 OpenPose 算法流程示意圖
文獻[33]提出Associative Embedding 方法,通過使用標簽值來編碼部位之間的關聯置信度,使得同一個人不同關節點對應的標簽值盡可能相似,不同人的不同關節點對應的標簽值相差盡可能大,通過劃定閾值對標簽值數據進行分割,從而將關節點分組到每個人體實例。PAPANDREOU G 等人[34]提出personlab 算法,可以同時完成人體姿態估計和人體實例分割任務。
2019 年,KREISS S 等人[35]提出PIFPAF 方法,這是一個基于復合場的人體姿態估計算法,使用部分強度場PIF 來預測關節點熱圖,使用部分關聯場PAF 來確定關節點的連接,最后使用貪婪算法對部分強度場和部分關聯場的信息進行處理,得到人體姿態估計的結果,相比OpenPose 算法性能有了明顯提升。2020 年,字節跳動XIAO B 團隊[36]基于之前的HRNet 和Associative Embedding提出了一種高分辨率網絡HigherHRNet,利用多分辨率訓練和熱圖聚合的策略,使高分辨率網絡能夠預測具有尺度感知的熱圖,也是目前自下而上方法中性能最優秀的網絡之一。
2.1.1 單人姿態估計數據集
(1)LSP 數據集
LSP 數據集定義了14 個人體關節點,分別為頭頂、脖子、左右肩部、左右肘部、左右手腕、左右臀部、左右膝蓋和左右腳踝。樣本數在2 000 左右,目前基本棄用。
(2)FLIC 數據集
FLIC 數據集是從電影中截取的場景片段,場景中包含多人的情況下,只標簽了一個人的關節信息。共有5 003個樣本,包括訓練集3 987 張、測試集1 016 張,是單人人體關節點檢測的數據集,通常在實驗中作為第二數據集使用。
該數據集定義了9 類人體關節點,包括左右眼睛、鼻子、左右肩部、左右手肘、左右手腕、左右臀部,關節點主要集中在上半身。
(3)MPII 數據集
MPII 數據集約有2.5 萬張圖片,包含超過4 萬個具有關節點注釋的人體,包括被遮擋部位關節點標注和頭部方向。定義了16 個人體關節點,分別為頭頂、脖子、胸部、左右肩部、左右手肘、左右手腕、盆骨、左右臀部、左右膝蓋、左右腳踝。同時可作為多人姿態估計的數據集。
2.1.2 多人姿態估計數據集
在現有的多人姿態估計數據集中,常用的有MPII、COCO 和AI Challenger 數據集。
MSCOCO 數據集是人體姿態識別領域應用的主流數據集,包含了20 萬張圖片和25 萬個具有關節點注釋的人體實例。定義了17 個人體關節點,分別為左右眼睛、左右耳朵、鼻子、左右肩部、左右手肘、左右手腕、左右臀部、左右膝蓋和左右腳踝。
AI Challenger 數據集作為競賽數據集使用,包含30萬張圖片,其中訓練集21 萬張,驗證集3 萬張,測試集A 3 萬張,測試集B 3 萬張,均對其進行了關節點標注。定義了14 類人體關節點,分別為頭部、脖子、左右肩膀、左右手肘、左右手腕、左右臀部、左右膝蓋、左右腳踝。
根據不同數據集的數據標簽特點,2D 人體姿態估計有多種評價準則,如表1 所示。

表1 常見的2D 人體姿態估計數據集及評價標準
2.2.1 單人姿態估計評價準則
LSP 數據集采用部位精度百分比PCP (Percentage of Correct Parts)來衡量定位的精確程度,如果預測的肢體兩個端點都在Ground Truth 閾值之內,則判定該定位正確有效。
MPII 數據集中采用頭部尺度關節點百分比PCKh(Percentage Correct Keypoints on head length)評價關節點檢測的準確率,即計算出預測值和真實值的歸一化距離小于設定閾值的比例,如式(2)所示:

區別于MPII,FLIC 數據集使用PCK 作為評價指標時用人體軀干大小代替頭部框大小作歸一化距離。
2.2.2 多人姿態估計評價準則
使用目標關鍵點相似度(Object Keypoint Similarity,OKS)來評估預測值和真實值之間的差異,從而衡量模型的表現。OKS 指標的計算公式如式(3):

AP 表示所有的OKS 的平均精度,AP50 表示OKS 閾值為0.5 時的平均精度,APM 表示小尺度目標的平均精度,APL 表示尺度在閾值之上目標的平均精度。
在模型計算消耗比較方面,采用浮點計算量FLOPs作為指標,具體指的是卷積神經網絡前向傳播時所需要的乘法次數,用單張圖片的測試速度作為評價測試速度的指標,同時用參數個數作為模型大小的評價指標。
(1)遮擋問題
由于真實生活中背景環境復雜,遮擋問題在一定程度上制約了模型性能的提升,容易造成漏檢和誤檢。
(2)實時性要求
如何降低網絡的復雜度和計算開銷是制約人體姿態估計算法落地的重要因素,隨著圖像視頻中人數的增多,尤其是自上而下算法的時間開銷將會明顯增加。
(1)提高檢測精度和效率
真正將人體姿態估計算法應用于無人駕駛、安全監控等實時性要求高的領域,還需要進一步簡化網絡結構設計輕量化模型,降低模型的計算開銷,使其能夠實現實時快速高精度檢測。
(2)移動端應用
在移動端設備部署人體姿態估計技術是一個方向,在不影響檢測效率和準確率的情況下,與其他技術相結合拓展外圍應用,增強現實真正做到人機交互。
隨著深度學習的發展卷積神經網絡的出現,用于人體姿態估計的模型結構和算法性能也不斷優化和提升,無人駕駛、智能監控等任務需求也在一定程度上促進了人體姿態估計工作的進行。本文對兩大類2D 人體姿態估計方法進行了介紹,對每個階段具有代表性的模型特點進行了闡述,并介紹了人體姿態估計常用的數據集和評價準則。最后對人體姿態估計面臨的問題和發展趨勢進行了介紹,在未來具有廣闊的應用前景。