【面试基础--关键点检测】深度学习关键点检测方法发展概述

参考:

https://blog.csdn.net/sigai_csdn/article/details/80650411

https://blog.csdn.net/Anymake_ren/article/details/81978260

1. 导言
       人体骨骼关键点对于描述人体姿态,预测人体行为至关重要。因此人体骨骼关键点检测是诸多计算机视觉任务的基础,例如动作分类,异常行为检测,以及自动驾驶等等。近年来,随着深度学习技术的发展,人体骨骼关键点检测效果不断提升,已经开始广泛应用于计算机视觉的相关领域。本文主要介绍2D人体骨骼关键点的基本概念和相关算法,其中算法部分着重介绍基于深度学习的人体骨骼关键点检测算法的两个方向,即自上而下(Top-Down)的检测方法和自下而上(Bottom-Up)的检测方法。

2. 人体骨骼关键点检测概述

      人体骨骼关键点检测即Pose Estimation,主要检测人体的一些关键点,如关节,五官等,通过关键点描述人体骨骼信息;

                          

      人体骨骼关键点检测是计算机视觉的基础性算法之一,在计算机视觉的其他相关领域的研究中都起到了基础性的作用,如行为识别、人物跟踪、步态识别等相关领域。具体应用主要集中在智能视频监控,病人监护系统,人机交互,虚拟现实,人体动画,智能家居,智能安防,运动员辅助训练等等。

      由于人体具有相当的柔性,会出现各种姿态和形状,人体任何一个部位的微小变化都会产生一种新的姿态,同时其关键点的可见性受穿着、姿态、视角等影响非常大,而且还面临着遮挡、光照、雾等环境的影响,除此之外,2D人体关键点和3D人体关键点在视觉上会有明显的差异,身体不同部位都会有视觉上缩短的效果(foreshortening),使得人体骨骼关键点检测成为计算机视觉领域中一个极具挑战性的课题。

      多人人体骨骼关键点检测主要有两个方向,一种是自上而下,一种是自下而上,其中自上而上的人体骨骼关键点定位算法主要包含两个部分,人体检测和单人人体关键点检测,即首先通过目标检测算法将每一个人检测出来,然后在检测框的基础上针对单个人做人体骨骼关键点检测,其中代表性算法有G-RMI, CFN, RMPE, Mask R-CNN, and CPN,目前在MSCOCO数据集上最好的效果是72.6%;自下而上的方法也包含两个部分,关键点检测和关键点聚类,即首先需要将图片中所有的关键点都检测出来,然后通过相关策略将所有的关键点聚类成不同的个体,其中对关键点之间关系进行建模的代表性算法有PAF, Associative Embedding, Part Segmentation, Mid-Range offsets,目前在MSCOCO数据集上最好的效果是68.7%。

      接下来的介绍,分为经典的单人人体关键点检测模型自上而下的人体骨骼关键点定位算法以及自下而上的人体骨骼关键点定位算法

3. 单人人体关键点检测模型

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

[1] Convolutional Pose Machines CVPR 2016

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

参考博客https://blog.csdn.net/shenxiaolu1984/article/details/51094959

COCO2016 Keypoints Challenge的冠军。

                         

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

[2] Stacked Hourglass Networks for Human Pose Estimation

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

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

                       

      一种沙漏型的网络结构,首先进行卷积处理,并进行下采样操作,获得一些分辨率较低的特征,从而使计算复杂度降低。为了使图像特征的分辨率上升,紧接着进行上采样。上采样操作使得图像的分辨率增高,同时更有能力预测物体的准确位置。通过这样一种处理,相较于其他网络,该网络结构能够使同一个神经元感知更多的上下文信息。作者提到在12 GB NVIDIA TitanX GPU 训练用时3天,每一幅图片前向运算用时75ms,每一副图片测试用时130ms,比CPM方法有显著优势。

4. 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)

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

      旷视提出来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)。

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

      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)

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是一个不错的选择。商用的话,感觉提速是必须的一个过程。

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值