DETR
End-to-End Object Detection with Transformers
Nicolas Carion1,2(B) , Francisco Massa2 , Gabriel Synnaeve2 ,Nicolas Usunier2 , Alexander Kirillov2 , and Sergey Zagoruyko2
1Paris Dauphine University, Paris, France
2Facebook AI, Menlo
Park, USA
摘要
我们提出了一种将目标检测视为直接集合预测问题的新方法。该方案简化了检测流程,有效去除了许多需要人工设计的组件,例如非极大值抑制过程或显式编码任务先验知识的锚点生成。新框架的核心要素被称为detection Transformer(简称DETR),其特点包括:基于集合的全局损失函数通过二分匹配强制唯一预测,以及采用TRansformer编码器-解码器架构。通过固定少量学习到的目标查询集,DETR通过分析目标间的关系与全局图像上下文,直接并行输出最终的预测集合。这款名为DEDetection Transformer(简称DETR)的新框架,其核心组件包含两大模块:基于集合的全局损失函数通过二分匹配确保预测结果唯一性,以及采用TRansformer编码器-解码器架构。该模型仅需预设少量已训练好的目标查询集,就能通过解析物体间关系与全局图像上下文,直接并行输出最终预测结果。相较于其他现代检测器,DETR在概念设计上更为简洁,无需依赖专业库支持。在高难度的COCO目标检测数据集上,DETR展现出与业界标杆Faster R-CNN基线相当的准确率和运行效率,充分证明了其优越性能。此外,DETR可以很容易地进行泛化,以统一的方式生成全景分割。我们证明它显著优于竞争性基线方法。训练代码和预训练模型可在https:// github.com/facebookresearch/detr。
1.引言
目标检测的核心目标是为每个目标对象预测一组边界框和类别标签。现代检测器通过间接方式解决这一集合预测任务,即在大量候选框[5,36]、锚点[22]或窗口中心[45,52]上定义代理回归和分类问题。其性能显著受后处理步骤的影响——这些步骤用于消除近似重复的预测结果;同时受锚点集设计及目标框分配启发式算法的制约[51]。为了简化这些流程,我们提出了一种直接的集合预测方法来绕过代理任务。这种端到端的思维方式在机器翻译、语音识别等复杂结构预测任务中取得了重大突破,但在目标检测领域却始终未能实现突破:此前的研究[4,15,38,42]要么引入其他形式的先验知识,要么在严苛的基准测试中无法与强基线模型相抗衡。本文旨在填补这一技术空白。
我们通过将目标检测视为直接的集合预测问题,优化了训练流程。采用基于Transformer[46]的编码器-解码器架构——这种序列预测领域的经典架构,其自注意力机制能显式建模序列中所有元素间的成对交互关系,使得该架构特别适合解决集合预测中的特定约束条件,例如消除重复预测结果。

图1. DETR通过将通用卷积神经网络与transformer架构相结合,直接并行预测最终的检测结果。在训练过程中,二分匹配技术会将预测结果与真实框进行唯一对应。当没有匹配项时,系统应输出“无目标”(∅)类别的预测结果。
我们的DEtection
TRansformer(DETR,见图1)能够一次性预测所有目标,并采用端到端训练方法,通过一组损失函数实现预测目标与真实目标之间的二分匹配。DETR通过省去多个依赖先验知识的手工设计组件(如空间锚点或非极大值抑制),简化了检测流程。与大多数现有检测方法不同,DETR无需任何定制化层,因此可以轻松集成到包含标准ResNet
[14]和Transformer
[46]类的任何框架中。
相较于以往大多数直接集合预测的研究,DETR的主要创新点在于将二分匹配损失函数与Transformer模型相结合,并采用(非自回归的)并行解码方式[7,9,11,28]。相比之下,现有研究主要聚焦于基于循环神经网络的自回归解码方法[29,35,40-42]。我们的匹配损失函数能够为预测结果与真实对象建立唯一对应关系,且对预测对象的排列顺序具有不变性,因此可以实现并行输出。
我们在最主流的目标检测数据集COCO
[23]上,将DETR模型与极具竞争力的Faster
R-CNN基线模型[36]进行对比测试。Faster
R-CNN经过多次设计迭代,自首次发布以来性能已大幅提升。实验表明,我们的新模型表现相当。具体而言,DETR在大尺寸目标检测上展现出显著优势,这可能得益于transformer的非局部计算特性。不过该模型在小尺寸目标上的表现稍逊一筹。我们相信未来研究会像FPN
[21]改进Faster
R-CNN那样,在此方面取得突破性进展。
DETR的训练设置与标准目标检测器存在多方面差异。新模型需要更长的训练周期,并通过transformer中的辅助解码损失获得优势。我们深入探究了哪些组件对展示的性能表现至关重要。
DETR的设计理念可以轻松扩展到更复杂的任务。在我们的实验中,我们展示了基于预训练DETR模型训练的简单分割头,在全景分割[18]这一具有挑战性的像素级识别任务中,其性能优于竞争性基线方法——该任务近年来已获得广泛关注。
2.相关工作
我们的工作建立在以下几个领域的先前工作之上:集合预测的二分匹配损失、基于transformer的编码器-解码器架构、并行解码和目标检测方法。
2.1.集合预测
目前尚无标准的深度学习模型可以直接预测集合。基础的集合预测任务属于多标签分类(参见计算机视觉领域的相关研究,如文献[32,39]),其中基线方法“一对一”并不适用于检测等存在元素间潜在结构(即几乎相同的框)的问题。这类任务的首要难点在于避免近似重复。当前大多数检测器采用非极大值抑制等后处理技术来解决此问题,而直接集合预测则无需依赖后处理。这类方法需要全局推理方案来建模所有预测元素间的交互关系以消除冗余。对于固定规模的集合预测,全连接网络[8]虽能胜任但成本较高。通用方法是采用自回归序列模型,如循环神经网络[47]。所有情况下,损失函数都应保持对预测结果排列的不变性。常规解决方案是基于匈牙利算法[19]设计损失函数,通过寻找真实值与预测值之间的二分匹配来实现排列不变性,并确保每个目标元素都有唯一对应关系。我们采用二分匹配损失法。然而与大多数先前研究不同,我们摒弃了自回归模型,转而使用具有并行解码功能的Transformer模型,具体将在下文详述。
2.2.变压器和并行解码
Vaswani et al.
[46]首次提出Transformer作为机器翻译领域基于注意力机制的新型构建模块。注意力机制[2]是一种能够整合整个输入序列信息的神经网络层。Transformer引入了自注意力层,其工作原理与非局部神经网络[48]类似——通过逐元素扫描序列,并整合整个序列的信息来实现动态更新。基于注意力机制的模型具有全局计算能力和完美记忆特性,这使得它们在处理长序列任务时比循环神经网络(RNN)更具优势。如今,在自然语言处理、语音处理和计算机视觉等多个领域,变换器正逐步取代RNN[7,26,30,33,44]。
Transformer模型最初应用于自回归模型,其原理与早期的序列到序列模型[43]类似,采用逐个生成输出标记的方式。然而,高昂的推理成本(与输出长度成正比且难以批量处理)促使了并行序列生成技术的发展,该技术已广泛应用于音频[28]、机器翻译[9,11]、词向量表示学习[7]以及最近的语音识别[6]等领域。我们还将Transformer与并行解码技术相结合,充分利用二者在计算成本与全局预测所需运算能力之间的优势平衡。
2.3.目标检测
当前主流的目标检测方法大多基于初始猜测进行预测。双阶段检测器[5,36]通过候选框进行预测,而单阶段方法则采用锚点[22]或可能物体中心的网格[45,52]进行预测。最新研究[51]表明,这些系统的最终性能高度依赖于初始猜测的具体设定方式。我们的模型成功省去了这种人工设计环节,通过直接基于输入图像进行绝对框预测来实现检测结果的精准输出,从而显著简化了检测流程。
基于集合的损失
多个目标检测器[8,24,34]曾采用二分匹配损失函数。不过在早期的深度学习模型中,不同预测结果之间的关联仅通过卷积层或全连接层进行建模,而采用人工设计的NMS后处理技术能有效提升性能。近年来的检测器[22,36,52]则结合了真实数据与预测结果间的非唯一性分配规则,并同步应用NMS技术。
可学习的NMS方法[4,15]和关系网络[16]通过注意力机制显式建模不同预测结果间的关联。这些方法采用直接集合损失函数,无需任何后处理步骤。但它们依赖于诸如提案框坐标等人工设计的上下文特征来高效建模检测结果间的关联,而我们的研究目标在于寻找能有效降低模型中预设知识编码的解决方案。
循环检测器
与我们的方法最为接近的是端到端的物体检测[42]和实例分割[29,35,40,41]的集合预测技术。这些方法与我们类似,都采用基于CNN激活的编码器-解码器架构,通过二分匹配损失直接生成边界框集合。不过这些方法仅在小型数据集上进行评估,且未与现代基准模型对比。特别需要指出的是,它们基于自回归模型(更准确地说是循环神经网络),因此未能充分利用具有并行解码功能的最新Transformer模型。
3.DETR模型
在检测中,直接设置预测需要两个基本要素:(1)一种集合预测损失,它可以强制预测框和真实框之间唯一匹配;(2)一种能够预测(在单次遍历中)一组对象并建模它们之间关系的架构。我们在图2中详细描述了我们的架构。
3.1目标检测集合预测损失
DETR通过单次解码过程推断出固定规模的N个预测结果,其中N值被设定为远大于图像中典型物体数量。训练过程的主要难点在于如何根据真实标注对预测对象(类别、位置、尺寸)进行评分。我们的损失函数首先在预测对象与真实标注对象之间生成最优二分匹配,随后针对每个对象的边界框进行损失优化。
我们用y表示图像中物体的真实集合,\(\hat y = \{\hat
y_i\}_{i=1}^N\)表示包含N个预测值的集合。假设N大于图像中的物体数量,我们将y视为由N个元素组成的补全集,其中填充∅(即无物体)。为在两个集合间建立二分匹配关系,我们需要寻找一个将N个元素\(\sigma\in\Theta_{N}\)的排列方式,其代价最小:
\[\hat{\sigma}=\arg\operatorname*{min}_{\sigma\in\Theta_{N}}\sum_{i}^{N}\mathcal{L}_{\operatorname*{match}}(y_{i},\hat{y}_{\sigma(i)}),\]
其中\(\mathcal{L}_{\operatorname*{match}}(y_{i},\hat{y}_{\sigma(i)})\)表示真实值yi与索引σ(i)的预测值之间的成对匹配成本。这种最优分配通过匈牙利算法高效计算得出,该方法沿用了先前研究(如[42])的成果。
匹配成本同时考虑了类别预测和预测框与真实框的相似度。每个真实数据集元素i可表示为\(y_i
=(c_i,b_i)\),其中ci是目标类别标签(可能为∅),\(b_i\in[0,1]^4\)
表示定义真实框中心坐标及其相对于图像尺寸的高度和宽度的向量。对于索引为σ(i)的预测结果,我们定义类别ci的概率为\({\hat
p}_{\sigma(i)}(c_i)\),并将预测框定义为\({\hat
b}_{\sigma(i)}\)。通过这些符号,我们定义\(\mathcal{L}_{\mathrm{match}}(y_{i},{\hat{y}}_{\sigma(i)})\)为\(-\mathbb{1}_{\{c_i\neq\varnothing\}}\hat{p}_{\sigma(i)}(c_i)+\mathbb{1}_{\{c_i\neq\varnothing\}}\mathcal{L}_{\mathrm{box}}(b_i,\hat{b}_{\sigma(i)})\)。
这种匹配过程的作用与现代检测器中用于将提案[36]或锚点[21]与真实目标匹配的启发式分配规则相同。主要区别在于,我们需要为直接集合预测找到一对一的无重复匹配。
第二步是计算损失函数,即对前一步骤中匹配的所有配对应用匈牙利损失。我们定义的损失函数与常见目标检测器的损失函数类似:它由类别预测的负对数似然与后文定义的框损失Lbox(·,·)的线性组合构成。
\[{\mathcal{L}}_{\mathrm{Humgarian}}(y,{\hat{y}})=\sum_{i=1}^{N}\left[-\log{\hat{p}}_{\delta(i)}(c_{i})+\mathbb{1}_{\{c_{i}\neq\emptyset\}}{\mathcal{L}}_{\mathrm{box}}(b_{i},{\hat{b}}_{\delta}(i))\right]\,,\]
其中ˆσ是在第一步(1)中计算出的最优分配。在实际操作中,当ci
=∅时,我们将对对数概率项进行10倍的降权处理,以应对类别不平衡的问题。这类似于Faster
R-CNN训练过程通过子采样平衡正负样本建议的方式[36]。需要注意的是,物体与∅之间的匹配成本不依赖于预测结果,这意味着在这种情况下该成本是常数。在匹配成本中,我们使用概率\({\hat
p}_{\hat\sigma(i)}(c_i)\)而非对数概率。这种处理方式使得类别预测项与Lbox(·,·)具有可比性,我们在实验中观察到更好的实证性能。
边界框损失
匹配成本与匈牙利损失的第二部分是用于评估边界框的Lbox(·)。与许多检测器通过Δ进行初始猜测来预测边界框不同,我们直接进行边界框预测。虽然这种方法简化了实现过程,但会导致损失函数的相对比例失调。即使小框和大框的相对误差相近,最常用的1损失函数也会对它们采用不同的比例。为解决这个问题,我们采用了1损失与广义交并比损失[37]Liou(·,·)的线性组合,这种组合具有比例不变性。总体而言,我们的边界框损失函数定义为\({\mathcal{L}}_{\mathrm{box}}(b_{i},{\hat{b}}_{\sigma(i)})\),其计算公式为\(\lambda_{\mathrm{iou}}{\mathcal
L}_{\mathrm{iou}}(b_{i},\hat{b}_{\sigma(i)})+\lambda_{\mathrm{L}1}||b_{i}-\hat{b}_{\sigma(i)}||_{1}\),其中λiou、λL1∈R是超参数。这两个损失函数均通过批量中目标数量进行归一化处理。
3.2 DETR 架构
DETR的整体架构设计出人意料地简洁,如图2所示。

图2. DETR采用传统CNN主干网络学习输入图像的二维表征。模型将图像展平后,通过位置编码进行增强处理,再输入到transformer编码器中。transformer解码器接收少量固定数量的学习位置嵌入(称为对象查询),并额外关注编码器输出。我们将解码器的每个输出嵌入传递至共享前馈网络(FFN),该网络可预测检测结果(类别与边界框)或“无目标”类别。
该架构包含三大核心组件:用于提取紧凑特征表示的CNN主干网络、编码器-解码器架构的transformer模块,以及生成最终检测预测结果的简单前馈网络(FFN)。
与众多现代检测器不同,DETR只需采用通用CNN主干网络和transformer架构实现,就能在任何深度学习框架中完成部署,代码量仅需数百行。在PyTorch框架下,DETR的推理代码实现更是精简至不足50行[31]。我们期待这种简洁的设计能吸引更多科研人员加入检测领域。
主干网络
从初始图像\(x_{img}\in{\mathbb
R}^{3×H_0×W_0}\)(具有3个颜色通道1)开始,传统的CNN主干网络生成较低分辨率的激活图\(f\in\mathbb{R}^{C\times H\times
W}\)。我们通常使用的参数值为C = 2048,\(H,W={\frac{H_{0}}{32}},{\frac{W_{0}}{32}}.\)。
Transformer编码器
首先,通过1x1卷积将高级激活图f的通道维度从C降为较小维度d,生成新的特征图\(z_{0}\in\mathbb{R}^{d\times H\times
W}\)。由于编码器需要处理序列输入,我们将z0的空间维度压缩为一维,得到d×HW特征图。每个编码器层均采用标准架构,包含多头自注意力模块和前馈网络(FFN)。鉴于transformer架构具有置换不变性,我们在其基础上补充了固定位置编码[3,30],这些编码被添加到每个注意力层的输入端。具体架构定义详见补充材料,其设计遵循文献[46]所述方案。
Transformer解码器
该解码器遵循标准的transformer架构,通过多头自注意力和编码器-解码器注意力机制对N个维度为d的嵌入向量进行转换。与原始transformer模型不同的是,我们的模型在每个解码层中并行解码N个对象,而Vaswani等人[46]采用的自回归模型则是逐元素预测输出序列。对于不熟悉相关概念的读者,建议参考补充材料。由于解码器还具有置换不变性,必须使用不同的N个输入嵌入向量才能产生不同结果。这些输入嵌入是学习得到的位置编码,我们称之为对象查询,并与编码器类似,将其添加到每个注意力层的输入中。N个对象查询经解码器转换为输出嵌入后,通过前馈网络(详见下一小节)分别解码为框坐标和类别标签,最终生成N个预测结果。利用这些嵌入向量上的自注意力和编码器-解码器注意力机制,模型能够基于对象间的成对关系进行全局推理,同时还能将整张图像作为上下文使用。
预测前馈网络(FFN,Feed-Forward
Networks)
最终预测结果由包含ReLU激活函数和隐藏层维度d的三层感知器,以及线性投影层共同计算得出。全连接神经网络(FFN)负责预测图像中框的归一化中心坐标、高度和宽度,而线性层则通过softmax函数预测类别标签。由于我们预测的是固定尺寸的N个边界框集合(其中N通常远大于图像中实际目标数量),因此特别引入了一个特殊类别标签∅,用于表示检测框内未发现任何目标。该类别在功能上类似于传统目标检测方法中的“背景”类别。
辅助解码损失
我们在训练过程中发现,在解码器中使用辅助损失[1]非常有效,特别是有助于模型输出每个类别中正确的物体数量。每个解码器层的输出首先通过共享层归一化,然后输入到共享预测头(分类和边界框预测)中。随后我们按照常规方法应用匈牙利损失进行监督训练。
4.实验
我们在COCO数据集的定量评估中发现,DETR模型在性能上与Faster RCNN [36]和RetinaNet [22]不相上下。随后我们通过架构消融实验和损失函数优化研究,深入解析了模型的性能特征并提供了定性分析结果。最后,为验证DETR的通用性,我们在全景分割任务中展示了仅需在固定DETR模型上进行小规模扩展训练即可获得的性能表现。
5.结论
我们提出DETR——一种基于Transformer和二分匹配损失的新型目标检测系统设计,用于直接进行集合预测。该方法在具有挑战性的COCO数据集上取得了与优化版Faster
R-CNN基线相当的性能。DETR实现过程简单直观,其灵活的架构设计可轻松扩展至全景分割任务,并展现出优异的扩展性。此外,该方法在处理大型目标时性能显著提升,这可能得益于自注意力机制对全局信息的高效处理。
这种新型探测器的设计也带来了新的挑战,特别是在训练、优化和小物体性能方面。当前的探测器需要数年改进才能应对类似问题,我们预计未来的工作将成功解决这些问题,为DETR提供支持。
6.补充材料
详细体系结构
图1展示了DETR中使用的transformer详细结构,其每个注意力层均采用位置编码。

具体实现流程如下:首先将CNN主干网络提取的图像特征输入transformer编码器,同时在多头自注意力层中,将空间位置编码与查询键和键值进行叠加处理。解码器接收初始置零的查询信号、输出的位置编码(对应目标查询)以及编码器记忆库,通过多次多头自注意力机制和解码器-编码器注意力交互,最终生成预测的类别标签和边界框。需要特别说明的是,首个解码器层中的第一个自注意力层可被省略。
计算复杂度
编码器中的每个自注意力计算复杂度为O(d²HW+d(HW)²):其中O(d⁰d)表示单次查询/键/值嵌入的计算成本(且M=d⁰),而O(d⁰(HW)²)则是单个头计算注意力权重的成本。其他计算量均可忽略不计。在解码器中,每个自注意力计算复杂度为O(d²N+dN²),而编码器与解码器之间的交叉注意力计算复杂度为O(d²(N
+ HW)+ dNHW),由于实际应用中NHW,该数值远低于编码器的复杂度。
浮点运算
由于Faster
R-CNN的运算量取决于图像中的候选框数量,我们报告了COCO
2017验证集前100张图像的平均运算量。计算时采用Detectron2框架[9]中的运算量统计工具,该工具在Detectron2模型中直接使用,而针对DETR模型则扩展了对批量矩阵乘法(bmm)的计算支持。