官网:http://mvig.sjtu.edu.cn/research/alphapose.html

论文原文:https://arxiv.org/abs/1612.00137

摘要

复杂环境下的人姿势估计是具有挑战性的。虽然最先进的人体探测器已经表现出良好的性能,但是在定位和识别方面的小错误是不可避免的。这些错误可能会导致单人姿势估计器(SPPE)的失败,尤其是对于完全依赖于人体检测结果的方法。在本文中,我们提出了一种新颖的区域多人姿态估计(RMPE)框架,以便在存在不精确的人体边界框时进行姿态估计。我们的框架由三个部分组成:对称空间变换网络(SSTN),参数姿态非最大抑制(NMS)和姿态引导提议生成器(PGPG)。我们的方法能够处理不准确的边界框和冗余检测,让它在MPII(多人)数据集上达到76.7mAP我们的模型和源代码是公开的。

1.介绍

人体姿态估计是计算机视觉的基本挑战。在实践中,识别多个人在野外的姿势比识别图像中单个人的姿势要困难得多
最近在尝试通过使用两步框架或基于零件的框架来解决这个问题。两步框架首先检测人体边界框,然后独立估计每个
框内的姿势。部分框架首先独立检测身体部位,然后组装检测到的身体部位,形成多个人体姿势。(这个意思就是视觉
识别中大名鼎鼎的自底向上和自顶向下的方法)在两步框架中,姿态估计的准确性主要取决于检测到的边界框的质量。
在基于部分的框架中,当两个或两个以上的人太靠近了,组合的人的姿势是模糊的 。另外,由于仅仅利用二阶身体部
位依赖性,所以基于零件的框架丧失了从全局姿态视图识别身体部位的能力。我们的方法遵循两步框架。 我们的目标
是即使给出不正确的边界框,也能检测到准确的人体姿势。为了说明以前的方法的问题,我们应用了最先进的物体探测
器Faster-RCNN和SPPE堆叠沙漏模型。图1和图2显示了两个主要问题:定位误差问题和冗余检测问题。实际上,SPPE很
容易受到边框错误的影响。即使对于IoU> 0.5的边界框被认为是正确的情况,检测到的人体姿态仍可能是错误的。由于
SPPE为每个给定的边界框产生一个姿态,所以冗余检测导致冗余姿态。针对上述问题,提出了一种区域多姿态估计
(RMPE)框架。该框架改善了基于SPPE的人体姿态估计算法的性能。设计了一种新的对称空间变换网络(SSTN) SPPE从
不准确的边界框中提取高质量的单人区域。引入一个新的并行SPPE分支来优化这个网络。 为解决冗余检测问题,引入参数
化姿态网管系统。我们的参数姿态NMS通过使用新的姿态距离度量来比较姿态相似性来消除冗余姿态。 采用数据驱动
的方法来优化姿态距离参数。最后,我们提出了一种新颖的姿态引导人类提议生成器(PGPG)来增强训练样本。 通过学习
不同姿势的人体检测器的输出分布,我们可以模拟人体包围盒的生成,产生大量的训练数据样本。我们的RMPE框架是一般的,
适用于不同的人体检测器和单人姿态估计器。 我们在MPII(多人)数据集上应用了我们的框架,在这个数据集上它超越了
最先进的方法,达到了76.7 mAP值。我们还进行了消融研究,以验证我们框架中每个提议组件的有效性。 我们的模型和
源代码已公开发布,以支持可重复的研究。

图1.边界框本地化错误的问题 红框是地面真值边界框,黄色框是检测到的IoU> 0.5的边界框。 热图是SPPE对应于两种盒子的输出。 在黄色盒子的热点图中没有检测到相应的身体部位。 请注意,在IoU> 0.5的情况下,黄色框被视为“正确”检测结果。 但是,即使使用“正确的”边框,也不能检测到人的姿势。

图2.冗余人体检测问题 左图显示了检测到的边界框; 正确的图像显示估计的人的姿势。 由于每个边界框都是独立运行的,因此我们框架中的单个人物组成部分会检测到多个姿态。

2.相关工作

2.1单人姿态估计

在单人姿态估计中,仅通过试图估计单个人的姿态来简化姿态估计问题,并假定人主宰图像内容。 传统的方法考虑图形结构模型。 例如,树模型和随机森林模型在人体姿态估计中已被证明是非常有效的。随机场模型和依赖图模型等基于图的模型在文献中也得到了广泛的研究。最近,深度学习已经成为目标/人脸识别的一个很有前途的技术,人体姿态估计也不例外。 代表作品包括DeepPose,基于DNN的模型和各种基于CNN的模型。 除了简单地估计人体姿态外,一些研究同时考虑人体解析和姿态估计。 对于单人姿势估计,只有在人物正确定位的情况下,这些方法才能表现良好。 但是,这个假设并不总是令人满意的。

2.2多人姿态估计

Part-based Framework部分探测为基础的框架代表作品(PF)在部分框架中得到研究。 Chen提出了一种通过图形模型来解析大部分被遮挡的人的方法,该方法将人类模拟为身体部位的灵活组合。 Gkiox等人使用k-poselets来联合检测人物并预测人体姿势的位置。最后的姿势定位通过所有激活的姿态的加权平均来预测。 Pishchulin提出DeepCut首先检测所有身体部位,然后通过整体线性规划对这些部位进行标记和组装。一个更强大的基于ResNet的部件检测器和更好的增量优化策略由Insafutdinov提出。 虽然基于部分的方法已经表现出良好的性能,但是由于只考虑了小的局部区域,所以它们的身体部分探测器可能是脆弱的。
Two-step Framework我们的工作遵循两步框架。 在我们的工作中,我们使用基于CNN的SPPE方法估计姿势,而Pishchulin使用传统的图形结构模型进行姿态估计。 特别是,Insafutdinov提出了一个类似的两步流水线,它使用更快的R-CNN作为他们的人体检测器和一DeeperCut作为他们的姿态估计器。 在MPI数据集上,他们的方法只能达到51.0,而我们的方法可以达到76.7 mAP。 随着对象检测和单人姿态估计的发展,两步框架的性能可以进一步提高。 本文旨在解决两步框架下人体检测不完善的问题,以最大限度地发挥SPPE的功能。

3.区域多人姿态检测

我们提出的RMPE的流水线如图3所示。由人体检测器获得的人体边界框被送入“对称STN + SPPE”模块,并自动生成姿态建议。生成的姿态建议由参数化姿态 NMS获取估计的人体姿势。 在培训期间,我们引入了“平行SPPE”,以避免局部最低限度,并进一步利用SSTN的力量。 为了增加现有的训练样本,设计了姿势引导提议生成器(PGPG)。 在下面的章节中,我们将介绍框架的三个主要组成部分。

图3.我们的RMPE框架的流水线 我们的对称STN由在SPPE之前和之后附加的STN和SDTN组成。 STN收到人工提案,SDTN生成提案。 平行SPPE在训练阶段充当额外的调节器。 最后,进行参数姿NMS(p-Pose NMS)消除冗余姿态估计。 与传统训练不同,我们使用PGPG生成的图像训练SSTN + SPPE模块。

3.1。 对称STN和并行SPPE

人体探测器提供的人体建议并不适合SPPE。 这是因为SPPE是专门针对单人图像进行培训的,对本地化错误非常敏感。 已经表明,人类提议的小幅度的翻译或裁剪可以显着影响SPPE的性能。我们引入了对称的STN +并行SPPE,以在给出不完善的人工建议时增强SPPE。 我们的SSTN和并行SPPE模块如图4所示。
STN and SDTN
空间变换网络(STN)在自动选择兴趣区域方面表现出优异的性能。 在本文中,我们使用STN来提取高质量的人工提案。 在数学上,STN执行二维自由度变换,可以表示为:
x i s y i s = [ θ 1 θ 2 θ 3 ] x i t y i t 1
其中θ1,θ2和θ3是R2中的矢量。 x i s y i s x i t y i t 分别是转换之前和之后的坐标。 在SPPE之后,得到的姿势被映射到原始的人类建议图像。自然地,需要空间反变换网络(SDTN)来将估计的人体姿态重新映射回原始图像坐标。SDTN计算用于解除变换的γ并基于γ生成网格


在提取高质量的主要提议区域之后,我们可以利用现成的SPPE来进行精确的姿态估计。 在我们的培训中,SSTN与我们的SPPE一起进行了调整。
并行的SPPE作为正则化作用,用来进一步加强STN提取优质的human proposal。这一支的label设置为single person pose。训练时使用2条支路输出的总误差来训练网络,在测试时将下面的 Parallel SPPE丢掉,只使用Symmetric STN进行前向传播。
Parallel SPPE 为了进一步帮助STN提取良好的人类主导地区,我们在训练短语中添加一个平行的SPPE分支。 该分支与原始SPPE共享相同的STN,但是空间去变换器(SDTN)被省略。 该分支的人体姿势标签被指定为居中。 更具体地说,这个SPPE分支的输出直接与中心定位的地面真实姿势的标签进行比较。 我们在训练阶段冻结这个平行SPPE的所有层。 这个分支的权重是固定的,其目的是反向传播中心位置姿态错误到STN模块。 如果STN的提取姿态不是中心定位的,则并行分支将向后传播较大的错误。 这样可以帮助STN把注意力集中在正确的区域,提取高质量的人优势区域。 在测试阶段,平行的SPPE被丢弃。 我们的平行SPPE的有效性将在我们的实验中得到验证。


图4.我们的对称STN体系结构的示例以及使用并行SPPE的我们的培训策略。 使用的STN由Jaderberg开发。 我们的SDTN取一个由定位网产生的参数θ,并计算γ进行反变换。 我们遵循网格生成器和采样器来提取人类主导地区。 对于我们的并行SPPE分支,指定了一个位于中心的姿态标签。 我们冻结平行SPPE的所有层面的权重,以鼓励STN提取主导性的单人提案。
Discussions平行SPPE在训练阶段可以被看作是正规化者。 它有助于避免STN不将姿势转换到提取的人类区域的中心的不良解(局部最小值)。 达到当地最低限度的可能性增加了,因为SDTN的补偿将使网络产生更少的错误。 这些错误是训练STN所必需的。 使用平行SPPE,训练STN以将人移动到提取区域的中心,以促进SPPE的准确姿态估计。
用SPPE(SDTN之前)的中心位置姿态回归损失代替平行SPPE可能看起来很直观。 但是,这种方***降低我们系统的性能。 尽管STN可以部分地改变输入,但是不可能将该人完全放置在与标签相同的位置。 SPPE的输入和标签之间的坐标空间的差别将会很大削弱了学习姿势估计的能力。 这将导致我们的主分支SPPE的性能下降。因此,为了确保STN和SPPE能够充分利用自己的力量,一个具有冻结重量的并行SPPE对于我们的框架是不可或缺的。 平行SPPE总是产生非中心姿态的大误差,以推动STN产生中心定位姿态,而不影响主分支SPPE的性能。
并行的SPPE作为正则化作用,用来进一步加强STN提取优质的human proposal。这一支的label设置为single person pose。训练时使用2条支路输出的总误差来训练网络,在测试时将下面的 Parallel SPPE丢掉,只使用Symmetric STN进行前向传播。

3.2。 参数化姿势NMS

人类检测器不可避免地产生冗余检测,这又产生冗余的姿态估计。因此,需要姿态非最大抑制(NMS)来消除冗余。 以前的方法要么不够高效,要么不够准确。 在本文中,我们提出了一种参数姿态NMS方法。 类似于前一小节,具有m个关节的姿势Pi被表示为 < k i 1 , c i 1 , . . . . . , < k i m , c i m >> ,其中 k i j c i j 分别是关节的第j个位置和置信度分数。
消除标准我们需要定义姿态相似性,以消除彼此过于接近和过于相似的姿势。 我们定义了姿态距离度量 d ( P i , P j | A ) 来度量姿态相似度,阈值 η 作为消除准则,其中 λ 是函数d(·)的参数集。 我们的淘汰标准可以写成:
f ( P i , P j | λ , η ) = 1 [ d ( P i , P j | Λ , λ ) <= η ]
如果d(·)小于η,则f(·)的输出应该是1,这意味着由于参考姿势 P j 的冗余,姿势 P i 应该被消除。
姿势距离,定义姿势距离 d p o s e ( P i , P j ) 。We assume that the box for P i is B i . Then
we define a soft matching function。
K S i m ( P i , P j | σ 1 ) = <munder> n </munder> t a n h c i n σ 1 t a n h c j n σ 1 , i f k j n B ( k i n ) 0
B k n k i n b o x
还有一部分正公式,我没写了。这一不充分就是非最大抑制:http://blog.csdn.net/shuzfan/article/details/52711706
首先选择置信度最高的pose作为参考,靠近它的pose通过淘汰标准来消除。对于剩下的pose,重复上述过程,直到消除冗余姿势,并且仅返回唯一的pose。

3.3。Pose-guided Proposals Generator

数据增强对于两阶段姿态估计,适当的数据增加对于使SSTN + SPPE模块适应人体检测器产生的“不完美”人体建议是必要的。 否则,模块在人体探测器的测试阶段可能无法正常工作。 直观的方法是在训练阶段直接使用人体检测器生成的边界框。 但是,人体探测器只能为每个人生成一个边界框。 通过使用建议生成器,这个数量可以大大增加。 既然我们已经有了每个人的地面真实姿态和一个物体检测边框,我们可以生成一个与人类探测器的输出分布相同的大量培训提案。 借助这项技术,我们能够进一步提升系统的性能。

Insight我们发现检测到的边界框和地面真实边界框之间的相对偏移的分布在不同的姿态下是变化的。 更具体地说,存在一个分布P(δB| P),其中δB是由人体检测器产生的边界框的坐标与地面真实边界框的坐标之间的偏移,并且P是地面真实姿态 一个人。如果我们可以对这个分布进行建模,我们能够生成许多与人类检测器生成的人类提议类似的训练样本。
模拟由于人体姿态的变化,直接学习分布P(δB| P)是困难的。相反,我们试图学习分布P(δB|原子(P)),其中原子(P)表示P的原子姿态。我们遵循Andriluka用来学习原子姿势的方法。为了从人类姿态的注释中推导出原子姿态,我们首先对齐所有的姿势,使他们的躯干具有相同的长度。然后我们使用k-均值算法对我们对齐的姿势进行聚类,计算出的聚类中心形成我们的原子姿势。现在,对于共享相同原子姿态a的每个人实例,我们计算其地面真​​值边界框和检测边界框之间的偏移。然后用该方向上相应的地面真实边界框的边长对偏移量进行归一化。经过这些过程后,偏移形成一个频率分布,我们将数据转换成高斯混合分布。对于不同的原子姿态,我们有不同的高斯混合参数。我们可以看到图5中的一些分布和相应的聚类人体姿势。


Proposals Generation在SSTN + SPPE的训练阶段,对于训练样本中的每个注释姿态,我们首先查找相应的原子姿势a。 然后我们根据P(δB| a)通过密集采样产生额外的偏移以产生增强的训练建议。symmetric STN + SPPE应该用SSD产生的人体建议框充分训练,需要适当的数据增强。这里主要是在训练过程中增加proposal的数量,虽然每一张图片都只有K个人,每个人只会产生一个bbox,但是可以根据ground truth的proposals,生成和其分布相同的多个proposals一起训练。

4。实验结果

所提出的方法在两个具有较大遮挡情况的标准多人数据集上进行定性和定量评估:MPII和MSCOCO2016关键点挑战数据集。

4.1。评估数据集

MPII多人数据集具有挑战性的基准MPII人体姿势(多人)包括3,844次训练和1,758个测试组,包括遮挡和重叠人员。 此外,它包含超过28,000个单人姿势估计训练样本。 我们使用单人数据集中的所有训练数据和90%的多人训练集来调整SPPE,剩下10%用于验证。
COCO数据集,我们还在MSCOCO关键点挑战数据集上评估我们的方法。这个数据集要求在具有挑战性的,不受控制的条件下定位人员关键点。 它包括105,698次培训和大约80,000次测试人员实例。 训练集包含超过100万个标记的关键点。 测试集分为四个大致相同大小的分割:测试挑战,测试开发,测试标准和测试储备。

4.2。测试中的实现细节

在本文中,我们使用基于VGG的SSD-512作为我们的人体检测器,因为它能够有效和高效地执行对象检测。 为了确保提取整个人员区域,检测到的人工建议沿着高度和宽度方向延伸30%。 由于其优越的性能,我们使用堆叠式沙漏模型作为单人姿势估计器。 对于STN网络,我们采用ResNet-18作为我们的本地化网络。 考虑到内存效率,我们使用较小的四层沙漏网络作为并行SPPE。

4.3。结果

在MPI数据集上的结果我们在完整的MPII多人测试集上评估了我们的方法。 表1给出了完整测试集的定量结果。值得注意的是,我们在识别困难的关节如腕,肘,踝和膝关节时的平均准确度为72 mAP, 最新的结果。 我们达到手腕最终准确度70.4 mAP,膝盖准确度73 mAP。 我们在图6中给出了我们的一些结果。这些结果表明,我们的方法可以准确地预测多人图像中的姿态。 补充材料中提供了更多的结果。

在COCO数据集上的结果我们在MSCOCO关键点训练+验证集上对SPPE进行了调整,并留下了5,000张图像供验证。 表2给出了测试开发集的定量结果。我们的方法达到了最先进的性能。 请注意,当使用类似的人体检测器和SPPE时,我们的方法大大优于R4D和Caltech。 即使使用劣质人体探测器(SSD,28.8 mAP VS G-RMI,在MSCOCO检测测试开发集上为41.6 mAP),没有额外的内部训练数据和整合,我们的两步法也比G-RMI的性能 1.3 mAP,这证明了我们提出的框架的有效性。

4.4。消融研究

我们评估了三个提出的组件,对称STN,姿态引导提议生成器和参数姿态NMS的有效性。 已经通过从管道中移除提出的部件或用常规解算器替换提出的部件来进行消融研究。 没有三个组件和我们框架的上限的简单的两步方法进行测试比较。 我们在MPII验证集上进行了这些实验。 另外,我们替换我们的人体检测模块来证明我们框架的一般性。
为了验证对称STN和平行SPPE的重要性,进行了两个实验。 在第一个实验中,我们从管道中移除了包括并行SPPE在内的SSTN。 在第二个实验中,我们只删除了平行的SPPE并保持了对称的STN结构。 这两个结果都显示在表3(a)中。 当去除平行SPPE时,我们可以观察到性能降低,这意味着具有单人图像标签的平行SPPE强烈鼓励STN提取单个人区域以最小化总损失。
在表3(b)中,我们证明了我们的姿态引导提议生成器在我们的系统中也扮演着重要的角色。 在这个实验中,我们首先从训练阶段删除数据增强。 最后的MAP下降到73.0%。 然后我们比较我们的数据增强技术和简单的基线。 基线是通过抖动人检测器产生的边界框的位置和纵横比来形成大量的附加提议而形成的。 我们选择那些IoU> 0.5的地面真实盒子。 从表3(b)的结果可以看出,我们的技术比基准方法好。 根据分布生成培训建议可以看作是一种数据重新抽样,可以帮助模型更好地融合人的建议。


由于姿态NMS是一个独立的模块,我们可以将其直接从我们的最终模型中移除。实验结果如表3(c)所示。 正如我们所看到的,如果参数化姿态NMS被移除,则mAP会明显下降。 这是因为多余姿势数量的增加最终会降低我们的精确度。 我们注意到前一个姿态NMS也可以在一定程度上消除冗余检测。 最先进姿态NMS算法被用来替代我们的参数姿态NMS,其结果在表3(c)中给出。由于缺少参数学习,这些方案执行效率比我们低。 在效率方面,在我们的包含1300个图像的验证集中,公开可用的实现需要62.2秒来执行姿态NMS,而使用我们的算法仅需要1.8秒。

5.结论

本文提出了一种新的区域多人姿态估计(RMPE)框架,在精度和效率方面明显优于最先进的多人姿态估计方法。两步框架,人体检测器+ SPPE,SPPE适用于人体检测器。我们的RMPE框架由三个部分组成:对称STN与并行SPPE,参数姿态NMS和姿态引导提议生成器(PGPG)。特别地,PGPG用于通过学习边界框提案的条件分布为一个给定的人的姿势。由于使用对称STN和平行SPPE,SPPE变得善于处理人为定位误差。最后,参数姿态NMS可以用来减少冗余检测。在我们今后的工作中,探索以端到端的方式与人体探测器一起训练我们的框架的可能性将是有趣的。