使用Transformers进行端到端目标检测
我们提出了一种将目标检测视为直接集合预测问题的新方法。我们的方法简化了检测流程,有效地消除了对许多手工设计组件的需求,例如非最大值抑制过程或锚生成,其显式地编码我们关于任务的先验知识。新框架的主要成分,称为 DEtection TRansformer 或 DETR,是基于集合的全局损失,通过二分图匹配强制进行独特的预测,以及Transformer编码器-解码器架构。给定一组固定的学习对象查询,DETR 推理对象的关系和全局图像上下文以直接并行输出最终的预测集。与许多其他现代检测器不同,新模型在概念上很简单,不需要专门的库。 DETR 在具有挑战性的 COCO 目标检测数据集上展示了与完善且高度优化的 Faster R-CNN 基线相当的准确性和运行时性能。此外,DETR 可以很容易地推广,以统一的方式产生全景分割。它的表现远远超过了竞争基线。
目标检测的目标是为每个感兴趣的目标预测一组边界框和类别标签。现代检测器通过在一大组proposals [37,5]、锚[23]或窗口中心[53,46]上定义代理回归和分类问题,以间接方式处理该集合预测任务。它们的性能受到后处理步骤(接近重复预测的崩溃)、锚集的设计以及将目标框分配给锚的启发式方法的显著影响[52]。为了简化这些流程,我们提出了一种直接集合预测方法来绕过代理任务。这种端到端的思想已经 在机器翻译或语音识别等复杂的结构化预测任务方面取得了重大进展,但在目标检测方面还没有:以前的尝试要么增加了其他形式的先验知识,要么在具有挑战性的基准方面证明不能与强大的基线竞争。本文旨在弥合这一差距。
我们通过将目标检测视为一个直接集预测问题来简化训练管道。我们采用了一种基于Transformer的编码器-解码器结构,[47]是一种流行的序列预测结构。Transformer的自我注意机制,明确地模拟了序列中元素之间的所有成对的相互作用,使这些架构特别适合于集合预测的特定约束,如消除重复预测。
我们的DETR(参见图1)一次预测所有对象,并使用集合损失函数进行端到端训练,该函数在预测对象和ground-truth对象之间执行二分图匹配。DETR通过删除多个手工设计的组件来简化检测管道,这些组件编码先验知识,如空间锚点或非最大抑制。与大多数现有的检测方法不同,DETR不需要任何定制的层,因此可以在任何包含标准CNN和Transformer类的框架中轻松复制。
图 1:DETR 通过将通用 CNN 与 Transformer 架构相结合,直接(并行)预测最终的检测集。在训练期间,二分图匹配唯一地分配具有ground truth框的预测。没有匹配的预测应该产生“无对象”(∅)类预测。
与大多数先前关于直接集合预测的工作相比,DETR 的主要特征是二分图匹配损失和具有(非自回归)并行解码的Transformer [29,12,10,8]。相比之下,以前的工作集中在使用 RNN 进行自回归解码 [43,41,30,36,42]。我们的匹配损失函数将预测唯一地分配给ground truth对象,并且对预测对象的排列保持不变,因此我们可以并行发出它们。
我们在最流行的目标检测数据集之一 COCO上评估 DETR,与极具竞争力的 Faster R-CNN 基线进行对比。 Faster R-CNN 经历了多次设计迭代,其性能自最初发布以来得到了极大的提升。我们的实验表明,我们的新模型实现了相当的性能。更准确地说,DETR 在大型对象上表现出明显更好的性能,这一结果可能是由Transformer的非本地计算实现的。但是,它在小物体上的性能较低。我们预计未来的工作将像 FPN [22] 的开发为 Faster R-CNN 所做的那样改进这方面。
DETR的训练设置与标准目标检测器在许多方面不同。新模型需要更长的训练时间,并从Transformer的辅助解码损耗中获益。我们将深入探讨哪些组件对展示的性能至关重要。
DETR 的设计理念很容易扩展到更复杂的任务。在我们的实验中,我们展示了在预训练的 DETR 之上训练的简单分割头在全景分割 [19] 上优于竞争基线,这是一项具有挑战性的像素级识别任务,最近受到欢迎。
我们的工作建立在几个领域的先前工作的基础上:集合预测的二分图匹配损失、基于transformer的编解码器结构、并行解码和目标检测方法。
目前还没有标准的深度学习模型来直接预测集合。基本集合预测任务是多标签分类(参见例如计算机视觉上下文中的参考文献),对于多标签分类,一对一的基线方法不适用于诸如在元素之间存在底层结构(即,接近相同的框)的检测之类的问题。这些任务的第一个困难是避免近乎重复的工作。目前大多数检测器使用非最大抑制等后处理来解决这个问题,但直接集预测是不需要后处理的。他们需要全局推理方案来对所有预测元素之间的交互进行建模,以避免冗余。对于固定大小的集合预测,密集的全连通网络[9]是足够的,但成本很高。一般的方法是使用自回归序列模型,例如递归神经网络[48]。在所有情况下,损失函数都应该通过预测的排列保持不变。通常的解决方案是在匈牙利算法[20]的基础上设计一个损失,在ground truth和预测之间找到一个二分图匹配。这强制了排列不变性,并确保每个目标元素都有唯一的匹配。我们遵循二分图匹配损失的方法。然而,与大多数以前的工作不同的是,我们放弃了自回归模型,而使用了具有并行解码的Transformer,我们在下文中将对此进行描述。
Vaswani等人将Transformer引入机器翻译,作为一种新的基于注意力的构建块。注意力机制是从整个输入序列中聚合信息的神经网络层。Transformer引入了自我关注层,类似于非局部神经网络[49],它扫描序列的每个元素,并通过聚合整个序列的信息来更新它。基于注意的模型的主要优点之一是其全局计算和完美的内存,这使得它们比RNN更适合于长序列。在自然语言处理、语音处理和计算机视觉的许多问题中,Transformer正在取代RNN。
Transformer首先用于自回归模型,遵循早期的序列到序列模型,一个一个地生成输出标记。然而,在音频[29]、机器翻译[12,10]、词表示学习[8]、以及最近的语音识别 [6]。我们还结合了Transformer和并行解码,以在计算成本和执行集合预测所需的全局计算的能力之间进行适当的权衡。
大多数现代目标检测方法相对于某些初始猜测进行预测。两阶段方法使用预选框,而单阶段方法作出预测锚或可能的对象中心的网格。最近的工作表明,这些系统的最终性能在很大程度上取决于这些初始猜测的确切设置方式。在我们的模型中,我们能够消除这种手工制作的过程,并通过对输入图像的绝对箱体预测而不是锚点直接预测检测的集合,来简化检测过程。
基于集合的损失。几个目标检测器使用了二分图匹配损失。然而,在这些早期的深度学习模型中,不同预测之间的关系只用卷积或完全连通的层来建模,而手工设计的NMS后处理可以提高它们的性能。较新的检测器[37,23,53]与NMS一起使用ground truth和预测之间的非唯一分配规则。
可学习的NMS方法和关系网络显式地建模具有注意力的不同预测之间的关系。使用直接设定损失,它们不需要任何后处理步骤。然而,这些方法使用额外的手工制作的上下文特征,如proposal box坐标来高效地建模检测之间的关系,同时我们寻找减少模型中编码的先验知识的解决方案。
循环检测器。最接近我们的方法是用于目标检测的端到端集合预测[43]和实例分割[41,30,36,42]。与我们类似,他们使用基于CNN激活的编解码器架构的二分图匹配损失来直接产生一组边界框。然而,这些方法只在较小的数据集上进行了评估,而没有针对现代基线进行评估。具体地说,它们是基于自回归模型(更准确地说是RNN)的,因此它们不利用最近的并行解码的Transformer。
检测中的直接集合预测有两个要素是必不可少的:(1)集合预测损失,迫使预测和ground truth框之间进行唯一匹配;(2) 预测一组对象并对其关系建模的体系结构。我们在图2中详细描述了我们的体系结构。
图2:DETR使用传统的CNN主干来学习输入图像的2D表示。该模型将其展平,并在将其传递到Transformer编码器之前用位置编码对其进行补充。然后,Transformer解码器将少量固定数量的学习位置嵌入(我们称之为对象查询)作为输入,并另外处理编码器输出。我们将解码器的每个输出嵌入传递到一个共享前馈网络(FFN),该网络预测一个检测(类和边界框)或一个“无对象”类。
DETR在通过解码器的单次过程中推断出N个预测的固定大小集合,其中N被设置为显著大于图像中对象的典型数量。训练的主要困难之一是根据ground truth情况对预测对象(类、位置、大小)进行评分。我们的损失在预测对象和ground truth对象之间产生最优二分图匹配,然后优化特定对象(边界框)损失。
让我们用y表示对象的ground truth集, 表示N个预测的集。假设N大于图像中对象的数量,我们也认为y是一组大小为N的填充了∅(无对象)的集合。为了找到这两个集合之间的二分图匹配,我们搜索具有最低成本的N个元素 的排列:
其中, 是ground truth yi与具有指数σ(I)的预测之间的配对匹配成本。根据先前的工作(例如,[43]),用匈牙利算法有效地计算了这种最优分配。
匹配成本同时考虑了类别预测以及预测框和ground truth框的相似性。ground truth集的每个元素 i 可以看作是 yi = (ci, bi) 其中 ci 是目标类标签(可能是∅),bi ∈ [0, 1]4 是定义ground truth框的向量中心坐标及其相对于图像大小的高度和宽度。对于索引为 σ(i) 的预测,我们将类别 ci 的概率定义为 ^pσ(i)(ci) 并将预测框定义为 ^bσ(i)。使用这些符号,我们将 定义为 。
这种寻找匹配的过程与用于将proposal [37]或锚[22]匹配到现代检测器中的ground truth对象的启发式分配规则起到相同的作用。主要的区别是,我们需要找到一对一的匹配来进行直接集合预测,而不是重复。
第二步是计算损失函数,即上一步匹配的所有配对的匈牙利损失。我们对损失的定义类似于常见目标检测器的损失,即用于类别预测的负对数似然和稍后定义的盒损失的线性组合:
其中σ是在第一步(1)中计算的最佳分配。实际上,当ci=∅ 用10倍来解释阶级不平衡。这类似于Faster R-CNN训练程序如何通过二次抽样来平衡积极/消极建议[37]。请注意,对象和∅ 不依赖于预测,这意味着在这种情况下,成本是一个常数。在匹配成本中,我们使用概率pσ(i)(ci)代替对数概率。这使得类预测项可以与Lbox(·,·)(如下所述)相称,并且我们观察到更好的经验性能。
边界框损失。匹配成本和匈牙利损失的第二部分是对边界框进行评分的 Lbox(·)。与许多将框预测作为的检测器不同。一些初步的猜测,我们直接进行框预测。虽然这种方法简化了实现,但它带来了损失的相对缩放问题。即使它们的相对误差相似,最常用的L损失对于小盒子和大盒子也会有不同的尺度。为了缓解这个问题,我们使用了L 损失和广义 IoU 损失 Liou(·,·) 的线性组合,它是尺度不变的。总的来说,我们的框损失是 定义为 是超参。这两个损失通过批次内的对象数量进行归一化。
整个 DETR 架构非常简单,如图 2 所示。它包含三个主要组件,我们将在下面描述:用于提取紧凑特征表示的 CNN 主干、编码器-解码器Transformer和简单的前馈网络 (FFN)进行最终的检测预测。
与许多现代检测器不同,DETR可以在任何深度学习框架中实现,只要提供一个通用的CNN主干和一个只有几百行的Transformer体系结构实现。在PyTorch中,DETR的推理代码可以用不到50行代码来实现。我们希望我们的方法的简单性将吸引新的研究人员进入检测界。
骨干。从初始图像 ximg ∈ R3×H0 ×W0(具有 3 个颜色通道)开始,传统的 CNN 主干生成较低分辨率的激活图 f ∈ RC×H×W。我们使用的典型值是 C = 2048 和 H, W = H0/32 , W0/32 。
Transformer编码器。首先,1x1卷积将高级激活映射f的通道维数从C降低到更小的维数d。创建一个新的特征映射z0∈Rd×H×W。编码器期望一个序列作为输入,因此我们将z0的空间维度折叠成一维,从而得到d×HWfeature映射。每个编码器层都有一个标准的架构,由一个多头自关注模块和一个前馈网络(FFN)组成。由于Transformer体系结构是置换不变的,我们将固定位置编码[31,3]添加到每个注意层的输入中。我们遵循补充材料对体系结构的详细定义,它遵循[47]中描述的体系结构。
Transformer解码器。该解码器遵循Transformer的标准架构,使用多头自和编码器-解码器注意机制转换大小为d的N个嵌入。与原始Transformer不同的是,我们的模型在每个解码器层并行解码N个对象,而Vaswani等人[47]使用一个自回归模型,每次预测一个元素的输出序列。我们建议不熟悉这些概念的读者查阅补充材料。由于解码器也是置换不变的,N个输入嵌入必须不同才能产生不同的结果。这些输入嵌入是经过学习的位置编码,我们称之为对象查询,与编码器类似,我们将它们添加到每个注意层的输入中。解码器将N个对象查询转换为输出嵌入。然后,它们被前馈网络(在下一小节中描述)独立解码为框坐标和类标签,产生N个最终预测。利用对这些嵌入的自关注和编码器-解码器的关注,该模型利用它们之间的成对关系对所有对象进行全局推理,同时能够使用整个图像作为上下文。
预测前馈网络(FFNs)。最终的预测是由一个3层感知器计算的,该感知器带有ReLU激活函数和隐藏维数d,以及一个线性投影层。FFN预测归一化中心坐标、框的高度和宽度输入图像,线性层使用softmax函数预测类标签。由于我们预测的是一个固定大小的N个边界框集合,其中N通常比图像中感兴趣的对象的实际数量大得多,因此使用额外的特殊类标签∅表示槽内未检测到对象。这个类在标准目标检测方法中扮演着类似于“background”类的角色。
辅助解码损耗。我们发现在训练期间在解码器中使用辅助损失[1]很有帮助,特别是帮助模型输出每个类的正确对象数。我们在每个解码器层之后添加预测FFN和匈牙利损失。所有预测FFN共享其参数。我们使用一个额外的共享层范数来规范来自不同解码器层的预测FFN的输入。
我们表明,在对COCO的定量评价中,与Faster R-CNN相比,DETR取得了竞争性的结果。然后,我们提供了一个详细的消融研究的架构和损失,洞察和定性的结果。最后,为了表明DETR是一个通用的和可扩展的模型,我们提出了全视域分割的结果,只训练一个固定的DETR模型上的小扩展。
数据集。我们在COCO 2017检测和泛视分割数据集上进行了实验,其中包含118k张训练图像和5k张验证图像。每个图像都标注了边界框和泛视分割。每个图像平均有7个实例,训练集中的单个图像中最多有63个实例,在相同的图像上从小到大。如果没有指定,我们将AP报告为bbox AP,即多个阈值的积分度量。与Faster R-CNN相比,我们报告最后一个训练阶段的验证AP,对于消融,我们报告过去10个阶段验证结果的中值。
技术细节。我们用AdamW训练DETR,将初始Transformer的学习率设置为10−4,骨干的学习率设置为10−5,权值衰减为10−4。所有的Transformer权值都是用Xavier init初始化的,骨干是用来自torchvision的imagenet预训练的ResNet模型[15],并带有冻结的batchnorm层。我们用两个不同的主干报告结果:ResNet50和ResNet-101。相应的模型分别称为DETR和DETR- r101。在[21]之后,我们还通过在主干的最后阶段添加一个扩张,并从这一阶段的第一个卷积中删除一个步幅来提高特征分辨率。相应的模型分别称为DETR-DC5和DETR-DC5- r101(扩张C5期)。这一修改将分辨率提高了两倍,从而提高了小对象的性能,但编码器的自注意成本提高了16倍,导致计算成本总体增加了2倍。表1给出了这些模型与Faster R-CNN的flop的完整比较。
表1:在COCO验证集上与采用ResNet-50和ResNet-101骨干的Faster R-CNN的比较。上面部分显示了Detectron2中Faster R-CNN模型的结果,中间部分显示了GIoU、随机作物训练时间增强和长9x训练计划的Faster R-CNN模型的结果。DETR模型取得了与大量调整的Faster R-CNN基线相当的结果,APS较低,但APL大大提高。我们使用torchscript Faster R-CNN和DETR模型来测量FLOPS和FPS。名称中没有R101的结果对应于ResNet-50。
我们使用缩放,调整输入图像的大小,使最短的边至少为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个epoch的基线模型需要3天,每个GPU有4个图像(因此总批量大小为64)。与Faster R-CNN相比,我们的训练时间更长,达到500个小时,400个小时后学习率下降。与较短的时间表相比,此时间表增加了1.5个AP。
Transformer通常使用Adam或Adagrad优化器进行训练,训练计划很长,而且中途退出,DETR也是如此。然而,更快的R-CNN是用SGD训练的,数据增加最少,我们不知道Adam的成功应用或辍学。尽管存在这些差异,但我们试图使更快的R-CNN基线更强。为了与DETR保持一致,我们将广义IoU[38]添加到箱损失中,增加随机作物和长时间训练以改善结果[13]。结果如表1所示。在顶部部分,我们显示了Detectron2 Model-Zoo[50]针对采用3x计划训练的模型的更快的R-CNN结果。在中间部分,我们展示了相同模型的结果(带“+”),但使用9x计划(109个阶段)和所述增强进行了训练,总共增加了1-2个AP。在表1的最后一节中,我们展示了多个DETR模型的结果。为了在参数数量上具有可比性,我们选择了一个具有6个Transformer和6个宽度为256的解码器层以及8个注意头的模型。与FPN的Faster R-CNN一样,该模型有41.3M个参数,其中ResNet-50中有23.5M个,Transformer中有17.8M个。尽管更快的R-CNN和DETR仍有可能随着更长的训练而进一步提高,但我们可以得出结论,DETR可以与同样参数的更快的R-CNN竞争,在COCO val子集上达到42 AP。DETR实现这一目标的方法是提高APL(+7.8),但请注意,该模型仍落后于APS(-5.5)。具有相同参数数量和相似FLOP计数的DETR-DC5具有较高的AP,但在APS中仍然明显落后。具有ResNet-101主干的更快的R-CNN和DETR也显示出类似的结果。
Transformer 解码器中的注意力机制是对不同检测的特征表示之间的关系进行建模的关键组件。在我们的消融分析中,我们探索了我们架构的其他组件和损失如何影响最终性能。在研究中,我们选择了基于 ResNet-50 的 DETR 模型,具有 6 个编码器、6 个解码器层和 256 宽度。该模型具有 41.3M 参数,在短期和长期调度上分别达到 40.6 和 42.0 AP,并以 28 FPS 运行,类似于具有相同主干的更快的 R-CNN-FPN。
编码器层数。我们通过改变编码器层数来评估全局图像级自我注意的重要性(表2)。没有编码器层,总体AP下降3.9点,在大型对象上AP下降更显著,为6.0点。我们假设,通过使用全局场景推理,编码器对解纠缠对象很重要。在图3中,我们将经过训练的模型的最后一个编码器层的注意力映射可视化,集中在图像中的几个点上。编码器似乎已经分离了实例,这可能简化了解码器的对象提取和定位。
表2:编码器尺寸的影响。每一行对应一个模型,其编码器层数不同,解码器层数固定。随着编码器层的增加,性能逐渐提高。
图3:一组参考点的编码器自我注意。编码器能够分离单独的实例。使用基线DETR模型对验证集图像进行预测。
解码器层数。我们在每个解码层之后应用辅助损耗(参见第3.2节),因此,预测FFN通过设计进行训练,以预测每个解码器层输出的对象。我们通过评估在解码的每个阶段预测的对象来分析每个解码器层的重要性(图4)。每一层之后,AP和AP50都会有所改善,在第一层和最后一层之间,总的来说,AP提高了8.2/9.5倍。DETR基于设置的损耗,设计上不需要NMS。为了验证这一点,我们使用默认参数[50]为每个解码器后的输出运行标准NMS过程。NMS提高了第一个解码器的预测性能。这可以解释为Transformer的单个解码层无法计算输出元素之间的任何交叉相关性,因此容易对同一对象进行多次预测。在第二层和后续层中,激活的自我注意机制允许模型抑制重复预测。我们观察到,NMS带来的改善随着深度的增加而减少。在最后一层,由于NMS错误地删除了真正的积极预测,我们观察到AP中有一个小的损失。
图4:各解码器层后AP和AP50的性能。评估一个单一的长计划基线模型。DETR在设计上不需要NMS,这在图中得到了验证。NMS降低了最后一层的AP,删除了TP预测,但提高了第一层解码器层的AP,删除了双重预测,因为第一层没有通信,并略微提高了AP50。
与将编码器的注意力可视化类似,我们在图6中将解码器的注意力可视化,将每个预测对象的注意力地图涂成不同的颜色。我们观察到,解码器的注意力是相当局部的,这意味着它主要关注物体的末端,如头或腿。我们假设在编码器通过全局关注分离实例后,解码器只需要关注端点来提取类和对象的边界。
图6:可视化每个预测对象(COCOval集合中的图像)的解码者注意力。用DETR-DC5模型进行预测。注意力分数根据不同的对象用不同的颜色编码。解码器通常关注对象的四肢,如腿和头。最好是彩色的。
FFN的重要性。Transformer内部的FFN可以看作是1 × 1的卷积层,使得编码器类似于注意增强卷积网络[3]。我们试图完全删除它,只留下注意在Transformer层。通过将网络参数数量从41.3M减少到28.7M,在Transformer中只留下10.8M,性能下降2.3 AP,因此我们得出结论,FFN对于实现良好的结果是重要的。
位置编码的重要性。在我们的模型中有两种位置编码:空间位置编码和输出位置编码(对象查询)。我们对固定编码和学习编码的各种组合进行了实验,结果见表3。输出位置编码是必需的,不能删除,因此我们尝试在解码器输入时传递一次,或者在每个解码器注意层添加查询。在第一个实验中,我们完全删除了空间位置编码,并在输入时传递输出位置编码,有趣的是,该模型仍然达到32个以上的AP,比基线减少7.8个AP。然后,我们在输入时一次性传递固定正弦空间位置编码和输出编码,就像在原始Transformer[47]中一样,并发现与直接传递位置编码相比,这会导致1.4 AP下降。将学习到的空间编码传递给注意力会得到类似的结果。令人惊讶的是,我们发现在编码器中不传递任何空间编码只会导致较小的AP下降1.3 AP。当我们将编码传递给注意事项时,它们将在所有层中共享,并且输出编码(对象查询)总是被学习。
表3:不同位置编码的结果与具有固定正弦位置的基线(最后一行)进行比较。编码在编码器和解码器中的每个关注层传递。学习到的嵌入在所有层之间共享。不使用空间位置编码会导致AP显著下降。有趣的是,将它们传递到解码器中只会导致较小的AP下降。所有这些模型都使用学习的输出位置编码。
考虑到这些因素,我们得出结论,Transformer组件:编码器、FFN、多重解码器层和位置编码中的全局自我关注,都对最终的目标检测性能有显著贡献。
损耗烧蚀。为了评估匹配成本和损失的不同组成部分的重要性,我们训练了几个打开和关闭模型。损失有三个组成部分:分类损失、L1边界框距离损失和GIoU损失。分类损失对于训练至关重要,无法关闭,因此我们训练了一个没有边界框距离损失的模型和一个没有GIoU损失的模型,并与基线进行比较,训练了所有三种损失。结果如表4所示。GIoU损失本身占了模型性能的大部分,与基线相比仅损失0.7 AP(合并损失)。在没有GIoU的情况下使用`1显示出较差的结果。我们只研究了不同损耗的简单烧蚀(每次使用相同的权重),但其他组合方法可能会获得不同的结果。
表 4:损耗分量对 AP 的影响。我们训练了两个模型,关闭了L1 loss和GIoU loss,并观察到`1本身的结果很差,但是当与GIoU结合使用时,可以提高APM和APL。我们的基线(最后一行)结合了这两种损失。
解码器输出槽分析。在图7中,我们将COCO 2017 val集合中所有图像的不同槽预测的盒子可视化。DETR为每个查询槽学习不同的专门化。我们观察到,每个插槽都有几种操作模式,侧重于不同的区域和盒子尺寸。特别地,所有槽都具有预测图像范围的盒子的模式(可见的是在图中间对齐的红点)。我们假设这与COCO中物体的分布有关。
图 7:对来自 COCO 2017 验证集的所有图像的所有框预测的可视化,在 DETR 解码器中,总共 N = 100 个预测槽中的 20 个。每个框预测都表示为一个点,其中心坐标在 1×1 正方形中由每个图像大小归一化。这些点是用颜色编码的,绿色对应小盒子,红色对应大水平盒子,蓝色对应大垂直盒子。我们观察到,每个插槽都通过几种操作模式学会专注于某些区域和盒子大小。我们注意到几乎所有的 slot 都有一种预测大图像宽度框的模式,这在 COCO 数据集中很常见。
泛化到看不见的实例数量。 COCO 中的某些类不能很好地表示为同一图像中同一类的许多实例。例如,训练集中没有超过 13 只长颈鹿的图像。我们创建了一个合成图像 3 来验证 DETR 的泛化能力(见图5)。我们的模型能够在图像上找到所有 24 只长颈鹿,这显然是不分布的。这个实验证实了在每个对象查询中没有很强的类专业化。
图 5:稀有类的非分布泛化。即使训练集中没有超过 13 只长颈鹿的图像,DETR 也可以毫无困难地推广到同一类的 24 个或更多实例。
全景分割[19]最近吸引了计算机视觉界的大量关注。类似于Faster R-CNN[37]到Mask R-CNN[14]的扩展,DETR可以通过在解码器输出端顶部添加一个mask head来自然扩展。在本节中,我们演示了这样的头部可以通过以统一的方式处理素材和事物类来生成全景分割[19]。我们对COCO数据集的全景注释进行了实验,该数据集除80个事物类别外,还有53个事物类别。
我们使用相同的配方训练DETR预测物品和COCO上的物品类的盒子。训练需要预测方框,因为匈牙利匹配是通过方框之间的距离来计算的。我们还添加了一个掩码头,用于预测每个预测框的二进制掩码,参见图8。它以每个对象的Transformer解码器的输出作为输入,并在编码器的输出上计算该嵌入的多个头(有M个头)的注意分数,在小分辨率内生成每个对象的M个注意热图。为了进行最终的预测并提高分辨率,采用了类似fpn的体系结构。我们在附录中对架构进行了更详细的描述。掩模的最终分辨率跨越4,每个掩模使用DICE/F-1损失[28]和Focal损失[23]独立监督。
图 8:全景头示意图。为每个检测到的对象并行生成一个二进制掩码,然后使用逐像素 argmax 合并掩码。
掩模头可以联合训练,也可以分两步进行训练,即只训练盒子的DETR,然后冻结所有重量,只训练掩模头25个周期。在实验上,这两种方法得到了相似的结果,我们报告了使用后一种方法的结果,因为它导致了更短的总墙上时钟训练时间。
训练细节。我们按照边界盒检测的方法训练DETR、DETR- dc5和DETR- r101模型来预测COCO数据集中物品和物品类周围的盒子。新的mask head被训练25个epochs(详情见补充)。在推断过程中,我们首先过滤出置信度低于85%的检测,然后计算逐像素argmax以确定每个像素属于哪个掩码。然后我们将相同类别的不同掩码预测合并为一个,并过滤空的(小于4像素)。
主要结果。定性结果如图9所示。在表5中,我们比较了我们的统一的全景分割方法与一些已经建立的不同处理事物的方法。我们报告了全景质量(PQ)和物(PQth)和物(PQst)的分解。我们还报告掩码AP(在things类上计算),在任何泛视后处理之前(在我们的例子中,在使用像素argmax之前)。我们表明,DETR优于COCO-val 2017年发布的结果,以及我们强大的PanopticFPN基线(训练与DETR相同的数据增强,以进行公平的比较)。结果分解显示,DETR在东西类上特别占主导地位,我们假设编码器注意所允许的全局推理是这个结果的关键元素。对于事物类,尽管与掩码AP计算的基线相比有高达8个mAP的严重缺陷,但DETR获得了具有竞争力的PQth。我们还在COCO数据集的测试集上对我们的方法进行了评估,得到了46个PQ。我们希望我们的方法能在未来的工作中激发对全景分割完全统一模型的探索。
图9:DETR-R101生成的泛视分割定性结果。DETR以统一的方式为事物和东西产生对齐掩码预测。
表5:在Coco Val数据集上与最先进的方法UPSNet[51]和PanopticFPN[18]的比较我们以18倍的时间表对PanopticFPN进行了与DETR相同的数据增强,以进行公平的比较。UPSNet使用1x时间表,UPSNet-M是具有多尺度测试时间扩充的版本。
我们提出了一种基于transformers和二分图匹配损失的直接集预测目标检测系统设计方案DETR。该方法在具有挑战性的COCO数据集上获得了与优化后的更快的R-CNN基线相当的结果。DETR易于实现,并且具有灵活的体系结构,可以轻松扩展到全景分割,具有竞争力的结果。此外,与Faster R-CNN相比,它在大型对象上的性能要好得多,这可能要归功于自我注意对全局信息的处理。
检测器的这种新设计也带来了新的挑战,特别是在训练、优化和小物体性能方面。目前的检测器需要几年的改进才能处理类似的问题,我们预计未来的工作将成功地解决DETR的这些问题。
现代目标检测通过在一大组候选 、锚或窗口中心上定义代理回归和分类问题,以间接方式处理该集合预测任务。
它们的性能受到后处理步骤(接近重复预测的崩溃)、锚集的设计以及将目标框分配给锚的启发式方法的显著影响。(例如去除冗余框的nms操作调参部署都比较麻烦)
使用端对端思想可以简化这些流程,但这种思想在目标检测方面还没有重大进展:前人将端对端思想,融入目标检测的缺点:1. 增加了其他形式的先验知识 2.性能不太好
将目标检测视为一个直接集合预测问题
通用 CNN 与 Transformer 架构相结合,直接(并行)预测最终的检测集。在训练期间,在预测对象和ground-truth对象之间执行二分图匹配。
输入图片->backbone提取特征->构造图像特征集->Transformer编码解码模块->预测
(CNN 主干、编码器-解码器Transformer和简单的前馈网络 (FFN)进行最终的检测预测。)
CNN主干来学习输入图像的2D表示。该模型将其展平,并在将其传递到Transformer编码器之前用位置编码对其进行补充。然后,Transformer解码器将少量固定数量的学习位置嵌入(我们称之为对象查询)作为输入,并另外处理编码器输出。将解码器的每个输出嵌入传递到一个共享前馈网络(FFN),该网络预测一个检测(类和边界框)或一个“无对象”类。
骨干:初始图像为 3×800×1066(具有 3 个颜色通道),使用的典型值是 C=2048 和 H, W = H0/32 , W0/32经过CNN得到2048×25×34。然后经过1×1的卷积降维得到256×25×34的特征图,加入位置编码后拉长得到850×256(序列长度850,嵌入维度256)。
编码器:维数后的数据再,因此我们将z0的空间维度折叠成一维,从而得到d×HWfeature映射。每个编码器层都有一个标准的架构加入位置编码作为编码器输入进一步学习全局信息,得到850×256的输出(可以理解为做了全局信息的编码)。
解码器:与原始Transformer不同的是,我们的模型在每个解码器层并行解码N(100)个对象。由于解码器也是置换不变的,N个输入嵌入必须不同才能产生不同的结果。这些输入嵌入是经过学习的位置编码,我们称之为对象查询,与编码器类似,我们将它们添加到每个注意层的输入中。解码器将N(100)个对象查询转换为输出嵌入。
输入为可学习的object queries 100×256(100个框256维度),输出维度仍为100×256。
最终的预测是由一个3层感知器计算的,该感知器带有ReLU激活函数和隐藏维数d,以及一个线性投影层。FFN预测归一化中心坐标、框的高度和宽度输入图像,线性层使用softmax函数预测类标签。
最后通过FFN,每个框得到6个输出分别对应前景背景概率,框的边界信息(对角线两个坐标。)然后使用匈牙利算法计算最匹配的框,然后根据GT计算梯度,反向回传更新模型。
序列到序列模型,一个一个地生成输出标记端对端:并行生成。端到端指的是输入是原始数据,输出是最后的结果,原来输入端不是直接的原始数据,而是在原始数据中提取的特征。
超参数是在开始学习过程之前设置值的参数。 相反,其他参数的值通过训练得出。
非极大抑值(NMS):在Yolo和R-CNN等模型中过滤较小分数的输出框
DETR:使用object query替代原来生成anchor的机制、使用二分图匹配代替原来的nms(去除多余的预选框,使模型变得复杂)、缺点:1.训练时间长2.小物体上精度较低