论文翻译:Associative Embedding:End-to-End Learning for Joint Detection and Grouping

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

论文下载链接与代码链接

论文:https://arxiv.org/pdf/1611.05424v2.pdf
代码:https://github.com/princeton-vl/pose-ae-train

Abstract:

Associative Embedding,一种有监督的卷积神经网络用于检测与分组任务中采取的新方法。
对于大多数CV问题,如多人姿态估计、实例分割、多对象跟踪,均可使用该方法。
通常对检测结果的分组借助多阶段pipeline达成,本文则训练出单个网络用以实时输出检测结果与分组情况。
该方法能够兼容任意现有最佳的网络结构,获得像素级的预测结果。

Introduction:

大部分CV问题可被视为检测与分组的结合:检测较小的可视单元并将其分组到大框架中。
例如,多人姿态估计可被视为检测人体关键点并将其分组到个人的标签上;
实例分割可被视为检测相关的像素并将其分组到对象实例上;
多对象跟踪可被视为检测对象实例并将其分组到相应轨迹上。
针对以上案例,其输出为一系列的可视化单元与一系列的可视化分组任务。

通常此类任务需要进行两个阶段的pipeline:先进行检测,后进行分组。
但这样的做法有些欠佳(suboptimal),因为检测与分组通常来说是紧密耦合的(tightly coupled)。
例如,多人姿态估计中,在附近未被检测到有同组手肘的一个手腕检测响应会被视为错检(FP)。for example, in multi-person pose estimation, a wrist detection is likely a false positive if there is not an elbow detection nearby to group with.
本文提出利用单阶段的深层网络并进行端到端训练,可以实现将检测与分组结合。
Associative Embedding(关联式嵌入策略),是一种输出将检测与分组相结合表达的新颖方法。

基本思想:为每一个检测结果引入一个实数(real num)作为“TAG”标识(identify)检测结果所属的分组。The basic idea is to introduce, for each detection, a real number that serves as a “tag” to identify the group the detection belongs to.
另外,标签可以将同组的检测结果关联在一起。

现考虑2D检测结果与1D嵌入(实数)的特殊情况。
该网络输出得到了逐像素的检测得分热图与逐像素的TAG标识。
随后将对这两幅热图进行解码,获得检测结果及其分组。

为了训练一个可以预测TAG的网络,本文采用一种特定的损失函数来鼓励成对的TAG具有相似的值(前提是对应的检测结果在GT下属于同一分组,否则将具有不同的值)。
事实上,并没有TAG的GT可供网络进行预测,因为重点不在于特定的TAG值,仅仅是它们之间的差异罢了。It is important to note that we have no “ground truth” tags for the network to predict, because what matters is not the particular tag values, only the differences between them. 只要遵循GT的分组,网络可以随意地决定TAG值

本文方法可用于多人姿态估计。具体给定一幅图,多人姿态估计寻找并检测每个人并定位其关节点。不同于单人姿态估计,多人姿态估计没有对一个人的位置与尺寸大小进行事先的假设。
多人姿态系统必须扫描整幅图检测出所有人以及对应的关键点。针对该任务,本文将AE策略与SHN进行结合,获得各个关节点的检测热图与标签热图,随后将TAG值相似的关键点分组为同一个人。

本文贡献主要有2点:
(1)介绍了AE(关联式嵌入),一种单阶段的,端到端的将检测与分组相结合的方法
(2)将AE方法用于多人姿态估计并在2大benchmarks上获得最优结果。

Related Work:

Vector Embedding{向量嵌入}:

图像检索(image retrieval)方面多用到VE向量嵌入来测定图像间的相似度[17,53]。
图像分类、图像说明(image captioning)、短语定位等方面也用VE通过将可视化特征与纹理特征映射到同一向量空间来建立可视化特征与纹理特征间的关系[16,20,30]。
自然语言处理也采用VE策略来表达单词、句子、段落的含义[39,32]。
不同于以上用法,本文在检测和分组相结合的上下文中使用VE向量嵌入作为身份标记TAG。

Perceptual Organization{感知组织}:

感知组织旨在将图片的像素分组成不同的区域、部件、对象。
感知组织囊括(encompass)了广泛的复杂多变的任务:从地物分割[37](figure-ground segmentation)到层次图像分析[21](hierarchical image parsing)。
以往的研究多采用2阶段的pipeline[38],先检测基本可视化单元(像素块patch、超像素superpixels、图像片段part等),再将这些可视化单元进行分组。
常见的分组方法包括光谱聚类 (spectral clustering,51,46),条件随机场(conditional random fields,31)和生成概率模型(generative probabilistic models,21)。
以上分组方法都假定预检测到的基本可视化单元和它们之间预计算得到的关联度量(affinity measures), 但在将关联度量转化为分组的过程中存在差异。
相比之下,本文方法采用不包含特殊分组设计的通用网络(generic network)将检测与分组在一个阶段中获得实现。
值得注意的是本文的方法与那些利用了光谱聚类的方法之间存在着紧密的联系(It is worth noting a close connection)。光谱聚类(例如归一化割[46])将输入作为可视化单元之间的预计算关联度(例如通过一个深度网络来进行预测)并且解决了一个广义特征问题(generalized eigent problem),以生成与高关联度视觉单元相似的(每个视觉单元一个)嵌入。角度嵌入[37,47]通过嵌入深度排序与分组拓展了光谱聚类。本文的方法不同于光谱聚类的是本文既没有对关联度中间的表示也没有求解任何特征问题。相对地,本文网络直接输出最终的嵌入结果。
本文的方法也与Harley等人在深度卷积嵌入学习方面的工作——训练了一个深度网络为语义分割任务生成像素级的嵌入值——有一定关系。而不同之处在于本文的网络不仅生成了像素级的嵌入值,还生成了像素级的检测得分。本文的亮点:将检测与分组融合到单个网络;
据我所知(to the best of our knowledge) 该方法尚未被尝试用于多人姿态估计的研究中。

Multi-person Pose Estimation{多人姿态估计}:

近期的方法在对图像中特定单人的姿态估计方面[50,48,52,40,8,5,41,4,14,19,34,26,7,49,44]发展显著。对于多人姿态,先前(prior)以及如今(concurrent)已有的工作成果可被归纳为top-down与bottom-up两大类。
Top-down方法[42,25,15]先检测出所有人,再估计每个人的姿态。Bottom-up方法[45,28,29,6]则是先检测出所有的关节点,再将这些点按个人进行分组。本文的方法与bottom-up更类似(resemble),但不同之处在于并没有将检测阶段与分组阶段进行分离。整个预测结果可通过一个单阶段的通用网络一次性获得。这样就消除了(do away with the need for)其他方法所需的复杂后处理步骤[6, 28]。

Approach:

Overview:

为了介绍检测与分组结合的关联性嵌入方法,本文先对可视化检测的基础部分进行回顾。
如何评分:
大部分可视化任务涉及到可视化单元集合的检测。这些任务通常被描述为对大量候选集的评分
例如,单人姿态估计可以被描述为对所有可能的像素位置处的候选关节点检测结果的评分。
对象检测可以被描述为对候选边界框(B-Box)在不同像素位置、比例、方位比(aspect ratios)的评分。
新的评分思路:
AE的思路是在检测评分的基础上,预测每个候选点的嵌入值
嵌入值作为编码分组的TAG标记:有着相似TAG的检测结果被分为一组。
在多人姿态估计中,有着相似TAG的人体关节点应被分组并构建成单个人。
TAG的绝对值是什么不重要,只需要知道TAG之间距离
只要具有相同值的检测结果属于同一分组,网络可以为TAG设定任意值。
嵌入值的维度并不重要。如果一个网络可以顺利地预测高维的嵌入值并将检测结果分组,只要网络容量充足,那这个网络也应该可以学习如何将那些高维嵌入值投影到低维。
实践中,1D嵌入值就可以充分满足多人姿态估计,况且更高维度的嵌入值并未达到更好的改善。
如何定义损失:
为训练可以预测TAG的网络,本文定义了一个损失函数:它可以使相同分组的检测结果具有相似的TAG值,不同分组的检测结果具有不同的TAG值(即随后公式中的两部分所表达的含义)。
值得一提的是,该TAG损失只对那些与GT相一致的检测结果进行计算
本文比较检测对,并根据标签的相对值以及检测是否属于同一分组来定义惩罚。

Stacked Hourglass Architecture:

本文把AE与SHN[40]——一种用于密集型像素级预测模型——相结合,其由一系列模块组成,每个模块的形状都像沙漏。
论文翻译:Associative Embedding:End-to-End Learning for Joint Detection and Grouping
网络执行重复的Bottom-up、Top-down的推论(inference)生成一系列的中间预测,直到最后一个沙漏模型生成最终结果。卷积层的核尺寸皆取3×3,特征图通过上采样与跨层连接执行点加获得。网络所做的所有预测都遵循同一GT。
每个沙漏模块都有一个卷积池化层的标准集合,此过程中特征被处理到低分辨率以获得图像的全部上下文信息。然后,这些特征被上采样并与更高分辨率的输出进行逐一结合,直到获得最终的输出分辨率。级联多个沙漏模块可以重复地采用Bottom-up、Top-down的推论(inference)并生成更精确的最终预测。
级联沙漏模型最初是因单人姿态估计而发展起来的。模型对目标单人的每个关节点输出热图,热图中最高激励响应(activation)的像素被用作该关节点的预测位置。
该网络旨在整合(consolidate)全局与局部特征,这些特征用于获得有关人体整体结构的信息,同时保留用于精确定位的精细细节。这种介于全局与局部特征间的平衡与其他像素级预测任务同等重要。
本文对该网络结构进行了一些轻微的改动。增加了分辨率每降低一次时(at each drop in resolution)输出特征的数量(256 -> 386 -> 512 -> 768)。此外,单层不再由residual模块构成,改为3×3卷积。
简化训练的shortcut的效果依然存在于每个沙漏的residual连接与每个分辨率的skip连接中。The shortcut effect to ease training is still present from the residual links across each hourglass as well as the skip connections at each resolution.

Multi-person Pose Estimation:

为了在多人姿态估计中应用AE,本文训练网络作为单人姿态估计来检测关节点[40]。采用SH模型来预测每个像素点位置对各关节点的检测评分,但不考虑人的id。不同于单人估计,理想的多人估计热图应含有多个峰值。
除了生成关键点检测结果的全集外,该网络可以将检测结果自动分组为独立的姿态。为了做到这点,该网络对每个关节点在各像素位置生成一个TAG,即每个关节点热图都有一个对应的TAG热图。如果现有m个关节点被预测,那么该网络将输出2m个通道,m个用于检测,m个用于分组。为了将检测结果分配给独立的个人,本文采用了非极大值抑制(NMS)获得每个关节点检测结果的峰值,并在相同的像素位置检索相应的TAG。
论文翻译:Associative Embedding:End-to-End Learning for Joint Detection and Grouping
对每个关节点,该网络同步生成检测热图并预测关联性嵌入TAG。本文拿每个关节点取检测结果与其他检测结果进行匹配,具有相同嵌入TAG的关节点检测结果构成最终的单个姿态估计集合。
本文通过比较检测结果的TAG值来对人体部位的检测结果进行分组,并把那些足够接近的进行匹配,一组检测结果构成一个单人的姿态估计。
为了训练该网络,本文实行(impose)一个检测损失函数和一个分组损失函数作用于输出的热图。检测损失函数计算各关键点位置处各幅被预测获得的检测热图与其包含2D高斯**的GT热图间的均方差。分组损失函数用来评估被预测的TAG与GT分组间的一致性。本文专门在GT位置上对所有人的所有关节点进行被预测的TAG检索;然后比较了单人与人与人之间的TAG。单人内的TAG值应相同,人与人之间的TAG值应该不同。本文通过取人体关节点输出嵌入值的平均值,对每个人生成一个参考嵌入值,而非对所有可能的关键点对进行损失函数的计算。在一个个体内计算每个关节点的参考嵌入值与预测嵌入值的平方距离。之后在每对人之间,将它们的参考嵌入值彼此间进行比较,随着两个TAG之间的距离增加,惩罚指数将逐渐下降至0。

以下是对AE损失函数的定义:
hkh_k{分辨率为W×H}: 第k个关节点的预测TAG热图
h(x)h(x): x位置处的TAG值
T=(xnk)T=(x_{nk}): 关节点的GT位置(第n个人第k个关节)
第n个人的参考嵌入值: K个关键点在真实位置处的TAG值hk(xnk)h_k(x_{nk})之和的均值
hn=1Kkhk(xnk)\overline{h}_n=\frac{1}{K}\sum_{k} h_k(x_{nk})
分组损失函数:分为两部分。
Lg(h,T)=1Nnk(hnhk(xnk))2+1N2nnexp(12σ2(hnhn)2)L_g(h,T) = \frac{1}{N}\sum_{n}\sum_{k}(\overline{h}_n-h_k(x_{nk}))^2+\frac{1}{N^2}\sum_{n}\sum_{n'}exp(-\frac{1}{2\sigma^2}(\overline{h}_n-\overline{h}_{n'})^2)
为了产生最后一组预测,本文逐一迭代每个关节。顺序的确定首先考虑头部和躯干周围的关节,然后逐渐向四肢移动。An ordering is determined by first considering joints around the head and torso and gradually moving out to the limbs.
从第一个关节开始,在非最大抑制后,将所有**值设置为高于某个阈值。 这些结果组成了初始的被检测人体的预测池。

关节点的检测与分组原则:
将下一个关节点的TAG与当前被检测人体的预测池的TAG进行比较,确定最优匹配。这两个TAG只有在特定阈值内(fall within a specific threshold)才算匹配。除此之外,置信度高的检测结果将被优先匹配(prioritize matching)。权重最大的一组作为最优匹配,其权重最终通过TAG距离与检测评分来确定。如果新的检测结果不与任何一组个人实例匹配,则开启一个新的个人实例。

这也就解释了为什么会有一只手和一条腿的特殊人体的案例。对人体的每个关节进行循环遍历,直到每一次检测都有了所属的人体案例。其中没有采取任何步骤来确保解剖的正确性(anatomical correctness)或关节对之间的合理空间关系。
论文翻译:Associative Embedding:End-to-End Learning for Joint Detection and Grouping
测试结果给人以网络产生的TAG类型与分组很离散分明(琐碎)的印象。。。。
训练一个用来对所有尺度的人进行姿态估计的网络是可行的(feasiable),但却存在一些弊端。
网络需要额外的容量(capacity)来学习必要的尺度变量,对小尺寸人预测的精度会因为pooling后的低分辨率问题而受到影响(suffer due to issues of …)。本文多尺度地在测试阶段评估图像。
大量潜在的方法可以使用各个尺度生成的输出来获得最终的姿态估计集合。本文把生成的热图取均值,然后为了跨尺度(across scales)组合TAG,本文把像素位置上的TAG集合连接到向量v中。
解码过程并没有改为采用标量TAG值进行描述的方法,只是比较向量距离。

Experiments:(仅讨论人体姿态估计部分)

{Dataset}:

MPII: 包括25k张图片,40k标记人体(3/4可用于训练)
从测试集中获取的1758组多人集合按照[45]的主题思路(set as outlined)进行设置。
该组通常作为一幅特定图片中总体人数的子集,因此需要提供一些信息来保证正确预测了目标,这些信息包括了B-Box和一些用于说明所占区域的标量信息。
而关于人体数量或是单个人体比例的信息并未被提供。
最终按[45]的标准计算关节点检测结果的AP。

MS-COCO[1]:包括60k张训练图片,多于100k标记人体。
本文在2个测试集上进行实验:test-dev(development test set) & test-std(standard test set)。
本文采用官方的标准进行评测:AP、AR(该评测方法与对象检测的评测标准很像,除了其评分是基于关键点的距离,而非b-box的的重叠)。

{Implementation}:

该网络由4个级联沙漏模块组成,输入尺寸为512×512,输出尺寸为128×128。Batch尺寸为32,学习率为2e-4(每100k次迭代后下降1e-5)[2,tensorflow]。
AE损失函数由一个因子进行加权,该因子为1e-3并和检测热图的MSE损失有关。该损失被掩盖用以忽略被稀疏注释的人群。
测试阶段时输入图片在多个尺度上运行,输出的检测热图被跨尺度取均值,而跨尺度的TAG被连接到更高维度的TAG。
因为MPII与MS-COCO的标准都对关键点的精确定位很敏感,依据[6],本文采用在同样数据集上训练的[40]单人姿态模型来优化预测结果。

{MPII Results}:

关联式嵌入证明了引导网络将关键点分组成单个人体是一种有效的策略。其无需任何有关图像中所出现人体个数的假设,但需要提供一个网络机制来表达对共同任务的困惑。例如,如果2个人的相同关节点在极小的像素位置上产生重叠,那么预测的AE将是这2个人各自(respective)TAG间的一个TAG。
论文翻译:Associative Embedding:End-to-End Learning for Joint Detection and Grouping
通过嵌入热图的可视化,本文可以更好地了解(get a better sense of)AE的输出。
严重遮挡与检测关节点间距过近等情况将使单人姿态的分析(parse out)过程更加困难,于是本文特别关注人体重叠严重时预测嵌入值的差异。

{MS-COCO Results}:

在2个测试集上本文的方法都取得了最优的表现结果。
网络所产生的典型故障是因为(stem from)杂乱场景中关节点中的重叠与遮挡。
从模型在多尺度应用与采用单人姿态估计器优化上,本文各pipline消融版本的性能展现了较好的贡献。
本文还对MS-COCO进行了额外的实验,以评估(gauge)检测与分组的相对难度,即哪一部分是该系统的主要瓶颈。
该系统在一组500张训练图像上进行了评估。评估中,采用GT标注的检测结果来代替预测所得的检测结果,但TAG依然采用预测值,这使得AP从59.2提升到了94.0。该效果体现了关键点检测是该系统的主要瓶颈,即网络已学到了高质量的分组模型。预测所得的TAG值的定性分析也支持了该结论。
从下图可见TAG被很好的分隔开,而且解码分组也很简单。
论文翻译:Associative Embedding:End-to-End Learning for Joint Detection and Grouping

Conclusion:

本文介绍了Associative Embedding(关联性嵌入)来对一个卷积神经网络进行监督,其可以同步地生成检测结果并进行分组。
本文验证了AE方法在训练多人姿态估计与实例分割上的可行性,并在姿态估计中获得了当前最优结果。
该方法也可被用于视频信息的多目标跟踪等其他视觉问题。
给定任意可以生成像素级预测结果的网络,关联性嵌入损失函数都可以被实现,因此其易于与其他当前较好的框架进行结合。