Associative Embedding:End-to-End Learning for Joint Detection and Grouping
我们介绍了关联嵌入,这是一种用于监督卷积神经网络的新型方法,用于检测和分组的任务。许多计算机视觉问题都可以用这种方式来构架,包括多人姿势估计、实例分割和多物体跟踪。通常检测的分组是通过多级pipelines来实现的,相反,我们提出了一种方法,教导网络同时输出检测和分组分配。这种技术可以很容易地集成到任何最先进的网络架构中,产生像素化的预测。我们展示了如何将该方法应用于多人姿势估计和实例分割,并报告了MPII和MS-COCO数据集上多人姿势的最先进性能。
1. Introduction
许多计算机视觉任务可以看作是关节检测和分组:检测较小的视觉单元,并将其分组为较大的结构。例如,多人姿势估计可以看作是检测身体关节,并将其分组为单个人。实例分割可以看作是检测相关的像素,并将其归为对象实例;多对象跟踪可以看作是检测对象实例,并将其归为轨迹。在所有这些情况下,输出的是可变数量的视觉单元,并将它们分配到可变数量的视觉组中。
这类任务通常采用先进行检测、后进行分组的两阶段pipelines 来处理。但这种方法可能是次优的,因为检测和分组通常是紧密耦合的。例如,在多人姿势估计中,如果附近没有肘部检测与之分组,那么手腕检测很可能是假阳性。
在本文中,我们提出是否可以使用一个端到端训练的单阶段深度网络工作来联合执行检测和分组。我们提出了关联嵌入,一种新的方法来表示联合检测和分组的输出。其基本思想是为每个检测引入一个实数,作为 “标签”,以确定检测所属的组。换句话说,标签将每个检测与同组的其他检测联系起来。
考虑二维的检测和一维的嵌入(实数)的特殊情况。网络同时输出每个像素检测分数的热图和每个像素身份标签的热图。然后从这两个热图中解码出检测和组。
为了训练网络来预测标签,我们使用了一个损失函数,如果相应的检测结果属于ground truth中的同一组,则鼓励标签对具有相似的值,否则具有不同的值。需要注意的是,我们没有 "ground truth "标签供网络预测,因为重要的不是特定的标签值,而是它们之间的差异。网络可以自由地决定标签值,只要它们与ground truth分组一致。
我们将我们的方法应用于多人的姿势估计,这是理解人类的一项重要任务形象。具体地说在给定一幅输入图像的情况下,多人姿态估计寻求检测每个人并定位他们的身体关节。与单人姿势不同的是,没有事先假设一个人的位置或大小。多人姿势系统必须扫描整个图像,检测所有的人和他们相应的关键点。对于这个任务,我们将关联嵌入与堆叠沙漏网络[31]整合在一起,产生每个身体关节的检测热图和标签热图,然后将具有相似标签的身体关节分组到各个人身上。实验表明,我们的方法在MS-COCO[27]和MPII多人姿势[3,35]上的表现优于所有最近的方法,并达到了state of the art的结果。
通过实例分割,进一步证明了该方法的实用性。说明了将关联嵌入应用到各种视觉任务中是很简单的,这些任务都属于检测和分组的范畴。
我们的贡献有两个方面:(1)介绍了一种新的单阶段、端到端联合检测和分组方法&联想嵌入。该方法简单通用,适用于任何产生像素级预测的网络结构;(2)我们将关联嵌入应用于多人位姿估计,并在两个标准基准上获得了最新的结果。
3. Approach
3.1. Overview
为了介绍联合检测和分组的联想嵌入,我们首先回顾了视觉检测的基本公式。许多视觉任务都涉及到对一组视觉单元的检测。这些任务通常被描述为对一大群候选的评分。例如,可以将单人人体姿势估计表示为在所有可能的像素位置对候选身体关节检测进行评分。目标检测可以表示为在不同的像素位置、比例和纵横比上对候选边界框进行评分。
关联嵌入的思想是在检测的基础上预测每个候选对象的嵌入得分。那个嵌入作为对分组进行编码的标记:具有相似标记的检测应该组合在一起。
在多人姿态估计中,具有相似标签的身体关节应该被分组,形成一个人。需要注意的是,标签的绝对值并不重要,重要的是标签之间的距离。也就是说,一个网络可以自由地给标签分配任意的值,只要属于同一组的检测值是相同的。请注意,嵌入的维度并不关键.如果一个网络能够成功地预测高维度的嵌入,将检测结果分成几组,只要有足够的网络容量,它也应该能够学会将这些高维度的嵌入投射到较低的维度。在实践中我们发现,1D嵌入对于多人姿势估计来说已经足够了,更高的维度并不能带来明显的改善。因此,在本文中,我们都假设为1D嵌入。
为了训练一个网络来预测标签,我们强制执行一个损失,鼓励来自同一组的检测的相似标签和不同组的检测的不同标签。具体来说,这个标签损失是在与ground truth相吻合的候选检测中执行的。我们比较成对的检测结果,并根据标签的相对值和检测结果是否应该来自同一组来定义一个惩罚。
3.2. Stacked Hourglass Architecture
在这项工作中,我们将关联嵌入与堆叠沙漏架构[40]相结合,堆叠沙漏架构是一种用于密集像素预测的模型,它由一系列模块组成,每个模块的形状都像一个沙漏(图2)。每个 "沙漏 "都有一组标准的卷积层和池化层,这些卷积层和池化层对特征进行低分辨率处理,以捕捉图像的完整背景。然后,将这些特征进行上采样,并逐渐与更高、更高分辨率的输出相结合,直至达到最终的输出分辨率。叠加多个沙漏可以反复进行自下而上和自上而下的推理,以产生更准确的最终预测.我们向读者推荐[40],以了解网络架构的更多细节。
叠加沙漏模型最初是为单人人体姿势估计而开发的。该模型为目标人物的每个身体关节输出一个热图。然后,将热图**度最高的像素作为该关节的预测位置。该网络的设计是为了整合全局和局部特征,以获取人体完整结构的信息,同时保留精确定位的细部特征。这种全局和局部特征之间的平衡在其他像素预测任务中同样重要,因此我们将同一网络应用于多人姿势估计和实例分割。
我们对网络架构做了一些小小的修改。我们在每一个分辨率下降时增加输出特性的数量(256->386->512->768)。此外,individual layers是由3x3卷积组成,而不是残差模块,从每个沙漏的残差链接以及每个分辨率的跳过连接来看,简化训练的shortcut effect仍然存在。
3.3. Multiperson Pose Estimation
为了将关联嵌入应用于多人姿势估计,我们训练网络来检测关节,就像在单人姿势估计中进行的那样[40]。我们使用堆叠沙漏模型来预测每个身体关节(“左手腕”、"右肩膀 "等)在每个像素位置的检测分数,而不考虑人的身份。与单人姿势的区别在于,一个理想的多人热图应该有多个峰值(如识别属于不同人的多个左手腕),而不是只对单个目标人有一个峰值。
除了生成完整的关键点检测集,该网络还将检测结果自动分组为单个姿势。为此,网络会在每个关节的每个像素位置生成一个标签。换句话说,每个关节热图都有一个相应的 "标签 "热图。所以,如果有m个身体关节需要预测,那么网络将输出总共2m个通道,m个用于检测,m个用于分组。为了将检测结果解析为单个人,我们使用非最大抑制来获得每个关节的检测峰值,并在同一像素位置检索其对应的标签(如图3所示)。
图3.我们的多人姿势估计方法概述。我们产生多人姿势估计的方法概述。对于身体的每个关节,网络同时产生检测热图和预测关联嵌入标签。我们取每个关节的顶级检测,并将其与共享相同嵌入标签的其他检测进行匹配,以产生最终的个人姿势预测集。然后,我们通过比较检测点的标签值,并匹配那些足够接近的检测点,对身体各部位的检测点进行分组。一组检测结果就形成了一个人的姿势估计。
为了训练网络,我们在输出的热图上施加一个检测损失和一个分组损失。检测损失计算每个预测的检测热图与其 "ground truth"热图之间的均方误差,"ground truth "热图由每个关键点位置的二维高斯**组成。这个损失与Newell等人[40]使用的损失相同。
分组损失评估预测标签与ground truth分组的一致程度。具体来说,我们检索所有人的所有身体关节在其ground truth位置的预测标签;然后我们比较每个人内部和不同人之间的标签。一个人内部的标签应该是相同的,而不同人之间的标签应该是不同的。
我们不是在所有可能的pairs of keypoints对中强制执行损失,而是为每个人产生一个参考嵌入。这是通过取人的关节的输出嵌入的平均值来实现的。我们不是在所有可能的关键点对中强制执行损失,而是为每个人产生一个参考嵌入。这是通过取人的关节的输出嵌入的平均值来实现的。Within an individua,我们计算参考嵌入和每个关节的预测嵌入之间的平方距离。然后,between pairs of people, 我们将它们的参考嵌入相互比较,随着两个标签之间距离的增加,惩罚指数下降为零。
用第k个身体关节的预测标记热图,其中h(x)是像素位置x处的标签值。给定N人,设ground truth身体关节位置为,其中,是第n个人的第k个身体关节的ground truth像素位置。
假设所有K个节点都被注释,第n个人的参考嵌入为
则定义分组损失为
为了产生最终的预测集,我们逐一迭代每个关节。首先考虑头部和躯干周围的关节,然后逐渐向四肢移动,从而确定一个顺序。我们从我们的第一个关节开始,在非最大限度抑制后,在一定阈值以上进行所有**。这些构成了我们最初检测到的人群的基础。
然后我们考虑后续关节的检测。我们将这个关节的标签与我们当前人员池的标签进行比较,并尝试确定它们之间的最佳匹配。只有当两个标签落在特定的阈值内时,才能匹配。此外,我们希望优先匹配高置信度的检测结果。因此,我们执行最大匹配,其中权重由标签距离和检测得分决定。如果任何新的检测没有被匹配,它就会被用来启动一个新的人物实例。这就可以解决特定人物可能只有一条腿或一只手可见的情况。
我们在身体的每个关节处循环,直到每一次检测都分配给一个人。没有采取任何措施来确保成对关节之间的解剖正确性或合理的空间关系。为了了解网络产生的标记类型和分组的琐碎性质,我们参考图4。
图4。我们的网络在MS-COCO训练集中的一张有效图像上生成的标签。标签值已经很好地分开了,对组进行解码很简单。
图4。我们的网络在MS-COCO训练集中的一张有效图像上生成的标签。标签值已经很好地分开了,对组进行解码很简单。
虽然训练一个网络对各种规模的人进行姿势预测是可行的,但也有一些缺点.网络需要额外的容量来学习必要的规模不变性,而且由于池化后分辨率低的问题,对小人物的预测精度会受到影响。为了说明这一点,我们在测试时间以多个尺度评估图像。有许多潜在的方法可以使用每个尺度的输出来产生一组最终的姿势预测。为了我们的目的,我们将产生的热图并将它们平均在一起。然后,为了将不同尺度的标签组合在一起,我们将一个像素位置上的标签集连成一个向量 (假设m尺度)。解码过程与描述的标量标签值的方法没有变化,我们现在只是比较矢量距离。