人体姿态估计总结

Flowing ConvNets for Human Pose Estimation in Videos

2015 年 flow convnet 将姿态估计看作是检测问题,输出是 heatmap。其创新点在于从卷积神经网络的 3 和 7 层提取出来,再经过卷积操作,称之为空间融合模型,用来提取关节点之间的内在联系;同时使用光流信息,用来对准相邻帧的 heatmap 预测。最后使用参数池化方法,将对其的 heatmap 合并成一个 scoremap。

Stacked Hourglass Networks

对给定的单张 RGB 图像,输出人体关键点的精确像素位置,使用多尺度特征,捕捉人体各关节点的空间位置信息。网络结构形似沙漏状,重复使用 top-down 到 bottom-up 来推断人体的关节点位置。每一个 top-down到 bottom-up 的结构都是一个 hourglass 模块。
https://github.com/umich-vl/pose-hg-demo

Structured Feature Learning

2017 年王晓刚组的 structured pose 也是在 CNN 的基础上进行微调,其创新点在于在卷积层使用几何变换核,能够对关节点之间的依赖关系进行建模,此外还提出了双向树模型,这样每个关节的 feature channel 都可以接收其他关节的信息,称之为信息传递,这种树状结构还能针对多人进行姿态估计。但是这种多人姿态估计的准确度不高,方法还是基于单人的比较好。
http://www.ee.cuhk.edu.hk/~xgwang/projectpage_structured_feature_pose.html

RMPE

Regional Multi-Person Pose Estimation是上海交大和腾讯优图的论文,被 ICCV 2017接收。它对于多人姿态估计的方法采用传统的自顶向下的方法,即先检测人,再识别人体姿态。检测使用的是SSD-512,识别人体姿态使用的是state-of-the-art的Stacked Hourglass方法。致力于解决对于imperfect proposal,通过调整,使得crop的单人能够被单人姿态估计方法很好的识别,从而克服检测带来的定位误差。
https://github.com/MVIG-SJTU/RMPE

Towards accurate multi-person pose estimation in the wild

Google的人体姿态估计论文采用top-down的结构,分为两个阶段:
第一阶段使用faster rcnn做detection,检测出图片中的多个人,并对bounding box进行image crop;
第二阶段采用fully convolutional resnet对每一个bonding box中的人物预测dense heatmap和offset;
最后通过heatmap和offset的融合得到关键点的精确定位。
https://github.com/hackiey/keypoints

Deepcut&Deepercut

一.Deepcut
首先使用CNN提取body part candidates,每一个候选区域对应的是一个关节点, 每一个关节点作为图中的一个节点,所有的这些候选关节点组成代表的节点组成一副完整的图,正如上图dense graph所示。节点之间的关联性作为图中的节点之间的权重。这时,可以将其看作是一个优化问题,将属于同一个人的关节点(图中的节点)归为一类,每一个人作为一个单独的类。同时,另一条分支,需要对检测出来的节点进行标记,确定他们属于人体的哪一个部分。最后,使用分类的人结合标记的部分构成最终的每个人的姿态估计。(自顶向下)。
模型优点
1. 在人数位置的情况下可以解决多人姿态估计问题,通过归类可以得到每个人的关节点分布
2. 通过图论节点的聚类问题,有效的使用了非极大值抑制
3. 优化问题表示为integer linear program(ILP)问题,可以用数学方法得到有效的求解
细节
1. 对于多人姿态估计问题,可以转换为一个优化问题。优化问题需要解决三个问题:
a,body part candidate 的选择,即节点的选择
b,每个选择的节点的标记问题,即该节点属于身体的哪个部分,eg:胳膊,腿,手等
c,分类问题,即每个选择的节点属于哪一个人
2. 通过图论节点的聚类问题,有效的使用了非极大值抑制
3. 优化问题表示为integer linear program(ILP)问题,可以用数学方法得到有效的求解
不足
由于使用了自适应的fast R-CNN进行人体的检测,同时又使用ILP进行人体姿态估计,所以计算复杂度非常大,因此下面这篇文章DeeperCut就是对其的一个加速实现。
二.Deepercut
本文是在deepcut的基础上,对其进行改进,改进的方式基于以下两个方面:
(1)使用最新提出的residual net进行body part的提取,效果更加准确,精度更高
(2)使用Image-Conditioned Pairwise Terms的方法,能够将众多候选区域的节点压缩到更少数量的节点,这也是本文为什么stronger和faster的原因所在。该方法的原理是通过候选节点之间的距离来判断其是否为同一个重要节点。
https://github.com/eldar/pose-tensorflow

CPM /CMU OpenPose (Part Affinity Fields )

CPM是016 年提出的 CPM 方法具有很强的鲁棒性,之后的很多方法是基于此改进的。CPM 的贡献在于使用顺序化的卷积架构来表达空间信息和纹理信息。网络分为多个阶段,每一个阶段都有监督训练的部分。前面的阶段使用原始图片作为输入,后面阶段使用之前阶段的特征图作为输入,主要是为了融合空间信息,纹理信息和中心约束。
CMU是开源项目OpenPose的前身,CPM的特色有三:
1.用各部件响应图来表达各部件之间的空间约束。响应图和特征图一起作为数据在网络中传递。
2.网络分为多个阶段(stage)。各个阶段都有监督训练,避免过深网络难以优化的问题。
3.使用同一个网络,同时在多个尺度处理输入的特征和响应。既能确保精度,又考虑了各个部件之间的远距离关系。
算法的流程如下:
1. 在每一个尺度下,计算各个部件的响应图
2. 对于每个部件,累加所有尺度的响应图,得到总响应图
3. 在每个部件的总响应图上,找出相应最大的点,为该部件位置
OpenPose
用Part Affinity Fields来学习如何将身体关键和个人匹配起来。主要思想是利用贪心算法自下而上的解析步骤从而达到高准确率和实时性。身体部位定位和关联是在两个分支上同时进行的。该方法获得了COCO2016 keypoints challenge中夺得第一名。
文章代码总共分为两条线,经过卷积网络提取特征,得到一组特征图,然后分成两个岔路,分别使用 CNN网络提取Part Confidence Maps 和 Part Affinity Fields ,得到这两个信息后,我们使用图论中的 Bipartite Matching 将同一个人的关节点连接起来得到最终的结果。
https://github.com/timctho/convolutional-pose-machines-tensorflow
https://github.com/CMU-Perceptual-Computing-Lab/openpose

AlphaPose

上海交通大学卢策吾团队提出RMPE的两步法框架(ICCV 2017论文),并基于此开发了AlphaPose这一人体关键点检测系统。

RMPE框架采用自顶向下的方法,先检测人,再去做姿态估计。该框架有三个主要组成部分:
首先是对称空间变换网络(Symmetric STN),用于解决传统两步法中的主要问题,即imperfect proposal的问题。对于质量较差的人体检测结果,symmetric STN能够自动调整proposal的位置,将refine过后的结果输入单人姿态估计网络,并将输出映射回原空间,从而使得在人体检测框不准确的情况下,姿态估计网络依然能够有良好的效果。
第二个组成部件为由姿态引导的样本生成器(Pose-guided Proposals Generator),该部件能够根据不同人体姿态生成额外的detection proposal用于训练姿态估计网络,从而获得大量符合真实测试场景数据分布的训练数据。
第三个组成部件为参数化的姿态非极大值抑制器(Parametric Pose NMS)。传统的两步法中,人体定位框会有较多的冗余检测。作者通过使用新的姿态距离度量来比较姿态相似性,来消除冗余姿态。
拓展:视觉副词识别(Visual Adverb Recognition)
利用了姿势(pose)信息的,使用表情信息, RGB 和光流信息。同时,他们构建了对应的数据集:ADHA,这一数据集标注了视频中人物的位置、动作和可以描述这一动作的副词,我们还为数据用户提供了人物的 tracking 结果。
https://github.com/MVIG-SJTU/AlphaPose

级联金字塔网络CPN

两个阶段:GlobalNet 和 RefineNet。GlobalNet 基于特征金字塔网络学习一个好的特征表征。并且,金字塔特征表征可以提供充足的语境信息,这对于推断遮挡和不可见的关键点来说必不可少。在金字塔特征的基础上,RefineNet 显式地处理“困难”点。

这是一种 top-down pipeline,先通过检测器检测出图像之中的人,再把每个人抠出来并做单人姿态估计,最后把结果整合到原图上。CPN 这种两阶段架构设计的想法其实也不复杂,甚至可以说是相当朴素直观,来源于人是怎么识别人体关键点,即由特征金字塔网络 GlobalNet先识别出简单关键点,再由(借助 online hard keypoint mining loss 的)RefineNet 整合来自前者的特征表征以识别余下的困难关键点。这样从易到难,层层推进,最终克服了关键点难以识别的问题。

此外,本文还探索了不同因素(人体检测器和数据预处理等)对多人姿态估计的影响。比如,通过实验发现检测平均精度(Detection mAP)在达到一定阈值(Det mAP41.1)之后对关键点平均精度(Keypoint mAP)的影响有限。再比如使用Large batch,可以把 CPN 的 mAP 提升 0.4-0.7 个百分点,这说明除了物体检测之外,Large batch 同样适用于关键点识别。这些细节对于研究如何进一步提升 CPN 的准确度和鲁棒性非常有价值。
DensePose的论文中提出了DensePose-RCNN,这是Mask-RCNN的一种变体,可以以每秒多帧的速度在每个人体区域内密集地回归特定部位的UV坐标。它基于一种能将图像像素通过卷积网络映射到密集网格的系统——DenseReg。模型的目标是决定每个像素在表面的位置以及它所在部分相对应的2D参数。
https://github.com/chenyilun95/tf-cpn

DensePose

DensePose借用了Mask-RCNN的架构,同时带有Feature Pyramid Network(FPN)的特征,以及ROI-Align池化。除此之外,他们在ROI池化的顶层搭建了一个全卷积网络。
贡献:
1.通过收集 SMPL 模型 和 COCO 数据集中的人物外观之间的密集对应而为该任务引入了第一个人工收集的真实数据集。这是通过在标注过程中使用一种利用了 3D 表面信息的全新标注流程实现的。

2.通过在任何图像像素对人体表面坐标进行回归,所得到的数据集训练了可以得到自然环境中密集对应的基于 CNN 的系统。实验了依赖于 Deeplab的全卷积架构和依赖于 Mask-RCNN 的基于区域的系统,并观察到了基于区域的模型相比于全卷积网络的优越性。考虑了我们的方法的级联变体,并在已有的架构上实现了进一步提升。

3.探索了利构建的真实信息的不同方法。其监督信号是在每个训练样本中随机选择的图像像素子集上定义的。使用了这些稀疏对应来训练一个「教师(teacher)」网络,其可以「修补(inpaint)」图像其余区域的监督信号。不管是与稀疏点相比还是与其它任何已有的数据集相比,使用这种修复后的信号能够得到明显更好的表现。
论文地址:arxiv.org/abs/1802.00434
GitHub地址:github.com/facebookresearch/Densepose
数据集地址:github.com/facebookresearch/DensePose/blob/master/INSTALL.md#fetch-densepose-data

猜你喜欢

转载自blog.csdn.net/qq_20657717/article/details/81916514