周 燕,劉紫琴,曾凡智,周月霞,陳嘉文,羅 粵
佛山科學技術學院計算機系,廣東佛山 528000
人體姿態(tài)估計是指標注圖片或者視頻中人體關節(jié)點的位置,并對關節(jié)點進行最優(yōu)連接的過程。人體姿態(tài)估計可廣泛地應用在動作識別[1-2]、人機交互[3]、智能跟蹤[4-5]等領域,已成為計算機視覺領域的研究熱點之一。人體姿態(tài)的多樣性、環(huán)境的復雜性以及視角的不定性等因素,使人體姿態(tài)估計面臨著巨大的挑戰(zhàn),受到眾多學者的密切關注。
在深度學習應用于人體姿態(tài)估計之前,大多采用基于圖形結構[6-7]的方法來處理人體姿態(tài)問題。因此,基于圖形結構方法的可形變部件模型[8-9]應運而生,這些方法需要采用局部檢測器,只能為人體關節(jié)點之間所有聯(lián)系中的部分子集建立模型,雖然獲得了較高的效率,但受人物遮擋、拍攝角度、圖像光照等因素影響較大,表示能力有限。此外,這種傳統(tǒng)的方法在特征提取上依賴于人工設定的特征,例如方向梯度直方圖(histogram of oriented gradient,HOG)[10]、尺度不變特征轉(zhuǎn)換(scale invariant feature transform,SIFT)[11]、邊緣[12]特征等,需耗費大量的人工、時間與精力。
隨著人工智能技術的發(fā)展,眾多深度學習模型被提出,例如卷積神經(jīng)網(wǎng)絡、生成對抗網(wǎng)絡、自動編碼器、遞歸神經(jīng)網(wǎng)絡等,這些模型在圖像處理領域中取得了比傳統(tǒng)非深度學習方法更優(yōu)越的成績,在圖像分割、目標檢測、圖像識別等領域取得了顯著的成果。近年來,國內(nèi)外學者們提出了大量的人體姿態(tài)估計方法,并給出了一些公開的人體姿態(tài)估計數(shù)據(jù)集,因此利用基于深度學習的方法進行人體姿態(tài)估計已成為主要的研究方向。
基于深度學習的人體姿態(tài)估計方法可充分地提取圖像信息,采用深度神經(jīng)網(wǎng)絡提取更準確的特征,獲取人體所有關節(jié)點間的聯(lián)系。這種方法不需要局部檢測器以及人工設計特征,不需要設計模型的拓撲結構與關節(jié)點間的交互,利用神經(jīng)網(wǎng)絡在定位與分類上的突出表現(xiàn),獲取更精確的人體關節(jié)點位置。
二維的人體姿態(tài)估計作為描述人體姿態(tài)以及識別人體行為的基礎,二維人體關節(jié)點坐標與骨骼信息可直接影響三維人體姿態(tài)估計的結果。本文將二維人體姿態(tài)估計主要分為單人姿態(tài)估計與多人姿態(tài)估計兩種,對算法進行梳理與分析。
單人姿態(tài)估計可以看作是給定人數(shù),確定人物位置的關節(jié)點定位問題,只需對圖像中給定的單人進行關節(jié)點的定位。單人姿態(tài)估計算法在訓練模型時往往采用有監(jiān)督的訓練方法,因此按照真值(ground truth)的類型不同可將基于深度學習的單人姿態(tài)估計方法分為基于坐標回歸以及基于熱圖檢測。
基于坐標回歸的單人姿態(tài)估計算法通過提取圖像特證,直接得到人體關節(jié)點的坐標信息。其根據(jù)不同的姿態(tài)表示主要分為關節(jié)點表示與骨骼表示,其中采用關節(jié)點作為姿態(tài)表示的方法主要分為多階段直接回歸與迭代誤差反饋兩類,具體分類如圖1所示。
Fig.1 Classification of coordinate based regression for single-person pose estimation圖1 基于坐標回歸的單人姿態(tài)估計分類
1.1.1 關節(jié)點姿態(tài)表示
Toshev 等人[13]提出DeepPose 算法,將深度學習應用到人體姿態(tài)估計,將姿態(tài)估計表述為關節(jié)點直接回歸的問題。在初始階段,采用深度神經(jīng)網(wǎng)絡(deep neural networks,DNN)[14],基于全圖像上下文粗略推測出關節(jié)點的位置,但其在細節(jié)表現(xiàn)方面的能力有限;隨后訓練額外的DNN 回歸量來預測關節(jié)點位置從前一階段到其真實位置的位移,裁剪出所預測關節(jié)點鄰域的局部圖像作為下階段回歸的輸入,在保持輸入圖像大小不變且計算參數(shù)不增多的情況下,設計級聯(lián)姿態(tài)回歸器以獲得精度更高的關節(jié)點位置,其網(wǎng)絡如圖2 所示。
Fig.2 Network architecture of DeepPose圖2 DeepPose網(wǎng)絡架構圖
多階段直接回歸方法雖然可以學習輸入空間的豐富表示,但無法在輸出空間對依賴關系進行顯示的建模。人體存在部分肢體比例相互約束,身體左右對稱,關節(jié)限制(如肘部不能向后彎曲)等特征,二維人體姿態(tài)是復雜且高度結構化的。Carreira 等人[15]基于GoogleNet[16]提出了一個迭代誤差反饋框架(iterative error feedback,IEF),引入自上而下的反饋,將分層特征提取器的表達能力擴展到輸入和輸出空間,并不是直接預測輸出結果,而是預測當前估算值的偏移量并進行迭代校正;對人體結構關系建模,更容易地確定可見的關節(jié)點,并估計被遮擋的關節(jié)點,迭代誤差反饋框架如圖3 所示。
1.1.2 骨骼姿態(tài)表示
Fig.3 Framework of iterative error feedback圖3 IEF 迭代誤差反饋框架
在以上基于回歸的工作中,大多只簡單地降低每個關節(jié)點位置的誤差,忽略了姿態(tài)的內(nèi)部結構,導致關節(jié)點間的依賴性沒有被很好利用,骨骼信息相較于關節(jié)點更原始與穩(wěn)定,且更容易學習。Sun 等人[17]提出了一個結構感知的回歸方法(compositional pose regression,CPR),采用一種重新參數(shù)化的骨骼姿態(tài)來代替關節(jié)點,利用關節(jié)的連接結構定義一個組合的損失函數(shù)對骨骼之間的相互依賴關系進行編碼,這種方法不僅適用于人體二維姿態(tài)估計,更可推廣到人體三維姿態(tài)估計。
總體而言,這種直接從輸入的RGB 圖像回歸坐標位置的映射是高度非線性且缺乏魯棒性的,在人體二維姿態(tài)估計的工作中,更多用到基于熱圖檢測的方法。
基于熱圖檢測則先獲取人體關節(jié)點熱圖,其像素值表示該關節(jié)點在此位置的概率,再獲取關節(jié)點定位信息。基于熱圖檢測的單人姿態(tài)估計方法主要分為三大類:引入人體結構先驗、設計網(wǎng)絡結構、引入時間約束。具體分類如圖4 所示。
Fig.4 Classification of heat map detection for single-person pose estimation圖4 基于熱圖檢測的單人姿態(tài)估計分類
1.2.1 引入人體結構先驗
Tompson 等人[18]采用深度卷積網(wǎng)絡與圖形結構模型相結合的方式,提出由深度卷積網(wǎng)絡與馬爾科夫隨機場(Markov random field,MRF)[19]組成的混合模型。第一階段是基于卷積神經(jīng)網(wǎng)絡的人體關節(jié)點定位,采用重疊的感受野以及多分辨率輸入,盡可能地減少網(wǎng)絡冗余,輸出關節(jié)點熱圖;通過驗證集發(fā)現(xiàn)存在許多假陽性的關節(jié)點熱圖以及不符合人體解剖學的姿態(tài)。在第二階段,采用改進的馬爾科夫隨機場空間模型來約束關節(jié)點的相互聯(lián)系,每個關節(jié)點都以與其他關節(jié)成對的方式來創(chuàng)建全連接圖。最后,將第一階段的關節(jié)熱圖檢測器與第二階段的空間模型合并到統(tǒng)一的模型中,先訓練關節(jié)檢測器并存儲輸出的熱圖,再使用這些熱圖來訓練空間模型,最后將訓練好的關節(jié)檢測器與空間模型相結合對整個網(wǎng)絡進行反向傳播。然而傳統(tǒng)的卷積神經(jīng)網(wǎng)絡包括池化層與子采樣層,雖可以減少計算量,并引入不變性防止過度訓練,但也降低了定位的精度。為此,Tompson 等人做了相應的改進[20],對卷積神經(jīng)網(wǎng)絡使用增加的池化量來提高計算效率,可以在不增加大量計算的情況下獲得較高的空間精度。Isack 等人[21]提出輕量化姿態(tài)估計模型RePose,采用類似于傳統(tǒng)的基于部件模型的方法,引入人體運動學結構約束;采用端到端的訓練方式學習幾何先驗,通過傳播低分辨率的卷積特征來更新細化關節(jié)點或身體部位姿態(tài)信息。
由于結合馬爾科夫隨機場的網(wǎng)絡卷積核較大,訓練規(guī)模大,Yang 等人[22]采用樹結構圖模型對人體關節(jié)點間聯(lián)系進行建模,以簡化圖結構網(wǎng)絡?;跅l件隨機場(conditional random field,CRF)[23]構建的樹狀模型,采用混合訓練模型,結合深度卷積網(wǎng)絡與樹型結構模型進行端到端的訓練。
1.2.2 設計網(wǎng)絡結構
(1)卷積位姿機。Wei 等人[24]提出了一種基于序列化的網(wǎng)絡結構卷積位姿機(convolutional pose machines,CPM),網(wǎng)絡如圖5 所示。以Pose Machines[25]算法作為基礎,通過卷積架構的順序組合學習隱式空間模型,設計和訓練這種架構以系統(tǒng)學習圖像特征和圖像相關空間模型以進行結構化預測;CPM 的每個階段以上一階段生成的圖像特征和置信圖作為輸入,置信圖為后續(xù)階段每個關節(jié)點的位置空間不確定性提供了可表達的非參數(shù)編碼,從而使CPM 可以學習豐富的隱式空間模型;根據(jù)計算每階段置信圖以及標簽的損失更新該階段的參數(shù),來加強中間監(jiān)督以解決訓練中梯度消失的問題。
Fig.5 Network architecture of convolutional pose machines圖5 CPM 網(wǎng)絡架構圖
(2)沙漏堆疊網(wǎng)絡。與CPM 的順序卷積結構不同,Newell等人[26]提出了一種基于編碼器和解碼器的堆疊沙漏新型卷積網(wǎng)絡結構(stacked hourglass networks,SNH),如圖6 所示。堆疊前的沙漏模塊如全卷積網(wǎng)絡(fully convolutional networks,F(xiàn)CN)[27],包含若干殘差模塊[28],可以在多個分辨率上處理空間信息以進行關節(jié)點預測;將多個沙漏堆疊,前一個的輸出作為后一個的輸入,將重復的自底向上(從高分辨率到低分辨率)、自頂向下(從低分辨率到高分辨率)的處理與中間監(jiān)督相結合,能夠重新評估整個圖像的初始估計和特征,以提高網(wǎng)絡的性能。
此外,還有許多基于沙漏堆疊網(wǎng)絡做出改進的工作,Chu 等人[29]在沙漏堆疊的網(wǎng)絡結構基礎上,引入了注意力機制,將具有多上下文注意機制的卷積神經(jīng)網(wǎng)絡整合到端到端的人體姿態(tài)估計框架中,從多種分辨率的特征中生成熱圖,以此關注人體的整體一致性;利用條件隨機域?qū)釄D中相鄰關節(jié)點的關系進行建模,來關注身體不同部位的細節(jié)描述,進一步將人體的整體特征與身體部位特征結合起來;設計了新型的沙漏殘差模塊(hourglass residual units,HRUs)來增加網(wǎng)絡的感受野,可以學習和組合具有不同分辨率的特征。
Yang 等人[30]基于沙漏堆疊網(wǎng)絡設計了一個金字塔特征模塊(pyramid residual module,PRMs)代替沙漏網(wǎng)絡的殘差模塊,來提升深度卷積神經(jīng)網(wǎng)絡在尺度上的不變性;提出將當前權值初始化方案推廣到多支路網(wǎng)絡結構的理論推導。
Ke 等人[31]基于沙漏堆疊網(wǎng)絡提出了一種用于人體姿態(tài)估計的多尺度結構感知神經(jīng)網(wǎng)絡(multi-scale structure-aware network,MSSA),采用多尺度監(jiān)督網(wǎng)絡(multi-scale supervision network,MSS-net)加強語義特征學習來融合多尺度的特征,并設計多尺度回歸網(wǎng)絡(multi-scale regression network,MSR-net)優(yōu)化人體整體的結構,多尺度監(jiān)督網(wǎng)絡與多尺度回歸網(wǎng)絡都是利用結構感知損失從多尺度特征中學習人體骨架結構,針對復雜場景中恢復遮擋關節(jié)點時具有很強的先驗性。
Ning 等人[32]提出一個知識引導的姿態(tài)分形網(wǎng)絡,采用沙漏堆疊網(wǎng)絡的思想和Inception-ResNet[33]模塊構建分形網(wǎng)絡,以捕獲姿態(tài)模型中人體關節(jié)之間的多尺度依賴關系;在訓練過程中,將傳統(tǒng)的霍夫變換特征和梯度方向直方圖作為先驗知識引入到深度卷積神經(jīng)網(wǎng)絡中,以防止關節(jié)點的錯誤連接。
Zhang 等人[34]提出了一個快速姿態(tài)估計模型(fast pose distillation,F(xiàn)PD),構建輕量級的沙漏堆疊網(wǎng)絡,將堆疊的沙漏模塊數(shù)量減少一半,僅采用4 個沙漏模塊,以降低網(wǎng)絡復雜度;引用知識蒸餾的原理,預先訓練好一個強大的教師姿態(tài)模型,如原始的沙漏堆疊網(wǎng)絡,將潛在的知識從教師模型轉(zhuǎn)移到輕量級網(wǎng)絡中,以在計算預算有限的情況下提升模型性能。
Bulat 等人[35]提出結合沙漏堆疊網(wǎng)絡與U-Net[36]的混合網(wǎng)絡結構,以降低原始沙漏堆疊網(wǎng)絡模型大小與復雜度;設計了一種門控機制來控制模塊內(nèi)每個通道的數(shù)據(jù)流,這種算法相較于原始沙漏堆疊網(wǎng)絡速度提升兩倍以上,且模型性能沒有下降。
(3)前饋結合遞歸網(wǎng)絡。Belagiannis 等人[37]提出了一種人體姿態(tài)估計的遞歸模型,將前饋模塊與遞歸模塊相結合,其中遞歸模塊可以迭代地捕獲上下文信息以提高性能,并可以以端到端、從零開始對模型進行訓練,加入輔助損耗,提高關節(jié)點估計精度。
Fig.6 Architecture of stacked hourglass networks圖6 堆疊沙漏網(wǎng)絡結構
(4)生成對抗網(wǎng)絡。Chen 等人[38]采用生成對抗網(wǎng)絡(generative adversarial nets,GANs)策略[39],針對單目圖像中人體關節(jié)點遮擋與人體重疊影響姿態(tài)估計準確性這一問題,結合人體骨架結構先驗,提出了一種新的基于結構感知的卷積網(wǎng)絡來隱式地在深度網(wǎng)絡訓練中考慮人體先驗信息,設計一個堆疊的多任務網(wǎng)絡來預測姿態(tài)熱圖和遮擋熱圖,以預測更真實的姿態(tài);網(wǎng)絡包括姿態(tài)生成器、姿態(tài)鑒別器和確信度鑒別器,姿態(tài)生成器由兩個沙漏模塊組成,共生成32 張熱圖,包括對16 個關節(jié)點的檢測熱圖以及對應的遮擋預測,姿態(tài)鑒別器與確信度鑒別器用以區(qū)分不滿足身體約束關節(jié)點。Chou 等人[40]也提出使用生成對抗的策略解決擁擠場所關節(jié)遮擋問題,網(wǎng)絡同樣包括姿態(tài)生成器與鑒別器,且都為一個沙漏網(wǎng)絡,姿態(tài)生成器生成關節(jié)點熱圖,鑒別器采用熱圖與RGB 圖像作為輸入,并將其解碼為一組新的熱圖,以區(qū)分真實的熱圖和虛假的熱圖。吳春梅等人[41]提出了深度卷積生成對抗模型(deep convolution generative adversarial network,DCGAN),對生成對抗網(wǎng)絡的生成器與判別器結構進行了優(yōu)化,基礎結構也為沙漏網(wǎng)絡,用以編碼第一層次結構(親本)與第二層次結構(子本)間的人體空間關系,采用殘差模塊與線性模塊對沙漏網(wǎng)絡的輸入和輸出進行預處理與后處理,獲取置信度得分圖;引入了新的損失函數(shù)來規(guī)范親本與子本間的關系;設計分層對抗網(wǎng)絡(hierarchical adversarial network,HAN)和層次感知損失以提高身體各個部位位置的估計精度。
(5)簡單基線。Xiao 等人[42]提出簡單的姿態(tài)估計基線(simple baselines),來降低算法的復雜度,在沙漏殘差模塊中加入幾層反卷積,將低分辨率的特征圖擴張為原圖大小,以此預測關節(jié)點熱圖,網(wǎng)絡如圖7所示。
Fig.7 Network architecture of simple baselines圖7 簡單基線網(wǎng)絡結構
(6)高分辨率網(wǎng)絡。針對沙漏堆疊網(wǎng)絡在處理過程中需要將低分辨率恢復到高分辨率,Sun 等人[43]于2019 年提出一個并行連接的高分辨率網(wǎng)絡(highresolution networks,HRNet)來代替大多數(shù)現(xiàn)有的串聯(lián)方案,如圖8 所示。這種方法能夠保持高分辨率,而不是通過從低到高的過程恢復分辨率,執(zhí)行重復的多尺度融合以提升高分辨率表示。
Fig.8 Architecture of high-resolution networks圖8 高分辨率網(wǎng)絡結構
1.2.3 引入時間約束
針對視頻流的二維人體姿態(tài)估計,由于在時間相近的視頻幀之間存在著很強的姿態(tài)位置依賴性,Pfister 等人[44]將光流思想[45]應用到二維姿態(tài)估計,輸入視頻當前幀與相鄰幀,通過全卷積網(wǎng)絡獲取這些幀的關節(jié)點熱圖,采用光流來對齊相鄰幀與當前幀的關節(jié)點預測熱圖;最后使用參數(shù)化合并層學習將相鄰幀關節(jié)點熱圖合并為整體的置信度圖。Luo 等人[46]結合長短期記憶網(wǎng)絡(long short-term memory,LSTM)的思想[47],首先對多階段的卷積神經(jīng)網(wǎng)絡施加權值共享方案,建立新的遞歸神經(jīng)網(wǎng)絡以加快視頻調(diào)用網(wǎng)絡的速度;采用LSTM 網(wǎng)絡來學習視頻幀間的時間依賴性,及時地捕捉關節(jié)的幾何關系以提高關節(jié)點預測的穩(wěn)定性。Artacho 等人[48]提出了人體姿態(tài)估計框架(unified human pose estimation,UniPose),基于“瀑布式”的空間池架構,結合多尺度特征表示與大視野(fields-of-view,F(xiàn)OV)以增大網(wǎng)絡感受野,利用上下文信息預測關節(jié)點;采用LSTM 網(wǎng)絡處理視頻相鄰幀,可將其擴展至視頻的人體姿態(tài)估計。
總體而言,基于熱圖檢測的方法可以很好地處理多模式的輸出,在高精度區(qū)域也可保持較高的準確率,在二維姿態(tài)估計工作中更常用基于熱圖檢測的方法,相關算法優(yōu)缺點比較如表1 所示,其中引入時間約束的方法無分類展開,因此算法一欄處為空白。
Table 1 Comparison of heat map based detection algorithms表1 基于熱圖檢測算法對比
Table 2 Comparison of single-person pose estimation algorithms表2 單人姿態(tài)估計算法對比
基于坐標回歸與基于熱圖檢測的方法各有優(yōu)缺點,如表2 所示。由于基于坐標回歸方法存在顯著的局限性,缺乏魯棒性,基于熱圖檢測方法采用以關節(jié)點位置為中心的二維高斯分布表示關節(jié)點位置,具有較高的魯棒性,仍是一種主流的方法。
基于深度學習的二維多人姿態(tài)估計,由于圖像中人物的數(shù)量以及位置都是未知,需要完成檢測與分組兩種任務,相較于單人姿態(tài)估計任務難度更大。多人姿態(tài)估計根據(jù)算法步驟的不同主要可分為二步法(two-stage)和一步法(single-stage)兩類。
二步法的多人姿態(tài)估計采用兩個步驟獲取人體關節(jié)點,根據(jù)檢測與分組步驟順序的不同主要分為自頂向下(top-down)與自底向上(bottom-up)的兩種方法,二步法的多人姿態(tài)估計具體分類如圖9 所示。
2.1.1 自頂向下
自頂向下的方法主要有兩部分構成:人體檢測器與單人姿態(tài)估計器,首先采用檢測器檢測框出人體,再對框出的人體做類似單人姿態(tài)估計的操作,算法流程如圖10 所示。
Fig.9 Classification of two-stage for multi-person pose estimation圖9 二步法多人姿態(tài)估計分類
Fig.10 Flow chart of top-down圖10 自頂向下算法流程
人體檢測框的誤檢與冗余等可直接影響后續(xù)單人姿態(tài)估計效率,因此自頂向下的方法側(cè)重于檢測器的研究,常用的人體姿態(tài)檢測器有Faster R-CNN(faster region-convolutional neural networks)[49]、Mask R-CNN(mask region-convolutional neural networks)[50]、特征金字塔網(wǎng)絡(feature pyramid networks,F(xiàn)PN)[51]等,可結合不同的單人姿態(tài)估計算法。表3 列出各自頂向下算法人體檢測器與單人姿態(tài)估計器的主網(wǎng)絡。
Table 3 Backbone networks of top-down methods表3 自頂向下算法主網(wǎng)絡
(1)采用Faster R-CNN 人體檢測器。Iqbal等人[52]采用Faster R-CNN 檢測器,首先檢測框出人體;再基于CPM 網(wǎng)絡對人體框中人體進行單人姿態(tài)估計獲取一組候選的關節(jié)點,對候選的關節(jié)點進行全連接,最后通過整數(shù)線性規(guī)劃(integer linear programming,ILP)獲得最終的關節(jié)點及其連接。
Fang 等人[53]提出了一個新的區(qū)域多人姿態(tài)估計框架(regional multi-person pose estimation,RMPE),首先采用Faster R-CNN 作為人體檢測器,設計對稱式變壓器網(wǎng)絡(symmetric spatial transformer network,SSTN)獲取高精度的人體檢測框以及參數(shù)式非極大抑制(non-maximum suppression,NMS)解決檢測框冗余問題;基于沙漏堆疊網(wǎng)絡進行單人姿態(tài)估計,設計姿態(tài)引導生成器(pose-guided proposals generator,PGPG)來增加訓練樣本。
Papandreou 等人[54]提出了一種簡單而有效的自頂向下方法,在第一階段,采用Faster R-CNN 檢測器預測人體位置與大小,結合非極大抑制(NMS)與人體關節(jié)點相似度(object keypoint similarity,OKS)來減少人體框檢測誤差;第二階段,基于ResNet-101 CNN[28]網(wǎng)絡,首先對第一階段檢測出的人體框進行圖像分割,將其調(diào)整為統(tǒng)一的長寬比及大小,再預測人體框中關節(jié)點熱圖和其偏移量,通過聚合熱圖和偏移量獲得高精度的關節(jié)點預測。
Li等人[55]同樣采用Faster R-CNN 檢測器,基于簡單基線單人姿態(tài)估計的思想,改進了RMPE,提出CrowdPose 以解決擁擠場景下的人體姿態(tài)估計問題,聯(lián)合候選單人姿態(tài)估計,對目標關節(jié)點和干擾關節(jié)點設置不同的損失值,來對每個關節(jié)點進行多峰預測以在人體檢測框不準確的情況下獲取較準確的關節(jié)點;提出全局最大關節(jié)點關聯(lián),表示關節(jié)點間的連接關系與概率,這種方法對擁擠場景中不可避免的沖突具有較強的魯棒性。
Zhang 等人[56]以Faster R-CNN 作為人體檢測器,采用編解碼器網(wǎng)絡結構,設計了高效的級聯(lián)上下文混合器(cascaded context mixer,CCM),可學習空間上下文信息以檢測關節(jié)點;制定了三種有效的訓練策略,提出了聯(lián)合訓練策略和知識提取的方法對大量未標記樣本進行知識蒸餾,以及一種人體檢測挖掘策略來遷移人體實例在訓練和測試之間的不一致性;最后,制定了四種后處理:拋物線近似、非極大抑制Soft-NMS、對熱圖進行高斯濾波、對熱圖進行翻轉(zhuǎn)操作,用以細化關節(jié)點的檢測。
Fig.11 Mask R-CNN for instance segmentation圖11 Mask R-CNN 的實例分割
Fig.12 Architecture of cascaded pyramid network圖12 級聯(lián)金字塔網(wǎng)絡結構
(2)采用Mask R-CNN 人體檢測器。He 等人[50]提出了新的對象實例分割框架Mask R-CNN,如圖11 所示。實例分割需要檢測出目標的位置并且對目標進行分割,結合目標檢測算法Faster R-CNN 與語義分割算法(FCN)[27]。在第一階段,與Faster R-CNN 相同,為候選區(qū)域生成網(wǎng)絡(region proposal network,RPN);第二階段,添加了一個分支以預測每個感興趣分割區(qū)域(region of interest,RoI)的掩碼,提出了新的RoIAlign 策略,采用雙線性插值來更精確地獲取每個區(qū)域相應特征。
(3)采用FPN 人體檢測器。Chen 等人[57]采用特征金字塔網(wǎng)絡檢測人體,并提出了新的級聯(lián)金字塔網(wǎng)絡結構(cascaded pyramid network,CPN)作為單人姿態(tài)估計器,以緩解單人姿態(tài)估計中關節(jié)點遮擋等難題,該網(wǎng)絡包括兩個部分GlobalNet 和RefineNet。GlobalNet 為功能金字塔網(wǎng)絡,可簡單地定位關節(jié)點,但無法準確識別被遮擋關鍵點;RefineNet 為細化網(wǎng)絡,與沙漏模塊末端的上采樣特征不同,其將金字塔網(wǎng)絡的多尺度特征串聯(lián)起來,通過擴大感受野優(yōu)化對遮擋關節(jié)點的檢測,CPN 網(wǎng)絡分為多個階段,第一個階段會產(chǎn)生初步的關鍵點的檢測效果,接下來的階段均以前一個階段的預測輸出和從原圖提取的特征作為輸入,以提高關節(jié)點的檢測精度,其網(wǎng)絡結構如圖12 所示。
2.1.2 自底向上
自底向上的方法也主要由兩部分構成,人體關節(jié)點檢測器和關節(jié)點候選分組。首先采用檢測器定位出圖像中所有人的關節(jié)點,再對關節(jié)點空間建模,最后對關節(jié)點進行最優(yōu)分組,具體算法流程如圖13所示。自底向上的方法重點關注關節(jié)點分組算法的設計,主要有整數(shù)線性規(guī)劃與基于貪婪解碼兩種。
Fig.13 Flow chart of bottom-up圖13 自底向上算法流程
(1)整數(shù)線性規(guī)劃。Pishchulin 等人[58]提出了一種聯(lián)合解決檢測和姿態(tài)估計的方法Deepcut,首先采用改進的Fast R-CNN[59]檢測圖像中所有人體的關節(jié)點,組成候選關節(jié)點密度圖;然后標記檢測出的關節(jié)點,以確定關節(jié)點對應的人體部位;再通過討論候選關節(jié)點的聚類,采用整數(shù)線性規(guī)劃進行優(yōu)化,有效地進行非極大值抑制將屬于同一個人的關節(jié)點歸為一類;最后結合標記的關節(jié)點以及歸類好的關節(jié)點,對關節(jié)點進行最優(yōu)連接獲取多人姿態(tài)信息。
針對關節(jié)點密度圖的聚類以及優(yōu)化算法復雜度較高,Insafutdinov 等人[60]改進Deepcut提出了Deepercut 算法,采用更深的殘差網(wǎng)絡Resnet 獲取人體關節(jié)點,提高了檢測精度;采用圖片約束成對關系(imageconditioned pairwise terms)來減少眾多候選區(qū)域的關節(jié)點,降低了計算量,提高了效率與魯棒性。
(2)貪婪解碼器。Cao 等人[61]提出了姿態(tài)估計方法OpenPose,首先采用VGG-19[62]提取圖像特征,將特征輸入到一個雙分支網(wǎng)絡,兩個分支都為類CPM的順序循環(huán)迭代網(wǎng)絡,分別獲取關節(jié)點置信圖以及部位親和域(part affinity fields,PAFs),部位親和域為一組二維向量場,用于編碼圖像中肢體部位的位置與方向;將關節(jié)點的最優(yōu)連接簡化為最大權重二部圖匹配問題,對關節(jié)點進行聚類構成關節(jié)點二部圖,對部位親和域關節(jié)點間的向量場進行積分,積分結果表示關節(jié)點連接的權重,最后采用匈牙利算法進行最優(yōu)化匹配,獲取所有關節(jié)點間連接,關節(jié)點二部圖如圖14 所示。
Fig.14 Bipartite graphs of joints圖14 關節(jié)點二部圖
Newell等人[63]提出關聯(lián)嵌入標簽算法Associative Embedding,以端到端的方式聯(lián)合關節(jié)點檢測與分組,首先采用沙漏堆疊網(wǎng)絡同時生成每個關節(jié)點的熱圖,并在每個關節(jié)的像素位置生成一個標記,即對應的嵌入標簽(embedding tag);再通過比較檢測的標記值和按照歐氏距離匹配足夠接近的標記值,對人體關節(jié)點檢測進行分組。
Sekii[64]提出姿態(tài)建議網(wǎng)絡(pose proposal networks,PPNs),結合YOLO[65]目標檢測的思想,與大多基于熱圖的像素級別檢測不同,采用網(wǎng)格的形式檢測關節(jié)點位置與關節(jié)點連接信息;采用類似于部位親和域的二部圖匹配方法,獨立確定相鄰關節(jié)點的匹配,為了降低計算成本,使用感受野較窄且相對較淺的網(wǎng)絡,采用CNN(convolutional neural networks)估計的部分關聯(lián)得分來隱式建模不相鄰關節(jié)點間的關系。
Papandreou 等人[66]提出了一個結合姿態(tài)估計與實例分割的多任務網(wǎng)絡PersonLab,采用殘差網(wǎng)絡預測每個人各關節(jié)點的聯(lián)合熱圖、關節(jié)點偏移量以及人體分割掩模;利用基于樹形運動學圖的貪婪解碼算法將關鍵點分組到人體檢測實例中。
Osokin[67]在OpenPose 的基礎上提出了輕量級的方法Lightweight OpenPose,采用MobileNet v1[68]替換VGG-19 提取圖像特征;將雙分支網(wǎng)絡權值共享以減少計算量,在最后兩個卷積層再分出兩個分支分別預測關鍵點定位和部位親和域;最后結合空洞卷積的方式優(yōu)化了OpenPose。
Kreiss 等人[69]針對分辨率較低的擁擠場景提出PifPaf 算法,算法主網(wǎng)絡為殘差網(wǎng)絡,其中部位強度場(part intensity field,PIF)分別預測關節(jié)點置信圖、偏移量、損失函數(shù)參數(shù)以及關節(jié)點尺度信息以獲取人體關節(jié)點位置;部位關聯(lián)域(part association field,PAF)對于預測的每個關節(jié)點,尋找距離最近的關節(jié)點并連接;最后基于貪婪解碼算法,確定置信度最高的關節(jié)點,采用PAF 依次對關節(jié)點進行連接,由于PAF 的編碼方式能夠在低分辨率映射中存儲細粒度信息,使該算法適用于低分辨率圖像。
Cheng 等人[70]在高分辨率網(wǎng)絡HRNet 基礎上做了改進提出了HigherHRNet網(wǎng)絡,以HRNet為主干增加了一個高效的反卷積模塊,采用多分辨率訓練和熱圖聚合策略,可預測具有尺度感知的熱圖,提高了關節(jié)點預測效率且精確度遠高于HRNet,網(wǎng)絡如圖15所示,再采用關聯(lián)嵌入標簽算法對關節(jié)點進行分組。
Fig.15 Architecture of HigherHRNet圖15 HigherHRNet網(wǎng)絡結構
自頂向下與自底向上的多人姿態(tài)算法由于算法步驟的差異存在不同的特點,表4 具體列出了這兩種方法的優(yōu)缺點。在對姿態(tài)估計精度要求較高的場景下較適合選擇自頂向下的方法,對時間效率要求較高的情況下,比如需進行實時的多人姿態(tài)估計,更適合采用自底向上的方法。
Table 4 Comparison of two-step multi-person pose estimation algorithms表4 二步法多人姿態(tài)估計算法對比
為了簡化二步法多人物姿態(tài)估計的流程,提高多人姿態(tài)估計的效率,Nie 等人[71]于2019 年提出了單階段的多人姿態(tài)器(single-stage multi-person pose machine,SPM),如圖16 所示,首先提出了一種新的結構化姿態(tài)表示方法(structured pose representation,SPR)來簡化人體分割和關節(jié)點定位的流程,SPR 采用根節(jié)點來確定人體位置,檢測人體所有關節(jié)點相對于根節(jié)點的偏移量,在獲取根節(jié)點熱圖后通過回歸得到若干個偏移量,即可獲取人體所有關節(jié)點坐標;針對關節(jié)點離根節(jié)點較遠而導致從圖像表示映射到矢量域的偏移估計帶來困難的問題,還提出一種分層的SPR,將遠距離偏移分解為累積的短偏移,根據(jù)關節(jié)的自由度和變形程度將根關節(jié)和人體關節(jié)點劃分為四個層次,通過相鄰層次關節(jié)之間的短距離偏移來識別關節(jié)位置;基于堆疊的沙漏網(wǎng)絡構建SPM,先降低特征圖分辨率,學習抽象語義表示,然后上采樣人體關節(jié)點定位特征圖以重用低層次空間信息來精煉高級語義信息,此外添加偏移回歸分支來擴展沙漏網(wǎng)絡,用于估計人體關節(jié)點偏移量,從而實現(xiàn)高效的單階段多人姿態(tài)估計。
Fig.16 Single-stage pose estimation solution of SPM圖16 SPM 單階段姿態(tài)估計方案
二步法多人姿態(tài)估計方法主要分為兩個步驟,包括人體框、關節(jié)點的檢測與關節(jié)點分組,算法流程較復雜;一步法的多人姿態(tài)估計則不用分步驟,可一步到位獲取多人姿態(tài)信息,簡化了多人姿態(tài)估計流程,是一種較新穎的多人姿態(tài)估計方法。
基于深度學習的人體姿態(tài)估計研究需要依賴大量數(shù)據(jù)來訓練模型,數(shù)據(jù)樣本量越大,越多樣性,則越有利于開發(fā)強魯棒性的人體姿態(tài)估計模型。近年來,許多用于人體姿態(tài)估計的數(shù)據(jù)集也相繼被公布,表5 列出了幾種國際標準數(shù)據(jù)集適用類型、標注的關節(jié)點數(shù)量、樣本數(shù)量以及數(shù)據(jù)集來源。
不同的數(shù)據(jù)集具有不同的特征和不同的任務要求,常用的二維人體姿態(tài)估計主要有以下幾種:部位正確估計百分比(percentage of correct parts,PCP)[81],為早期姿態(tài)估計的評估指標,用于評估肢體的定位精度,若肢體的兩個端點在相應真值端點的閾值內(nèi),則該肢體被正確定位;關節(jié)點正確定位百分比(percentage of correct keypoints,PCK)[82],評估人體關節(jié)點定位的準確率,若候選關節(jié)點落在真實關節(jié)點的閾值像素內(nèi),則該候選關節(jié)點是正確的;關節(jié)點平均精度(average precision of keypoints,APK)[82],通過PCK 評估將預測的姿態(tài)分配給真值姿態(tài)后,由APK得出每個關節(jié)點定位準確的平均精度;對象關節(jié)點相似度(object keypoint similarity,OKS)多人姿態(tài)估計評價指標,計算真值和所預測人體關節(jié)點的相似度。
分別列出經(jīng)典的單人姿態(tài)估計算法在MPII 數(shù)據(jù)集上,以0.5 作為容忍度的PCKh@0.5 實驗結果,以及多人姿態(tài)估計算法在MSCOCO 數(shù)據(jù)集上AP(average precision)的實驗結果以及預測時長,對比各算法的準確率,如表6 與表7 所示。
Table 5 Datasets of human pose estimation表5 人體姿態(tài)估計數(shù)據(jù)集
根據(jù)實驗數(shù)據(jù)可知,在單人姿態(tài)估計算法中基于熱圖檢測比基于坐標回歸的方法關節(jié)點定位準確率普遍更高,更具有魯棒性;在多人姿態(tài)估計算法中,一步法由于簡化了算法步驟,在時間效率上遠勝于二步法。
近年來,二維人體姿態(tài)估計算法已取得顯著的成果,但仍然存在許多問題待突破:
(1)算法效率受復雜環(huán)境因素影響較大。
光照以及遮擋等問題,在多人姿態(tài)估計中易導致人體檢測框的誤檢和冗余,重疊的關節(jié)點導致關節(jié)點分組的錯誤;不同視角導致無法正確判斷人體比例,影響姿態(tài)估計魯棒性。
針對光照、視角與遮擋等問題,文獻[83]提出可以研究肢體遮擋的修復算法,文獻[84]提出利用人體動作的連續(xù)性解決遮擋問題。此外,單人姿態(tài)估計可考慮增大卷積神經(jīng)的感受野來優(yōu)化網(wǎng)絡,如文獻[28]采用堆疊的沙漏模塊層來增大感受野;多人姿態(tài)估計的自頂向下的方法重點關注人體檢測器的研究,減少人體框檢測錯誤與冗余,可提升后續(xù)單人姿態(tài)估計精度,如文獻[48]設計適用于姿態(tài)估計的人體實例分割框架Mask R-CNN,提高人體檢測精度;多人姿態(tài)估計的自底向上方法可研究適合姿態(tài)估計的關節(jié)點分組方法,如文獻[59]的部位親和域分組方法,文獻[85]設計編解碼殘差的人體關鍵點分配網(wǎng)絡可大大減少由于遮擋以及密集環(huán)境對估計結果的影響。
(2)算法復雜無法滿足實時預測的要求。
基于深度學習的神經(jīng)網(wǎng)絡運算量較大,且相較于分類任務和檢測任務,人體姿態(tài)檢測需要更高分辨率的輸出特征圖,其將大大增加算法計算量。
針對改進網(wǎng)絡的時候往往會遇到精度提高但是計算量增大,時間效率降低的問題,可采用輕量級網(wǎng)絡優(yōu)化姿態(tài)估計算法,將輕量級的網(wǎng)絡結合到姿態(tài)估計,簡化姿態(tài)估計網(wǎng)絡在保證算法精度的同時提高時間效率,如文獻[33]將堆疊沙漏網(wǎng)絡的沙漏模塊減少一半來簡化網(wǎng)絡;文獻[65]結合已有的輕量級算法MobileNet v1 來優(yōu)化網(wǎng)絡;文獻[86]設計了針對姿態(tài)估計的輕量級網(wǎng)絡。
Table 6 Percentage of correct keypoints of single-person pose estimation algorithms on MPII表6 單人姿態(tài)估計算法在MPII上的關節(jié)點正確定位百分比 %
Table 7 Average precision of keypoints of multi-person pose estimation algorithms on MSCOCO表7 多人位姿估計算法在MSCOCO 上的關節(jié)點平均精度
(3)人體姿態(tài)的變化復雜與多樣。
對于人體不同的運動姿態(tài),估計結果精度不同,幅度較大的姿態(tài)往往預測準確度較低。
針對人體姿態(tài)的高度復雜問題,可設計新的關節(jié)點檢測方法,如文獻[69]采用根節(jié)點來確定人體位置,以分層的方式計算關節(jié)點到根節(jié)點的偏移量;此外還可以引入時間約束,研究姿態(tài)的連續(xù)性,如文獻[42]將光流思想應用于姿態(tài)估計來對齊相鄰幀與當前幀的關節(jié)點熱圖。
(4)訓練數(shù)據(jù)集不足與分布不均勻。
已有常用的數(shù)據(jù)集數(shù)據(jù)足夠大,但姿態(tài)分布仍不平衡,針對許多不同的場景已提出了相應的數(shù)據(jù)集,但對于人體靈活的運動,仍無法提出較為全面的數(shù)據(jù)集。
針對現(xiàn)有數(shù)據(jù)集無法滿足人體姿態(tài)多樣性,對現(xiàn)有數(shù)據(jù)集樣本進行擴充與豐富仍是人體姿態(tài)估計算法研究的重點;此外可研究高效的訓練方法,設計弱監(jiān)督學習、半監(jiān)督學習等方法來提升訓練效率。
二維人體姿態(tài)估計作為近年來計算機視覺的研究熱點,在動作識別、運動分析、智能監(jiān)控、無人駕駛、虛擬現(xiàn)實、人機交互與電影動畫等領域都取得了廣泛的應用。本文對近年來基于深度學習的二維人體姿態(tài)估計主要算法按時間發(fā)展進行了闡述,并對算法進行了分析與對比,最后探討了深度學習在二維人體姿態(tài)估計中面臨的挑戰(zhàn)以及未來發(fā)展趨勢。