单人人体姿态估计综述(转发)

				版权声明:本文为博主原创文章,未经博主允许不得转载。					https://blog.csdn.net/Anymake_ren/article/details/81978260				</div>
							            <div id="content_views" class="markdown_views prism-atom-one-dark">
						<!-- flowchart 箭头图标 勿删 -->
						<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg>
						<p>给定一幅图像或一段视频,人体姿态估计就是去恢复其中人体关节点位置的过程。</p>

数据集

评价标准

主要评价标准包括以下两种,PCK的评价标准多出现在单人的姿态估计上,多人的姿态估计评价标准基本上为mAP,比赛和学术论文中mAP成为衡量结果的必须指标。

  • PCK
    Percentage of Correct Keypoints (PCK),reports the percentage of keypoint detection falling within a normalized distance of the ground truth.
    For FLIC, distance is normalized by torso size, and for MPII, by a fraction of the head size (referred to as PCKh).

  • mAP
    人体骨骼关键点的评价指标类比通用的物体检测评价方式,将最终的mAP(mean Average Precision)值作为评价依据。物体检测任务中使用IoU(Intersection over Union)来评价预测与真实标注之间的差异,在人体骨骼关键点检测任务中,我们使用OKS(Object Keypoint Similarity)代替IoU,对选手预测的人体骨骼关键点位置与真实标注之间的相似性进行打分。

OKS计算

面临的挑战和难点

  1. 人体的肢体运动比较灵活

  2. 视角的变化

  3. 衣着的变化

基于CNN得单人姿态估计方法

2015年之前都是直接回归出关节的坐标(Deep pose),效果并不理想。其主要原因有两方面:一方面是人体运动比较灵活,另一方面,回归模型的可扩展性较差,比较难于扩展到不定量的人体姿态识别问题中。因此,目前大家普遍使用的过渡处理方法是将其看作检测问题,从而获得一张热点图谱。

[1] Convolutional Pose Machines CVPR 2016

  • 源码:https://github.com/shihenw/convolutional-pose-machines-release“>github

  • COCO2016 Keypoints Challenge的冠军。

  • 2016 年提出的 CPM 方法具有很强的鲁棒性,CPM 的贡献在于使用顺序化的卷积架构来表达空间信息和纹理信息。算法在每一个尺度下,计算各个部件的响应图,对于每个部件,累加所有尺度的响应图,得到总响应图,在每个部件的总响应图上,找出相应最大的点,为该部件位置。作者用各部件响应图来表达各部件之间的空间约束,模型能有效解决遮挡问题。

[2] Stacked Hourglass Networks for Human Pose Estimation

  • 源码:https://github.com/umich-vl/pose-hg-train“>github

  • 16,17年之后出现的大多单人姿态估计算法都是基于这个模型结构进行改进。MPII2016冠军。

  • 一种沙漏型的网络结构,首先进行卷积处理,并进行下采样操作,获得一些分辨率较低的特征,从而使计算复杂度降低。为了使图像特征的分辨率上升,紧接着进行上采样。上采样操作使得图像的分辨率增高,同时更有能力预测物体的准确位置。通过这样一种处理,相较于其他网络,该网络结构能够使同一个神经元感知更多的上下文信息。

  • 作者提到在12 GB NVIDIA TitanX GPU 训练用时3天,每一幅图片前向运算用时75ms,每一副图片测试用时130ms,比CPM方法有显著优势。

[3] Learning Feature Pyramids for Human Pose Estimation ICCV2017

  • 源码:

<a href=" rel=" nofollow"github:<a="" 基于cnn的多人姿态估计方法"="" target="_blank">多人估计方法一般分为两大类,即Top-down和Bottom-up,其中Top-down是指先把人框出来,然后再用单人的方法去定位人的关节,而Bottom-up的方法是先把所有关节位置弄出来,然后再区分关节属于谁。前者运算时间会随着图像中人的个数而显著增加,Bottom-up所需计算时间基本不变。

<a href=" rel=" nofollow"github:<a="" 基于cnn的多人姿态估计方法"="" target="_blank">

Top-down

[1] G-RMI Towards accurate multi-person pose estimation in the wild (CVPR 2017 Google)

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

[2] MASK-RCNN (ICCV 2017, Facebook,Kaiming He)

  • 2017年何凯明的Mask R-CNN,Mask R-CNN 是用于目标检测分割的框架,即对一张图片,既输出图片中已有的目标,还能为每一个实例生成一个高质量的分割掩码。mask RCNN是在 faster R-CNN 的基础上,在每一个 RoI 都增加一个预测分割的mask,这和分类以及 bounding box 回归是并行的一条分支。它的训练简单,仅仅比 faster RCNN多一点计算开销。它易于泛化到多个任务上,例如人体姿态估计。应用到pose estimation,将分割系统中的目标改为K个one-hot,m*m的二进制mask。

  • 准确率比COCO 2016 冠军高0.9个点,速度达到5 FPS。

[3] RMPE: Regional Multi-Person Pose Estimation (ICCV 2017)

    <a href=" rel=" nofollow"github:<a="" 基于cnn的多人姿态估计方法"="" target="_blank">
  • <a href=" rel=" nofollow"github:<a="" 基于cnn的多人姿态估计方法"="" target="_blank">

    <a href=" rel=" nofollow"github:<a="" 基于cnn的多人姿态估计方法"="" target="_blank">源码:github

  • AlphaPose:上海交大卢策吾团队和腾讯优图工作,COCO2017 Keypoints Challenge亚军。

  • 论文主要考虑的是top-down的关键点检测算法在目标检测产生Proposals的过程中,可能会出现检测框定位误差、对同一个物体重复检测等问题。检测框定位误差,会出现裁剪出来的区域没有包含整个人活着目标人体在框内的比例较小,造成接下来的单人人体骨骼关键点检测错误;对同一个物体重复检测,虽然目标人体是一样的,但是由于裁剪区域的差异可能会造成对同一个人会生成不同的关键点定位结果。本文提出了一种方法来解决目标检测产生的Proposals所存在的问题,即通过空间变换网络(STN)将同一个人体的产生的不同裁剪区域(Proposals)都变换到一个较好的结果,如人体在裁剪区域的正中央,这样就不会产生对于一个人体的产生的不同Proposals有不同关键点检测效果。检测使用的是SSD-512,识别人体姿态使用的是Stacked Hourglass方法。

  • 网站挂出来的在各个数据集的评测结果比论文好很多,应该是后来调整的。已经开源了,不过速度只有5fps,实时的版本还没有出来。

  • [4] Cascaded Pyramid Network for Multi-Person Pose Estimation

    • 源码: github

    • 讲解:旷视研究员解析

    • 旷视提出来CPN模型,COCO2017 Keypoints Challenge的冠军,目前COCO榜单也是最好的。

    • 先生成人体边界框,利用mask-rcnn的detection结构检测人体(FPN+ROIAlign),之后通过CPN实现关键点检测。有效的级联金字塔网络CPN包括GlobalNet和RefineNet两部分。GlobalNet是特征金字塔网络,可以定位简单的关键点,如眼睛和手,虽然无法识别被遮挡的关键点,但是可以提供上下文信息,用于推断被遮挡的关键点。RefineNet通过整合GlobalNet所有级别的特征来处理比较难识别的关键点。

    • 该网络以ResNet50作为骨架网络在8卡Titan上要训练1.5天。利用ResNet-Inception作为骨架网络,在COCO test-dev数据集上取得了极好的效果,远超OpenPose和Mask-RCNN。文章没有提到速度,想必速度没有5fps。(MASK RCNN直接进行人体姿态估计5fps)。

    Bottom-up

    [1] open-Pose:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields (CVPR 2017 Oral, CMU)

    • 源码:github

    • Part Affinity Fields(PAF)能够针对多人做到实时检测,它采用的却是Bottom-up的方法,网络框架分为两路;一路使用 CNN,根据置信图进行关节点预测,另一路使用CNN 获得每个关节点的 PAF,PAF 可以看作是记录 limb 位置和方向的 2D 向量。两路进行联合学习和预测。最后就是如何将这些节点两两连接不重复,这转换为图论问题。

    • 评测数据集:COCO 2016关键点检测数据集+MPII。对于MPII多人pose,本文无论是准确度还是精度上都有质的飞跃。对于一个含有19个人的video,速度可以达到8.8fps。目前开源最好的demo效果可以达到15fps。

    [2] Joint Multi-Person Pose Estimation and Semantic Part Segmentation ( ICCV 2017, UCLA)

    • 论文对人体进行不同部位分割,而关键点都落在分割区域的特定位置,通过部位分割对关键点之间的关系进行建模,既可以显式的提供人体关键点的空间先验知识,指导网络的学习,同时在最后对不同人体关键点进行聚类时也能起到相应的连接关键点的作用。该方法耗时太久,一张图片用时8s。

    [3] Associative Embedding (Associative Embedding:End-to-End Learning for Joint Detection and Grouping) (rejected by ICCV2017 , UMICH Jia Deng)

    • 源码:github

    • MPII总体评价精度上榜首位置

    • 论文提出了一种single-stage,将检测和分组合并到一个过程,end-to-end的关节点检测和分组方法,这不同于以往的multi-stage的关节点检测方法。

    • 基本方法是在检测环节直接给检测结果编号,表明它属于哪个物体,所得到的这些编号标签就代表了分组。因为这重新将神经网络回到了黑盒时代——让神经网络去得到准确的编号标签,所以在训练的时候需要特别设计loss function,促使统一物体有相同标签,不同的物体不同。因为ground truth中并没有现成的这种标签,所以不用在‘标签号大小’上对ground truth负责。而且重点不是标签的大小,而是保证他们是不同的就好了,所以网络可以自己决定标签号大小,只要符合ground truth分组。在多人姿态识别时,用到了堆叠Hourglass网络的方法,由此产生每一个关节的位置heatmap和关节点的标签heatmap,然后将关节使用相同标签分组。文章没有提到速度。

    总结

    • 目前单人的姿态识别技术已经很成熟,由于一张图只含有一个人,所以用时来说100ms左右。Open-pose的CPM模型采用的大卷积核来获得大的感受野,对于推断被遮挡的关节是很有效的,实现起来简单,只不过速度略慢一点。单人方法可以考虑CPM。

    • 多人的姿态识别top-down的方法总体来说效果好于bottom-up的方法,而bottom-up的速度明显要优于top-down。取舍的话,Openpose是一个不错的选择。商用的话,感觉提速是必须的一个过程。

    				版权声明:本文为博主原创文章,未经博主允许不得转载。					https://blog.csdn.net/Anymake_ren/article/details/81978260				</div>
    							            <div id="content_views" class="markdown_views prism-atom-one-dark">
    						<!-- flowchart 箭头图标 勿删 -->
    						<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg>
    						<p>给定一幅图像或一段视频,人体姿态估计就是去恢复其中人体关节点位置的过程。</p>
    

    猜你喜欢

    转载自blog.csdn.net/yyyllla/article/details/85997998