一,人体姿态识别数据集
1,2D数据集:
LSP
地址:http://sam.johnson.io/research/lsp.html
样本数:2K
关节点个数:14
全身,单人
FLIC
地址:https://bensapp.github.io/flic-dataset.html
样本数:2W
关节点个数:9
全身,单人
MPII
地址:http://human-pose.mpi-inf.mpg.de/
样本数:25K
关节点个数:16
全身,单人/多人,40K people,410 human activities
MSCOCO
地址:http://cocodataset.org/#download
样本数:>= 30W
关节点个数:18
全身,多人,keypoints on 10W people
AI Challenge
地址:https://challenger.ai/competition/keypoint/subject
样本数:21W Training, 3W Validation, 3W Testing
关节点个数:14
全身,多人,38W people
2,3D数据集:
在数据处理阶段,3D比2D复杂很多。2D人体姿态识别在dataset和model方面都比3D成熟,2Dmodel也有很多户外,自然界的dataset,但是3D的dataset几乎都是indoor的。因为3D标注、识别的复杂,所以需要大量的传感器,摄像头去采集数据。收集了几个最近看到的数据集分享给大家。
二,人体姿态估计重要论文
相关论文分享:链接:https://pan.baidu.com/s/1wVQJfPgyXVQAmdSIKQNPAA
提取码:077o
1,单人姿态估计的重要论文
2014----Articulated Pose Estimation by a Graphical Model with ImageDependent Pairwise Relations
2014----DeepPose_Human Pose Estimation via Deep Neural Networks
2014----Joint Training of a Convolutional Network and a Graphical Model forHuman Pose Estimation
2014----Learning Human Pose Estimation Features with Convolutional Networks
2014----MoDeep_ A Deep Learning Framework Using Motion Features for HumanPose Estimation
2015----Efficient Object Localization Using Convolutional Networks
2015----Human Pose Estimation with Iterative Error
2015----Pose-based CNN Features for Action Recognition
2016----Advancing Hand Gesture Recognition with High Resolution ElectricalImpedance Tomography
2016----Chained Predictions Using Convolutional Neural Networks
2016----CPM----Convolutional Pose Machines
2016----CVPR-2016----End-to-End Learning of Deformable Mixture of Parts andDeep Convolutional Neural Networks for Human Pose Estimation
2016----Deep Learning of Local RGB-D Patches for 3D Object Detection and 6DPose Estimation
2016----PAFs----Realtime Multi-Person 2D Pose Estimation using PartAffinity Fields (openpose)
2016----Stacked hourglass----StackedHourglass Networks for Human Pose Estimation
2016----Structured Feature Learning for Pose Estimation
2017----Adversarial PoseNet_ A Structure-aware Convolutional Network forHuman pose estimation (alphapose)
2017----CVPR2017 oral----Realtime Multi-Person 2D Pose Estimation usingPart Affinity Fields
2017----Learning Feature Pyramids for Human Pose Estimation
2017----Multi-Context_Attention_for_Human_Pose_Estimation
2017----Self Adversarial Training for Human Pose Estimation
2,多人姿态估计的重要论文
2016----AssociativeEmbedding_End-to-End Learning for Joint Detection and Grouping
2016----DeepCut----Joint Subset Partition and Labeling for Multi PersonPose Estimation
2016----DeepCut----Joint Subset Partition and Labeling for Multi PersonPose Estimation_poster
2016----DeeperCut----DeeperCut A Deeper, Stronger, and Faster Multi-PersonPose Estimation Model
2017----G-RMI----Towards Accurate Multi-person Pose Estimation in the Wild
2017----RMPE_ Regional Multi-PersonPose Estimation
2018----Cascaded Pyramid Network for Multi-Person Pose Estimation
“级联金字塔网络用于多人姿态估计”
2018----DensePose: Dense Human Pose Estimation in the Wild
”密集人体:野外人体姿势估计“(精读,DensePose有待于进一步研究)
2018---3D Human Pose Estimation in the Wild by Adversarial Learning
“对抗性学习在野外的人体姿态估计”
2015 年之前的方法都是回归出精确的关节点坐标( x,y ),采用这种方法不好的原因是人体运动灵活,模型可扩展性较差。本文主要是2015年之后人体姿态识别的发展综述。(1)遮挡问题,这个问题恐怕是最难的,也是必须要解决的(2)速度过慢。(3)仅仅有二位的姿态是不够的,目前也有这一类的研究,关于直接从2d到3d的姿态进行直接估计。这一点是未来发展的趋势。
单人姿态估计性能评价指标:MPII单人数据集,LSP数据集和FLIC数据集。通过对比这三个数据集的PCK值来评价模型好坏。评价指标为PCK(Percentage of Correct Keypoints)即关键点正确估计的比例,计算检测的关键点与其对应的groundtruth 间的归一化距离小于设定阈值的比例,FLIC中是以躯干直径作为归一化参考,MPII中是以头部长度作为归一化参考,即PCKh。目前MPII单人数据集的排名如下:
发展历程:
《Flowing ConvNets for Human Pose Estimation in Videos》ICCV 2015
2015 年 flow convnet 将姿态估计看作是检测问题,输出是 heatmap。用相对于AlexNet更深的CNN网络进行人体姿态估计,提高关节点定位的鲁棒性,利用temporal提高精度。其创新点在于从卷积神经网络的 3 和 7 层提取出来,再经过卷积操作,称之为空间融合模型,用来提取关节点之间的内在联系;同时使用光流信息,用来对准相邻帧的 heatmap 预测。最后使用参数池化层,将对齐的heatmap 合并成一个 scoremap(置信图)。
网络pipeline:对于当前帧t,输入它的相邻的前后n帧。利用全卷积神经网络(Spatial Net + Spatial Fusion Layers)对每一帧输出一个预测的heatmap。再利用光流信息将这些heatmap扭曲到当前帧t。之后将warped的heatmap合并到另一个卷积层中,该层学习如何权衡来自附近框架的扭曲的heatmap。最后使用集合热图的最大值作为人体的身体关节。
评测数据集:FLIC数据集,对于wrist(手腕)和elbow(肘部)的平均PCK可以达到92%,可以做到实时性,速度为5fps。但是该方法对于pose的估计范围有限,只是半身的关节点,并不是全身的身体骨骼点。
《Convolutional Pose Machines》CVPR 2016[21]
2016 年提出的 CPM 方法具有很强的鲁棒性,之后的很多方法是基于此改进的。CPM 的贡献在于使用顺序化的卷积架构来表达空间信息和纹理信息。网络分为多个阶段,每一个阶段都有监督训练的部分。前面的阶段使用原始图片作为输入,后面阶段使用之前阶段的特征图作为输入,主要是为了融合空间信息,纹理信息和中心约束。另外,对同一个卷积架构同时使用多个尺度处理输入的特征和响应,既能保证精度,又考虑了各部件之间的远近距离关系。
网络输入彩色图像(绿色ori image)。以半身模型为例,分为四个阶段(stage)。每个阶段都能输出各个部件的响应图(蓝色score),使用时以最后一个阶段的响应图输出为准。center map(绿色)是一个提前生成的高斯函数模板,用来把响应归拢到图像中心。 第一阶段是一个基本的卷积网络1(白色convs),从彩色图像直接预测每个部件的响应。半身模型有9个部件,另外包含一个背景响应,共10层响应图。第二阶段也是从彩色图像预测各部件响应,但是在卷积层中段多了一个串联层(红色concat),把以下三个数据合一:
阶段性的卷积结果(46*46*32)→ →\to 纹理特征 , 前一阶段各部件响应(46*46*10)→ →\to 空间特征 ,中心约束(46*46*1) ,串联后的结果尺寸不变,深度变为32+10+1 = 43。第三阶段不再使用原始图像为输入,而是从第二阶段的中途取出一个深度为128的特征图(feature image)作为输入。同样使用串联层综合三种因素:纹理特征+空间特征+中心约束。 第四阶段结构和第三阶段完全相同。在设计更复杂的网络时(例如全身模型),只需调整部件数量(从10变为15),并重复第三阶段结构即可。
该论文的主要训练细节有三:
1. 数据增强:对原始图片进行随机缩放,旋转,镜像
2. 标定:在每个关节点的位置放置一个高斯响应,来构造响应图的真值。对于含有多个人的图像,生成两种真值响应,一是在每个人的相应关节位置,放置高斯响应。二是只在标定的人的相应关节位置,放置高斯响应。
3. 中继监督,多个loss:如果直接对整个网络进行梯度下降,则输出层在经过多层反向传播会大幅度的减小,解决方法就是在每个阶段都输出一个loss,可保证底层参数正常更新。
评测数据集:MPII,LSP,FLIC,在MPII数据集上的total PCKh是87.95%(如果加上LSP数据集作为训练,将达到88.52%),在LSP数据集上的PCKh是84.32%(如果加上MPII数据集作为训练,将达到90.5%),在FLIC数据集上的[email protected]分别是elbows(97.59%),wrist(95.03%)。速度不明,应该无法做到实时。
《Stacked Hourglass Networks for Human Pose Estimation》ECCV 2016[26]
本文使用全卷积网络解决人体姿态分析问题,截至2016年5月,在MPII姿态分析竞赛中暂列榜首,PCKh(误差小于一半头高的样本比例)达到89.4%。与排名第二的CPM(Convolutiona Pose Machine)1方法相比,思路更明晰,网络更简洁。该论文体现了从模块到网络再到完整网络的设计思想。
使用的初级模块称为Residual Module,得名于其中的旁路相加结构。参考文献[6]有详细介绍
作用:Residual模块提取了较高层次的特征(卷积路),同时保留了原有层次的信息(跳级路)。不改变数据尺寸,只改变数据深度。可以把它看做一个保尺寸的高级“卷积”层。
上下两个半路都包含若干Residual模块(浅绿),逐步提取更深层次特征。但上半路在原尺度进行,下半路经历了先降采样(红色/2)再升采样(红色*2)的过程。
降采样使用max pooling,升采样使用最近邻插值。n阶Hourglass子网络提取了从原始尺度到1/2 n 1/2n1/2^n尺度的特征。不改变数据尺寸,只改变数据深度。
以一个Hourglass(深绿色)为中心,可以从彩色图像预测K个人体部件的响应图。原始图像经过一次降采样(橙色),输入到Hourglass子网络中。Hourglass的输出结果经过两个线性模块(灰色),得到最终响应图。期间使用Residual模块(浅绿)和卷积层(白色)逐步提取特征。而本文用的是以两个Hourglass(深绿色)为中心的二级网络。二级网络重复了一级网络的后半结构。第二个Hourglass的输入包含三路: 第一个Hourglass的输入数据 ,第一个Hourglass的输出数据 ,第一级预测结果 。这三路数据通过串接(concat)和相加进行融合,它们的尺度不同,体现了当下流行的跳级结构思想。如下图所示:
总结起来SHN的方法值得学习的地方有四点:使用模块进行网络设计 ,先降采样,再升采样的全卷积结构 , 跳级结构辅助升采样 ,中继监督训练。
评测数据集:在FLIC数据集上的[email protected]分别elbows(99%),elbows(97%); 不同的方法在MPII数据集的PCKh值,其中[1]为flow convnet,[5]为CPM。
Structured Feature Learning for Pose Estimation CVPR 2016[32]
2017 年王晓刚组的 structured pose 也是在 CNN 的基础上进行微调,其创新点在于在卷积层使用几何变换核,能够对关节点之间的依赖关系进行建模,此外还提出了双向树模型,这样每个关节的 feature channel 都可以接收其他关节的信息,称之为信息传递,这种树状结构还能针对多人进行姿态估计。但是这种多人姿态估计的准确度不高,方法还是基于单人的比较好。
评测数据集:FCIL,LSP,MPII,在 FCIL,LSP均比之前的方法有所提升,在MPII数据集上也曾暂列榜首,PCKh达到91.5%,准确率提升不大。
Adversarial PoseNet: A Structure-aware Convolutional Network for Human Pose Estimation [33]
采用的GAN的方法,效果比之前的state-of-the-art仅仅提升了零点几个百分点。基本上到hourglass之后的方法都是一些微调,虽然理论都不太一样,但是准确度提升不大。
Learning Feature Pyramids for Human Pose Estimation[27]
模式识别的方法,pictorial structures以及loopy 结构,这些方法都是基于HOG 特征。后来是神经网络,最早的是deepPose,是使用回归坐标点的方法。坐标点难以训练学习,后来的方法都是将点做了高斯转换得到score map。同时,还会用到多尺度获得丰富特征。
多尺度特征Hourglass无疑是最成功的。但后面的多种网络结构对这这一基础网络做了调整和优化,有更好的效果。比如这篇,将使用金字塔模型。不是普通的金字塔,而是组合了residual模型和Inception的金字塔,所以计算要求不高。
论文 |
Head |
Shoulder |
Elbow |
Wrist |
Hip |
Knee |
Ankle |
Total |
[1] |
96.1 |
91.9 |
83.9 |
77.8 |
80.9 |
72.3 |
64.8 |
82.0 |
[2] |
95.7 |
91.7 |
81.7 |
72.4 |
82.8 |
73.2 |
66.4 |
81.3 |
[3] |
94.1 |
90.2 |
83.4 |
77.3 |
82.6 |
75.7 |
68.6 |
82.4 |
[4] |
95.0 |
91.6 |
83.0 |
76.6 |
81.9 |
74.5 |
69.5 |
82.4 |
[5] |
97.8 |
95.0 |
88.7 |
84.0 |
88.4 |
82.8 |
79.4 |
88.5 |
[6] |
98.2 |
96.3 |
91.2 |
87.1 |
90.1 |
87.4 |
83.6 |
90.9 |
[27] |
98.5 |
96.7 |
92.5 |
88.7 |
91.1 |
88.6 |
86.0 |
92.0 |
截止到目前,[33][34]将准确率刷到了0.921,0.923,单人姿态估计研究基本上趋于饱和,都在刷准确率,而且单人姿态估计对于检测多人效果不佳,人体姿态估计应用应该着力于多人姿态的研究。
单人姿态估计方法在单人识别效果较好,应用于多人姿态识别还是效果比较差 的。同样多人姿态估计效果较好的应用于单人姿态估计的效果不理想。多人姿态估计有两种主流的研究方法,自顶向下(top-down),先检测出多个人,再对每个人进行姿态估计,可以将detection的方法加上单人姿态估计来实现;自底向上(bottom-up):先检测出关节点,再判断每一个关节点属于哪一个人。评价多人姿态性能好坏两大数据集:MPII Multi-Person Dataset[31]和MSCOCO Keypoints Challenge[30]。人体的识别要忍受来自定位和识别的双重误差,这是人体姿态识别需要研究和解决的问题。
发展历程
《DeepCut: Joint Subset Partition and Labeling for Multi Person Pose Estimation》 CVPR 2016[18]
《DeeperCut: A Deeper, Stronger, and Faster Multi-Person Pose Estimation Model》 ECCV 2016[6]
2016 年的 deepcut,采用自顶向下的方法,先用 CNN 找出所有候选的关节点,将这些关节点组成一幅图,对图中的节点进行聚类,从而判断各个节点属于哪一个人,这是一个优化问题;同时,对各个点进行标记,分类属于身体的哪一部分;两者结合输出姿态估计结果。
Deepercut 是在 deepcut 的基础上使用 resnet 进行检测提高精度,使用 image conditioned pairwise ,能够将丰富的候选节点进行压缩,提升速度和鲁棒性。
评测数据集:deepcut,对于单人姿态估计,在LSP数据集上的PCK达到87.1%,在MPII数据集上的PCK达到82.4%(可见,适用于多人的姿态估计方法和纯粹的单人姿态估计方法的准确率还有所差距);对于多人姿态估计,在WAF数据集上mean PCP达到84.7%,在MPII多人数据集上AP 达到 60.5%,速度非常慢。
DeeperCut:和deepcut的评测数据集相同,这里主要针对多人来看,其准确率和速度都有所提升,尤其是速度方面。
《ArtTrack: Articulated Multi-person Tracking in the Wild》CVPR 2017[10]
2017年的ArtTrack的作者也是DeeperCut 的第一作者,是将人物姿态估计用到了视频跟踪里面,本文的贡献是利用现有的单帧姿态估计模型作为基础框架,但是速度却明显加快,这种加快主要通过以下两种方式来进行:(1)通过简化和稀疏身体部位的关系图,使用进来的方法进行快速的推理;(2)不加载用于前馈神经网络上的大规模计算量,这些神经网络是为了检测和关联同一人的身体关节。模型仍然是采用 top-down 的方法,即先用 Resnet 检测出body part proposal,然后再根据关联和空间信息将他们归为不同的人。
同时,本文也提出一种 top-down/bottom-up 的模型,即 top-down 部分是用来对人体做一个粗略的估计,之后再用bottom-up 进行精确调整,使得预测的关节点位置更准确。
评测数据集:WAF数据集和MPII Video Pose数据集,相应有所提升。
《Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields》CVPR 2017[9]
2017 年的 Part Affinity Fields(PAF)能够针对多人做到实时检测,它采用的却是自底向上的方法,网络框架分为两路;一路使用 CNN,根据置信图进行关节点预测,另一路使用CNN 获得每个关节点的 PAF,PAF 可以看作是记录 limb 位置和方向的 2D 向量。两路进行联合学习和预测。最后就是如何将这些节点两两连接不重复,这转换为图论问题。
评测数据集:COCO 2016关键点检测数据集+MPII multi-person benchmark。对于MPII多人pose,本文无论是准确度还是精度上都有质的飞跃,其相比于DeeperCut的速度快了4万多倍,准确度也有几个百分点的提升。可以做到实时,每帧只需要50毫秒,即20FPS。
《Mask R-CNN》ICCV 2017,FAIR,Kaiming He[13]
2017年何凯明的Mask R-CNN,Mask R-CNN 是用于目标检测分割的框架,即对一张图片,既输出图片中已有的目标,还能为每一个实例生成一个高质量的分割掩码。mask RCNN是在 faster R-CNN 的基础上,在每一个 RoI 都增加一个预测分割的mask,这和分类以及 bounding box 回归是并行的一条分支。它的训练简单,仅仅比 faster RCNN多一点计算开销。它易于泛化到多个任务上,例如人体姿态估计。在不加任何的 trick的情况下,在COCO 数据集上超越其他的方法。因此准确度方面基本上已经是state-of-the-Art。
应用到pose estimation,将分割系统中的目标改为K个one-hot,m*m的二进制mask。准确率比COCO 2016 冠军高0.9个点,速度达到5 FPS。
《Towards accurate multi-person pose estimation in the wild》CVPR 2017 Google[11]
Google的人体姿态估计,多数时候在论文中简写为G-RMI。
论文采用top-down的结构,分为两个阶段: 第一阶段使用faster rcnn做detection,检测出图片中的多个人,并对bounding box进行image crop; 第二阶段采用fully convolutional resnet对每一个bonding box中的人物预测dense heatmap和offset; 最后通过heatmap和offset的融合得到关键点的精确定位。
《Associative Embedding:End-to-End Learning for Joint Detection and Grouping》[10]
论文提出了一种single-stage,end-to-end的关节点检测和分组方法,这不同于以往的multi-stage的关节点检测方法,在MPII和COCO数据集上达到新的state-of-the-art的效果,超越最近的Mask RCNN和Google GMI。从人体姿态估计方法上属于bottom-up的方法,即先检测关节点,再对关节点进行分组。在COCO测试集上mAP达到0.655。
《RMPE: Regional Multi-Person Pose Estimation》ICCV 2017,SJTU,Tencent Youtu[30]
文章的写作背景是单人姿态估计的方法不能用在多人上面,而多人姿态估计方法虽然效果不错,但是太慢了(485 seconds per image)。它对于多人姿态估计的方法采用传统的自顶向下的方法,即先检测人,再识别人体姿态。检测使用的是SSD-512,识别人体姿态使用的是state-of-the-art的Stacked Hourglass方法。致力于解决对于imperfect proposal,通过调整,使得crop的单人能够被单人姿态估计方法很好的识别,从而克服检测带来的定位误差。
目前的人体检测方法会产生两个主要问题:定位错误,以及多余的检测结果,尤其是SPPE (singal person pose estimation)。这篇文章就是为解决这个问题而来的,提出了RMPE方法。包括了三个模块:Symmetric Spatial Transformer Network (SSTN)用于在不准确的bounding box下仍能提取准确的单个人的范围,这是组合到SPPE里面的。NMS是处理多余的候选框的,它是采用了新的距离量测的方法来计算姿态的相似度,且是数据驱动的,不是预先设定的。PGPG用于增多训练样本。
整体框架
Symmetric STN + SPPE
Residual Module
论文 |
Head |
Shoulder |
Elbow |
Wrist |
Hip |
Knee |
Ankle |
Total |
[5] |
58.4 |
53.9 |
44.5 |
35.0 |
42.2 |
36.7 |
31.1 |
43.1 |
[6] |
78.4 |
72.5 |
60.2 |
51.0 |
57.2 |
52.0 |
45.4 |
59.5 |
[7] |
89.8 |
85.2 |
71.8 |
59.6 |
71.1 |
63.0 |
53.5 |
70.6 |
[8] |
88.8 |
87.0 |
75.9 |
64.9 |
74.2 |
68.8 |
60.5 |
74.3 |
[9] |
91.2 |
87.6 |
77.7 |
66.8 |
75.4 |
68.9 |
61.7 |
75.6 |
[10] |
92.1 |
89.3 |
78.9 |
69.8 |
76.2 |
71.6 |
64.7 |
77.5 |
[30] |
91.3 |
90.5 |
84.0 |
76.4 |
80.3 |
79.9 |
72.4 |
82.1 |
论文 |
AP |
AP(50) |
AP(75) |
AP(M) |
AP(L) |
[9] |
61.8 |
84.9 |
67.5 |
57.1 |
68.2 |
[11] |
68.5 |
87.1 |
75.5 |
65.8 |
73.3 |
[13] |
63.1 |
87.3 |
68.7 |
57.8 |
71.4 |
[12] |
72.1 |
91.4 |
80.0 |
68.7 |
77.2 |
[30] |
72.3 |
89.2 |
79.1 |
68.0 |
78.6 |