图像 检测 - DETR: End-to-End Object Detection with Transformers - 端到端目标检测的Transformers(arXiv 2020)
- 摘要
- [1. 引言](#1. 引言)
- [2. 相关工作](#2. 相关工作)
-
- [2.1 集预测](#2.1 集预测)
- [2.2 Transformers和并行解码](#2.2 Transformers和并行解码)
- [2.3 目标检测](#2.3 目标检测)
- [3. DETR模型](#3. DETR模型)
-
- [3.1 目标检测集预测损失](#3.1 目标检测集预测损失)
- [3.2 DETR架构](#3.2 DETR架构)
- [4. 实验](#4. 实验)
-
- [4.1 与Faster R-CNN的比较](#4.1 与Faster R-CNN的比较)
- [4.2 消融](#4.2 消融)
- [4.3 分析](#4.3 分析)
- [4.4 用于全景分割的DETR](#4.4 用于全景分割的DETR)
- [5. 结论](#5. 结论)
- [6. 鸣谢](#6. 鸣谢)
- References
- [A. 附录](#A. 附录)
-
- [A.1 准备工作:多头注意力层](#A.1 准备工作:多头注意力层)
- [A.2 损失](#A.2 损失)
- [A.3 详细架构](#A.3 详细架构)
- [A.4 训练超参数](#A.4 训练超参数)
- [A.5 其他结果](#A.5 其他结果)
- [A.6 PyTorch推理代码](#A.6 PyTorch推理代码)
声明:此翻译仅为个人学习记录
文章信息
- 标题:DETR: End-to-End Object Detection with Transformers (arXiv 2020)
- 作者:Nicolas Carion*, Francisco Massa*, Gabriel Synnaeve, Nicolas Usunier, Alexander Kirillov, and Sergey Zagoruyko (* Equal contribution)
- 文章链接:https://arxiv.org/pdf/2005.12872.pdf
- 文章代码:https://github.com/facebookresearch/detr
(推荐:亦可参考 图像 处理 - 开源算法集合)
摘要
我们提出了一种新的方法,将目标检测视为一个直接集预测问题。我们的方法简化了检测流程,有效地消除了对许多手工设计的组件的需求,如非最大值抑制程序或锚生成,这些组件对我们关于任务的先验知识进行了明确编码。新框架称为DEtection TRansformer或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架构相结合,直接预测(并行)最终检测集。在训练过程中,二分匹配将预测唯一地分配给真值框。不匹配的预测应产生"无目标"(∅)类预测。
我们通过将目标检测视为直接集预测问题来简化训练管道。我们采用了一种基于transformer[47]的编码器-解码器架构,这是一种用于序列预测的流行架构。Transformer的自注意力机制显式地对序列中元素之间的所有成对交互进行建模,使这些架构特别适合于集合预测的特定约束,例如去除重复预测。
我们的DEtection TRansformer(DETR,见图1)一次预测所有目标,并使用集损失函数进行端到端训练,该函数在预测目标和真值目标之间执行二分匹配。DETR通过丢弃对先验知识进行编码的多个手工设计的组件(如空间锚或非最大抑制)来简化检测流水线。与大多数现有的检测方法不同,DETR不需要任何自定义层,因此可以在任何包含标准CNN和transformer类的框架中轻松复制。(在我们的工作中,我们使用了标准深度学习库中Transformer[47]和ResNet[15]主干的标准实现。)
与以前关于直接集预测的大多数工作相比,DETR的主要特征是二分匹配损失和transformers与(非自回归)并行解码的结合[29,12,10,8]。相比之下,先前的工作侧重于使用RNNs[43,41,30,36,42]的自回归解码。我们的匹配损失函数唯一地将预测分配给真值目标,并且对预测目标的排列是不变的,因此我们可以并行发射它们。
我们在最流行的目标检测数据集之一COCO[24]上评估了DETR,并与竞争激烈的Faster R-CNN基线[37]进行了比较。Faster R-CNN经过了多次设计迭代,自最初发布以来,其性能得到了极大的提高。我们的实验表明,我们的新模型达到了类似的性能。更准确地说,DETR在大型目标上表现出明显更好的性能,这一结果可能是由transformer的非局部计算实现的。然而,它在小目标上的性能较低。我们预计,未来的工作将以FPN[22]开发Faster R-CNN的方式改进这一方面。
DETR的训练设置与标准目标检测器在多个方面不同。新模型需要超长的训练时间表,并且受益于transformer中的辅助解码损耗。我们深入探讨了哪些组件对演示的性能至关重要。
DETR的设计理念很容易扩展到更复杂的任务中。在我们的实验中,我们表明,在预训练的DETR之上训练的简单分割头在全景分割[19]上的性能优于竞争性基线,这是一项具有挑战性的像素级识别任务,最近越来越受欢迎。
2. 相关工作
我们的工作建立在几个领域的先前工作的基础上:用于集合预测的二分匹配损失、基于transformer的编码器-解码器架构、并行解码和目标检测方法。
2.1 集预测
没有规范的深度学习模型可以直接预测集合。基本的集合预测任务是多标签分类(例如,参见[40,33]以获取计算机视觉背景下的参考文献),其中基线方法,一对一,不适用于诸如元素之间存在底层结构(即,接近相同的框)的检测等问题。这些任务的第一个困难是避免近乎重复的情况。大多数当前的检测器使用诸如非最大抑制之类的后处理来解决这个问题,但直接集预测是免后处理的。他们需要全局推理方案,对所有预测元素之间的交互进行建模,以避免冗余。对于恒定大小的集合预测,密集全连接网络[9]是足够的,但代价高昂。一种通用的方法是使用自回归序列模型,如递归神经网络[48]。在所有情况下,损失函数都应通过预测的排列保持不变。通常的解决方案是基于匈牙利算法[20]设计损失,以找到真值和预测之间的二分匹配。这增强了排列不变性,并保证每个目标元素具有唯一匹配。我们遵循二分匹配损失方法。然而,与大多数先前的工作相反,我们放弃了自回归模型,并使用具有并行解码的transformers,我们将在下面进行描述。
2.2 Transformers和并行解码
Transformers是由Vaswani等人引入的。[47]作为一种新的基于注意力的机器翻译构建块。注意力机制[2]是聚集来自整个输入序列的信息的神经网络层。Transformers引入了自注意力层,类似于非局部神经网络[49],它扫描序列的每个元素,并通过聚合整个序列的信息来更新它。基于注意力的模型的主要优点之一是它们的全局计算和完美的内存,这使得它们比长序列上的RNN更适合。在自然语言处理、语音处理和计算机视觉的许多问题中,Transformers正在取代RNN[8,27,45,34,31]。
Transformers最初用于自回归模型,遵循早期的序列到序列模型[44],逐个生成输出令牌。然而,在音频[29]、机器翻译[12,10]、单词表示学习[8]以及最近的语音识别[6]等领域,令人望而却步的推理成本(与输出长度成比例,且难以批量处理)导致了并行序列生成的发展。我们还将transformers和并行解码相结合,以在计算成本和执行集合预测所需的全局计算的能力之间进行适当的权衡。
2.3 目标检测
大多数现代目标检测方法都是相对于一些初始猜测进行预测的。两级检测器[37,5]预测框w.r.t.提案,而单级方法预测w.r.t.锚[23]或可能的目标中心网格[53,46]。最近的工作[52]表明,这些系统的最终性能在很大程度上取决于这些初始猜测的确切设置方式。在我们的模型中,我们能够去除这种手工制作的过程,并通过对输入图像而不是锚的绝对框预测来直接预测检测集,从而简化检测过程。
基于集合的损失。几个目标检测器[9,25,35]使用了二分匹配损失。然而,在这些早期的深度学习模型中,不同预测之间的关系仅用卷积层或全连接层建模,手工设计的NMS后处理可以提高其性能。最近的检测器[37,23,53]使用真值和预测之间的非唯一分配规则以及NMS。
可学习的NMS方法[16,4]和关系网络[17]显式地对不同预测之间的关系进行建模。使用直接集合损耗,它们不需要任何后处理步骤。然而,这些方法采用了额外的手工制作的上下文特征,如提议框坐标,以有效地对检测之间的关系进行建模,同时我们寻找减少模型中编码的先验知识的解决方案。
递归检测器。与我们的方法最接近的是用于目标检测[43]和实例分割[41,30,36,42]的端到端集合预测。与我们类似,他们使用基于CNN激活的编码器-解码器架构的二分匹配损失来直接生成一组边界框。然而,这些方法只在小型数据集上进行了评估,而没有对照现代基线进行评估。特别是,它们基于自回归模型(更准确地说是RNNs),因此它们没有利用最近的transformers进行并行解码。
3. DETR模型
两个因素对于检测中的直接集合预测至关重要:(1)集合预测损失,它迫使预测框和真值框之间进行唯一匹配;(2) 预测(一次通过)一组目标并对其关系建模的体系结构。我们在图2中详细描述了我们的体系结构。

图2. DETR使用传统的CNN主干来学习输入图像的2D表示。该模型对其进行平坦化,并在将其传递到transformer编码器之前用位置编码对其进行补充。然后,transformer解码器将少量固定数量的学习位置嵌入作为输入,我们称之为目标查询,并额外处理编码器输出。我们将解码器的每个输出嵌入传递到共享前馈网络(FFN),该网络预测检测(类和边界框)或"无目标"类。
3.1 目标检测集预测损失
DETR在通过解码器的单次通过中推断出固定大小的N个预测集合,其中N被设置为显著大于图像中目标的典型数量。训练的主要困难之一是根据真值对预测目标(类别、位置、大小)进行评分。我们的损失在预测目标和真值目标之间产生最优二分匹配,然后优化特定目标(边界框)的损失。
让我们用y表示目标的真值集,并且 y ^ = { y ^ } i = 1 N \hat{y}=\{\hat{y}\}^N_{i=1} y^={y^}i=1N表示N个预测的集。假设N大于图像中目标的数量,我们也将y视为一组用∅填充的大小N(无目标)。为了找到这两个集合之间的二分匹配,我们搜索具有最低代价的N个元素 σ ∈ S N σ∈\mathfrak{S}N σ∈SN的组合:

其中, L m a t c h ( y i , y ^ σ ( i ) ) \mathcal{L}{match}(y_i,\hat{y}{σ(i)}) Lmatch(yi,y^σ(i))是真值 y i y_i yi和具有指数 σ ( i ) σ(i) σ(i)的预测之间的成对匹配成本。该最优分配是根据先前的工作(例如[43]),使用匈牙利算法有效计算的。
匹配成本同时考虑了类预测以及预测框和真值框的相似性。真值集的每个元素i可以被看作 y i = ( c i , b i ) y_i=(c_i,b_i) yi=(ci,bi),其中 c i c_i ci是目标类标签(可以是∅), b i ∈ [ 0 , 1 ] 4 b_i∈[0,1]^4 bi∈[0,1]4是定义真值框中心坐标及其相对于图像大小的高度和宽度的向量。对于指数为 σ ( i ) σ(i) σ(i)的预测,我们将类 c i c_i ci的概率定义为 p ^ σ ( i ) ( c i ) \hat{p}{σ(i)}(c_i) p^σ(i)(ci)并且预测框为 b ^ σ ( i ) \hat{b}{σ(i)} b^σ(i)。利用这些符号,我们将 L m a t c h ( y i , y ^ σ ( i ) ) \mathcal{L}{match}(y_i,\hat{y}{σ(i)}) Lmatch(yi,y^σ(i))定义为 − 1 { c i ≠ ∅ } p ^ σ ( i ) ( c i ) + 1 { c i ≠ ∅ } L b o x ( b i , b ^ σ ( i ) ) -\mathbb{1}{\{c_i≠∅\}}\hat{p}{σ(i)}(c_i)+\mathbb{1}{\{c_i≠∅\}}\mathcal{L}{box}(b_i,\hat{b}_{σ(i)}) −1{ci=∅}p^σ(i)(ci)+1{ci=∅}Lbox(bi,b^σ(i))。
这种寻找匹配的过程与现代检测器中用于将提案[37]或锚[22]匹配到真值目标的启发式分配规则起着相同的作用。主要的区别在于,我们需要为没有重复的直接集预测找到一对一的匹配。
第二步是计算损失函数,即前一步中匹配的所有配对的匈牙利损失。我们定义的损失类似于常见目标检测器的损失,即类预测的负对数似然和稍后定义的框损失的线性组合:

其中, σ ^ \hat{σ} σ^是在第一步(1)中计算的最优分配。在实践中,当 c i = ∅ c_i=∅ ci=∅时,我们将对数概率项的权重降低10倍,以说明类别不平衡。这类似于Faster R-CNN训练程序如何通过二次抽样平衡正/负提案[37]。请注意,目标和∅之间的匹配成本并不取决于预测,这意味着在这种情况下,成本是一个常数。在匹配成本中,我们使用概率 p ^ σ ^ ( i ) ( c i ) \hat{p}{\hat{σ}(i)}(c_i) p^σ^(i)(ci)而不是对数概率。这使得类预测项与 L b o x ( ⋅ , ⋅ ) \mathcal{L}{box}(·,·) Lbox(⋅,⋅)(如下所述)是可公的,并且我们观察到了更好的经验性能。
边界框损失 。匹配成本和匈牙利损失的第二部分是对边界框进行评分的 L b o x ( ⋅ ) \mathcal{L}{box}(·) Lbox(⋅)。与许多将框预测作为 ∆ ∆ ∆的检测器不同,我们直接进行框预测。虽然这种方法简化了实现,但它带来了损失的相对缩放问题。最常用的 ℓ 1 \ell1 ℓ1损失对于小框和大框将具有不同的尺度,即使它们的相对误差相似。为了缓解这个问题,我们使用了 ℓ 1 \ell1 ℓ1损失和广义IoU损失[38] L i o u ( ⋅ , ⋅ ) \mathcal{L}{iou}(·,·) Liou(⋅,⋅)的线性组合,它是尺度不变的。总的来说,我们的框损失是 L b o x ( b i , b ^ σ ( i ) ) \mathcal{L}{box}(b_i,\hat{b}{σ(i)}) Lbox(bi,b^σ(i)),定义为 λ i o u L i o u ( b i , b ^ σ ( i ) ) + λ L 1 ∣ ∣ b i − b ^ σ ( i ) ∣ ∣ 1 λ_{iou}\mathcal{L}{iou}(b_i,\hat{b}{σ(i)})+λ_{L1}||b_i−\hat{b}{σ(i)}||1 λiouLiou(bi,b^σ(i))+λL1∣∣bi−b^σ(i)∣∣1,其中 λ i o u , λ L 1 ∈ R λ{iou},λ{L1}∈\mathbb{R} λiou,λL1∈R是超参数。这两个损失通过批处理中目标的数量进行归一化。
3.2 DETR架构
整个DETR体系结构非常简单,如图2所示。它包含三个主要组件,我们在下面描述:用于提取紧凑特征表示的CNN主干、编码器-解码器transformer和用于进行最终检测预测的简单前馈网络(FFN)。
与许多现代检测器不同,DETR可以在任何深度学习框架中实现,该框架提供了一个通用的CNN主干和一个只有几百行的transformer架构实现。在PyTorch[32]中,DETR的推理代码可以在不到50行的代码中实现。我们希望我们方法的简单性将吸引新的研究人员加入检测社区。
主干 。从初始图像 x i m g ∈ R 3 × H 0 × W 0 x_{img}∈\mathbb{R}^{3×H_0×W_0} ximg∈R3×H0×W0(具有3个颜色通道)开始(输入图像被分批在一起,充分应用0-填充以确保它们都具有与该批最大图像相同的尺寸(H0,W0)),传统的CNN主干生成较低分辨率的激活图 f ∈ R C × H × W f∈\mathbb{R}^{C×H×W} f∈RC×H×W。我们使用的典型值为 C = 2048 C=2048 C=2048和 H , W = H 0 32 , W 0 32 H,W=\frac{H0}{32},\frac{W0}{32} H,W=32H0,32W0。
Transformer编码器 。首先,1x1卷积将高级激活图f的通道维数从C降低到更小的维数d。创建新的特征图 z 0 ∈ R D × H × W z_0∈\mathbb{R}^{D×H×W} z0∈RD×H×W。编码器期望一个序列作为输入,因此我们将z0的空间维度压缩为一个维度,从而产生 d × H W d×HW d×HW特征图。每个编码器层都有一个标准架构,由一个多头自注意力模块和一个前馈网络(FFN)组成。由于transformer架构是置换不变的,我们用固定位置编码[31,3]对其进行补充,这些固定位置编码被添加到每个注意力层的输入中。我们遵循补充材料中对架构的详细定义,该定义遵循[47]中描述的定义。
Transformer解码器。解码器遵循transformer的标准架构,使用多头自身和编码器-解码器注意力机制来转换大小为d的N个嵌入。与原始transformer的不同之处在于,我们的模型在每个解码器层并行解码N个目标,而Vaswani等人[47]使用自回归模型,每次预测一个元素的输出序列。我们请不熟悉这些概念的读者参阅补充材料。由于解码器也是置换不变的,因此N个输入嵌入必须不同才能产生不同的结果。这些输入嵌入是习得的位置编码,我们称之为目标查询,与编码器类似,我们将它们添加到每个注意力层的输入中。解码器将N个目标查询转换为输出嵌入。然后,通过前馈网络(在下一小节中描述)将它们独立解码为框坐标和类标签,得到N个最终预测。在这些嵌入上使用自身和编码器-解码器的注意力,该模型使用所有目标之间的成对关系来全局推理所有目标,同时能够使用整个图像作为上下文。
预测前馈网络。通过具有ReLU激活函数和隐藏维度d的3层感知器和线性投影层来计算最终预测。FFN预测框相对于输入图像的归一化中心坐标、高度和宽度,线性层使用softmax函数预测类标签。由于我们预测了一组固定大小的N个边界框,其中N通常比图像中感兴趣目标的实际数量大得多,因此使用额外的特殊类标签∅来表示在槽内没有检测到目标。该类在标准目标检测方法中扮演类似于"背景"类的角色。
辅助解码损失。我们发现在训练期间在解码器中使用辅助损失[1]是有帮助的,特别是帮助模型输出每个类的正确目标数量。我们在每个解码器层之后添加预测FFN和匈牙利损失。所有预测FFN共享其参数。我们使用额外的共享层范数来规范来自不同解码器层的预测FFN的输入。
4. 实验
我们表明,在对COCO的定量评估中,与Faster R-CNN相比,DETR获得了具有竞争力的结果。然后,我们对结构和损失进行了详细的消融研究,并提供了见解和定性结果。最后,为了证明DETR是一个通用且可扩展的模型,我们给出了全景分割的结果,只在固定的DETR模型上训练了一个小的扩展。我们提供代码和预训练的模型,在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的学习率设置为 1 0 -- 4 10^{--4} 10--4,将主干的学习率设为 1 0 − 5 10^{−5} 10−5,并将权重衰减设置为 1 0 -- 4 10^{--4} 10--4。所有transformer权重都用Xavier init[11]初始化,主干是用来自torchvision的ImageNet预训练的ResNet模型[15],该模型具有冻结的批模层。我们报告了两种不同主干的结果:ResNet-50和ResNet-101。相应的模型分别被称为DETR和DETR-R101。在[21]之后,我们还通过在主干的最后一个阶段添加扩展并从该阶段的第一个卷积中删除步长来提高特征分辨率。相应的模型分别称为DETR-DC5和DETR-DC5-R101(扩张C5阶段)。这种修改将分辨率提高了两倍,从而提高了小目标的性能,但编码器的自注意力成本增加了16倍,导致计算成本总体增加了2倍。表1中给出了这些模型和Faster R-CNN的FLOP的完整比较。
我们使用尺度增强,调整输入图像的大小,使最短边至少为480像素,最多为800像素,而最长边最多为1333[50]。为了通过编码器的自注意力来帮助学习全局关系,我们还在训练过程中应用随机裁剪增强,将性能提高了大约1个AP。具体地,以概率0.5将训练图像裁剪为随机矩形块,然后将其再次调整大小至800-1333。transformer经过训练,默认漏失为0.1。在推理时,一些槽预测空类。为了优化AP,我们使用相应的置信度,用得分第二高的类覆盖这些槽的预测。与过滤掉空槽相比,这将AP提高了2个点。其他训练超参数可在第A.4节中找到。对于我们的消融实验,我们使用300个时期的训练计划,在200个时期之后,学习率下降了10倍,其中单个时期是对所有训练图像的一次遍历。在16个V100 GPU上训练300个时期的基线模型需要3天,每个GPU有4个图像(因此总批量大小为64)。与Faster R-CNN相比,我们训练了500个时期,400个时期后学习率下降。与较短的训练时间表相比,此训练时间表增加了1.5个AP。
表1. COCO验证集上ResNet-50和ResNet-101主干与Faster R-CNN的比较。顶部显示Detectron2[50]中Faster R-CNN模型的结果,中间部分显示具有GIoU[38]、随机裁剪训练时间增加和长9x训练计划的Faster R-CNN-模型的结果。DETR模型的结果与经过大量调整的Faster R-CNN基线相当,APS较低,但APL大大提高。我们使用torchscript Faster R-CNN和DETR模型来测量FLOPS和FPS。名称中没有R101的结果对应于ResNet-50。

4.1 与Faster R-CNN的比较
Transformer通常由Adam或Adagrad优化器进行训练,他们的训练时间表很长,而且中途漏失,DETR也是如此。然而,Faster R-CNN是用SGD进行训练的,只需最少的数据增强,我们不知道Adam或dropout的成功应用。尽管存在这些差异,我们还是试图使Faster R-CNN基线更强。为了使其与DETR保持一致,我们将广义IoU[38]添加到框损失中,相同的随机裁剪增强和长训练已知可以提高结果[13]。结果如表1所示。在顶部,我们展示了Detectron2 Model Zoo[50]针对使用3倍时间表训练的模型的Faster R-CNN结果。在中间部分,我们显示了相同模型的结果(带"+"),但使用9x时间表(109个时期)和所描述的增强进行了训练,总共增加了1-2个AP。在表1的最后一部分中,我们展示了多个DETR模型的结果。为了在参数数量上具有可比性,我们选择了具有6个transformer和6个解码器层的模型,所述解码器层的宽度为256,具有8个注意力头。与带有FPN的Faster R-CNN一样,该模型有4130万个参数,其中235M在ResNet-50中,178M在transformer中。尽管Faster R-CNN和DETR仍有可能随着更长时间的训练而进一步提高,但我们可以得出结论,在相同数量的参数下,DETR可以与Faster R-NN竞争,在COCO val子集上实现42 AP。DETR实现这一目标的方法是提高APL(+7.8),但请注意,该模型在APS(-5.5)中仍然落后。具有相同参数数量和相似FLOP计数的DETR-DC5具有更高的AP,但在APS中仍然明显落后。使用ResNet-101主干的Faster R-CNN和DETR也显示出可比较的结果。
表2. 编码器大小的影响。每一行对应于具有不同数量的编码器层和固定数量的解码器层的模型。随着编码器层的增加,性能逐渐提高。

4.2 消融
transformer解码器中的注意机制是对不同检测的特征表示之间的关系进行建模的关键组件。在我们的消融分析中,我们探讨了架构的其他组件和损失如何影响最终性能。为了进行研究,我们选择了基于ResNet-50的DETR模型,该模型具有6个编码器、6个解码器层和256个宽度。该模型具有41.3M个参数,在短时间表和长时间表训练中分别达到40.6和42.0个AP,并以28 FPS运行,类似于具有相同骨干的Faster R-CNN-FPN。
编码器层数。我们通过改变编码器层的数量来评估全局图像级自注意力的重要性(表2)。在没有编码器层的情况下,整体AP下降了3.9个点,而在大型目标上则下降了6.0个AP。我们假设,通过使用全局场景推理,编码器对于解开目标很重要。在图3中,我们将训练模型的最后一个编码器层的注意力图可视化,集中在图像中的几个点上。编码器似乎已经分离了实例,这可能简化了解码器的目标提取和定位。
解码器层数 。我们在每个解码层之后应用辅助损失(见第3.2节),因此,通过设计来训练预测FFN,以预测每个解码器层的输出中的目标。我们通过评估在解码的每个阶段预测的目标来分析每个解码器层的重要性(图4)。AP和 A P 50 AP_{50} AP50在每一层之后都有所改善,在第一层和最后一层之间总共达到非常显著的+8.2/9.5 AP改善。由于其基于集合的损失,DETR在设计上不需要NMS。为了验证这一点,我们运行了一个标准的NMS程序,每个解码器之后的输出都有默认参数[50]。NMS提高了来自第一解码器的预测的性能。这可以通过以下事实来解释:transformer的单个解码层不能计算输出元素之间的任何互相关,因此它倾向于对同一目标进行多个预测。在第二层和随后的层中,激活过程中的自注意力机制允许模型抑制重复预测。我们观察到NMS带来的改进随着深度的增加而减少。在最后一层,我们观察到由于NMS错误地删除了真正的阳性预测,AP出现了小损失。

图3. 一组参考点的编码器自注意力。编码器能够分离各个实例。使用验证集图像上的基线DETR模型进行预测。
类似于可视化编码器注意力,我们在图6中可视化解码器注意力。将每个预测目标的注意力图着色为不同的颜色。我们观察到解码器的注意力是相当局部的,这意味着它主要关注目标的四肢,如头部或腿部。我们假设,在编码器通过全局注意力分离实例后,解码器只需要关注四肢即可提取类和目标边界。
FFN的重要性。transformer内部的FFN可以看作是1×1的卷积层,使编码器类似于注意力增强卷积网络[3]。我们试图完全去除它,只在transformer层中留下注意力。通过将网络参数的数量从41.3M减少到28.7M,transformer中只剩下10.8M,性能下降了2.3AP,因此我们得出结论,FFN对于获得良好的结果很重要。
位置编码的重要性。在我们的模型中有两种位置编码:空间位置编码和输出位置编码(目标查询)。我们对固定编码和学习编码的各种组合进行了实验,结果可以在表3中找到。输出位置编码是必需的,不能删除,所以我们尝试在解码器输入处传递一次,或者在每个解码器注意力层添加到查询中。在第一个实验中,我们完全去除了空间位置编码,并在输入时传递输出位置编码,有趣的是,该模型仍然实现了超过32个AP,比基线减少了7.8个AP。然后,我们一次通过固定的正弦空间位置编码和输入处的输出编码,如在原始transformer[47]中一样,并发现与直接通过注意力中的位置编码相比,这导致1.4AP下降。传递给关注者的习得空间编码给出了类似的结果。令人惊讶的是,我们发现在编码器中不通过任何空间编码只会导致1.3AP的轻微AP下降。当我们将编码传递给注意力时,它们在所有层中共享,并且总是学习输出编码(目标查询)。
考虑到这些消融,我们得出结论,transformer组件:编码器、FFN、多个解码器层和位置编码中的全局自注意力,都对最终的目标检测性能有重要贡献。

图4. AP和 A P 50 AP_{50} AP50在每个解码器层之后的性能。评估单个长计划表基线模型。DETR在设计上不需要NMS,这一点通过该图得到了验证。NMS降低了最终层中的AP,消除了TP预测,但提高了第一解码器层中的AP,消除了双重预测,因为第一层中没有通信,并略微提高了 A P 50 AP_{50} AP50。

图5. 稀有类的分布外泛化。尽管训练集中没有一张图像的长颈鹿数量超过13只,但DETR很容易将其推广到同一类的24个或更多实例。
损失消融 。为了评估匹配成本和损失的不同组成部分的重要性,我们训练了几个打开和关闭它们的模型。损失有三个组成部分:分类损失、 ℓ 1 \ell1 ℓ1边界框距离损失和GIoU[38]损失。分类损失对训练至关重要,不能关闭,因此我们训练了一个没有边界框距离损失的模型和一个没有GIoU损失的模型,并与基线进行比较,用所有三种损失进行训练。结果见表4。GIoU的损失本身占了模型性能的大部分,综合损失仅比基线损失0.7 AP。在没有GIoU的情况下使用 ℓ 1 \ell1 ℓ1显示出较差的结果。我们只研究了不同损失的简单消融(每次使用相同的权重),但其他组合方法可能会获得不同的结果。

图6. 可视化每个预测目标的解码器注意力(来自COCO验证集的图像)。利用DETR-DC5模型进行了预测。对于不同的目标,注意力得分用不同的颜色进行编码。解码器通常处理目标的末端,例如腿和头。最佳彩色观看。
表3. 与基线(最后一行)相比,不同位置编码的结果,基线在编码器和解码器的每个注意力层都有固定的正弦位置编码。学习的嵌入在所有层之间共享。不使用空间位置编码会导致AP的显著下降。有趣的是,在解码器中传递它们只会导致较小的AP下降。所有这些模型都使用习得的输出位置编码。

表4. 损失组件对AP的影响。我们训练了两个关闭 ℓ 1 \ell1 ℓ1损失和GIoU损失的模型,并观察到 ℓ 1 \ell1 ℓ1本身的结果较差,但当与GIoU结合时,可以改善APM和APL。我们的基线(最后一行)综合了这两种损失。


图7. DETR解码器中总共N=100个预测槽中的20个预测槽的来自COCO 2017 val集的所有图像上的所有框预测的可视化。每个框预测被表示为一个点,其中心在1乘1的正方形中的坐标由每个图像大小归一化。对点进行颜色编码,使绿色对应小方框,红色对应大水平方框,蓝色对应大垂直方框。我们观察到,每个槽都学会了通过几种操作模式专门处理某些区域和框大小。我们注意到,几乎所有槽都有一种预测大图像宽框的模式,这在COCO数据集中很常见。
4.3 分析
解码器输出槽分析见图7。我们对COCO 2017 val集中所有图像的不同槽预测的框进行可视化。DETR为每个查询槽学习不同的专业化。我们观察到,每个槽都有几种操作模式,重点关注不同的区域和框大小。特别是,所有槽都具有用于预测图像范围框的模式(如图中间对齐的红点所示)。我们假设这与COCO中目标的分布有关。
对看不见的实例数量的概括。COCO中的一些类不能很好地用同一图像中同一类的许多实例来表示。例如,训练集中没有超过13只长颈鹿的图像。我们创建了一个合成图像(基本图片:https://www.piqsels.com/en/public-domain-photo-jzlwu)来验证DETR的泛化能力(见图5)。我们的模型能够在图像上找到所有24只长颈鹿,这显然是不分布的。这个实验证实了在每个目标查询中不存在强的类专门化。
4.4 用于全景分割的DETR
全景分割[19]最近引起了计算机视觉界的大量关注。类似于将Faster R-CNN[37]扩展到Mask R-CNN[14],可以通过在解码器输出的顶部添加掩码头来自然地扩展DETR。在本节中,我们证明了通过以统一的方式处理stuff和thing类,可以使用这样的头来产生全景分割[19]。我们在COCO数据集的全景注释上进行了实验,该数据集除了80个things 类别外,还有53个stuff 类别。

图8. 全景头示意图。为每个检测到的目标并行生成一个二进制掩码,然后使用逐像素argmax合并掩码。

图9. DETR-R101生成的全景分割的定性结果。DETR以统一的方式为things和stuff生成对齐的掩码预测。
我们训练DETR使用相同的配方来预测COCO上的stuff和things类周围的框。训练需要预测框,因为匈牙利匹配是使用框之间的距离计算的。我们还添加了一个掩码头,它为每个预测框预测一个二进制掩码,见图8。它将每个目标的transformer解码器的输出作为输入,并在编码器的输出上计算该嵌入的多头(具有M个头)注意力得分,以小分辨率为每个目标生成M个注意力热图。为了进行最终预测并提高分辨率,使用了类似FPN的架构。我们将在补充部分中对体系结构进行更详细的描述。掩码的最终分辨率为步长4,每个掩模使用DICE/F-1损失[28]和焦点损失[23]进行独立监督。
掩码头可以联合训练,也可以在两步过程中训练,我们只训练框的DETR,然后冻结所有权重,只训练掩码头25个时期。在实验上,这两种方法给出了类似的结果,我们使用后一种方法报告了结果,因为它可以缩短总的挂钟时间训练。
表5. 与COCO val数据集上最先进的方法UPSNet[51]和Panoptic FPN[18]的比较。我们用与DETR相同的数据增强对PanopticFPN进行了重新训练,时间表为18x,以进行公平比较。UPSNet使用1x时间表,UPSNet-M是具有多尺度测试时间增强的版本。

为了预测最终的全景分割,我们只需在每个像素的掩码分数上使用argmax,并将相应的类别分配给生成的掩码。该程序确保最终掩码没有重叠,因此,DETR不需要经常用于对齐不同掩码的启发式[19]。
训练详细信息。我们按照边界框检测的配方训练DETR、DETR-DC5和DETR-R101模型,以预测COCO数据集中的stuff和things类周围的框。新的掩码头经过25个时期的训练(详见补充部分)。在推断过程中,我们首先过滤掉置信度低于85%的检测,然后计算每个像素的argmax,以确定每个像素属于哪个掩码。然后,我们将同一材料类别的不同掩码预测折叠成一个,并过滤空的掩码预测(小于4个像素)。
主要结果 。定性结果如图9所示。在表5中,我们将统一的全景分割方法与几种不同处理things和stuff的既定方法进行了比较。我们报告了全景质量(PQ)以及对things(PQ^th^)和stuff(PQ^st^)的分解。我们还报告了在任何全景后处理之前(在我们的情况下,在采用像素方式的argmax之前)的掩码AP(根据things类计算)。我们表明,DETR优于2017年COCO val上公布的结果,以及我们强大的PanopticFPN基线(为了公平比较,使用与DETR相同的数据增强进行训练)。结果分解表明,DETR在stuff类上尤其占主导地位,我们假设编码器注意力所允许的全局推理是这一结果的关键因素。对于things类,尽管与掩码AP计算的基线相比存在高达8mAP的严重不足,但DETR获得了有竞争力的PQ^th^。我们还在COCO数据集的测试集上评估了我们的方法,并获得了46个PQ。我们希望我们的方法将激励我们在未来的工作中探索用于全景分割的完全统一的模型。
5. 结论
我们提出了DETR,这是一种新的基于transformer和直接集预测的二分匹配损失的目标检测系统设计。该方法在具有挑战性的COCO数据集上实现了与优化的Faster R-CNN基线相当的结果。DETR易于实现,具有灵活的架构,可轻松扩展到全景分割,并具有竞争性的结果。此外,与Faster R-CNN相比,它在大型目标上的性能要好得多,这可能要归功于自注意力对全局信息的处理。
这种新的检测器设计也带来了新的挑战,特别是在小目标的训练、优化和性能方面。目前的检测器需要几年的改进才能解决类似的问题,我们希望未来的工作能够成功地解决DETR中的这些问题。
6. 鸣谢
我们感谢Sainbayar Sukhbaatar、Piotr Bojanowski、Natalia Neverova、David Lopez Paz、Guillaume Lample、Danielle Rothermel、Kaiming He、Ross Girshick、Xinlei Chen和整个Facebook AI Research Paris团队的讨论和建议,没有这些讨论和建议这项工作是不可能的。
References
- Al-Rfou, R., Choe, D., Constant, N., Guo, M., Jones, L.: Character-level language modeling with deeper self-attention. In: AAAI Conference on Artificial Intelligence (2019)
- Bahdanau, D., Cho, K., Bengio, Y.: Neural machine translation by jointly learning to align and translate. In: ICLR (2015)
- Bello, I., Zoph, B., Vaswani, A., Shlens, J., Le, Q.V.: Attention augmented convolutional networks. In: ICCV (2019)
- Bodla, N., Singh, B., Chellappa, R., Davis, L.S.: Soft-NMS improving object detection with one line of code. In: ICCV (2017)
- Cai, Z., Vasconcelos, N.: Cascade R-CNN: High quality object detection and instance segmentation. PAMI (2019)
- Chan, W., Saharia, C., Hinton, G., Norouzi, M., Jaitly, N.: Imputer: Sequence modelling via imputation and dynamic programming. arXiv:2002.08926 (2020)
- Cordonnier, J.B., Loukas, A., Jaggi, M.: On the relationship between self-attention and convolutional layers. In: ICLR (2020)
- Devlin, J., Chang, M.W., Lee, K., Toutanova, K.: BERT: Pre-training of deep bidirectional transformers for language understanding. In: NAACL-HLT (2019)
- Erhan, D., Szegedy, C., Toshev, A., Anguelov, D.: Scalable object detection using deep neural networks. In: CVPR (2014)
- Ghazvininejad, M., Levy, O., Liu, Y., Zettlemoyer, L.: Mask-predict: Parallel decoding of conditional masked language models. arXiv:1904.09324 (2019)
- Glorot, X., Bengio, Y.: Understanding the difficulty of training deep feedforward neural networks. In: AISTATS (2010)
- Gu, J., Bradbury, J., Xiong, C., Li, V.O., Socher, R.: Non-autoregressive neural machine translation. In: ICLR (2018)
- He, K., Girshick, R., Doll´ar, P.: Rethinking imagenet pre-training. In: ICCV (2019)
- He, K., Gkioxari, G., Doll´ar, P., Girshick, R.B.: Mask R-CNN. In: ICCV (2017)
- He, K., Zhang, X., Ren, S., Sun, J.: Deep residual learning for image recognition. In: CVPR (2016)
- Hosang, J.H., Benenson, R., Schiele, B.: Learning non-maximum suppression. In: CVPR (2017)
- Hu, H., Gu, J., Zhang, Z., Dai, J., Wei, Y.: Relation networks for object detection. In: CVPR (2018)
- Kirillov, A., Girshick, R., He, K., Doll´ar, P.: Panoptic feature pyramid networks. In: CVPR (2019)
- Kirillov, A., He, K., Girshick, R., Rother, C., Dollar, P.: Panoptic segmentation. In: CVPR (2019)
- Kuhn, H.W.: The hungarian method for the assignment problem (1955)
- Li, Y., Qi, H., Dai, J., Ji, X., Wei, Y.: Fully convolutional instance-aware semantic segmentation. In: CVPR (2017)
- Lin, T.Y., Doll´ar, P., Girshick, R., He, K., Hariharan, B., Belongie, S.: Feature pyramid networks for object detection. In: CVPR (2017)
- Lin, T.Y., Goyal, P., Girshick, R.B., He, K., Doll´ar, P.: Focal loss for dense object detection. In: ICCV (2017)
- Lin, T.Y., Maire, M., Belongie, S., Hays, J., Perona, P., Ramanan, D., Doll´ar, P., Zitnick, C.L.: Microsoft COCO: Common objects in context. In: ECCV (2014)
- Liu, W., Anguelov, D., Erhan, D., Szegedy, C., Reed, S.E., Fu, C.Y., Berg, A.C.: Ssd: Single shot multibox detector. In: ECCV (2016)
- Loshchilov, I., Hutter, F.: Decoupled weight decay regularization. In: ICLR (2017)
- L¨uscher, C., Beck, E., Irie, K., Kitza, M., Michel, W., Zeyer, A., Schl¨uter, R., Ney, H.: Rwth asr systems for librispeech: Hybrid vs attention - w/o data augmentation. arXiv:1905.03072 (2019)
- Milletari, F., Navab, N., Ahmadi, S.A.: V-net: Fully convolutional neural networks for volumetric medical image segmentation. In: 3DV (2016)
- Oord, A.v.d., Li, Y., Babuschkin, I., Simonyan, K., Vinyals, O., Kavukcuoglu, K., Driessche, G.v.d., Lockhart, E., Cobo, L.C., Stimberg, F., et al.: Parallel wavenet: Fast high-fidelity speech synthesis. arXiv:1711.10433 (2017)
- Park, E., Berg, A.C.: Learning to decompose for object detection and instance segmentation. arXiv:1511.06449 (2015)
- Parmar, N., Vaswani, A., Uszkoreit, J., Kaiser, L., Shazeer, N., Ku, A., Tran, D.: Image transformer. In: ICML (2018)
- Paszke, A., Gross, S., Massa, F., Lerer, A., Bradbury, J., Chanan, G., Killeen, T., Lin, Z., Gimelshein, N., Antiga, L., Desmaison, A., Kopf, A., Yang, E., DeVito, Z., Raison, M., Tejani, A., Chilamkurthy, S., Steiner, B., Fang, L., Bai, J., Chintala, S.: Pytorch: An imperative style, high-performance deep learning library. In: NeurIPS (2019)
- Pineda, L., Salvador, A., Drozdzal, M., Romero, A.: Elucidating image-to-set prediction: An analysis of models, losses and datasets. arXiv:1904.05709 (2019)
- Radford, A., Wu, J., Child, R., Luan, D., Amodei, D., Sutskever, I.: Language models are unsupervised multitask learners (2019)
- Redmon, J., Divvala, S., Girshick, R., Farhadi, A.: You only look once: Unified, real-time object detection. In: CVPR (2016)
- Ren, M., Zemel, R.S.: End-to-end instance segmentation with recurrent attention. In: CVPR (2017)
- Ren, S., He, K., Girshick, R.B., Sun, J.: Faster R-CNN: Towards real-time object detection with region proposal networks. PAMI (2015)
- Rezatofighi, H., Tsoi, N., Gwak, J., Sadeghian, A., Reid, I., Savarese, S.: Generalized intersection over union. In: CVPR (2019)
- Rezatofighi, S.H., Kaskman, R., Motlagh, F.T., Shi, Q., Cremers, D., Leal-Taix´e, L., Reid, I.: Deep perm-set net: Learn to predict sets with unknown permutation and cardinality using deep neural networks. arXiv:1805.00613 (2018)
- Rezatofighi, S.H., Milan, A., Abbasnejad, E., Dick, A., Reid, I., Kaskman, R., Cremers, D., Leal-Taix, l.: Deepsetnet: Predicting sets with deep neural networks. In: ICCV (2017)
- Romera-Paredes, B., Torr, P.H.S.: Recurrent instance segmentation. In: ECCV (2015)
- Salvador, A., Bellver, M., Baradad, M., Marqu´es, F., Torres, J., Gir´o, X.: Recurrent neural networks for semantic instance segmentation. arXiv:1712.00617 (2017)
- Stewart, R.J., Andriluka, M., Ng, A.Y.: End-to-end people detection in crowded scenes. In: CVPR (2015)
- Sutskever, I., Vinyals, O., Le, Q.V.: Sequence to sequence learning with neural networks. In: NeurIPS (2014)
- Synnaeve, G., Xu, Q., Kahn, J., Grave, E., Likhomanenko, T., Pratap, V., Sriram, A., Liptchinsky, V., Collobert, R.: End-to-end ASR: from supervised to semi-supervised learning with modern architectures. arXiv:1911.08460 (2019)
- Tian, Z., Shen, C., Chen, H., He, T.: FCOS: Fully convolutional one-stage object detection. In: ICCV (2019)
- Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A.N., Kaiser, L., Polosukhin, I.: Attention is all you need. In: NeurIPS (2017)
- Vinyals, O., Bengio, S., Kudlur, M.: Order matters: Sequence to sequence for sets. In: ICLR (2016)
- Wang, X., Girshick, R.B., Gupta, A., He, K.: Non-local neural networks. In: CVPR (2018)
- Wu, Y., Kirillov, A., Massa, F., Lo, W.Y., Girshick, R.: Detectron2. https://github.com/facebookresearch/detectron2 (2019)
- Xiong, Y., Liao, R., Zhao, H., Hu, R., Bai, M., Yumer, E., Urtasun, R.: Upsnet: A unified panoptic segmentation network. In: CVPR (2019)
- Zhang, S., Chi, C., Yao, Y., Lei, Z., Li, S.Z.: Bridging the gap between anchor-based and anchor-free detection via adaptive training sample selection. arXiv:1912.02424 (2019)
- Zhou, X., Wang, D., Kr¨ahenb¨uhl, P.: Objects as points. arXiv:1904.07850 (2019)
A. 附录
A.1 准备工作:多头注意力层
由于我们的模型是基于Transformer架构的,因此我们在这里提醒您注意我们用于穷尽性的注意力机制的一般形式。除了[7]之后的位置编码的细节(参见等式8)之外,注意力机制遵循[47]。
多头 。具有维数为d的M个头的多头注意力的一般形式是具有以下签名的函数(使用 d ′ = d M d'=\frac{d}{M} d′=Md,并在下括号中给出矩阵/张量大小)

其中 X q X_q Xq是长度 N q N_q Nq的查询序列, X k v X_{kv} Xkv是长度 N k v N_{kv} Nkv的键值序列(为了简化说明,具有相同数量的通道d),T是用于计算所谓的查询、键值嵌入的权重张量,L是投影矩阵。输出的大小与查询序列的大小相同。为了在给出细节之前固定词汇表,多头自注意力(mh-s-attn)是特殊情况 X q = X k v X_q=X_{kv} Xq=Xkv,即

多头注意力只是M个单注意力头的级联,然后是L的投影。常见的做法[47]是使用残差连接、丢弃和层归一化。换句话说,表示 X ~ q = m h − a t t n ( X q , X k v , T , L ) \tilde{X}q=mh-attn(X_q,X{kv},T,L) X~q=mh−attn(Xq,Xkv,T,L)和 X ‾ ( q ) \overline{X}^{(q)} X(q)注意力头的级联,我们有

其中[;]表示通道轴上的级联。
单头。权重张量为 T ′ ∈ R 3 × d ′ × d T'∈\mathbb{R}^{3×d'×d} T′∈R3×d′×d的注意力头,由 a t t n ( X q , X k v , T ′ ) attn(X_q,X_{kv},T') attn(Xq,Xkv,T′)表示,取决于附加的位置编码 P q ∈ R d × N q P_q∈\mathbb{R}^{d×N_q} Pq∈Rd×Nq和 P k v ∈ R d × N k v P_{kv}∈\mathbb{R}^{d×N_{kv}} Pkv∈Rd×Nkv。在添加查询和键位置编码[7]之后,它首先计算所谓的查询、键和值嵌入:

其中 T ′ T' T′是 T 1 ′ T'_1 T1′、 T 2 ′ T'_2 T2′、 T 3 ′ T'_3 T3′的级联。然后,基于查询和键之间的点积的softmax来计算注意力权重α,使得查询序列的每个元素关注键值序列的所有元素( i i i是查询索引, j j j是键值索引):

在我们的情况下,位置编码可能是学习或固定的,但对于给定的查询/键值序列,位置编码在所有注意力层之间共享,因此我们不会明确地将它们写为注意力的参数。在描述编码器和解码器时,我们给出了关于它们的确切值的更多细节。最终输出是由注意力权重加权的值的集合:第i行由 a t t n i ( X q , X k v , T ′ ) = ∑ j = 1 N k v α i , j V j attn_i(X_q,X_{kv},T')=\sum^{N_{kv}}{j=1}{α{i,j}V_j} attni(Xq,Xkv,T′)=∑j=1Nkvαi,jVj给出。
前馈网络(FFN)层 。原始transformer 交替使用多头注意力和所谓的FFN层[47],它们实际上是多层1x1卷积,在我们的情况下具有 M d Md Md输入和输出通道。我们考虑的FFN由具有ReLU激活的两层1x1卷积组成。类似于等式6,在两个层之后还存在残差连接/丢弃/层归一化。
A.2 损失
为了完整起见,我们详细介绍了我们方法中使用的损失。所有损失都通过批中目标的数量进行归一化。分布式训练必须格外小心:由于每个GPU都接收到一个子批,因此通过本地批中的目标数量进行归一化是不够的,因为通常子批在GPU之间是不平衡的。相反,重要的是通过所有子批次中的目标总数进行规范化。
框损失 。类似于[41,36],我们在损失中使用了交并比的软版本,以及对 b b b的 ℓ 1 \ell1 ℓ1损失:

其中 λ i o u , λ L 1 ∈ R λ_{iou},λ_{L1}∈\mathbb{R} λiou,λL1∈R是超参数, L i o u ( ⋅ ) \mathcal{L}_{iou}(·) Liou(⋅)是广义IoU[38]:

|.|意思是"面积",框坐标的并集和交集被用作框本身的简略表达。并集或交集的面积是通过 b σ ( i ) b_{σ(i)} bσ(i)和 b ^ i \hat{b}i b^i的线性函数的min/max来计算的,这使得损失对于随机梯度来说表现得足够好。 B ( b σ ( i ) , b ^ i ) B(b{σ(i)},\hat{b}i) B(bσ(i),b^i)表示包含 b σ ( i ) , b ^ i b{σ(i)},\hat{b}_i bσ(i),b^i的最大框(涉及B的面积也基于框坐标的线性函数的min/max来计算)。
DICE/F-1损失[28] DICE系数与交并比密切相关。如果我们用 m ^ \hat{m} m^表示模型的原始掩码logits预测,m表示二进制目标掩码,则损失定义为:

A.3 详细架构
DETR中使用的transformer 的详细描述,以及在每个注意力层传递的位置编码,如图10所示。来自CNN主干的图像特征通过transformer 编码器,以及空间位置编码,这些编码被添加到每个多头自注意力层的查询和键中。然后,解码器接收查询(最初设置为零),输出位置编码(目标查询)和编码器内存,并通过多个多头自注意力和解码器-编码器注意力生成预测类标签和边界框的最终集合。可以跳过第一解码器层中的第一自注意力层。

图10:DETR transformer的结构。有关详细信息,请参见第A.3节。
计算复杂度 。编码器中的每个自注意力都具有复杂度 O ( d 2 H W + d ( H W ) 2 ) : O ( d ′ d ) \mathcal{O}(d^2HW+d(HW)^2):\mathcal{O}(d'd) O(d2HW+d(HW)2):O(d′d)是计算单个查询/键/值嵌入的成本(并且 M d ′ = d Md'=d Md′=d),而 O ( d ′ ( H W ) 2 ) \mathcal{O}(d'(HW)^2) O(d′(HW)2)是计算一个头的注意力权重的成本。其他计算可以忽略不计。在解码器中,每个自注意力都在 O ( d 2 N + d N 2 ) \mathcal{O}(d^2N+dN^2) O(d2N+dN2)中,编码器和解码器之间的交叉注意力在 O ( d 2 ( N + H W ) + d N H W ) \mathcal{O}(d^2(N+HW)+dNHW) O(d2(N+HW)+dNHW)中,这比编码器低得多,因为在实践中 N < < H W N<<HW N<<HW。
FLOPS计算。鉴于Faster R-CNN的FLOPS取决于图像中提案的数量,我们报告了COCO 2017验证集中前100张图像的FLOPS的平均数量。我们使用Detectron2[50]中的工具flop count operators计算FLOPS。我们在不修改Detectron2模型的情况下使用它,并将其扩展为在DETR模型中考虑批处理矩阵乘法(bmm)。
A.4 训练超参数
我们使用AdamW[26]训练DETR,并改进了权重衰减处理,设置为 1 0 − 4 10^{−4} 10−4。我们还应用梯度剪裁,最大梯度范数为0.1。主干和transformers的处理略有不同,我们现在讨论两者的细节。
主干 。ImageNet预训练的主干ResNet-50从Torchvision导入,丢弃最后一个分类层。根据在目标检测中广泛采用的实践,在训练过程中冻结主干批量归一化权重和统计数据。我们使用 1 0 − 5 10^{-5} 10−5的学习率来微调主干。我们观察到,主干学习率大约比网络的其他部分小一个数量级,这对于稳定训练很重要,尤其是在最初的几个时期。
Transformer 。我们以 1 0 − 4 10^{−4} 10−4的学习率来训练transformer。在每个多头注意力之后应用0.1的加性丢弃,并且在层归一化之前应用FFN。权重使用Xavier初始化进行随机初始化。
损失 。我们使用l1和GIoU损失的线性组合进行边界框回归,权重分别为 λ L 1 = 5 λ_{L1}=5 λL1=5和 λ i o u = 2 λ_{iou}=2 λiou=2。所有模型都使用N=100个解码器查询槽进行训练。
基线 。我们增强的Faster RCNN+基线使用GIoU[38]损失以及边界框回归的标准 ℓ 1 \ell1 ℓ1损失。我们进行了网格搜索,以找到损失的最佳权重,最终模型仅使用GIoU损失,权重分别为20和1,用于框和提案回归任务。对于基线,我们采用了与DETR中使用的相同的数据增强,并使用9×时间表(大约109个时期)对其进行训练。所有其他设置与Detectron2模型zoo[50]中的相同模型保持相同。
空间位置编码 。编码器激活与图像特征的相应空间位置相关联。在我们的模型中,我们使用固定的绝对编码来表示这些空间位置。我们将原始Transformer[47]编码推广到2D情况[31]。具体来说,对于每个嵌入的两个空间坐标,我们独立地使用具有不同频率的 d 2 \frac{d}{2} 2d正弦和余弦函数。然后,我们将它们连接起来,以获得最终的d通道位置编码。
A.5 其他结果
DETR-R101模型全景预测的一些额外定性结果如图11所示。

图11. 全景预测的比较。从左至右:真值,PanopticFPN与ResNet 101,DETR与ResNet 101
增加实例数量。根据设计,DETR不能预测比它有查询槽(即在我们的实验中为100)更多的目标。在本节中,我们将分析DETR在接近此极限时的行为。我们选择给定类的规范正方形图像,在10×10网格上重复它,并计算模型遗漏的实例的百分比。为了测试少于100个实例的模型,我们随机屏蔽了一些单元。这样可以确保无论有多少目标可见,目标的绝对大小都是相同的。为了说明掩蔽中的随机性,我们用不同的掩蔽重复实验100次。结果如图12所示。类之间的行为是相似的,当多达50个实例可见时,模型会检测到所有实例,然后开始饱和并错过越来越多的实例。值得注意的是,当图像包含所有100个实例时,模型平均只检测到30个实例,这比图像仅包含所有检测到的50个实例的情况要少。模型的反直觉行为可能是因为图像和检测与训练分布相距甚远。
请注意,这个测试是一个设计的泛化测试,因为很少有带有单个类的大量实例的示例图像。从实验中很难区分两种类型的域外泛化:图像本身与每个类的目标数量。但是,由于很少甚至没有COCO图像只包含大量同类目标,因此这种类型的实验代表了我们为了解查询目标是否过度匹配数据集的标签和位置分布所做的最大努力。总体而言,实验表明,该模型不会对这些分布进行过度拟合,因为它可以对多达50个物体进行近乎完美的检测。

图12. 根据图像中存在的实例数量,分析DETR遗漏的各种类的实例数量。我们报告平均值和标准偏差。随着实例数量接近100,DETR开始饱和,并错过越来越多的目标。
A.6 PyTorch推理代码
为了演示该方法的简单性,我们在清单1中包含了带有PyTorch和Torchvision库的推理代码。该代码使用Python 3.6+、PyTorch 1.4和Torchvision 0.5运行。请注意,它不支持批处理,因此它只适用于每个GPU有一个图像的DistributedDataParallel的推理或训练。还要注意,为了清楚起见,该代码在编码器中使用学习的位置编码,而不是固定的,并且位置编码仅添加到输入,而不是在每个transformer层。进行这些更改需要超越PyTorch对transformer的实现,这会妨碍可读性。复现实验的全部代码将在会议之前提供。

清单1. DETR PyTorch推理代码。为了清楚起见,它在编码器中使用学习的位置编码,而不是固定的,并且位置编码仅添加到输入,而不是在每个transformer层。进行这些更改需要超越PyTorch对transformer的实现,这会妨碍可读性。复现实验的全部代码将在会议之前提供。