馬雙雙,王 佳,曹少中,楊樹林,趙 偉,張 寒
(北京印刷學院 信息工程學院,北京 102600)
人體姿態估計是計算機視覺領域一個基礎問題,解決這個問題是圖像和視頻中識別人類行為的重要步驟,主要內容是從圖像中識別身體的各個部分,并計算其方向和位置信息.人體姿態估計作為解決圖像和視頻中人體關鍵點(如頭部、肩部、肘部等)坐標的重要技術,其流行與發展得到了眾多學者的廣泛關注.深度學習與卷積網絡的不斷發展,人體姿態估計在動作識別[1]、動作捕捉[2]、姿態追蹤[3]、手勢識別[4]、圖像生成[5]、人機交互[6]等方面得到了廣泛應用.
人體姿態估計算法發展至今可以分為傳統方法和深度學習的方法.傳統方法采用手工提取特征建立模型,一般是基于圖結構(pictorial structures)模型[7]和基于形變部件模型[8],由于遮擋嚴重、光線條件差和拍攝角度不同,因此具有挑戰性.它們的準確性受到限制,特別是在嚴重遮擋和復雜光照條件下.近幾年人工智能發展迅速,學者將目光專注于研究深度學習模型,比如深度卷積神經網絡(convolutional neural networks,CNN)[9]、生成對抗網絡(generative adversarial nets,GANs)[10]、遞歸神經網絡等.在圖像分割、圖像分類、圖像融合、圖像識別等領域獲得了顯著成果.人體姿態估計采用深度學習的方法可以利用CNN 提取到更加準確的特征,有利于獲取人體關節點之間的聯系.
二維人體姿態估計是在圖像中識別出人體關鍵點,將關鍵點按順序連接形成人體骨骼圖.本文主要從單人目標和多人目標兩個方向對二維姿態估計進行梳理和分析,整理了相關數據集與評價指標,并對當前所面臨的問題和未來發展趨勢進行了闡述.
傳統方法主要用于解決姿態估計問題,大部分采用模板匹配的方法.基于Fischler 等人[7]提出的圖結構模型,首先人體部件檢測器將人或物體表示為多個部件,并使用圖形模型確定部件之間的連通性.2005年Felzenszwalb 等人[11]提出了一個統計框架,用于表示可變形結構中對象的視覺外觀,它允許對外觀進行定性描述,并假設組件與樹形結構一致.
文獻[12]提出圖結構主要由表述人體部件的局部模型(part model)和表述空間關系的空間模型(spatial model)構成.為改善局部模型表現能力差的缺點,使用了表現力更強的圖像特征,例如HOG 特征[13]和SIFT特征[14].韓貴金等人[15]提出一種基于HOG 和顏色特征融合的外觀模型,用于圖像中人體上半身的姿態估計.前景技術可以應用到姿態估計中[16],也可以將判別能力更強的檢測器來提高姿態估計準確性[17].人體姿態估計會存在肢體遮擋的問題,為解決此類問題非樹形結構的空間模型被提出[18].傳統方法已擁有較高的效率,但無法提取圖像中的充分信息并加以利用,使得適用方法范圍受到限制,并且由于傳統方法依賴于專業的攝影設備,成本較高,無法使用所有的應用場景.
在近幾年,受到以端到端為特征的圖像識別的影響,越來越多的研究人員引入深度學習的人體姿態估計模型,并不斷提高模型的性能.深度學習通過訓練大量的樣本數據,獲取更加高效準確的特征.相較于傳統方法,深度學習的方法魯棒性更強、泛化能力更好.自2014年首次引入深度學習以來,基于深度學習的人體姿態估計已成為一個研究學者的主流研究領域.根據應用場景可將二維人體姿態估計分為單人姿態估計和多人姿態估計,二維人體姿態估計分類如圖1 所示.

圖1 二維人體姿態估計分類
單人姿態估計作為人體姿態估計的基礎尤為重要,圖像里只有單個待檢測目標,首先檢測出目標的邊界框圖像,在檢測出目標人體的所有關節點.大多數單人姿態估計都使用有監督的方法,可按照真值(ground truth)分為基于坐標回歸與基于熱圖檢測.
2.1.1 基于坐標回歸
2014年Toshev 等人提出的DeepPose[19]首先將深度學習應用在人體姿態估計領域,它將2D 人體姿態估計問題由原本的圖像處理和模板匹配問題轉化為卷積神經網絡圖像特征提取和關鍵點坐標回歸問題,它將2D 人體姿態估計問題由圖像處理和模板匹配問題轉化為CNN 圖像特征提取和關鍵點坐標回歸問題,使用回歸準則來估計被遮擋的人體關節點.其思路是針對CNN 學習到的特征尺度固定、回歸性能差的問題,在網絡得到粗分回歸的基礎上增加一個階段,將特征圖像傳入CNN 網絡學習高分辨率的特征,進行較高精度的坐標值回歸.具體DeepPose 流程圖如圖2 所示.

圖2 DeepPose 網絡結構
Geng 等人[20]認為回歸關鍵點坐標的特征必須集中注意關鍵點周圍的區域才能精確回歸出關鍵點坐標,提出了直接坐標回歸方法解構式關鍵點回歸(DEKR).使用自適應的卷積激活關鍵點區域周圍的像素,利用這些激活的像素去學習新的特征,并利用多分支結構,每個分支都會針對某種關鍵點利用自適應卷積學習關鍵點周圍的像素特征,回歸關鍵點的位置.
多階段回歸可更加精確地反映關鍵點坐標,改善多階段直接回歸方法.Carrira 等人[21]提出了自我修正模型,通過從輸入到輸出的聯合空間學習特征提取器,對聯合空間中豐富的結構化信息進行建模.文章引入了自頂向下的反饋機制,通過反饋錯誤預測逐步改變初始解的自校正模型,此過程稱為迭代錯誤反饋(IEF).基于坐標回歸的方法,只減少了每個關節點位置的誤差,忽略了關節點之間的相關信息,相比于關節點骨骼信息更準確.Sun 等人[22]提出了一種基于ResNet-50[23]的結構感知回歸方法,它采用重新參數化的姿勢表示,使用骨骼進行姿態表示,對姿勢進行編碼.
總體而言,關節點坐標的直接回歸是非線性的,在映射學習中存在困難,而且不能應用于多人情況,缺乏魯棒性.相較于坐標回歸,更多使用基于熱圖檢測的方法.
2.1.2 基于熱圖檢測
熱圖檢測的方法將人體各部位作為檢測目標,通過檢測關鍵點熱力圖(heatmap),獲得關鍵點的概率分布以及關鍵點的位置信息.
Tompson 等人[24]采用深度卷積網絡進行姿態估計,采用heatmap 的方式回歸關鍵點,將重疊感受野和多分辨率輸入,利用人體關鍵點之間的空間信息,結合馬爾科夫隨機場的思想來優化預測結果.該方法也為多人場景下的姿態估計中關鍵點聚類問題提供思路.針對于定位的精度較低的問題,Tompson 等人[25]在此基礎上做了相應改進,使用兩個級聯網絡來回歸人體關鍵點的熱圖,并聯合訓練這兩個網絡,提升模型的泛化能力.
Isack 等人[26]提出高效輕量級模型RePose,將基于部件的結構和幾何先驗合并到分層預測框架,利用人體運動學約束,采用端到端的訓練,根據先驗知識進行建模,傳播低分辨率特征以達到細化預測的姿勢信息的目的.
Artacho 等人[27]基于“瀑布式”的空間池架構,提出了統一的人體姿態估計框架UniPose,將空洞卷積的級聯方法和空洞空間金字塔模塊并行.該方法結合上下文分割和聯合定位來確定關鍵點位置和人體邊界框,以實現人體姿勢的高精度估計.
基于坐標回歸的方法獲取關鍵點信息更加直接,能夠獲取豐富的特征,但增加了復雜度,通用性低,精度低.基于熱圖檢測的方法相較于坐標回歸的方法魯棒性更好,關節點之間的關聯更加清晰,但計算量較大,效率低,基于坐標回歸與熱圖檢測的方法對比如表1 所示.

表1 單人姿態估計方法對比
與單人姿態估計不同,多人姿態估計需要檢測出圖像中的所有目標人體,包含檢測和定位步驟.多人姿態估計根據檢測步驟分為自頂向下(top-down)和自底向上(bottom-up),top-down 的方法先檢測人體目標,在對人體進行姿態估計; bottom-up 的方法先檢測圖像中的所有關節點,再將關節點進行聚類組合成人體.同時,多人圖像場景可能會存在遮擋問題,如何精確預測出遮擋情況下的關節點,補齊缺失關鍵點是多人姿態估計中的一個重要研究方向.
2.2.1 Top-down
基于自頂向下的方法首先采用目標檢測算法獲取圖像中的多個人體,再對單個人體目標進行姿態估計.Iqbal 等人[28]提出了一種多人姿態估計的方法,利用Faster R-CNN 進行人體目標檢測,對檢測出的人體使用convolutional pose machines (CPM)網絡進行姿態估計.但是在對人體邊界框進行姿態估計時,并未考慮多人圖像中人體之間可能存在的遮擋情況,有可能會使得關鍵點信息缺失無法與人體相關聯,從而導致姿態估計的誤差降低準確度.Papandreou 等人[29]基于復雜場景下,沒有提供人體的真實位置或比例的情況下,提出了基于自頂向下簡單有效的G-RMI 多人姿態估計方法.使用Faster R-CNN 進行目標檢測,并估計目標框中包含的關節點.對于關節點的類型,使用全卷積ResNet 預測關節點的熱度圖和偏移量.引入熱圖-偏移的聚合方法來獲得準確的關節點.Mask R-CNN[30]首先檢測出目標邊界框,通過特征圖進行關節點檢測.Mask R-CNN 的網絡結構在Faster R-CNN 分類和回歸的基礎上增加了一個分支進行圖像的語義分割,Dense-Pose 借用了Mask R-CNN 的架構.
AlphaPose 由Fang 等人[31]提出,此研究認為雖然當前最先進的人體檢測已經達到較好的效果,但人體目標的定位和識別仍會產生誤差,提出了區域多人姿態估計(RMPE)框架,由空間變換網絡(SSTN)、參數姿態非最大抑制(NMS)和姿勢引導區域生成器(PGPG)組成.SSTN 主要作用是在不精準的邊界框中提取出高質量的人體區域,NMS 用來解決人體目標被重復檢測的問題,使用PGPG 來進行數據增強,根據檢測結果生成的訓練樣本.AlphaPose 利用RMPE 框架對不準確的人體目標邊界框進行準確的姿態估計,減少了因為人體目標檢測不準確而導致的誤檢.文獻[32]提出一種用于人體姿態估計的無偏的數據處理方法(UDP),以減少訓練和推理過程中的計算增量.
HRNet[33]在2019年被提出,主要是為保持高分辨率的特征圖信息,現有方法大多是從低分辨率特征中恢復高分辨率特征,HRNet 通過并行化多分辨率子網絡保持高分辨率特征,并通過多尺度融合來增強高分辨率特征.Zhang 等人[34]在HRNet 的基礎上提出了一種新型的注意力模塊,去規范化注意力(DNA)來解決傳統注意力模塊的特征衰減問題.
總體而言,自頂向下的方法思路清晰,精度較高,在檢測人體邊界框時不會出現漏檢、誤檢; 但實時性較差,對于每次檢測,都要運行單人姿態估計,檢測的人數越多,計算成本越高.雖然相較于先前的方法檢測精度得到了很大提升,但發生檢測錯誤還是不可避免的,比如邊界框定位錯誤,會阻礙自頂向下方法精度的提高.
2.2.2 Bottom-up
基于自底向上的方法步驟包含關節點檢測和聚類,首先檢測出圖像中的所有關節點,通過相應策略將關節點聚類成人體,實現姿態估計.自底向上的方法擺脫了首先對個體進行進行檢測的前提.
Pishchulin 等人[35]提出了基于Fast R-CNN 檢測器的DeepCut,首先提取圖像中的所有關鍵點,將關鍵點作為節點組成密集連接圖,將同一個體的關鍵點采用非極大值抑制聚類為完整個體.Insafutdinov 等人[36]改進DeepCut 提出了基于ResNet 的DeeperCut.該算法采用ResNet 來獲取人體關節點,提升檢測精度; 提出圖像條件成對項(ICPT)減少候選區域的關節點,減少網絡的計算量.
DeeperCut 相比于DeepCut,精確度提升了,并且減少了運行時間,從時間效率依舊無法達到實時檢測.為了提高實時檢測效率,Cao 等人[37]提出了基于CPM的OpenPose 方法,OpenPose 的網絡模型如圖3 所示.

圖3 OpenPose 網絡架構圖
該方法利用VGG-19[38]的前10 層為輸入圖像創建特征映射,網絡框架分為兩個并行分支,一個分支預測關節點的置信度; 另一分支預測部分親和域場(PAFs),PAF 表示部件之間的關聯程度; 利用匈牙利算法進行最優化匹配將同一個體的關節點進行聚類,得到人體姿態信息.
Osokin[39]改進OpenPose 提出了Lightweight OpenPose,使用MobileNet v1[40]代替VGG-19 進行特征提取,通過權重共享來減少計算量,為解決感受野較小而造成的效果不佳采用空洞卷積優化算法.Kreiss 等人[41]提出了與OpenPose 相似的PiPaf 網絡,主要包含部分強度場(PIF)和部分關聯場(PAF),分別提升熱圖在高分辨率下的精度和確定關節點的連接,得到人體關節點,與OpenPose 相比性能有明顯提升,該算法適用于低分辨率圖像.針對高分辨率網絡,Cheng 等人[42]在高分辨率網絡HRNet 基礎上提出了更高分辨率網絡(HigherHRNet),提出了一種高分辨率特征金字塔,通過反卷積得到更高分辨率的特征來提高準確度,使用多分辨率監督讓不同層的特征能學習不同尺度的信息,解決多人姿態估計中的尺度變化.Luo 等人[43]為解決人體尺度的變化和人體關鍵點標簽的模糊這兩大挑戰,提出了尺度自適應熱圖回歸(SAHR)方法和權重自適應熱圖回歸(WAHR)方法共同作用以提高人體姿態估計的準確性.Varamesh 等人[44]設計了一種使用混合密度網絡進行空間回歸的框架,提高對象檢測和人體姿態估計的速度和精度.
目前已經有方法可以實現預測.Newell 等人[45]提出了關聯嵌入標簽算法,應用在監督學習卷積神經網絡中,可以同時檢測和分組.Papandreou 等人[46]提出了多任務網絡PersonLab,使用模型對多人圖像中的人體進行關鍵點檢測和實例分割.
與自頂向下的方法相比,自底向上的方法受人數增加影響較小,處理速度較快.但復雜背景和人體遮擋情況會對性能產生較大影響.在復雜的背景和遮擋干擾情況下,缺失人體關節點在將關節點聚類到不同個體上時可能會出現誤判、匹配錯誤等問題,如何處理背景干擾和遮擋情況是將來研究的重點和難點.多人姿態估計方法對比如表2 所示.

表2 多人姿態估計方法對比
目前主流的人體姿態估計數據集可分為單人數據集和多人數據集,單人數據集包含LSP[47]、FLIC[48],多人數據集包含多人數據集COCO[49]、MPII[50]、AI Challenger[51]、PoseTrack[52].表3 對各個數據集的樣本數目、類型、關節點數目以及來源場景進行對比.

表3 人體姿態估計數據集
LSP 數據集是一個體育姿勢數據集,收錄的運動場景下的人體圖像,圖像中只包含一個人體,定義了14 個關節點,樣本數大約2 000 張,圖像大部分與體育有關,該數據集中人體姿勢較復雜.FLIC 數據集來源于好萊塢電影片段,人工對電影片段截圖的圖像進行標注,圖像中包含多人時,只對一個人的關節點進行標注,此數據集不包含人體被遮擋或者清晰度過低的圖像.COCO 數據集由微軟構建,來源于谷歌、Flicker 等下載的圖像,圖像分為訓練集、驗證集和測試集,定義了17 個關節點,包含20 萬張圖像和25 萬個被標注的人體.MPII 數據集來源于YouTube 的日常生活場景,手動檢測包含人的畫面.該數據集包含2.5 萬張圖像,定義了16 個關節點,標注了4 萬個人體目標.AI Challenger 數據集來源于網絡爬取的日常片段,包括訓練集、驗證集、測試集共30 萬張圖像.
不同數據集因自身特點采用的評估指標也不同.常用的二維人體姿態估計指標主要有以下幾種:
(1)部位正確估計百分比(PCP): 關節點正確估計的比例,用于評估人體關節點的定位精度.
(2)目標關節點相似度(OKS): 計算關節點位置距離,檢測關節點的相似度.OKS的計算方式為:

其中,i為標注的關節點編號;di2為檢測到的關節點位置與真實關節點位置的歐氏距離的平方;s2為檢測人體在圖像中面積;ki2為歸一化因子表示標注關節點位移的標準差;vi為正整數是可見關節點.
(3)平均精度AP(average precision): 每一個關節點在整個測試數據集上,檢測結果的平均準確率:

其中,p為人體檢測框編號.AP50、AP75為交并比(intersection over union)分別取值為0.5、0.75 時AP的值,APM、APL分別為中等目標和大目標的AP值.
(4)關節點正確定位百分比(PCK): 用于評估關節點定位的準確度,檢測關節點在標注關節點的閾值內,則該關節點為準確的.
(5)關節點平均精度(APK): 將預測的人體姿態與真實姿態評估后,通過APK得出每個關節點定位準確的平均精度.
表4 列出了多人姿態估計部分算法在COCO 數據集上AP的性能對比.

表4 多人姿態估計算法在COCO 數據集上的性能對比
深度學習和卷積神經網絡的飛速發展,使得人體姿態估計領域不斷前進,在計算機視覺領域突出重要性和發展前景已被學者認可,但依舊存在一些難點與挑戰.
(1)提高檢測精度和效率,雖然有些算法已經取得了較大的進步,但是真正將人體姿態估計應用在無人駕駛、監控檢測等領域還需要更高檢測精度的算法,需要簡化網絡結構,文獻[53]提出可采用輕量級的網絡優化姿態估計算法,保證精度的同時提高效率.
(2)算法受復雜環境影響較大,在實際應用中光照和遮擋情況容易對算法效率產生影響,重疊和遮擋的關節點會導致關節點的誤檢和漏檢.另一方面人體在不同視角會產生信息壓縮的情況,例如仰視或俯視條件會導致無法獲取到正確人體比例.因此如何解決遮擋問題是重要研究方向,文獻[54]提出對于肢體遮擋修復算法的研究非常重要,文獻[55]提出研究姿態連續性信息,可以還原姿態失真.
(3)數據集分布不均勻,目前常用數據集足夠大,但分布不平衡,現有數據集無法對罕見姿態進行檢測,難以滿足人體姿態變化復雜與多樣性,例如存在遮擋情況、角度壓縮的數據集較少,豐富擴充數據集樣本仍然是人體姿態估計研究的重點.
人體姿態估計由傳統方法發展至深度學習的方法,模型和算法性能不斷得到優化和提升,人體姿態估計在電影動畫、無人駕駛、虛擬現實和智能監控等方面都取得了豐碩的研究成果.基于圖結構的傳統方法可為后續的算法研究提供先驗知識,基于深度學習的人體姿態估計方法必然是未來的發展方向.在當前大量圖像數據的背景下,應當充分利用視頻數據,將人體姿態估計應用于更多領域.二維姿態估計作為計算機視覺眾多任務的基礎,具有廣闊的研究前景.