摘要
我们提出了一种将目标检测视为直接集合预测问题的新方法。我们的方法简化了检测流程,有效地消除了对许多手工设计组件的需求,例如显式编码我们关于任务的先验知识的非最大抑制过程或锚生成。新框架的主要成分,称为 DEtection TRansformer 或 DETR,是基于集合的全局损失,通过二分匹配强制进行独特的预测,以及转换器编码器 - 解码器架构。给定一组固定的学习对象查询,DETR 推理对象的关系和全局图像上下文以直接并行输出最终的预测集。与许多其他现代探测器不同,新模型在概念上很简单,不需要专门的库。DETR 在具有挑战性的 COCO 对象检测数据集上展示了与完善且高度优化的 Faster RCNN 基线相当的准确性和运行时性能。此外,DETR 可以很容易地推广,以统一的方式产生全景分割。我们表明它显着优于竞争基线。训练代码和预训练模型可在 https://github.com/facebookresearch/detr 获得。
1.引言
目标检测的目标是为每个感兴趣的对象预测一组边界框和类别标签。现代检测器通过在大量提案 [37,5]、锚点 [23] 或窗口中心 [53,46] 上定义代理回归和分类问题,以间接方式解决这一集合预测任务。它们的性能受到折叠近乎重复预测的后处理步骤、锚集的设计以及将目标框分配给锚的启发式方法的显着影响[52]。为了简化这些流程,我们提出了一种直接集合预测方法来绕过代理任务。这种端到端的理念在复杂的结构化预测任务(例如机器翻译或语音识别)方面取得了重大进展,但在对象检测方面还没有:以前的尝试 [43,16,4,39] 要么添加其他形式的先验知识,或者在具有挑战性的基准上没有被证明具有强大的基线竞争力。本文旨在弥合这一差距。
我们通过将目标检测视为直接集合预测问题来简化训练管道。我们采用基于transformer[47]的编码器-解码器架构,这是一种流行的序列预测架构。转换器的自注意力机制明确地对序列中元素之间的所有成对交互进行建模,使这些架构特别适用于集合预测的特定约束,例如删除重复预测。
我们的检测变换器(DETR,参见图 1)一次预测所有对象,并使用一组损失函数进行端到端训练,该函数在预测目标和真实目标之间执行二分匹配。 DETR 通过删除多个手工设计的编码先验知识的组件(如空间锚或非最大抑制)来简化检测流程。与大多数现有检测方法不同,DETR 不需要任何自定义层,因此可以在任何包含标准 CNN 和转换器类的框架中轻松复制。
图 1:DETR 通过将通用 CNN 与 Transformer 架构相结合,直接(并行)预测最终的检测集。在训练期间,二分匹配唯一地分配具有地面真值框的预测。没有匹配的预测应该产生一个“无对象”(∅)类预测。
与大多数先前关于直接集合预测的工作相比,DETR 的主要特征是二分匹配损失和变换器与(非自回归)并行解码的结合 [29,12,10,8]。相比之下,以前的工作集中在使用 RNN 进行自回归解码 [43,41,30,36,42]。我们的匹配损失函数将预测唯一地分配给地面实况对象,并且对预测对象的排列保持不变,因此我们可以并行发出它们。
我们在最流行的对象检测数据集之一 COCO [24] 上评估 DETR,与极具竞争力的 Faster R-CNN 基线 [37] 进行对比。 Faster RCNN 经历了多次设计迭代,其性能自最初发布以来得到了极大的提升。我们的实验表明,我们的新模型实现了相当的性能。更准确地说,DETR 在大型目标上表现出明显更好的性能,这一结果可能是由转换器的非本地计算实现的。但是,它在小物体上的性能较低。我们预计未来的工作将像 FPN [22] 的开发为 Faster R-CNN 所做的那样改进这方面。
DETR 的训练设置在多个方面与标准对象检测器不同。新模型需要超长的训练计划并且受益于transformer中的辅助解码损耗。我们彻底探索了哪些组件对展示的性能至关重要。
DETR 的设计理念很容易扩展到更复杂的任务。在我们的实验中,我们展示了在预训练的 DETR 之上训练的简单分割头在全景分割 [19] 上的表现优于竞争基线,这是一项具有挑战性的像素级识别任务,最近获得了普及。
2.相关工作
我们的工作建立在几个领域的先前工作的基础上:集合预测的二分匹配损失、基于transformer的编码器-解码器架构、并行解码和对象检测方法。
2.1 设定预测
没有规范的深度学习模型可以直接预测集合。基本的集合预测任务是多标签分类(参见例如 [40,33] 以获取计算机视觉背景下的参考),其基线方法 one-vs-rest 不适用于诸如检测存在元素之间的底层结构(即,几乎相同的框)。这些任务的第一个困难是避免近乎重复。大多数当前检测器使用后处理(例如非最大抑制)来解决这个问题,但直接集合预测是无后处理的。他们需要全局推理方案来模拟所有预测元素之间的交互以避免冗余。对于恒定大小的集合预测,密集的全连接网络 [9] 就足够了,但成本很高。一种通用的方法是使用自回归序列模型,例如递归神经网络 [48]。在所有情况下,损失函数都应该通过预测的排列保持不变。通常的解决方案是基于匈牙利算法[20]设计一个损失,以找到真实和预测之间的二分匹配。这强制了排列不变性,并保证每个目标元素都有一个唯一的匹配。我们遵循二分匹配损失方法。然而,与大多数先前的工作相比,我们远离自回归模型并使用具有并行解码的转换器,我们将在下面进行描述。
2.2 transformer和并行解码
Vaswani 等人引入了transformer[47] 作为一种新的基于注意力的机器翻译构建块。注意力机制 [2] 是神经网络层,用于聚合来自整个输入序列的信息。Transformers 引入了自注意力层,类似于非局部神经网络 [49],它扫描序列的每个元素并通过聚合来自整个序列的信息来更新它。基于注意力的模型的主要优势之一是它们的全局计算和完美的记忆,这使得它们比 RNN 更适合长序列。现在在许多自然语言处理,语音处理和计算机视觉 [8,27,45,34,31]的问题中,transformer正替代RNNs。
transformer首先用于自回归模型,遵循早期的序列到序列模型 [44],一个一个地生成输出标记。然而,在音频[29]、机器翻译[12,10]、词表示学习[8]、以及最近的语音识别 [6]。我们还结合了转换器和并行解码,以在计算成本和执行集合预测所需的全局计算能力之间进行适当的权衡。
2.3 目标检测
大多数现代对象检测方法都会根据一些初始猜测进行预测。两阶段检测器 [37,5] 预测框 w.r.t.提案,而单阶段方法进行预测 w.r.t.锚点 [23] 或可能的对象中心网格 [53,46]。最近的工作 [52] 表明,这些系统的最终性能在很大程度上取决于设置这些初始猜测的确切方式。在我们的模型中,我们能够通过使用绝对框预测 w.r.t 直接预测检测集来移除这个手工制作的过程并简化检测过程。输入图像而不是锚点。
基于集合的损失。几个目标检测器 [9,25,35] 使用了二分匹配损失。然而,在这些早期的深度学习模型中,不同预测之间的关系仅使用卷积层或全连接层进行建模,而手工设计的 NMS 后处理可以提高它们的性能。最近的检测器 [37,23,53] 使用非唯一分配规则与 NMS 一起在地面实况和预测之间。
可学习的 NMS 方法 [16,4] 和关系网络 [17] 明确地对不同预测之间的关系进行建模并注意。使用直接设置损失,它们不需要任何后处理步骤。然而,这些方法使用额外的手工制作的上下文特征(如建议框坐标)来有效地模拟检测之间的关系,同时我们寻找减少模型中编码的先验知识的解决方案。
循环检测器。与我们的方法最接近的是用于对象检测 [43] 和实例分割 [41,30,36,42] 的端到端集合预测。与我们类似,他们使用基于 CNN 激活的编码器-解码器架构的二分匹配损失来直接生成一组边界框。然而,这些方法仅在小型数据集上进行评估,而不是针对现代基线进行评估。特别是,它们基于自回归模型(更准确地说是 RNN),因此它们没有利用最近的具有并行解码的转换器。
3.DETR模型
两个要素对于检测中的直接集合预测至关重要:(1) 集合预测损失,它强制预测和地面真实框之间的唯一匹配;(2) 一种架构,可以预测(一次通过)一组对象并模拟它们的关系。我们在图 2 中详细描述了我们的架构。
图 2:DETR 使用传统的 CNN 主干来学习输入图像的 2D 表示。该模型将其展平并用位置编码对其进行补充,然后再将其传递给变压器编码器。然后,Transformer 解码器将少量固定数量的学习位置嵌入作为输入,我们称之为对象查询,并额外关注编码器输出。我们将解码器的每个输出嵌入传递给共享前馈网络 (FFN),该网络预测检测(类和边界框)或“无对象”类。
3.1 目标检测集预测损失
DETR 在一次通过解码器的过程中推断出一组固定大小的 N 个预测,其中 N 设置为显着大于图像中的典型对象数量。训练的主要困难之一是根据实际情况对预测对象(类别、位置、大小)进行评分。我们的损失在预测对象和真实对象之间产生了最佳的二分匹配,然后优化了特定于对象(边界框)的损失。
让我们用 y 表示对象的基本事实集,并且 ^ y = fy^igN i=1 表示 N 个预测的集合。假设 N 大于图像中目标的数量,我们也将 y 视为一组大小为 N 填充的∅(没有目标)。为了找到这两个集合之间的二分匹配,我们搜索具有最低成本的 N 个元素 σ 2 SN 的排列:
其中 Lmatch(yi; y^σ(i)) 是地面实况 yi 和索引为 σ(i) 的预测之间的成对匹配成本。在先前的工作(例如[43])之后,使用匈牙利算法有效地计算了这种最佳分配。
匹配成本同时考虑了类别预测以及预测框和地面真值框的相似性。基本事实集的每个元素 i 可以看作是 yi = (ci; bi) 其中 ci 是目标类标签(可能是?)和 bi 2 [0; 1]4是一个向量,它定义了ground truth box中心坐标及其相对于图像大小的高度和宽度。对于索引为 σ(i) 的预测,我们将类别 ci 的概率定义为 ^ pσ(i)(ci) 并将预测框定义为 ^bσ(i)。使用这些符号,我们将 Lmatch(yi; y^σ(i)) 定义为 -1fci6=?gp^σ(i)(ci) + 1fci6=?gLbox(bi;^bσ(i))。
这种寻找匹配的过程与现代检测器中用于将提议 [37] 或锚点 [22] 与地面实况对象匹配的启发式分配规则所起的作用相同。主要区别在于我们需要找到一对一的匹配来进行直接集合预测而没有重复。
第二步是计算损失函数,即上一步中匹配的所有对的匈牙利损失。我们将损失定义为类似于普通对象检测器的损失,即用于类预测的负对数似然和稍后定义的框损失的线性组合:
其中 ^ σ 是在第一步 (1) 中计算的最优分配。在实践中,当 ci = ? 时,我们会降低对数概率项的权重。乘以 10 来解释类别不平衡。这类似于 Faster R-CNN 训练过程如何通过子采样来平衡正/负提议 [37]。请注意,对象和 ? 之间的匹配成本不依赖于预测,这意味着在这种情况下,成本是一个常数。在匹配成本中,我们使用概率 ^ pσ^(i)(ci) 而不是对数概率。这使得类预测项与 Lbox(·;·)(如下所述)相当,并且我们观察到了更好的经验表现。
Bounding box损失。
3.2 DETR结构
整个 DETR 架构非常简单,如图 2 所示。它包含三个主要组件,我们将在下面进行描述:用于提取紧凑特征表示的 CNN 主干、编码器-解码器转换器和简单的前馈网络 (FFN)进行最终的检测预测。
与许多现代检测器不同,DETR 可以在任何深度学习框架中实现,只要提供一个通用的 CNN 主干网络和一个只有几百行代码的变transformer架构实现。在 PyTorch [32] 中,可以用不到 50 行代码实现 DETR 的推理代码。我们希望我们方法的简单性将吸引新的研究人员加入检测社区。
主干。从初始图像 ximg 2 R3×H0×W0(具有 3 个颜色通道2)开始,传统的 CNN 主干生成较低分辨率的激活图 f 2 RC×H×W。我们使用的典型值是 C = 2048 和 H; W = H320 ; W320。
transformer编码。首先,1x1 卷积将高级激活图 f 的通道维度从 C 减少到更小的维度 d。创建一个新的特征图 z0 2 Rd×H×W 。编码器期望一个序列作为输入,因此我们将 z0 的空间维度折叠为一个维度,从而得到一个 d×HW 特征图。每个编码器层都有一个标准架构,由一个多头自注意力模块和一个前馈网络(FFN)组成。由于 Transformer 架构是置换不变的,我们用固定的位置编码 [31,3] 来补充它,这些编码被添加到每个注意力层的输入中。我们将架构的详细定义推迟到补充材料中,该定义遵循 [47] 中描述的定义。
Transformer 解码。解码器遵循转换器的标准架构,使用多头自和编码器-解码器注意机制转换大小为 d 的 N 个嵌入。与原始转换器的不同之处在于,我们的模型在每个解码器层并行解码 N 个对象,而 Vaswani 等人。 [47] 使用自回归模型,一次预测一个元素的输出序列。我们将不熟悉这些概念的读者推荐给补充材料。由于解码器也是置换不变的,因此 N 个输入嵌入必须不同才能产生不同的结果。这些输入嵌入是学习的位置编码,我们将其称为对象查询,与编码器类似,我们将它们添加到每个注意力层的输入中。N 个对象查询被解码器转换为输出嵌入。然后通过前馈网络(在下一小节中描述)将它们独立解码为框坐标和类标签,从而产生 N 个最终预测。在这些嵌入上使用自我和编码器-解码器注意力,该模型使用它们之间的成对关系对所有对象进行全局推理,同时能够将整个图像用作上下文。
预测前馈网络 (FFN)。最终预测由具有 ReLU 激活函数和隐藏维度 d 的 3 层感知器和线性投影层计算。 FFN 预测框 w.r.t 的归一化中心坐标、高度和宽度。输入图像,线性层使用 softmax 函数预测类标签。由于我们预测一组固定大小的 N 个边界框,其中 N 通常远大于图像中感兴趣对象的实际数量,因此需要一个额外的特殊类标签∅用于表示在槽内没有检测到对象。该类与标准对象检测方法中的 "background"类的作用相似。
辅助解码损失。
4.实验
我们表明,在 COCO 的定量评估中,与 Faster R-CNN 相比,DETR 取得了具有竞争力的结果。然后,我们对架构和损失进行了详细的消融研究,并提供了见解和定性结果。最后,为了证明 DETR 是一种通用且可扩展的模型,我们展示了全景分割的结果,仅在固定 DETR 模型上训练了一个小的扩展。我们在 https://github.com/facebookresearch/detr 提供代码和预训练模型来重现我们的实验。
5.结论
我们提出了 DETR,这是一种基于变换器和二分匹配损失的目标检测系统的新设计,用于直接集合预测。该方法在具有挑战性的 COCO 数据集上实现了与优化的 Faster R-CNN 基线相当的结果。 DETR 易于实施,具有灵活的架构,可轻松扩展到全景分割,并具有竞争性结果。此外,它在大型对象上的性能明显优于 Faster R-CNN,这可能要归功于 self-attention 对全局信息的处理。
这种新的探测器设计也带来了新的挑战,特别是在小物体的训练、优化和性能方面。当前的探测器需要几年的改进才能解决类似的问题,我们希望未来的工作能够成功解决 DETR 的问题。
A。附录
A.1 预备知识:多头注意力层
由于我们的模型基于 Transformer 架构,我们在这里提醒我们用于穷举的注意力机制的一般形式。注意力机制遵循 [47],除了 [7] 之后的位置编码的细节(参见公式 8)。
多头。 具有 M 个维度为 d 的头的多头注意力的一般形式是具有以下签名的函数
A.3 详细结构
图 10 给出了 DETR 中使用的transformer的详细描述,位置编码在每个注意力层传递。来自 CNN 主干的图像特征通过变换器编码器,以及添加到查询和每个多头自注意力层的键。然后,解码器接收查询(初始设置为零)、输出位置编码(对象查询)和编码器内存,并通过多个多头自注意力和解码器-编码器注意力产生最终的预测类标签和边界框集。第一个解码器层中的第一个自注意力层可以跳过。
图 10:DETR 变压器的架构。请参阅第 A.3 节了解详细信息。