全文摘要
本文介绍了一种新的物体检测方法——DETR(DEtection TRansformer),该方法将物体检测视为直接的集合预测问题,并通过使用基于transformer的编码器解码器架构和一种集
论文方法
方法描述
该论文提出了一种名为DETR(Differentiable Embeddings for Transformers)的直接预测检测模型。与传统的基于锚框或区域提议的检测模型不同,DETR使用了基于transformer架构的编码器-解码器结构来实现对象的直接预测。具体来说,该模型将输入图像通过CNN特征提取后,将其展开成一个一维向量,并加入位置编码作为输入,然后通过多层transformer编码器将其转换为高维表示。接着,通过固定数量的learned positional embeddings(即“物体查询”)初始化transformer解码器,解码器通过self-attention和encoder-decoder attention机制处理这些物体查询,并产生最终的N个检测结果。每个检测结果由一个feedforward网络预测类别标签、中心坐标以及高度和宽度等信息。
方法改进
DETR的主要创新点在于引入了transformer架构来处理目标检测问题。相比于传统的基于锚框或区域提议的检测模型,DETR能够更高效地处理图像中的多个目标,并且不需要预定义的锚框大小和形状。此外,DETR还采用了基于l1损失和generalized IoU损失的混合损失函数,以平衡类别预测和边界框预测之间的权重。
解决的问题
传统的目标检测模型通常需要先生成一系列候选框,再通过分类器对其进行分类和回归调整。这种方法存在两个主要问题:首先,需要预先定义一组不同的锚框大小和形状,这会增加计算复杂度并限制检测性能;其次,由于锚框通常是重叠的,因此需要额外的非极大值抑制(NMS)操作来去除冗余的检测结果。相比之下,DETR通过直接预测物体的位置和类别,避免了这些问题,使得其在处理大规模数据集时具有更好的效率和准确率。
论文实验
本文主要介绍了使用DETR模型在COCO数据集上进行物体检测的实验结果,并与Faster R-CNN进行了比较。具体来说,本文进行了以下四个方面的实验:
- 对比了DETR和Faster R-CNN在COCO数据集上的性能表现;
- 分析了DETR中不同组件对最终性能的影响;
- 针对DETR模型进行了一些改进实验,如去除某些组件等;
- 尝试将DETR扩展到panoptic segmentation任务上,并与其他方法进行了比较。
下面是每个实验的具体介绍:
- 对比DETR和Faster R-CNN在COCO数据集上的性能表现:
该实验的主要目的是验证DETR在物体检测任务上的性能表现,并与Faster R-CNN进行比较。实验结果表明,DETR可以达到与Faster R-CNN相当甚至更好的性能,尤其是在小目标和长宽比较大的目标方面表现更好。这说明DETR在物体检测任务上有很大的潜力。
- 分析DETR中不同组件对最终性能的影响:
该实验旨在分析DETR中的不同组件(如编码器、解码器、注意力机制等)对最终性能的影响。实验结果表明,这些组件都对最终性能有显著影响,其中全球自注意力机制是最重要的因素之一。
- 针对DETR模型进行一些改进实验,如去除某些组件等:
该实验旨在通过去掉一些组件来进一步优化DETR模型的性能。实验结果表明,去掉某些组件可能会导致性能下降,但有些情况下也可以获得更好的性能。
- 尝试将DETR扩展到panoptic segmentation任务上,并与其他方法进行比较:
该实验旨在探索将DETR扩展到panoptic segmentation任务上的可能性,并与其他方法进行比较。实验结果表明,DETR在这项任务上也取得了很好的性能,并且相对于其他方法具有更高的优势。
论文总结
文章优点
该论文提出了一种新的直接预测物体检测问题的方法,即DETR(DEtection TRansformer),使用了自注意力机制来处理所有元素之间的相互作用,并且不需要任何定制化层,可以轻松地在任何包含标准CNN和transformer类的框架中实现。与现有的检测方法相比,DETR具有以下优点:
- 简化了检测管道,去掉了多个需要编码先验知识的手动设计组件,如空间锚定或非最大抑制。
- 采用了端到端的训练方式,通过将物体检测视为直接集合预测问题来进行训练。
- 使用了自注意力机制,能够更好地处理全局信息。
- 实现了并行解码,避免了递归解码带来的计算负担。
方法创新点
DETR的主要创新点在于其直接预测物体检测问题的方法,以及使用的自注意力机制和并行解码技术。相比于传统的间接预测方法,DETR更加简单明了,同时也能够在性能上取得更好的结果。此外,DETR还为其他复杂任务的扩展提供了思路,例如将其用于像素级别的识别任务中,表现出了很好的效果。
未来展望
虽然DETR已经在COCO数据集上取得了不错的结果,但是它仍然存在一些挑战,比如小目标的检测性能不如Faster R-CNN等传统方法。因此,未来的改进方向可以从以下几个方面入手:
- 对于小目标的检测,可以考虑引入更多的特征提取器或者增加训练样本数量等方式来提高性能。
- 可以进一步探索如何利用更多的先验知识来提高检测性能。
- 可以尝试将DETR与其他先进的模型结合,例如YOLOv4等,从而获得更好的性能。
全文翻译
我们提出了一种新的方法,将目标检测视为直接的集合预测问题。我们的方法简化了检测管道,有效地消除了许多需要手动设计的组件,如非极大抑制过程或显式编码任务先验知识的锚点生成。新框架的主要组成部分称为检测变换器(DETR),它包括一个基于全局损失的集合,该损失通过二分图匹配强制执行唯一预测,并且具有transformer编解码器架构。给定一组预先训练好的物体查询,DETR可以推断对象之间的关系以及全局图像上下文,以并行方式直接输出最终的预测结果。与许多其他现代检测器不同,新模型的概念非常简单,不需要专门的库。DETR在具有挑战性的COCO目标检测数据集上展示了与高度优化的经典基线Faster R-CNN相当的准确性和运行时性能。此外,DETR可以轻松地推广为统一的方式进行全景分割。我们证明它比竞争性基线有显著更好的表现。训练代码和预训练模型可以在https://github.com/facebookresearch/detr 找到。
1 介绍
目标检测的目标是对每个感兴趣的对象预测一组边界框和类别标签。现代检测器通过在大量提议、锚或窗口中心上定义代理回归和分类问题来间接解决这一集合预测任务[37, 5]。 [23], 或窗口中心[53, 46]。它们的表现受后处理步骤的影响,以压缩近似重复的预测,并由锚定盒集的设计和将目标框分配给锚定盒的启发式方法[52]。为了简化这些流程,我们提出了一种直接的集合预测方法来跳过代理任务。这种端到端的方法已经在复杂的结构化预测任务中取得了显著进展,例如机器翻译或语音识别,但尚未在目标检测方面取得成功:之前的尝试[43, 16, 4, 39] 要么添加了其他形式的先验知识,要么尚未在具有挑战性的基准测试中证明其与强大基线的竞争能力。本文旨在弥合这一差距。
图1:DETR通过将公共CNN与变压器架构相结合,直接预测(并行)最终的检测集。在训练期间,二分匹配唯一地将预测与基本事实框分配。没有匹配的预测应该产生“无对象”(∅)类预测。
我们通过将目标检测视为直接的集合预测问题来简化训练流程。 我们采用基于transformer [47] 的 编码器-解码器 架构,这是一种流行的序列预测架构。 Transformer中的自注意机制明确地对序列中元素之间的所有配对交互进行建模 使其非常适合特定的集合预测约束,例如删除重复的预测。
我们的检测变换器(DETR,参见图 1)同时预测所有对象,并使用一种设置损失函数以执行预测对象与真实对象之间的双一分配进行端到端训练。DETR 通过丢弃多个用于编码先验知识的手动设计组件来简化检测管道,例如空间锚或非最大抑制。与大多数现有检测方法不同,DETR 不需要任何自定义层,因此可以轻松地在包含标准卷积神经网络和变压器类的任何框架中重现。[1]
与大多数直接设置预测的工作相比,DETR的主要特点是二分图匹配损失和具有(非自回归)并行解码的变压器相结合。相比之下,以前的研究侧重于使用循环神经网络进行自回归解码。我们的匹配损失函数为每个真实对象分配一个预测,并且对预测对象的排列保持不变,因此我们可以并行地发出它们。
我们在一个最受欢迎的目标检测数据集COCO [24]上对DETR进行了评估,与非常有竞争力的Faster R-CNN基线[37]进行了比较。Faster R-CNN已经经过了许多设计迭代,自最初发布以来其性能得到了显著提高。我们的实验表明,我们的新模型在表现上可以相媲美。更准确地说,DETR 在大目标上的表现要好得多,这可能是由变压器的非局部计算实现的。然而,在小目标上它的表现较差。我们预计未来的工作会像FPN [22] 对于Faster R-CNN所做的那样来改进这一点。
DETR 的训练设置在多个方面与标准目标检测器不同。新的模型需要额外长的训练时间表,并且有好处 从变压器辅助解码损失开始。我们彻底探索了哪些组件对所展示的表现至关重要。 DETR 的设计理念可以轻松地扩展到更复杂的任务。在我们的实验中,我们展示了基于预训练 DETR 的简单分割头在像素级识别任务 Panoptic Segmentation [19] 上优于竞争性基线。这是一个最近才流行起来的具有挑战性的任务。
2 相关工作
我们的工作建立在多个领域的先前工作中:用于集合预测的二分图匹配损失、基于变压器的编码器 - 解码器体系结构、并行解码以及对象检测方法。
2.1 预测集
没有直接预测集合的标准深度学习模型。基本的集合预测任务是多标签分类(例如,参见[40, 33]中的计算机视觉语境)其中基线方法一对一不适用于元素之间存在潜在结构的问题(即近似相同的框)。这些任务的第一步是避免近似重复。目前大多数检测器使用后处理技术(如非极大抑制)来解决此问题,但直接集预测则无需后处理。它们需要全局推理方案来避免冗余,该方案对所有预测元素之间的相互作用进行建模。对于固定大小的集合预测,密集全连接网络[9]就足够了,但是成本高昂。一般的方法是使用自回归序列模型,例如递归神经网络[48]。在所有情况下,损失函数都应通过预测的任意排列保持不变。通常的解决方案是基于匈牙利算法设计损失函数[20],以在真实值和预测值之间找到二分图匹配。这强制执行了排列不变性,并保证每个目标元素都有一个唯一的匹配项。我们遵循二分图匹配损失的方法。然而,与几乎所有先前的工作不同,我们放弃了自回归模型,转而使用具有并行解码的变压器,我们在下面进行描述。
2.2 变压器与并行解码
Vaswani等人。[47]引入了变压器作为机器翻译的新注意力基块。注意力机制[2]是一种神经网络层,它从整个输入序列聚合信息。变压器介绍了自我关注层,这与非局部神经网络类似[49],扫描序列中的每个元素,并通过从整个序列汇总信息来更新它。基于注意力的模型的主要优点之一是它们的全局计算和完美的内存,使它们比循环神经网络更适合长序列。Transformer 现在是 在自然语言处理、语音处理和计算机视觉中的许多问题中,递归神经网络已被替换 [8][27][45][34][31]。 最初,Transformer 模型被用于自回归模型,继而是在早期的序列到序列模型之后[44],按顺序生成输出标记。然而,由于推理成本(与输出长度成正比且难以批量处理)的禁止,导致在音频[29]、机器翻译[12,10]、词嵌入学习[8]以及最近的语音识别[6]等领域中发展了并行序列生成。我们还结合了 Transformer 和并行解码,以实现计算成本和执行集合预测所需的全局计算能力之间的权衡。
2.3 目标检测
大多数现代目标检测方法都是基于一些初始假设进行预测。两阶段检测器[37、5]根据提议生成框,而单阶段方法则针对锚框[23]或可能对象中心的网格[53、46]进行预测。最近的研究[52]表明这些系统最终性能在很大程度上取决于这些初始假设的确切设置方式。在我们的模型中,我们能够消除这种手工制作的过程,并通过直接相对于输入图像对检测结果集合进行绝对框预测来简化检测过程,而不是使用锚框。 基于集合的损失。几个目标检测器[9, 25, 35] 使用了二分图匹配损失。然而,在这些早期深度学习模型中,不同预测之间的关系仅通过卷积或全连接层进行建模,并且手工设计的NMS后处理可以提高它们的性能。最近的目标检测器[37, 23, 53]使用了真值与预测之间非唯一分配规则以及NMS。 可学习的 NMS 方法 [16,4] 和关系网络 [17] 使用注意力显式建模不同预测之间的关系。它们使用直接集合损失,因此不需要任何后处理步骤。然而,这些方法使用了额外的手工制作上下文特征(如提议框坐标)来有效地建模检测之间的关系,而我们寻找减少模型中编码先验知识的方法。 递归检测器。最接近我们方法的是端到端的物体检测 [43] 和实例分割 [41, 30, 36, 42] 中的对象集合预测。与我们类似,它们使用基于卷积神经网络 (CNN) 激活的编码器 - 解码器架构来直接生成一组边界框。然而,这些方法仅在小数据集上进行了评估,并未针对现代基准线进行评估。特别是,它们基于自回归模型(更准确地说是循环神经网络),因此不利用最近的并行解码器的变压器。
3. DETR 模型
检测中直接设置预测的两个关键要素是:(1) 一种集合预测损失,该损失强制执行预测与真实值之间的唯一匹配一个架构,用于预测(单次遍历)一组对象并模拟它们之间的关系。我们在图2中详细描述了我们的架构。
3.1 目标检测集预测损失
DETR通过单次解码推断出一组固定大小的预测结果,其中 N 被设置为显著大于图像中对象的典型数量。训练的主要困难之一是根据ground truth 对预测的对象(类别、位置、大小)进行评分。我们的损失函数在预测对象和ground truth 对象之间产生最佳二分匹配,然后优化针对每个对象(边界框)的损失。
我们用 y y y 表示真实物体集合, y ^ = { y ^ i } i = 1 N \hat{y}=\{\hat{y}_i\}_{i=1}^N y^={y^i}i=1N 表示预测的 N 个结果。假设 N 大于图像中物体的数量,我们将 y y y 视为大小为 N 并填充了 ∅ \emptyset ∅(没有物体)的集合。为了在这两个集合之间找到二分图匹配,我们寻找具有最低成本的置换 σ ∈ S N \sigma \in S_N σ∈SN:
其中 $L_{match}(y_i, \hat{y}_{σ(i)}) $是真值yi与索引为σ(i)的预测值之间的配对匹配成本。根据先前的工作(例如[43]),使用匈牙利算法高效地计算最佳分配。 匹配损失考虑了类预测和预测框与真实框的相似性。
真实集中的每个元素 i 可以看作是一个 y i = ( c i , b i ) y_i=(c_i,b_i) yi=(ci,bi),其中 $c_i $是目标类别标签(可能为空),而 b i ∈ [ 0 , 1 ] 4 b_i \in [0,1]^4 bi∈[0,1]4 是一个向量,定义了真实框的中心坐标以及相对于图像大小的高度和宽度。 对于索引为 σ ( i ) \sigma(i) σ(i) 的预测,我们定义其类别概率为 p ^ ∗ σ ( i ) ( c i ) \hat{p}*{\sigma(i)}(c_i) p^∗σ(i)(ci) ,预测框为 $\hat{b}*{\sigma(i)} 。在这些符号下,我们定义 。 在这些符号下,我们定义 。在这些符号下,我们定义 L_{match}(y_i,\hat{y}{\sigma(i)}) = -{\bf 1}[c_i= {\varnothing}] \hat{p}{\sigma(i)}(c_i) +{\bf 1}[c_i eq {\varnothing}] L_{box}(b_i,\hat{b}_{\sigma(i)}) $。
这种寻找匹配的方法在现代检测器中用于将建议 [37] 或锚点 [22] 与真实目标进行匹配的启发式分配规则中起着相同的作用。主要区别在于,我们需要为直接集合预测找到一一对应的匹配项,而不重复。 第二步是计算损失函数,即上一步中所有匹配对之间的匈牙利损失。我们定义损失与常见的目标检测器的损失相似,即类预测的负对数似然与稍后定义的边界框损失的线性组合:
其中$ {\sigma} $是在第一步中计算出的最佳分配。 在实践中,当 $c_{i}= \emptyset $时,我们通过乘以一个 10 的因数来降低对数概率项,以考虑 类不平衡。这类似于Faster R-CNN训练过程如何通过子采样来平衡正样本/负样本 [37] 。请注意,对象与空集之间的匹配成本不依赖于预测,这意味着在这种情况下成本是常数。在匹配成本中,我们使用概率估计 $\hat{p}_{\hat{σ}(i)}(ci) $而不是对数概率。这使得类别预测项与下面描述的 Lbox(⋅,⋅) 可比较,并且我们在实验中观察到了更好的性能。
边界框损失。 匹配成本的第二部分和匈牙利算法损失是 Lbox(⋅) ,它对边界框进行打分。与许多检测器使用一些初始猜测作为参考来预测边界框不同,我们直接进行边界框预测。虽然这种方法简化了实现,但它在相对损失缩放方面存在问题。最常用的 l1 损失对于小盒子和大盒子会有不同的尺度,即使它们的相对误差相似。为了解决这个问题,我们使用 l1 损失和广义 IoU 损失[38] 的线性组合 Liou(⋅, ⋅),它是缩放不变的。总的来说,我们的边界框损失定义,其中 λiou, λL1∈R 是超参数。这两种损失都通过批处理中的目标数量进行了归一化。
3.2 DETER 架构
DETR 的总体架构令人惊讶地简单,如图 2 所示。它包含三个主要组件:用于提取紧凑特征表示的卷积神经网络 (CNN) 背板、编码器 - 解码器转换器以及用于生成最终检测预测的简单前馈网络(FFN)。 与许多现代检测器不同,DETR 可以在任何提供了一个通用卷积神经网络 (CNN) 核心和一个具有几百行代码的 Transformer 架构实现的深度学习框架中实施。DETR 的推理代码可以在不到 50 行的 PyTorch 中实现[32]。我们希望我们的方法的简单性能够吸引新的研究者进入检测领域。
主干。从初始图像 x i m g ∈ R 3 × H 0 × W 0 x_img ∈ R^{3×H0×W0} ximg∈R3×H0×W0(具有三个颜色通道)开始,传统的卷积神经网络生成一个低分辨率激活映射 f ∈ R C × H × W f ∈ R^{C×H×W} f∈RC×H×W。我们通常使用的值为C = 2048,H = H0/32,W = W0/32。
图2:DETR 使用一个常规卷积神经网络(CNN)骨干来学习输入图像的二维表示。该模型会将其压平,并在传递给 Transformer 编码器之前,用位置编码进行补充。然后,Transformer 解码器会将一小部分已学习的位置嵌入作为输入,我们称之为目标查询,并且还会关注来自编码器的输出。我们将解码器的每个输出嵌入馈送到共享前馈网络 (FFN),以预测检测(类别和边界框)或“无对象”类。
Transformer 编码器。首先,一个 1x1 卷积从高级激活映射f的通道维度C减小到较小的维度d。创建一个新的特征图 z 0 ∈ R d × H × W z0∈R^{d×H×W} z0∈Rd×H×W。编码器期望序列作为输入,因此我们将z0的空间维度折叠为一维,从而得到一个大小为d×HW的特征图。每个编码层都有标准架构,由多头自注意模块和前馈网络(FFN)组成。由于 Transformer 架构对置换不变,我们在每个注意力层的输入中添加了固定的定位编码[31,3]以补充它。我们将在附录中给出详细的架构定义,其遵循[47]中所描述的架构。
解码器。解码器遵循自注意力机制,采用标准变形架构,使用多头自注意和编码 - 解码器注意力对N个大小为d的嵌入进行变换。与原始变形不同的是,我们的模型在每个解码层中并行地解码N个对象,而 Vaswani等人[47] 使用递归模型逐个预测输出序列。对于不熟悉这些概念的读者,请参阅补充材料。由于解码器也是不变量,因此输入嵌入必须具有不同的特征以产生不同的结果。这些输入嵌入被学习为位置编码,我们将其称为对象查询,并且与编码器一样,我们在每个注意层的输入中添加它们。解码器将N个对象查询转换为一个输出嵌入。然后,它通过前馈网络(如上文所述)独立地解码到框坐标和类别标签,从而获得N个最终预测。通过这些嵌入的自注意力和编码器 - 解码器注意力,模型能够利用整个图像作为上下文环境,在所有对象之间建立全局关系推理。 前馈预测网络(FFNs)。最终的预测由一个具有ReLU激活函数和隐藏维度d的三层感知器计算得出,还有一个线性投影层。FFN 预测相对于输入图像的归一化中心坐标、高度和宽度,而线性层使用 softmax 函数来预测类别标签。由于我们预测的是固定大小的 N 个边界框集合,其中 N 通常比图像中感兴趣的实际对象数量大得多,因此会添加一个特殊的空类,以表示该插槽内未检测到任何对象。这个类在标准目标检测方法中起着与“背景”类相似的作用。 辅助解码损失。我们在训练过程中发现,在解码器中使用辅助损失[1]很有帮助,特别是有助于模型输出正确的数字 每个类别的对象。我们在每个解码器层之后添加预测FFN 和匈牙利损失。所有预测的FFN 共享参数。我们使用一个额外的共享层规范来规范化来自不同解码器层的输入到预测FFN 中。
实验 4
我们展示了DETR在COCO上的量化评估中与Faster R-CNN相比具有竞争力的结果。然后,我们对架构和损失进行了详细的消融研究,并提供了见解和定性结果。最后,为了展示DETR是一种通用且可扩展的模型,我们在仅在一个固定的DETR模型上进行少量扩展的情况下提供panoptic分割的结果。我们在 https://github.com/facebookresearch/detr 提供代码和预训练模型以重现我们的实验。
数据集。我们在COCO 2017检测和语义分割数据集上进行实验[24,18],包含118k张训练图像和5k张验证图像。每张图片都带有边界框注释和语义分割注释。平均每幅图有7个实例,训练集中单个图像最多可达63个实例,从小到大排列在相同的图像上。除非另有说明,否则我们报告AP作为bbox AP,即多个阈值下的综合度量。为了与Faster R-CNN进行比较,我们在最后一个训练周期内报告验证AP,对于消融研究,我们在最后10个周期内的验证结果中报告中位数。
技术细节。我们在AdamW [26] 上训练DETR,其中初始transformer学习率为10−4,backbone为10−5,权重衰减为10−4。所有transformer权重都使用Xavier 初始化[11],backbone使用预训练于ImageNet的ResNet模型[15],来自torchvison,并带有冻结批处理归一化层。我们报告了两个不同backbone的结果:一个ResNet-50和一个ResNet-101。相应的模型分别称为DETR和DETR-R101。根据[21],我们通过在backbone的最后一阶段添加dilation来增加特征分辨率,并从该阶段的第一个卷积中删除步幅。相应的模型分别称为DETR-DC5和DETR-DC5-R101(dilated C5阶段)。这种修改使分辨率增加了两倍,从而提高了小物体的性能,但代价是在编码器的自注意力上带来了16倍的成本,导致总体计算成本增加了两倍。这些模型与Faster R-CNN的完整比较见表1。
我们使用缩放来放大输入图像,使最短边至少为 480 像素且最长边至多为 800 像素,而最长边则至多为 1333[50]。为了通过编码器的自注意力学习全局关系,我们在训练过程中还应用了随机裁剪增强,在性能方面提高了约 1 AP。具体来说,训练图像以 50% 的概率被裁剪到一个随机矩形区域,然后再次调整大小到 800-1333。transformer 使用默认的丢弃率为 0.1 进行训练。在推断时 表 1:在 COCO 验证集上,使用 ResNet-50 和 ResNet-101 背景的 Faster R-CNN 与 DETR 的比较。顶部部分显示了检测器2[50]中 Faster R-CNN 模型的结果,中间部分显示了使用 GIoU[38]、随机裁剪训练时增强以及长 9× 训练计划的 Faster R-CNN 模型的结果。DETR 模型在与高度调整过的 Faster R-CNN 基线模型相比实现了可比的结果,APL 有所提高,但 APS 有所下降。我们使用 torchscript Faster R-CNN 和 DETR 模型来测量浮点运算 (FLOPs) 和每秒帧数 (FPS)。名称中不带 R101 的结果对应于 ResNet-50。 一些插槽预测空类。为了优化平均精度,我们使用相应的置信度覆盖这些插槽的第二高分数类别。这比过滤掉空插槽提高了2个AP点。其他训练超参数可以在A.4中找到。对于我们的消融实验,我们使用了300个时期的训练时间表,在第200个时期后将学习率降低10倍,其中单个时期是一次性地对所有训练图像进行训练。在16个V100 GPU上为基准模型训练300个时期需要3天,每个GPU有4张图片(因此总批大小为64)。为了与Faster R-CNN进行比较而使用的更长的时间表,我们在400个时期后降低学习率并训练500个时期。此计划比较短的时间表增加了1.5 AP。
4.1 与Faster R-CNN比较
Transformer通常使用Adam或Adagrad优化器进行训练,具有非常长的训练时间表和丢弃操作,DETR也是如此。然而,Faster R-CNN使用SGD进行训练,并且在数据增强方面最少。我们还不知道Adam或丢弃操作的成功应用。尽管存在这些差异,但我们的目标是使Faster R-CNN基准线更强大。为了使其与DETR对齐,我们在框损失中添加了通用IoU[38],以及已知可以提高结果的相同随机裁剪增强和长时间训练[13]。结果如表1所示。顶部部分显示了Detectron2模型动物园[50]中以3倍计划训练的模型的Faster R-CNN结果。中间部分显示了相同模型的结果(带有“+”),但训练 在 9x 定时(109 轮次)和描述的增强功能下,总计增加 1-2 AP。在表 1 的最后一节中,我们展示了多个 DETR 模型的结果。为了在参数数量上具有可比性,我们选择了一个带有 6 个变压器层和 6 个解码器层、宽度为 256 和 8 个注意力头的模型。与带有 FPN 的 Faster R-CNN 一样,该模型有 41.3M 个参数,其中 23.5M 个位于 ResNet-50 中,17.8M 个位于变压器中。尽管 Faster R-CNN 和 DETR 在更长的训练时间后仍有可能进一步提高,但我们可以得出结论,DETR 可以通过相同的参数量与 Faster R-CNN 竞争,在 COCO 验证子集中达到 42 AP。DETR 通过提高 APL(+7.8) 来实现这一点,但请注意,该模型在 APS(-5.5) 方面仍然落后。具有相同参数数量和类似浮点运算 (FLOP) 计数的 DETR-DC5 具有更高的 AP,但其在 APS 方面也明显落后。使用 ResNet-101 背板的 Faster R-CNN 和 DETR 也能提供相似的结果。
4.2 切片
Transformer解码器中的注意力机制是建模不同检测之间特征表示关系的关键组件。在我们的消融分析中,我们探索了我们的架构和其他组件以及损失对最终性能的影响。为了研究,我们选择了具有6个编码器、6个解码器层和宽度为256的基于ResNet-50的DETR模型。该模型有41.3M个参数,在短序列和长序列上分别达到40.6和42.0的AP,并且以与相同骨干的Faster R-CNN-FPN相似的速度运行(28 FPS)。
编码器层。我们通过改变编码器层数(表2)来评估全局图像级自注意的重要性。如果没有编码层,整体平均精度会下降3.9个点,对于大物体有更显著的6.0个AP的下降。我们假设通过使用全局场景推理,编码器对于分离对象很重要。在图3中,我们可视化了训练模型中最后一个编码器层的注意力图,重点关注图像中的几个关键点。编码器似乎已经分离实例,这可能简化了解码器提取和定位对象的过程。
解码器层。我们在每个解码层后应用辅助损失(见第 3.2 节),因此,设计上预测的前馈神经网络在预训练期间会受到训练。 自注意力 (430, 600) 自注意力(450,830) 图 3:一组参考点的编码器自注意力。 编码器能够分离单个实例。 在验证集图像上使用基线DETR模型进行预测。 我们从每个解码器层的输出中提取字典对象。通过评估在解码过程中的每一步预测将会得出的结果,我们可以分析每个解码器层的重要性(图 4)。AP 和 AP50 在每一层之后都会提高,因此在第一层和最后一层之间总共有非常显著的 +8.2/9.5 AP 提高。由于其基于集合的损失函数,DETR 在设计上不需要 NMS。为了验证这一点,我们在每个解码器之后对输出运行了带有默认参数 [50] 的标准 NMS 程序。NMS 改善了来自第一个解码器的预测性能。这是因为单个 Transformer 解码器层无法计算输出元素之间的任何相关性,因此很容易为同一物体生成多个预测。在第二层及以后,激活上的自注意机制使模型能够抑制重复的预测。我们观察到随着深度的增加,由 NMS 带来的改进会降低。在最后几层中,我们会发现在 NMS 错误删除真实阳性预测的情况下,AP 会有轻微损失。
为了可视化解码器注意力,我们在图6中对解码器注意力进行可视化,为每个预测的对象着色。我们观察到解码器的注意力相当局部化,这意味着它主要关注对象的末端,如头部或腿部。我们假设在编码器通过全局注意力分离实例之后,解码器只需要关注端点来提取类和对象边界。 FFN的重要性。可以将transformer中的FFN视为1×1卷积层,使编码器类似于注意力增强的卷积网络[3]。我们试图完全删除它,只在transformer层中保留注意力。通过将网络参数从41.3M减少到28.7M,仅在transformer中留下10.8M,在性能下降了2.3 AP之后,因此得出结论,FFN对于获得良好的结果很重要。 位置编码的重要性。我们的模型有两种类型的位置编码:空间位置编码和输出位置编码。
图 5:针对罕见类别的分布外泛化。尽管训练集中没有一张图片包含超过 13 只长颈鹿,但 DETR 在泛化到同一类别的 24 只或更多实例时并不费力。
我们尝试了固定编码和学习编码的各种组合,结果如表 3 所示。输出位置编码是必需的,不能删除,因此我们在解码器输入中传递它们一次或在每个解码器注意力层中添加到查询中进行实验。在第一个实验中,我们完全移除了空间位置编码,并且在输入处传递输出位置编码,有趣的是,模型仍然实现了超过 32 的平均精度 (AP),比基准线低了 7.8 AP。然后,我们将固定的正弦空间位置编码和输出编码作为输入传递了一次,就像原来的 Transformer [47] 中一样,我们发现这导致与直接在注意力中传递位置编码相比,AP 下降了 1.4。通过注意力传递给注意力的学习空间编码给出了类似的结果。令人惊讶的是,我们发现在编码器中不传递任何空间编码只会导致 AP 微妙地下降 1.3。当我们将编码传递给注意力时,它们会在所有层之间共享,而输出编码(对象查询)总是被学习的。
鉴于这些消融实验,我们得出结论:注意力机制组件:编码器中的全局自注意、全连接网络(FFN)、多个解码层以及位置编码都显著地促进了最终的目标检测性能。
为了评估匹配成本的不同组件以及损失的重要性,我们训练了几个模型来打开或关闭它们。损失有三个组成部分:分类损失、 l1 盒子距离损失和GIoU [38] 损失。分类损失对训练至关重要,不能关闭,因此我们训练了一个没有盒子距离损失的模型,还有一个没有GIoU损失的模型,并与使用所有三种损失进行训练的基线进行了比较。结果如表4所示。GIoU 损失本身占大多数模型性能,仅损失 0.7 AP 到具有组合损失的基线。没有使用GIoU时L1表现不佳。我们仅研究了 图7:DETR解码器中所有N = 100个预测插槽中的前20个对COCO 2017验证集中的所有图像的所有框进行可视化。每个框预测都表示为一个点,其在以每个图像大小归一化的1×1正方形中的中心坐标。这些点被着色,绿色对应于小盒子,红色对应于大水平盒子,蓝色对应于大垂直盒子。我们观察到每个插槽学习了几个操作模式来专门针对某些区域和盒子尺寸。请注意,几乎所有插槽都有一个模式来预测COCO数据集中常见的大全局框。 简单地对不同的损失进行去噪(每次使用相同的权重),但结合它们的其他方法可能会产生不同的结果。
4.3 分析
解码器输出分析 在图7中,我们可视化了在COCO 2017验证集中对所有图像进行预测的不同插槽。DETR为每个查询插槽学习不同的专业化。 我们观察到每个插槽都有几种操作模式,专注于不同区域和框大小。特别是,所有插槽都具有预测整幅图像中的框(如图表中间对齐的红色点)的模式。我们推测这与COCO数据集中的对象分布有关。 对未见过的实例数进行泛化。COCO 中的一些类在图像中没有很好地表示,即同一类的许多实例出现在同一张图像中。例如,在训练集中没有任何一张图片包含超过 13 只长颈鹿。为了验证 DECAPROP 的泛化能力,我们生成了一个合成图像(见图 5)。我们的模型能够找到这张明显不符合分布的图像中的所有 24 只长颈鹿。这个实验表明了对每个物体查询并没有强烈的类专属性。
4.4 DETR 对于全景分割
全景分割[19]最近引起了计算机视觉界的广泛关注。与将更快的区域卷积神经网络(Faster R-CNN)[37]扩展到掩码区域卷积神经网络(Mask R-CNN)[14]的方式类似,可以在解码器输出上添加一个掩膜头来自然地扩展DETR。在本节中,我们将展示这样的头部可以用来通过处理对象类和背景类来产生全景分割[19]。 以统一的方式。我们在COCO数据集上进行实验,该数据集包含 53 种物体类别以及 80 种事物类别的语义注释。
我们使用相同的方案在COCO数据集上训练DETR,使其能够预测物体类别的框以及周围的目标类别的框。由于匈牙利匹配是根据两个框之间的距离计算的,因此需要预测框才能进行训练。此外,我们还添加了一个掩膜头,用于为每个预测的框预测一个二值掩膜(见图8)。它以解码器输出的每个对象作为输入,并对嵌入进行多头(M个头)注意力评分,该嵌入覆盖编码器的输出,在小分辨率下生成每个对象的M个注意力热图。为了做出最终的预测并提高分辨率,我们使用了类似FPN的架构。我们在补充材料中更详细地描述了架构。掩膜的最终分辨率为4像素,每个掩膜都独立监督DICE/F-1损失[28]和Focal Loss [23]。 我们可以联合训练掩膜头,也可以采用两步法,首先为 DETR 训练仅包含框的部分,然后冻结所有权重并仅针对掩膜头进行 25 个时期的训练。实验表明这两种方法给出的结果相似,我们选择后者是因为它能缩短总训练时间。
R50 UPSnet DETR R50 为了预测最终的全景分割,我们只需在每个像素上对掩码分数进行argmax操作,并将相应的类别分配给生成的掩码。这一过程保证了最终的掩码之间没有重叠,因此DETR 不需要一个经常用于对齐不同掩膜的启发式方法[19]。
训练细节。我们在遵循检测边界框的配方的情况下,训练DETR、DETR-DC5和DETR-R101模型来预测COCO数据集中物体类别的物体周围区域。新的掩膜头经过25个时期的训练(详情请参见补充材料)。在推理过程中,我们首先过滤掉置信度低于85%的检测结果,然后计算每个像素的最大值以确定每个像素属于哪个掩膜。然后我们将同一类物质的不同掩模预测合并为一个,并滤除空掩模(少于4个像素)。
主要结果。定性结果如图9所示。在表5中,我们比较了我们的统一语义分割方法与一些已有的方法,这些方法对物体和背景有不同的处理方式。我们报告了全景质量(PQ)以及物体类(PQth)和背景类(PQst)的拆分结果。我们还报告了在进行语义分割之前计算的掩膜平均精度(mask AP,在我们的案例中是在像素级argmax之前)。我们展示了DETR在COCO- val 2017上优于发表的结果,以及我们的强PanopticFPN基线(使用与DETR相同的数据增强进行训练,为了公平比较)。结果显示,DETR在背景类别上表现尤为突出,我们假设编码器注意力允许的全局推理是这一结果的关键因素。对于事物类,尽管与基线相比在掩膜平均精度方面存在高达8个map的严重不足,但DETR仍然获得了具有竞争力的PQth。我们还在COCO数据集的测试集上评估了我们的方法,并获得了46的PQ。希望未来的工作能够受到我们方法的启发,探索全统一模型用于全景分割。
5 结论
我们介绍了DETR,这是一种基于变形金刚和双侧匹配损失的直接集合预测目标检测系统的新设计。该方法在具有挑战性的COCO数据集上取得了与优化的Faster R-CNN基线相当的结果。DETR实现简单,具有灵活的架构,可以轻松扩展到语义分割,并且能够取得有竞争力的结果。此外,它在大物体上的性能显著优于Faster R-CNN,这可能要归功于自注意力机制对全局信息的处理。 这种新的检测器设计也带来了新的挑战,特别是在训练、优化和对小物体的性能方面。目前的检测器需要数年时间来改进以解决类似的问题,我们希望未来的工作能够成功地针对DETR进行这些改进。