Associative Embedding: End-to-End Learning for Joint Detection and Grouping

https://arxiv.org/pdf/1611.05424

## 介绍

       许多计算机视觉任务可被视为关键点检测和分组:检测较小的关键部分和将它们分组成更大的结构。 例如,多人物姿势估计可以被视为检测身体关节并将它们分组为个体;实例分割可以被视为检测相关像素和将它们分组为对象实例; 多目标跟踪可以被视为检测对象实例和并根据前几帧的对象环境进行分组。在所有这些情况下,输出都是一些关键部分并将他们分到一些更大的组类中。

       这些任务通常采用两阶段方法,首先执行检测然后分组。但是这种方法可能不是最理想的,因为检测和分组之间有关联:例如,在多人姿势估计中,如果附近没有肘关节检测,手腕检测可能是假阳性。

       在本文中,我们看看是否有可能使用一阶段模型执行检测和分组。 我们提出关联嵌入,一种表示联合检测分组的新方法。 基本思路是为每次检测引入一个实数,用作识别该组的“标签”。 换句话说,标签和同一组中的其他部分关联到一起。

       考虑2D图像中的检测和输出1D实数TAG的情况。 网络输出每像素检测分数的热力图和每像素标识标签的热力图。 然后这两个热图解码得到检测和分组。

       为了训练网络预测标签,我们使用的损失函数要能使同组标签具有相似的值。 重要的是要请注意,我们没有网络的标准TAG标签预测,因为重要的不是特定的标签值,而是他们之间的差异。 只要能体现相似性和差异性,网络可以根据真实分组信息自由决定标签值。
       我们将我们的方法应用于多人姿态检测,在图像中理解人类的重要任务。 具体地,给定输入图像,多人姿势估计寻求检测每个人并定位他们的身体关节。与单人检测不同,没有假定人的位置或大小。 多人姿态检测必须扫描整个图像,检测所有人及其相关性
关键点。 对于此任务,我们使用关联嵌入式沙漏网络,其中为每个身体关节产生检测热图和标记热图,然后将相同标签的身体关节组成一个单独的人。

       在实例分割上,我们进一步证明了我们的方法的实用性。 对于适合检测和分组的任务,关联嵌入的应用是简单方便的。

       我们的贡献有两个:(1)我们引入了关联嵌入算法,一种新的单阶段,端到端方法用于关键节点检测和分组。 这种方法很简单通用的; 它适用于任何像素预测网络架构; (2)我们关联嵌入应用到多人姿态检测,并且在两个公开数据集上有不错结果。

## 相关工作

## 算法

### 概述

        引入关联嵌入用于检测和分组,我们首先回顾视觉的基本检测方法。 许多视觉任务涉及检测一组目标。 这些任务通常被制定为评分一大批候选目标。 例如,可以将单人姿态检测可以看作在所有可能的像素位置处进行身体关节检测。物体检测可以看作在不同的像素位置,比例和宽高比进行框的检测。

       关联嵌入算法除了检测得分之外还预测每个候选的嵌入。嵌入用作编码分组的标签:具有相似标签的检测应该组合在一起。 在多人姿势估计,具有相似标签的身体关节应该分组成一个人。 很重要的一点,注意标签的绝对值无关紧要,只有标签之间的距离。 也就是说,只需预测是属于同一组的并且组内TAG值相同,网络可以赋任意TAG值。

      请注意,嵌入的维度并不重要。 如果一个网络可以成功预测高维嵌入将检测分成组,它应该也可以学习将这些高维嵌入投影到较低尺寸,只要有足够的网络能力。 在实践中,我们发现一维嵌入足以进行多人姿势估计,并且更高尺寸不会有更好效果。 因此在本文中,我们假设一维嵌入。

       为了训练网络来预测标签,我们强制执行一个损失,使同组的TAG值相同,不同组的TAG值不同。具体而言,这种标记的损失是在与基本事实一致的候选检测上强制执行的。 我们比较检测对并基于标签的相对值和是否检测应该来自同一个小组来定义惩罚函数。

### 沙漏网络结构

      在这项工作中,我们将关联嵌入与堆叠沙漏架构结合,用于密集像素预测的模型,每个模块由一系列沙漏模块组成。每个“沙漏”都有一些卷积和池化层将特征下采样为低分辨率来捕获图像完整的上下文信息。 然后,这些特征被上采样并逐渐与更高分辨率的输出相结合,直到达到最终输出分辨率。堆砌多个沙漏可以重复下采样上采样以产生更准确的预测。

       堆叠沙漏模型最初开发用于单人人体姿势估计。 该模型为目标人物的每个身体关节输出热力图。 然后,热力图中像素最大值的位置作为预测该关节的位置。该网络旨在加强全局和局部特征,用于捕捉有关身体完整结构的信息同时保留精细细节以实现精确定位。 和其他像素预测任务一样,这种平衡全局和局部特征之间的关系同样重要,因此我们应用同一网络进行多人姿态检测和实例分割。

       我们对网络架构稍作修改。 我们增加了下采样层的输出维度(256  - > 386  - > 512  - > 768)。 此外,单个层由3x3卷积替代残差模块,因为缓解训练的捷径仍然存在于每个沙漏模块的残差网络以及每个分辨率的连接维度。

### 多人姿态检测

       为了将关联嵌入应用于多人姿态检测,我们在单人姿态检测中训练网络以检测关节。 我们忽略多人的影响,使用堆叠沙漏模型来预测每个像素对应每个身体关节的位置(“左手腕”,“右肩”,等)的检测分数。 与担任姿态检测的热力图不同,多人的理想热力图人们应该有多个峰值(例如识别不同的人的左手腕),而不仅仅是单个目标人物的单个峰值。

       除了生成全套关键点检测外,网络自动将检测分组。 为此,网络为对应每个关节点的像素生成标记。 换句话说,每个关节点热力图都有一个相应的“标签”热力图。 所以,如果有m个身体关节点预测,网络将输出总共2m维通道,m用于检测,m用于分组。 要将检测结果解析到个体,我们使用非最大值抑制以获得每个关节的峰值,并在峰值像素位置检索其对应的标签。 然后,我们通过检测标签值冰河相近的匹配来将检测关节点分组。现在一组检测就能形成单个人的姿态估计。

       为了训练网络,我们用了检测损失和分组损失。 检测损失计算网络的检测热力图输出和真实标签热力图之间的均方误差。
真实标签热力图由每个关键点位置的2D高斯激活生成。

       分组损失用来评估预测TAG标签的好坏程度,即与真实分组情况作比较。 具体来说,我们在所有人的所有关节点的位置检索预测TAG标签; 然后我们比较其中的属于一个人的标签和人与人之间的标签。 一个人的标签应该是相同的,而人与人之间的标签应该是不同的。

      这里我们并没有生成所有可能的关键点对的损失,我们为每个个体生成参考嵌入。 这是通过获取人的关节点的输出TAG的平均值来完成的。 在个体内,我们计算参考嵌入与每个关节的预测TAG之间的平方距离。 然后,我们用惩罚函数计算个体与个体之间的参考嵌入,随着个体与个体之间的TAG距离增大,惩罚函数指数下降到0。

表示第k个关节点的热力图表示像素位置的TAG预测值

表示第n个人的第k个关节点的实际位置

假设所有k个关节点都有标注,第n个人的参考嵌入则为

分组损失定义为

       我们迭代每个关节来产生最终的预测。 顺序是从头和躯干关节点逐渐向四肢移动。 从第一个关节开始,我们取的结果为
非最大值后超过某个特点阈值的。 这些是我们用来初始化找人的规则。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值