基於CNN的2D多人姿態估計論文綜述

bottom up系列算法(直接獲取全圖人體關鍵點):
1.Openpose(coco2016關鍵點冠軍,利用paf進行group)
2.Lightweight OpenPose(輕量級Openpose)
3.Associative Embedding (關鍵點分組編碼思想)
4.Pose Proposal Networks(利用YOLO思想採用網格級別姿態估計)
5.GPN(生成分區網絡用以實現多人姿態估計)
6.SPM(單階段多人姿態估計機器)
7.personlab(將人體關鍵點檢測和實例分割統一到一個網絡中)
8.pifpaf(效果遠超Openpose)
9.HigherHrnet(改進hrnet用於多人關鍵點估計,達到目前最優)

top down系列算法(獲取全圖人體框後再提取人體框內的關鍵點,因此其本質和單人姿態估計類似,如下有部分算法與單人姿態估計中重合)
1.Joint-to-Person Associations(利用線性規劃嘗試解決擁擠和遮擋問題)
2.Deepcut & Deepercut(基於人體聚類後利用線性規劃獲取關鍵點)
3.G-RMI(關鍵點檢測基石,有許多基礎思路)
4.alphapsoe1 & alphapsoe2(解決人體框不準和擁擠場景姿態估計)
5.Joint Pose & Segmentation(聯合姿態估計和軀幹分割網絡)
6.Joint Pose & Detection(聯合姿態估計和目標檢測網絡)

1.Openpose(coco2016關鍵點冠軍,利用paf進行group)

CVPR2016 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
Arxiv 2018 | OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

Official Code: caffe
3rdparty Code:tensorflow1
3rdparty Code:tensorflow2
3rdparty Code:tensorflow3
3rdparty Code:tensorflow4
3rdparty Code:tensorflow5
3rdparty Code:tensorflow6
3rdparty Code:pytorch1
3rdparty Code:pytorch2
3rdparty Code:pytorch3
3rdparty Code:Caffe2

openpsoe的訓練過程中,兩個版本都是基於多stage進行訓練的。而且都需要輸出兩個部分,如下圖一所示,淡藍色模塊用於輸出圖像中所有人體的關鍵點之間的方向。米色模塊用於輸出圖像中人體關鍵點的置信度圖。openpsoe的訓練過程中,兩個版本都是基於多stage進行訓練的。而且都需要輸出兩個部分,如下圖一所示,淡藍色模塊用於輸出圖像中所有人體的關鍵點之間的方向。米色模塊用於輸出圖像中人體關鍵點的置信度圖。openpose版本2之所以提出了這個思想,如圖二所示(CM表示置信度圖,PAF表示關鍵點間方向),作者將計算限定在最多6個階段,分佈在PAF和置信圖分支上。從圖二的結果中,可以得出三個結論:

  • 首先,PAF需要更多的階段來聚合,並從細化階段獲得更多的好處。
  • 增加PAF通道的數量主要是改善真陽性的數量,即使它們可能不是太精確(更高的AP50)。但是,增加置信度圖通道的數量可以進一步提高定位精度(更高的AP75)。
  • 作者證明了將PAF模塊放在前面,置信度圖放在後面,最終的精度有了很大的提高,相反的結果是絕對精度下降了4%。即使只有4個階段(3 PAF - 1 CM)的模型也比計算上更昂貴的6個階段模型(3 CM - 3 PAF)更準確(這就是本文提出改進版本結構的原因)。

2.Lightweight OpenPose(輕量級Openpose)

Arxiv 2018 | Real-time 2D Multi-Person Pose Estimation on CPU: Lightweight OpenPose
Official Code openpose3: pytorch

基於Openpose的方案,通過優化其後處理方案,在Intel®NUC 6i7KYB mini PC 達到了28fps ,在Core i7-6850K CPU達到了26fps。該算法只有2-stageOpenpose的15%大小,但卻實現了相同的效果。該算法利用mobilenetv1結合空洞卷積的方式優化了openpose的backbone。

3.Associative Embedding (關鍵點分組編碼思想)

CVPR 2016 | Associative Embedding:End-to-End Learning for Joint Detection and Grouping
3rdparty Code:pytorch
3rdparty Code:tensorflow

本文使用stacked hourglass檢測關節點,在原來的基礎上每一次下采樣時增加輸出通道的個數,同時individual layers的殘差模型改爲3*3的卷積結構,其他結構不變。但除了輸出關鍵點的多峯heatmap外,還輸出對應的embedding tag。並通過對不同實例的tag進行分組(分組標準按照歐式距離進行),最終通過分組將關節分配到各個實例上。

4.Pose Proposal Networks(利用YOLO思想採用網格級別姿態估計)

ECCV 2018 | Pose Proposal Networks
3rdparty Code:pytorch
3rdparty Code:chainer
採用了YOLO目標檢測的思想,將人體姿態檢測看作是一個目標檢測問題,對人體部位不再採用 pixel-wise(像素級別) 的檢測,而是採用 grid-wise(網格級別) 來得到人體部位的feature map,其中利用一個 single-shot CNN 網絡同時對身體關節和肢體(limb)來進行檢測,然後採用類似OpenPose中的PAF分析方法來得到完整的人體姿態。

5.GPN(生成分區網絡用以實現多人姿態估計)

ECCV 2018 | Generative Partition Networks for Multi-Person Pose Estimation
Official Code:pytorch

爲了有效地解決具有挑戰性的多人姿態估計問題,提出了生成式劃分網絡(GPN)。GPN通過同時檢測和劃分多人關節來解決這一問題。提出了一種基於人中心體參數化的嵌入空間中聯合候選節點的劃分方法。此外,GPN引入了一種局部貪婪推理方法,利用分區信息來估計person實例的位姿。GPN首先使用CNN來預測(a)聯合置信度圖和(b)稠密的聯合質心迴歸圖。然後,GPN通過稠密迴歸對嵌入空間中的所有關節候選對象進行©質心聚類,在人員檢測範圍內產生(d)關節分區。最後,GPN進行(e)局部貪婪推理,局部生成每個關節分區的關節構型,給出多個體的位姿估計結果。

6.SPM(單階段多人姿態估計機器)

ICCV 2019 | Single-Stage Multi-Person Pose Machines
3edParty:tensorflow

本文的核心策略爲:SPR(Structured Pose Representation),該模塊就是想把人體位置信息和其對應的關鍵點位置信息聯繫起來,SPR模塊利用一個root點來表徵每個人體在圖像中的位置信息,並且通過當前root點位置進行編碼得到對應人體的所有關鍵點位置。本文首次提出了one-stage的多人姿態估計網絡,利用單階段多人姿態機(Single-stage multi-person Pose Machine, SPM),對root點和相對偏移量進行迴歸。

7.personlab(將人體關鍵點檢測和實例分割統一到一個網絡中)

ECCV 2018 | PersonLab: Person Pose Estimation and Instance Segmentation with a Bottom-Up, Part-Based, Geometric Embedding Model
3rdParty : Keras
3rdParty : tensorflow

作者將圖片中每個人的所有關鍵點找到。然後預測每一對關鍵點的相對位置關係,爲了提高兩個遠距離的關鍵點預測的準確率,提出一種新的循環的方法,極大地提高了效果。最後使用貪婪解碼方法,將所有的關鍵點對應分到各自的實例中。PersonLab採用了先從最有把握的關鍵點開始進行分割,而不是直接定義一個確定的基準,例如鼻子,使得在聚類的時候表現的很好。

8.pifpaf(效果遠超Openpose)

CVPR 2019 | PifPaf: Composite Fields for Human Pose Estimation
Official Code:pytorch

文章提出Part Intensity Field (PIF) 用來定位人體關節點位置,提出Part Association Field (PAF) 用來確定關節點之間的連接。通過預測圖片中每個位置的Pif信息, 來確定圖片上的位置是否是人體關節點位置; 並通過paf信息把同屬於同一個人的人體關節點連接起來, 這樣就可以 (1) 預測出圖片上所有人的關節點 (2) 把屬於同一個人的人體關節點連接起來。在 COCO keypoint task 上達到了state-of-the-art, 打敗了目前所有的bottom-up方法, 按照文章的說法, 比openpose提高了大約AP/AR12個點左右。

9.HigherHrnet(改進hrnet用於多人關鍵點估計,達到目前最優)

CVPR 2019 | Bottom-up Higher-Resolution Networks for Multi-Person Pose Estimation
Official Code: pytorch

在高分辨率網絡(HRNet)上增加一個高效的反捲積模塊,以降低計算開銷,提出了一種高分辨率網絡(HigherHRNet)。提出了一種訓練階段的多分辨率訓練和熱度圖聚合策略,使高分辨率網絡能夠預測具有尺度感知的熱圖。達到了bottom-up的最好效果——70map。

#------------------

top-down

1.Joint-to-Person Associations(利用線性規劃嘗試解決擁擠和遮擋問題)

ECCVworkshop 2016 | Multi-Person Pose Estimation with Local Joint-to-Person Associations

本文提出的多人關鍵點檢測算法,首先檢測出圖像中的所有人體。其次檢測出每個人體框中所包含的所有關鍵點。之後以所有關鍵點爲頂點,關鍵點之間的連接爲邊構建一個圖。最後針對於每一個矩形框中的圖,利用線性規劃得到最優連接。該方法相較於傳統的topdown方法能夠更好的處理遮擋和擁擠的情況。

2.Deepcut & Deepercut(基於人體聚類後利用線性規劃獲取關鍵點)

CVPR 2016 | DeepCut: Joint Subset Partition and Labeling for Multi Person Pose Estimation
ECCV 2016 | DeeperCut: A Deeper, Stronger, and Faster Multi-Person Pose Estimation Model
Official Code: caffe

Deepcut:
該算法提出了一種聯合解決檢測和姿態估計的方法,首先利用CNN的方法提取圖像中的所有關鍵點,所有的關鍵點作爲節點組成一個dense graph(密度圖)。其次利用Fasterrcnn獲取人體位置,並聯合密度圖。最終將屬於同一個人的關鍵點(節點)歸爲一類,每個人作爲一個單獨類。
本文的思路具有以下幾個優勢:
1)可以解決未知個數人的圖像,通過歸類得到有多少個人
2)通過圖論節點的聚類,有效的進行了非極大值抑制
3)優化問題表示爲 Integer Linear Program (ILP),可以有效求解

Deepercut:
本算法是在Deepcut的基礎上,對其進行改進,改進的方式基於以下兩個方面:
(1)使用最新提出的residual net進行關鍵點的提取,效果更加準確,精度更高。
(2)使用Image-Conditioned Pairwise Terms的方法,能夠將衆多候選區域的節點壓縮到更少數量的節點,這也是本文爲什麼stronger和faster的原因所在。該方法的原理是通過候選節點之間的距離來判斷其是否爲同一個重要節點。

3.G-RMI(關鍵點檢測基石,有許多基礎思路)

CVPR2017 Google | Towards accurate multi-person pose estimation in the wild
Official Code: pytorch
本文提出了一種2D人體關鍵點檢測的方法,該方法是一種簡單而強大的自上而下的方法,包括兩個階段。在第一階段,算法預測圖片中人體的位置和大小;爲此,算法使用Faster RCNN檢測器。在第二階段,算法估計每個人體框框中可能包含的關鍵點。對於每種關鍵點類型,算法使用全卷積的ResNet預測對應的熱圖和偏移量。爲了結合這些輸出,算法引入了一種新穎的聚類來獲得高度本地化的關鍵點預測。文章還使用了一種全新的基於關鍵點的非極大值抑制(NMS),而不是較粗糙的基於人體的NMS,以及一種新穎的基於關鍵點的置信度估計的形式,而不是基於目標框評分。本文提出的基於關鍵點的NMS在後面的自上而下的文章中被普遍應用。

4.alphapsoe1 & alphapsoe2(解決人體框不準和擁擠場景姿態估計)

ICCV 2017 | RMPE: Regional Multi-person Pose Estimation
ArXiv 2018 | CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark
Official Code: caffe
Official Code: pytorch

RMRE(該方法能夠處理不準確的bounding box(邊界框)和冗餘檢測。):論文中值得學習的思想有三點: 第一:Symmetric Spatial Transformer Network – SSTN 對稱空間變換網絡:在不準確的bounding box中提取單人區域。第二:Parametric Pose Non-Maximum-Suppression – NMS 參數化姿態非最大抑制:解決冗餘。第三:Pose-Guided Proposals Generator – PGPG 姿態引導區域框生成器:增強訓練數據。

CrowdPose:論文中值得學習的思想有兩點: 第一: joint-candidate single person pose estimation (SPPE):通過候選點的概念,設計了對應的候選loss,從而抑制非當前人體實例的點,實現了對擁擠人體關鍵點的提取。第二:global maximum joints associatio:基於上述特定的單人姿態估計網絡,檢測到的關鍵點數量比實際要多,因此提出以圖論的方式,通過一個線性規劃求解最優解的方式實現最優圖的構建,從而實現最優實例的鏈接。

5.Joint Pose & Segmentation(聯合姿態估計和軀幹分割網絡)

CVPR 2017 | Joint Multi-Person Pose Estimation and Semantic Part Segmentation

該算法的整體思路如下圖所示,首先通過Fastrcnn等方法得到多人圖像中的每個人體的bounding box,在使用PoseFCN得到對應人體的初步姿態分數圖。同時對於當前的bounding box使用PartFCN得到對應的人體軀幹分割初步結果。將PoseFCN和PartFCN得到的結果輸入到FCRF(全連接條件隨機場),利用分割結果輔助最終的關鍵點姿態的估計。並將更加精準的關鍵點姿態分數圖輸入到第二階段的PartFCN中,利用精準的姿態估計結果輔助人體軀幹分割。該方法通過兩種結果的相輔相成,最終在兩個結果上都有效果的提升。

6.Joint Pose & Detection(聯合姿態估計和目標檢測網絡)

ECCV 2018 | MultiPoseNet: Fast Multi-Person Pose Estimation using Pose Residual Network
Official Code:pytorch

該算法叫做MultiPoseNet,可以聯合處理人體檢測、關鍵點定位問題。該方法利用位Pose Residual Network(PRN)實現了一種新的姿態分配方法。由於現有的基於全圖作多人姿態估計的方法(openpose)存在性能上的瓶頸,而基於單人檢測後的單人姿態估計方法(alphapose)隨着人數的增多,處理時間暴增等問題。MultiPoseNet網絡先通過對圖像作全圖的多人姿態估計,再結合與姿態估計共用參數層的人體檢測網絡得到的人體框,並結合PRN網絡,最終實現多人姿態估計,均衡了時間和性能上的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章