2020人体姿态估计综述(Part1:2D Single Person)

前言

现在距离研究生开学还有一个月的时间,回顾保研后的这大半年,自己先是在深度学习这个领域打基础,从看吴恩达的机器学习再到花书以及西瓜书。之后确定了Human Pose的研究方向,开始关注这一领域,看了不少论文,也借着毕设自己动手写了一个项目,但感觉自己的知识一直没有形成体系。因此想利用这一个月的时间,将2D与3D的比较经典的论文、方法再总结回顾一下,构建出自己的Human Pose知识树。
回头再看,终于明白了为什么CPM和Hourglass这两个工作有着里程碑一样的地位,这两篇工作几乎把大方向给定好了,后续的大部分工作都是对他们的各种改进。

这篇review借鉴了许多博文,主要有以下:
3D Pose Estimation关键点检测的算法整理
2020 Pose Estimation人体骨骼关键点检测综述笔记
重新思考人体姿态估计
人体姿态估计(Human Pose Estimation)经典方法整理
A 2019 guide to human pose estimation

目录

1 Human Pose Estimation
2 2D Single-Person Pose Estimation

  2.1 Dataset
  2.2 Ground Truth
  2.3 DeepPose: Human Pose Estimation via Deep Neural Networks, CVPR2014
  2.4 Efficient Object Localization Using Convolutional Networks, CVPR2015
  2.5 Convolutional Pose Machines, CVPR2016
  2.6 Stacked Hourglass Networks for Human Pose Estimation, ECCV2016
  2.7 Multi-Context Attention for Human Pose Estimation, CVPR2017
  2.8 Human Pose Estimation with Spatial Contextual Information, Arxiv2019
  2.9 Cascade Feature Aggregation for Human Pose Estimation, Arxiv2019
  2.10 HRNet & Higher HRNet, CVPR2019&CVPR2020
  2.11 Toward fast and accurate human pose estimation via soft-gated skip connections, Arxiv2020
  2.12 2D Single-Person Pose Estimation小结

3 2D Top-Down Multi-Person Pose Estimation
4 2D Bottom-Up Multi-Person Pose Estimation
5 3D Human Pose Estimation from Image
6 3D Human Pose Estimation from Video

1 Human Pose Estimation

人体姿态估计的定义就是在图像或视频中定位人体各个关节点的位置,可以分为2D以及3D两种情况。人体姿态估计是一种基础性的计算机视觉技术,可以应用于动作识别、机器人训练,增强现实等方面。人体可能存在各种姿态、有些关节所占的像素区域很小、关节之间的遮挡、背景复杂等因素都使得人体姿态估计是一个非常有挑战性的任务。
传统的方法是使用图结构框架,这是一种结构化的预测任务。其通过可变形的部件集合来表示人体,各个部件采用模板匹配来检测,然后求出各个部件之间的空间连接关系,以此构成完整的人体姿态。
基于深度学习的方法则是利用神经网络来进行人体姿态估计,神经网络可以自动学习有效的特征,尤其是卷积神经网络大大提升了检测性能,这也取代了以往手工设计的特征。图模型在基于深度学习的方法中依然有强大的生命力,它往往作为一种动力学限制被涵盖到整个过程中,对性能的提升也有着非常大的作用。

2 2D Single-Person Pose Estimation

2.1 Dataset

MSCOCO:2D的多人人体关键点检测数据集,17个关键点,样本数为30W+,是现在主流的数据集。
MPII:2D单人/多人的数据集,16个关键点,样本数25K,在这个数据集上的工作已经快要走到尽头了。
AI Challenger:2D多人的数据集,14个关键点,样本数约为38W,竞赛用的数据集。

2.2 Ground Truth

最直接的是坐标(x,y)形式,这种方式在本质上来说,需要回归的是每个关键点的一个相对于图片的offset,而长距离offset在实际学习过程中是很难回归的,误差较大,同时在训练中的过程,提供的监督信息较少,整个网络的收敛速度较慢。
另一种常用的是heatmap形式,回归出每一类关键点的概率,在一定程度上每一个点都提供了监督信息,网络能够较快的收敛,同时对每一个像素位置进行预测能够提高关键点的定位精度,在可视化方面,Heatmap也要优于Coordinate,相关研究表明heatmap优于coordinate。
Heatmap + Offsets的Ground Truth构建思路主要是Google在CVPR 2017上提出的,与单纯的Heatmap不同的是,Google的Heatmap指的是在距离目标关键点一定范围内的所有点的概率值都为1,在Heatmap之后,使用Offsets,即偏移量来表示距离目标关键点一定范围内的像素位置与目标关键点之间的关系。(论文:Towards accurate multi-person pose estimation in the wild, CVPR2017)

2.3 DeepPose: Human Pose Estimation via Deep Neural Networks, CVPR2014

在这里插入图片描述

模型使用的是AlexNet的七层,最后输出层输出2K个坐标,采用L2 Loss进行模型的训练。此外,DeepPose采用了级联的思想来不断优化预测,首先粗略的估计出坐标,然后将预测的关节点周围的图像剪裁下来送入下一阶段,然后再利用这个更高分辨率的图像学习更精细的尺度特征,最终优化预测性能。数据集采用LSP,PCP@0.5达到了61%。

2.4 Efficient Object Localization Using Convolutional Networks, CVPR2015

是Joint Training of a Convolutional Network and a Graphical Model for Human Pose Estimation的拓展。文章采用heatmap进行预测,并提出了新的级联结构,并加入了Spatial Dropout。Heatmap预测很好理解,而Spatial Dropout的来源是,在localization任务中,点与点之间有很强的关联性,如果用dropout,会导致无法利用周围点的信息。Spatial Dropout对此做了修改,不是丢弃某一层的神经元,而是丢弃某些特征图,这样就避免点与点之间的联系被切断。如下图,模型先用两个分支在不同尺度上进行特征提取,然后Spatial Dropout,之后再预测heatmap。
在这里插入图片描述
引入了Pose Machine(Pose Machines: Articulated Pose Estimation via Inference Machines, ECCV2014)整个模型是级联结构,如下图所示,上面的网络是Corase Heat-Map Model,下面有两个网络,一个网络根据粗略的heatmap在特征图上进行对应区域的裁剪。另一个网络则是进行refinement的任务,预测出Δx,Δy,用于修正上面网络的结果,以获得更加准确的结果。整个结构其实是和DeepPose很像的,结构区别在于这里直接用特征图进行裁剪。
在这里插入图片描述
关于细节,作者通过实验也说了更多的东西,一个是说明了pooling对预测精度的影响,4x和8x结果上差不多,到了16x时候精度下降的就比较多了,这为后续工作中pooling倍数的选择提供了一些建议;另一个是说明了级联所带来的性能提升。不同尺度的整合,为困难关节点提供了更多信息,提高了预测准确度。

2.5 Convolutional Pose Machines, CVPR2016

在这里插入图片描述

模型可以分为两个部分来看,左侧Stage1是输入原始图像,输出各个关节点的heatmap,右侧的Stage都是一样的结构,将前一阶段生成的heatmap与特征图concat起来,再一次输出关节点heatmap。为了避免梯度消失现象,作者采用了中间监督的方法。不同于DeepPose,这里是在不断扩大感受野,而不采用裁剪的方式,作者认为这样可以利用更多图像信息,使得网络对于遮挡等情况有更好的处理能力。

2.6 Stacked Hourglass Networks for Human Pose Estimation, ECCV2016

沙漏网络的出发点在于,对于最终的姿态估计,不仅需要局部的信息,也需要更多尺度的信息,这样才能对人体有一个整体上的理解。沙漏网络的结构使得它可以捕捉各个尺度上的图像信息。
每个Hourglass由许多Residual Module组成,Residual Module结构如下图所示:
在这里插入图片描述

上路为卷积路,白色为卷积层,不改变尺寸,只对通道数进行变化。浅蓝为BN,浅紫为ReLu。模块提取了较高层次的特征(卷积路),同时保留了原有层次的信息(跳级路)。Hourglass的结构如下图所示,这里找了一张二阶Hourglass的图,论文中为四阶的Hourglass,原理都是一样的。
在这里插入图片描述

绿色为Residual Module,逐步提取更胜层次的特征。上方的支路在原尺度进行,下方支路都是先进行下采样再进行上采样。下采样为maxpooling,上采样为最近邻插值。最终的网络结构如下图,其中绿色为Hourglass。
在这里插入图片描述

原始图像经过一次下采样后,送入Hourglass中,Hourglass输出经过两个线性模块(灰色)和11卷积层得到heatmap,然后这里会进行loss的计算,完成中间监督。之后的第二个Hourglass输入由三个部分组成,上面这个图和作者论文中的图是不一致的,一个输入是heatmap过11卷积变换通道,另一个输入是原图的二倍下采样,还有一个是灰色线性模块的输出经过1*1卷积变换通道后的结果,这三个concat在一起。上图中直接把后两者先concat再变换通道,这和论文是不一致的。
论文的创新在于这种堆叠沙漏的结构,结合中间监督,使得网络能够显式地学习每个预测目标之间的关系,越靠后的预测越能够结合所有关键点的位置信息,做出更准确的关键点位置预测。
在这里插入图片描述

2.7 Multi-Context Attention for Human Pose Estimation, CVPR2017

在这里插入图片描述

创新点在于Multi-context attention,CRF和HRU。模型首先使用stacked Hourglass堆叠沙漏网络的的attention map 热点图。然后使用CRF(conditional random field)得到热点图中的相邻关系。然后组合holistic attention model得到全局的个体和part attetntion model得到的人体局部部件。并在此基础上设计了新Hourglass模型(hourglass residual units)HRU增加了感受野变化。
基础网络为8-stacked hourglass,作者使用HRUs(hourglass residual unit)来代替残差单元。HRU包括三个分支,分别是恒等映射、沙漏残差分支以及残差分支,沙漏残差分支输入的感受野为10×10,残差分支输入感受野为3×3,如图。三个分支输出相加作为HRU输出,HRU单元增加了网络的感受野,同时保持了高分辨率信息。
在这里插入图片描述

在各个hourglass中,从不同尺度的特征图中,获得多分辨率的注意力图,然后生成注意力特征。传统的attention是基于softmax去做的,本文的attention是基于CRF来做的,基于CRF可以把局部的信息拿过来,可以构建关节之间的联系。文章采用了多分辨率注意力,从不同尺度的特征图生成多分辨率的注意力图,然后用这些注意力图来改善特征,再进一步完善注意力图和特征,最后进行预测。预测后的进行中间监督以及和前面的特征图一起作为下一个hourglass的输入。
在这里插入图片描述

作者提到了多语义注意力机制multi-semantics attention,作者认为每个stack有不同的语义,底层(stack1-4)的对应局部特征,高层的对应全局特征。底层stacks采用两个整体注意力图对整体人体进行编码。高层的stacks,设计了分层的coarse-to-fine来对局部关节点进行缩放处理。在高层stacks中,使用的是part attention。由此,模型可以处理从局部显著区域到全局语义空间的不同内容。另一篇也用了attention的文章是A Cascaded Inception of Inception Network with Attention Modulated Feature Fusion for Human Pose Estimation,这篇文章提出了三种新技术侧重于利用不同级别的特征进行估计。首先,初始化(IOI)块是旨在强调低级特征。其次,根据人体关节信息提出了注意机制来调整关节之间的联系。第三,提出了一种级联网络来顺序定位关节,这强制从独立部件的关节传递消息,例如从头部和躯干到手腕或脚踝等远程关节。

2.8 Human Pose Estimation with Spatial Contextual Information, Arxiv2019

许多网络都是先预测再优化,作者根据这个思想提出了Cascade Prediction Fusion(CPF)网络用来预测关键点和Pose Graph Neural Network(PGNN), 用来对上级预测的关键点进行修正。

先看CPF,结构和hourglass很像,基本思想都是一致的,区别只在于hourglass的内部实现上。CPF也是multi-stage的形式,但对pred heatmap做了不一样的处理.。stage t得到的heatmap不再是直接作为stage t+1的输入,而是先经过1x1 conv增加channel数,再和 stage t+1的featuremap element-wise add之后,再得到 stage t+1的heatmap 输出。文章说这么做可以最大程度的保留前面层网络提取到的位置信息, 用来辅助后面高层语义层提取的语义信息, 使得最终提取出来的heatmap的点更准确。
在这里插入图片描述

再说PGNN,PGNN是串联在CPF后的,用于修正CPF生成的特征图。这里没有去细看PGNN的内容,以后有需要的时候再去仔细研究一下。

2.9 Cascade Feature Aggregation for Human Pose Estimation, Arxiv2019

这篇mpll数据集结果达到93.3%,这篇文章主要有三点,一是,作者把stage2到stageN的heatmap的平均值作为最后输出;二是作者通过实验得出stage1把resnet101作为backbone,后面的stage采用resnet50作为backbone效果最佳;三是作者引入了AI Challenger的数据集来扩充训练数据。

2.10 HRNet & Higher HRNet, CVPR2019&CVPR2020

HRNet是2019年MSRA的工作,特点在于提出了一种新的结构,网络不同于之前的Hourglass、Simple Baselines。这些网络都是经历了一个先bottom-up再top-down的过程,换言之,得到的高分辨率的feature map都是从低分辨率的feature map经过upsampling/deconvolution恢复过来的,这样总会有一些潜在的信息丢失。HRNet则是将不同分辨率feature map之间的连接从串行改成了并行,使得对于不同分辨率的feature map利用更多。
在这里插入图片描述

HigherHRNet,是微软在HRNet之后延续的一个工作。前面我们提到过HRNet在top-down的方法中表现的很好,是因为这种并行的结构使得最后的feature map能够包含各个分辨率的信息,尤其是对高分辨率信息保留的效果较之前提升尤为明显。在bottom-up的方法中,作者认为有两个问题需要解决:①scale variation,即图片中有各种scale的人,如果仅仅在一个分辨率的feature map下进行预测,难以保证每个scale的人的关键点都能被精确预测;②精确定位small person的关键点。之前一些网络在推理时使用multiscale evaluation,能够缓解问题①,但仍然无法解决问题②,对small person的预测不够精确。
HigherHRNet的思路是首先使用HRNet生成feature map(最高分辨率分支),然后接一个类似Simple Baselines中的deconvolution层,生成一个更高分辨率的feature map。显然,更高分辨率的feature map有助于更加精确地定位small person的关键点(实践证明接一层deconv. module足够)。在训练时,使用multi-resolution supervision,即对原图1/4和1/2大小的两个feature map同时进行监督,这样做是为了在训练时就使网络获得处理scale variation的能力,1/4的feature map主要处理大一些的人,1/2的feature map主要处理小一些的人,而不是在推理时依赖multiscale evaluation处理scale variation的问题。在推理时,使用multi-resolution heatmap aggregation,即将不同分辨率的heatmap取平均用于最后的预测,也是为了处理scale variation。

2.11 Toward fast and accurate human pose estimation via soft-gated skip connections, Arxiv2020

这篇文章在mpll数据集结果达到94.1%,目前MPII上为SOTA。文章有两个创新,一个是对于残差块中的直接连接,以及hourglass中的编解码模块相同分辨率等情况的skip connection的作用进行研究,表示直接连接可能影响结论。并通过试验发现很多情况下参数a是0,即不需要连接。正对此提出了 gated skip connection,结构如图。作者对卷积通道也进行了skip-connection,同时,对于残差连接,增加了每个通道的参数α,这个参数可以学习,用来控制哪些通道参加残差连接。
在这里插入图片描述

第二个创新点在于Hourglass结构的改进,作者设计了一种Hourglass与U-Net结合的网络结构。以往的方法在skip-connection处往往是相加,作者提出了两种改进,(b)是先将两个支路的特征图concat一起,然后conv将2N通道降到N通道;(c)是先concat,然后分组卷积。
在这里插入图片描述

2.12 2D Single-Person Pose Estimation小结

以14年为开始的时间点,回顾经典论文可以发现,头几年涌现出了许多经典的结构,近两年的研究主要在于这些经典结构的改进,即虽然对内部实现做了很多优化,但总体思想还是和先前的保持一致的,这里简单总结一下几个关键点:
(1)整体思想为Multi-Stage的预测,一般第一个stage用于生成粗略的估计,同时这个阶段也承担了特征提取的任务;后续的stage对这个结果进行优化,在这个结构中,中间监督也发挥了重要作用。
(2)特征层面,多尺度的机制十分重要,许多工作都是从这个角度切入,提出了各种各样的内部实现方式。不同的尺度一方面可以解决图片中人体大小不一的问题,另一方面也为准确定位困难关节点提供帮助,我个人认为这其实和感受野有关,因为对小尺度图片进行特征提取时候,感受野其实是变大了的。
(3)逐步扩大的感受野,这一点在帮助模型学习关节点之间的关系方面十分有效,在不引入图模型或动力学限制的情况下,需要依靠大感受野来隐式地学习关节点的关系。
以上三点并不是独立的,他们之间都有紧密的联系,我这里只是自己做的一个大分类。总体上说,我个人觉得2D单人姿态估计的研究已经接近饱和,这两年的论文大多都是对先前的方法进行改进,进一步地,这种现状也会对Top-Down的多人姿态估计产生极大影响,期待大佬能够做出创新性更强的工作。

  • 17
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值