1. 程式人生 > >人體姿態估計(Human Pose Estimation)文獻綜述

人體姿態估計(Human Pose Estimation)文獻綜述

一、研究背景

維基百科對人體姿態估計的定義如下:

Articulated body pose estimation in computer vision is the study of algorithms and systems that recover the pose of an articulated body, which consists of joints and rigid parts using image-based observations. 

Human Keypoint Detecting requires localization of person keypoints in challenging, uncontrolled conditions. The keypoint challenge involves simultaneously detecting people and localizing their keypoints (person locations are not given at test time).

簡言之,任務就是基於影象重建人的關節和肢幹。難點主要在於降低模型分析演算法的複雜程度,並能夠適應各種多變的情況。

二、2D姿態估計方法分類概覽

兩種思路

自底向上:Bottomup,先catch所有關節,再關聯人

自頂向下:Topdown,先檢測人的bounding box,再用single的方法檢測每個人

下文從傳統方法開始,講解相關研究。

三、Classical Approach

這種方法將關節結構用帶有動力學先驗的樹狀圖模型來表達。將身體關節劃分為多個部分,軀幹、頭、左臂上、下,右臂上、下 (如果考慮全身則還有左腿上、下,右腿上、下)。將軀幹指定為root,向各個部位擴充套件。各部位間服從高斯分佈。問題在於不能解決遮擋問題。

四、CNN-based Method

1、DeepPose

最早應用CNN的方法,直接回歸關節座標,multi-stage refine迴歸出的座標。藍色是卷積層,綠色是全連線層。

2、Flowing ConvNets

對於當前幀t及相鄰的前後n幀使用全卷積網路為每幀輸出一個預測的heatmap(去掉FC層),再用光流資訊將這些heatmap扭曲到當前幀t。之後將warped的heatmap合併到另一個卷積層中,權衡來自附近框架的扭曲的heatmap。最後使用集合熱圖的最大值作為關節點。

對於視訊流來說,info通常包括:appearance,當前幀+前一幀的關聯資訊,Structure。關鍵是利用影象序列和逐幀的資訊

3、CPM(convolution pose machine)

能夠解決一些遮擋和不可見問題;結合了multi-stage和refine heatmap的思想。網路結構如下:

Stage1只利用了local evidence(因為感受野和輸出範圍大小相近)
Stage>=2使用前一階段的置信計算結果作為輸入。

每個stage由全卷積網路預測每個part的;結果不斷refine並累加到之前部件的響應圖上。最後取每個部件圖中置信度最大的點作為部件位置。

4、stacked hourglass 

hourglass卷積網路結構有多個平行的預測分支, 網路結構中包含卷積層、解卷積層. 這樣複雜的模型具有高度的靈活性, 在描述複雜結構方面表現出色. 而由於卷積層和解卷積層引起的空間連續性, 其對大光滑表面更友好. 而網路反覆進行的編解碼操作, 使該方法具有更強的表示能力, 可以更好的混合全域性和區域性資訊.

重複進行top-down到bottom-up的過程來推斷關節位置,構成每個stacked hourglass模組。

Residual子模組:只增加深度(通道數),不增加寬度(尺寸)

每次降取樣之前,分出上半路保留原尺度資訊; 每次升取樣之後,和上一個尺度的資料相加; 兩次降取樣之間,使用三個Residual模組提取特徵; 兩次相加之間,使用一個Residual模組提取特徵。n階Hourglass子網路提取了從原始尺度到1/2n尺度的特徵。不改變尺寸只改變深度。由於不需要像CPM一樣獨立地在影象金字塔上多次執行,速度更快

(從本方法開始是多人檢測)5、PAF(Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields)

Branch1:計算置信圖(CPM)

Branch2:計算親和度PAF

一開始由VGG19生成feature map。每個stage結束後對該階段的置信值,PAF圖和一開始得到的Feature maps作concat分別作為下一階段兩個branches的輸入。公式中,S為置信圖,L為PAF,F是feature map. 原文自己說低解析度和有遮擋時效果不夠理想。
對關鍵點分組階段,往往轉換成圖中的節點聚類問題,採用數學方法解決。如NMS,匈牙利演算法

6、Mask R-CNN 

Faster R-CNN的基礎上又加入了全連線的分割子網路,完成三個任務(檢測+分類+分割)。mask R-CNN有兩條並行的分支,第一個分支是使用faster R-CNN的基礎結構,對候選bounding box進行分類和bounding box座標迴歸。第二個分支是對每一個RoI區域預測分割mask,結構上是一個小的FCN。

7、G-RMI

第一階段使用faster rcnn做detection,檢測出圖片中的多個人,並對bounding box進行image crop; 第二階段採用fully convolutional resnet對每一個bonding box中的人物預測dense heatmap和offset; 最後通過heatmap和offset的融合得到關鍵點的精確定位 (如下)。

8、RMPE(現已更新到新版本AlphaPose,效果拔群)

識別姿態使用Stacked Hourglass. 致力於解決對於imperfect proposal,使得crop的person能夠被單人姿態估計方法很好的識別,從而克服檢測帶來的定位誤差。第一步獲得human proposal第二步是將proposal輸入到兩個並行的分支裡面,上面的分支是STN+SPPE+SDTN的結構,STN接收的是human proposal,SDTN產生的是pose proposal。下面並行的分支充當額外的正則化矯正器。第三步是對pose proposal做Pose NMS(非最大值抑制),用來消除冗餘的pose proposal。

9、Associative Embedding 

論文特色:A single-stage,end-to-end way for joint detection and grouping.

關節點檢測使用stacked hourglass,在原來的基礎上每一次下采樣時增加輸出通道的個數,同時individual layers的殘差模型改為3*3的卷積結構,其他結構不變。

關節點分組:使用stacked hourglass網路的輸出是對每一個pixel預測detection score,從單人到多人的姿態估計就是將heatmap由單個點的啟用,到多個點的啟用,從而檢測出多個關節點。輸出是heatmap,用於對每一個pixel打上標籤,標籤相近的關節點認為是屬於同一個人的,這樣完成對關節點的分類。如果有m個關節點,就會有2m個通道,其中m個用於檢測,m個用於分組標籤。

10、CPN(18cvpr,state-of-the-art)

仍然是topdown思路,第一個stage檢測可見的easy keypoint,第二個stage專門解決hard keypoint。程式碼:https://github.com/chenyilun95/tf-cpn

更多CVPR2018中的新方法見:https://blog.csdn.net/bocksong/article/details/80899689

五、實驗效果

待補充。