基于级联金字塔网络的多人姿态估计
摘要
近年来,随着卷积神经网络的发展,多人姿态估计问题得到了很大的改进。但是,仍然存在很多具有挑战性的情况,如关键点被遮挡、关键点不可见、背景复杂等,这些都不能很好地解决。在本文中,我们提出了一种新的网络结构,称为级联金字塔网络(CPN),旨在缓解这些“硬”关键点的问题。更具体地说,我们的算法包括两个阶段:Global-Net和Refine-Net。Global-Net是一个特征金字塔网络,它可以成功地定位“简单”的关键点,如眼睛和手,但可能无法准确地识别被遮挡或不可见的关键点。我们的Refine-Net尝试通过将来自Global-Net的所有级别特征表示与在线硬关键点挖掘损失集成在一起,来明确地处理“硬”关键点。总之,为了解决多人位姿估计问题,首先采用自上向下的途径基于检测器生成一组人体检测框,然后采用我们的CPN对每个人体检测框中的关键点进行定位。基于所提出的算法,我们在COCO关键点基准上获得了最先进的测试结果,在COCO测试开发数据集上的平均精度为73.072.1在COCO测试挑战数据集上,相对于COCO 2016关键点挑战的60.5提高了19%。代码和检测结果已公开供进一步研究使用。
- 介绍
多人姿态估计是对图像中所有人的关键点进行识别和定位,是人类动作识别、人机交互等许多视觉应用的基础研究课题。近年来,多人位姿估计问题由于深度卷积神经网络的参与,已经得到了很大的改进[22,16]。例如,在[5]中,利用卷积位姿机定位图像中的关键点关节,并提出部分亲和域(PAFs)将关节装配到不同的人。MaskRCNN[15]首先预测人的检测框,然后基于人的包围盒根据特征图,得到人的关键点。虽然已经取得了很大的进展,但仍然存在很多具有挑战性的情况,如关键点被遮挡、关键点不可见、背景拥挤等,无法很好地定位。主要原因有两点:1)这些“硬”关节不能仅仅根据其外观特征,如躯干点来识别;2)这些“硬”关节在训练过程中没有得到明确的处理。
为了解决这些“硬”节点,本文提出了一种新的网络结构——级联金字塔网络(CPN)。我们的网络架构有两个阶段:GlobalNet和RefineNet。我们的GlobalNet基于特征金字塔网络[24]学习了一个很好的特征表示。更重要的是,金字塔特征表示可以提供足够的上下文信息。这对于被遮挡不可见关节的推理是不可避免的。基于金字塔特征,我们的RefineNet基于在线硬关键点挖掘损失明确地处理“硬”关节。
在级联金字塔网络的基础上,解决了基于自上向下途径的多人位姿估计问题。首先使用人体检测器生成一组人体检测框,然后使用我们的CPN对每个人体检测框中的关键点进行定位。此外,我们还探讨了可能影响多人姿态估计性能的各种因素的影响,包括人的检测器和数据预处理。这些细节对进一步提高算法的准确性和鲁棒性有一定的参考价值。
总之,我们的贡献包括以下三方面:
我们提出了一种新颖的和有效地将全局金字塔网络(GlobalNet)和基于在线硬关键点最小值的金字塔精细化网络(RefineNet)相结合的级联金字塔网络(CPN)。
我们探讨了各种因素对自上向下管道中多人姿态估计的影响。
我们的算法在具有挑战性的COCO多人关键点测试中达到了最先进的结果。测试开发数据集上73.0 AP,测试挑战数据集上72.1 AP。
- 相关工作
人体姿态估计是几十年来一个活跃的研究课题。解决人体姿态估计问题的经典方法主要采用图像结构[10,1]或计算机模型[7]。更具体的来说,早期研究[1,34,13,33,8,44,29,20]将人的关键点估计问题模拟成树状结构或图形模型问题,并基于手工制作的特征预测关键点位置。最近的研究[27,14,4,19,39,42]主要依赖于卷积神经网络(CNN)[22, 16]的发展,它很大程度上提高了姿态估计的性能。本文主要研究基于卷积神经网络的方法。该主题分为基于给定边界框的裁剪图像预测人体关键点的单人位姿估计和需要进一步识别一个图像中所有人的全身姿态的多人位姿估计。
多人姿态估计
由于对实际应用的需求越来越高,多人姿态估计越来越受到人们的欢迎。然而,由于遮挡、个体的各种姿态以及不同个体之间不可预测的交互作用,多人姿态估计具有挑战性。多人姿态估计方法主要分为自底向上和自上向下两大类。
自底向上的方法。自底向上的方法[5,26,30,19]首先直接预测所有的关键点,然后将关键点集合成所有人的完整姿势。DeepCut[30]将在图像中区分不同的人的问题解释为整数线性规划(ILP)问题,并将部分检测候选对象划分为人集群。然后将人群与标记的身体部位进行组合,得到最终的姿态估计结果。DeeperCut[19]使用更深的ResNet[16]改进了DeepCut[30],并使用图像条件的成对项来获得更好的性能。曹哲等人[5]将关键点之间的关系映射到部分亲和域(part affinity fields, PAFs)中,并将检测到的关键点装配到人的不同姿势中。Newell et al.[26]同时生成分数图和像素级嵌入,将候选关键点对不同的人进行分组,得到最终的多人姿态估计。
自顶向下的方法。自顶向下方法[28,18,15,9]将关键点的检测过程解释为两个阶段的流水线,即首先从图像中定位并裁剪所有人,然后解决裁剪后的人块中的单人位姿估计问题。Papandreou等人[28]对热力图上的点的热力图和补偿进行预测,得到基本正确定位,然后利用带有补偿的热力图得到最终的关键点预测位置。Mask-RCNN[15]首先预测人的包围盒,然后裁剪对应的人的包围盒的热力图来预测人的关键点。如果采用自顶向下的方法进行多人位姿估计,为了获得良好的估计性能,人体检测器和单人位姿估计器是非常重要的。在此,我们回顾了一些关于个人姿态估计的工作和目前最先进的检测方法。
单人姿态估计。Toshev等人首先在DeepPose[38]的工作中,引入CNN来解决位姿估计问题,提出了一种级联的CNN位姿回归器来处理位姿估计。thompson et al.[37]试图通过使用CNN和图形模型预测关键点的热图来解决这个问题。后来的作品,如Wei和Newell,通过使用非常深的卷积神经网络生成关键点的得分图,表现出了出色的性能。Wei等人[40]提出了一种多阶段架构,即先生成粗结果,然后在接下来的阶段中不断细化结果。Newell et al.[27]提出了一个u形网络,即沙漏模块,并将几个沙漏模块叠加生成预测。carira等人[6]利用迭代误差反馈得到姿态估计,并逐步完善预测。Lifshitz et al.[23]采用深度共识投票法对关键点最可能的位置进行投票。Gkioxary[14]和Zisserman等[2]类似RNN的结构顺序地改进结果。我们的工作部分受到了生成和完善得分图的工作启发。Yang等人[43]在位姿估计过程中采用金字塔特征作为网络的输入,这是对利用金字塔特征进行位姿估计的一次很好的探索。然而,在位姿估计中,金字塔结构需要更多的精细化操作。
人体检测。人体检测方法主要以RCNN家族为指导[12,11,31],其最新的检测器为[24,15]。这些检测方法一般由两个阶段组成。首先根据默认锚点生成检测方案,然后从特征图中裁剪并进一步细化提案,通过R-CNN网络得到最终的检测框。我们的方法中使用的检测器大多基于[24,15]。
- 我们的多人关键点估计方法
与[15,28]相似,我们的算法采用自上而下的流水线方式:首先在图像上使用人体检测器生成一组人体限定框,然后通过单人骨架估计器预测每个人关键点的详细定位。
3.1人类探测器
我们采用目前最先进的基于FPN[24]的目标检测器算法。采用Mask RCNN[15]中的ROIAlign代替FPN中的ROIPooling。为了训练目标检测器,我们在训练过程中使用了全部80个类别,但在我们的多人骨架任务中只使用了人类类别的盒子。为了与我们的算法进行比较,我们将在COCO VAl和COCO测试数据集上发布检测器结果。
- 2. 级联金字塔网络(CPN)
在开始讨论我们的CPN之前,我们首先简要回顾了基于每个人包围框的单人姿态估计器的设计结构。堆叠沙漏[27],是一种常用的位姿估计方法,它通过堆叠8个沙漏来提高位姿估计性能,这些沙漏由下采样模块和上采样模块组成并带有其余的联系。堆叠策略在一定程度上是有效的,但我们发现堆叠两个沙漏模块就足以获得与八级堆叠沙漏模块相当的性能。[28]利用ResNet[16]网络在自动实现提升性能,在COCO 2016关键点挑战中获得有希望的性能。受上述工作[27,28]的启发,我们提出了一种有效且高效的网络,称为级联金字塔网络(CPN)来解决位姿估计问题。如图1所示,我们的CPN涉及两个子网络:GlobalNet和RefineNet。
3.2.1 GlobalNet
在这里,我们描述了基于ResNet骨干网的网络结构。我们将不同的卷积特征con2 ~5最后残留块表示为C2, C3,..,分别C。3 x 3卷积滤波器应用于C2,.., C5生成关键点的热图。如图2所示,C2、C3等浅层特征具有较高的空间分辨率用于定位,但用于识别的语义信息较少。另一方面,像C4和Cs这样的深层特征层具有更多的语义信息,但由于大幅度卷积(和池化),空间分辨率较低。因此,通常采用u形结构来维护特征层的空间分辨率和语义信息。近年来,FPN[24]进一步改进了具有深度监督信息的u形结构。我们采用相似的特征金字塔结构进行关键点估计。与FPN略有不同的是,在上采样过程中,我们在每个元素和过程之前应用1 x 1卷积核。我们称这种结构为GlobalNet,图1给出了一个说明性的例子。
如图2所示,我们基于ResNet骨干网的GlobalNet可以有效地定位眼睛等关键点,但可能无法精确定位臀部的位置。臀部等关键点的定位通常需要更多的上下文信息和处理,而不是附近的外观特征。在许多情况下,单凭一个全球网络很难直接识别出这些“硬”关键点。
3.2.2 RefineNet
基于通过GlobalNet生成的特征金字塔表示,我们附加一个RefineNet来明确地解决“硬”关键点。为了提高效率和保持信息传输的完整性,我们的RefineNet在不同的层次上进行信息传输,并最终通过上采样集成不同级别的信息并连成HyperNet(亢奋网)[21]。
与堆叠沙漏[27]等细化策略不同,我们的RefineNet将所有金字塔特征连接起来,而不是简单地使用沙漏模块末尾的上采样特征。此外,我们将更多的瓶颈块堆叠到更深的层中,更小的空间大小实现了有效性和效率之间的良好平衡。
随着网络的不断训练,网络倾向于更多地关注大多数的“简单”关键点,而对被遮挡和硬关键点的重要性则相对较低。我们应该确保这两类关键点之间的网络平衡。因此,在我们的RefineNet中,我们明确地基于训练损失在线选择硬关键点(我们称之为在线硬关键点挖掘),并仅从选定的关键点反向传播梯度。
- 实验
我们的整个流程遵循自上而下的方法来估计多个人体姿势。首先,我们应用最先进的边界检测器来生成人的方案。对于每个方案,我们假设在方案的裁剪区域中只有一个主要人物,然后应用姿态估计网络生成最终的预测。在这一节中。我们将根据实验结果讨论我们方法的更多细节。
裁剪策略。对于每个人体检测框,该框被扩展到一个固定的高宽比,例如,高:宽=256:192,然后我们在不扭曲图像高宽比的情况下对图像进行裁剪。最后,我们将裁剪后的图像调整为固定大小,高度为256像素和192像素的设定。请注意4.2的所有实验中只使用了所有群体前100个检测框中的人类检测框。
数据增强策略。数据扩充是学习尺度不变性和旋转不变性的关键。从图像剪切后,我们应用随机翻转,随机旋转(-450 ~ +459)和随机比例(0.7 ~ 1.35).
培训的细节。所有的姿态估计模型都使用adam算法进行训练,初始学习率为5e-4。请注意,我们还将每3600万次迭代的学习率降低2倍。我们使用1e5的权值衰减,训练批大小为32。我们的网络中使用了批处理规范化。一般来说,在8个NVIDIA Titan X Pascal 的 Gpu上训练基于resnet -50的模型需要1.5天。我们的模型都是用公开发布的ImageNet[32]预训练模型的权值初始化的。
测试的细节。为了最小化预测的方差,我们在预测的热图上应用了高斯滤波器。采用与[27]相同的技术,对对应的翻转图像进行位姿预测,并对热图进行平均,得到最终的预测结果;从最高响应到第二最高响应的方向上的四分之一偏移量用于获得关键点的最终位置。我们的实验中也使用了计分策略。与[28]中使用的计分策略不同。将box的得分与所有关键点的平均得分的乘积视为一个人实例的最终姿态得分。
4.2. 烧蚀实验
在这个小节中,我们将从各个方面验证我们的网络的有效性。除非另有说明,本小节中所有的实验都是在MS COCO最小数据集上进行评估的。所有模型的输入尺寸为256 × 192,采用相同的数据扩充。
4.2.1人准备探测器
由于检测盒对于自顶向下的多人姿态估计方法至关重要,这里我们讨论了检测的两个因素,即不同的NMS策略和包围框的AP。我们的人体检测框是基于最先进的探测器FPN生成的,只使用标记的COCO数据进行训练,没有额外的数据,也没有对人进行特定的训练。为了进行公平的比较,除非另有说明,否则在消融实验中,我们默认使用相同的检测器,其总AP为41.1,个人AP为55.3。
非最大限度的抑制(NMS)策略。如表1所示,我们比较了不同NMS策略或相同NMS策略在不同阈值下的性能。对于原来的硬NMS,随着阈值的增加,关键点检测的性能有所提高,主要是由于检测框的平均精度(AP)和平均召回率(AR)的提升。由于姿态估计的最终得分一部分依赖于包围框的得分,因此Soft-NMS[3]的性能更好,如表1所示,它应该生成更合适的得分。从表中可以看出,无论是检测还是关键点检测,Soft-NMS[3]方法的性能都优于hard -NMS方法。
检测性能。表2给出了检测AP与对应关键点AP的关系,旨在揭示包围框检测的准确性对关键点检测的影响。从表中,我们可以看出随着检测框精度的提高,关键点检测AP的增益越来越小。特别是当检测AP从44.3增加到49.3,人体检测AP增加3.0点时,关键点检测的准确性并没有提高,检测的AR略有提高。因此,我们有足够的理由认为,给定的方框覆盖了大部分检测AP较高的中大型人体。因此,在姿态估计中,除了涉及更多的方框外,更重要的问题是提高硬关键点的准确性。
4.2.2级联金字塔网络
我们的基线采用8阶段沙漏网[27]和ResNet-50的膨胀[28]。表3中,虽然在浅层中使用膨胀法可以大大改善结果,但值得注意的是FLOPs(浮点运算)显著增加。
从测试阶段FLOPs的统计和关键点的精度如表3所示,我们发现CPN在速度-精度的权衡上要优于沙漏网络和膨胀的ResNet-50。请注意,与具有相同FLOPs的单级沙漏网络相比,GlobalNet获得了更好的结果,可能具有更大的参数空间。经过RefineNet的细化后,增加2.0 AP,得到68.6 AP。并且,在RefineNet中应用在线硬关键点挖掘时,我们的网络最终达到69.4 AP。
RefineNet的设计选择。在这里,我们比较不同RefineNet的设计策略如表4所示。我们比较以下基于全球网络金字塔输出的实现:
- 直接连接(Concat)操作就像HyperNet [21],
- 在每一层(C2 ~ Cs)中只首先附加一个瓶颈块,然后再进行连接操作。
- 不同数量的瓶颈块应用于不同的层,跟随着一个连接操作,如表所示。
最后附加一个卷积层,生成每个关键点的得分图。
我们发现,与GlobalNet相比,我们的RefineNet结构可以有效地获得超过2点的增益,并且在关键点的细化方面也优于GlobalNet之后的其他设计实现。
在这里,我们还验证了使用不同级别的金字塔输出的性能。在我们的RefineNet中,我们利用了四个输出特征映射C2 ~ Cs,其中Ci为GlobalNet输出的第i个特征图。此外,对仅来自C2的特征图、来自C2 ~ C3的特征图和来自C2 ~ C4的特征图进行评估,如表5所示。我们可以发现,当使用更多级别的特性时,性能会得到提高。
4.2.3在线硬关键点挖掘
这里我们讨论网络中使用的损失。在细节。GlobalNet的损失函数为L2丢失所有标注的关键点,第二阶段尝试学习硬关键点,即我们只惩罚N(一个人标注的关键点数量,在COCO数据集中为17个)中最大的M(M < N)关键点损失。M的影响如表6所示。当M = 8时,硬关键点与简单关键点之间的平衡训练,第二阶段表现最好。
受OHEM的启发[35],但在线硬关键点挖掘损失的方法与之有本质的不同。与OHEM专注于实例相比,我们的方法专注于更高层次的信息,例如,热图L2损耗中的像素级损耗。结果表明,我们的方法更稳定,准确度优于OHEM策略
如表7所示,在RefineNet中应用在线硬关键点挖掘时,整体网络性能比正常L2损失提高了0.8 AP,最终达到69.4 AP。可以参考的是,CPN中没有中间监督的实验可能由于缺乏先验知识和GlobalNet提供的足够的关键点上下文信息,导致了0.9 AP的性能下降。此外,在GlobalNet中应用相同的在线硬关键点挖掘,结果降低了0.3 AP。
4.2.4数据预处理
裁剪后图像的大小是影响关键点检测性能的重要因素。如表8所示,值得注意的是,256 x 192的输入大小和256 x 256的输入大小实际上是一样的,使用相同的裁剪策略, 256×256 的2GFLOPs需要更多的计算。随着裁剪后图像输入尺寸的增加,更多的关键点位置细节被输入到网络中,从而带来了较大的性能改进。此外,当提升一个点,图像的输入尺寸增加到384 x 288时,在线硬关键点挖掘效果更好。
4.3. MS COCO关键点挑战赛的结果
我们在MS COCO测试开发和测试挑战数据集上对该方法进行了评价。表10展示了我们的方法在COCO数据集的测试-开发分割数据集中的结果。在不增加训练数据的情况下,我们使用单个CPN模型实现72.1 AP,使用不同基础真值热力图的CPN集成模型实现73.0 AP。表9显示了我们的方法与其他方法在COCO数据集测试挑战2017 上的结果对比。在COCO 测试挑战2017数据集上,我们得到了72.1 AP,达到了最先进的性能。表11显示了CPN和CPN+(集成模型)在COCO 微型数据集上的性能,为COCO 微型数据集与COCO数据集的标准testdev或test-challenge数据集之间的差距提供了参考。图3演示了使用我们的方法生成的一些结果。
- 结论
本文采用自顶向下的管道结构,提出了一种新型的级联金字塔网络(CPN)来解决“硬”关键点。更具体地说,我们的CPN包括一个基于特征金字塔结构的全局网和一个将所有金字塔特征作为上下文信息连接起来的RefineNet。此外。在线硬关键点挖掘集成在RefineNet中,以显式地解决“硬”关键点。我们的算法在COCO关键点基准上获得了最先进的结果,在COCO测试开发数据集上的平均精度为73.072.1在COCO测试挑战数据集上,相对于COCO 2016关键点挑战的获胜者提高了19%。