发表时间:2020
论文地址:https://arxiv.org/pdf/2005.12872.pdf
项目地址:https://github.com/facebookresearch/detr
提出了一种将对象检测视为集合预测问题的新方法。我们的方法简化了检测流程,有效地消除了许多手工设计的组件的需要,如非最大抑制程序或锚框生成,显式地编码了对任务的先验知识。新框架被称为检测transformer或DETR,其架构为transformer encoder-decoder,通过set-baseed global loss迫使模型的预测结果与真实框一一对应。给定一组固定的关于学习目标query小型集合,DETR直接对目标和全局图像上下文之间的关系进行推理,以直接并行输出最终的预测集。与许多其他现代探测器不同,这个新模型在概念上很简单,不需要专门的nms库。DETR在具有挑战性的COCO目标检测数据集上展示了准确性和运行时性能,与完善和高度优化的快速RCNN基线相当。此外,DETR可以很容易地推广到以统一的方式产生全景分割。我们证明,它明显优于竞争基线。训练代码和预训练模型在 https://github.com/facebookresearch/detr 可见。
关键解读
背景介绍
1、现在的目标检测以代理的方式(密集的锚框分配及预测框的nms)来实现目标集的预测
2、bipartite matching loss可以使目标检测不需要密集的锚框|锚点分配策略,从而可以使模型移除标签匹配策略和nms后处理
3、现有的无nms模型还存在一定缺陷,不能推广应用到coco等大型数据集中
4、transformer的并行计算效率高,比rnn强,其已经用在了nlp中的多个场景中。
DETR简介
无NMS目标检测模型已经存在了,只是在大型数据集上效果不佳。DETR基于transformer重构了这些算法。DETR由Backbone、Transformer encoder、Transformer decoder、Prediction feed-forward networks构成。其基于bipartite matching loss,设计一个基于匈牙利算法的损失,来实现目标集与预测集的匹配训练。
1、DETR将目标检测视为目标集预测问题,使用set-baseed global loss迫使模型的预测结果与真实框一一对应,移除了锚框分配和nms的概念
2、DETR在大目标上效果好(可能是受non-local机制影响),然而其在小目标上效果有待提升
3、DETR较难收敛,且需要辅助头
4、从实验效果来看,相比于Faster RCNN,DETR的性能优势并不明显,将DETR的训练策略用到Faster RCNN后,其提升了2个点的AP
DETR特点
1、与yolo等系列的目标检测方法项链,DETR多出了bipartite matching loss,用于匹配预测集与目标集的关系
2、DETR的常规loss为cls_loss,boxes_loss(=L1_loss+GIOU_loss)
附加知识
1、random crop技术,提高了大约1个AP的性能;使用更大的epoch,也可以提升epoch;DETR用次高类结果替代空结果,提高了大约2个AP的性能
2、Transformer模型都惯于使用Adam优化器,learning rate设置为10−4,backbone的设置为10−5(encoder、decoder的1/10),weight decay为10−4
3、DETR对于多任务(实例分割)模型训练提出以下看法(经验),对于多任务模型可以先训练一个head(一个任务、目标检测),然后再冻结backbone(公共部分)单独训练另一个head(另一个任务,语义分割)
1 Introduction
Detection的目标是为每个感兴趣的对象预测一组边界框和类别标签。现代检测器以一种间接的方式解决这个集合预测任务,通过在大量proposals[37,5]、锚框[23]或锚点[53,46]上定义代理回归和分类问题。它们的性能受到后处理步骤(nms,移除重复预测的锚框)、锚点集的设计、目标框与锚点的匹配[52]的显著影响。为了简化这些流程,我们提出了一种直接集预测方法来绕过代理任务。这种端到端哲学促使了复杂结构化预测任务的重大进展,如机器翻译或语音识别,但尚未用在目标检测。以前的算法研究[43,16,4,39]要么添加其他形式的先验知识,要么没有被证明具有突破性的性能。本文旨在弥补这一差距。
我们通过将目标检测视为一个直接集的预测问题来简化训练流程。我们采用了一种基于transformer[47]的编解码器结构,这是一种流行的序列预测结构。transformer的self-attention机制,明确地模拟了序列中元素之间的所有成对交互作用,使得这些架构特别适合于集合预测的特定约束,如删除重复的预测。
我们的检测transformertransformer(DETR,见图1)一次预测所有对象,并使用一个集合损失函数进行端到端训练,该函数在预测对象和GT对象之间执行 bipartite 匹配。DETR通过删除多个手工设计的编码先验知识的组件来简化检测流程,如空间锚点或非最大抑制。与大多数现有的检测方法不同,DETR不需要任何定制的层,因此可以很容易地在任何包含标准CNN和transformer类的框架中复现。
与以往大多数的直接集预测工作相比,DETR的主要特征是二部匹配损失、transformer、(非自回归)并行解码[29,12,10,8]的结合。相比之下,之前的工作集中于rnn[43,41,30,36,42]的自回归解码。我们的匹配损失函数将一个预测唯一地分配给一个GT对象,并且对预测对象的排列是不变的,所以我们可以并行地预测它们。我们在最流行的目标检测数据集之一COCO [24]上评估DETR,采用Faster R-CNN作为基线[37]。Faster RCNN经历了许多设计迭代,其性能自最初发布以来得到了很大的提高。实验表明,我们的新模型取得了类似的性能。更准确地说,DETR在大型对象上显示出了显著更好的性能,这一结果很可能是由transformer的non-local计算所实现的。然而,它在小物体上的性能较低。我们希望未来的工作将像FPN [22]对R-CNN的开发一样改进这方面。
DETR的训练设置在多种方面不同于标准的对象检测器。新的模式需要超长的训练计划,并需要相应的辅助解码。我们将彻底探讨哪些组件对所演示的性能至关重要。DETR的设计理念很容易扩展到更复杂的任务中。在我们的实验中,我们证明了一个在预先训练的DETR之上训练的简单分割头部超过了全景分割[19]的竞争基线,这是一项具有挑战性的像素级识别任务。
1、现在的目标检测以代理的方式(密集的锚框分配及预测框的nms)来实现目标集的预测
2、DETR将目标检测视为目标集预测问题,使用set-baseed global loss迫使模型的预测结果与真实框一一对应,移除了锚框分配和nms的概念
3、DETR在大目标上效果好(可能是受non-local机制影响),然而其在小目标上效果有待提升
4、DETR较难收敛,且需要辅助头
2 Related work
我们的工作建立在之前在几个领域的工作基础上:集合预测的二部匹配损失、基于transformer的编解码器架构、并行解码和目标检测方法。
2.1 Set Prediction
目前没有规范的深度学习模型可以直接预测集合。基本的集合预测任务是多标签分类(例如,在计算机视觉中参见参考[40,33]),其中基线方法,one-vs-rest,不适用于检测元素之间存在底层结构的问题(即接近相同的bboxes)。这些任务的第一个困难是避免近乎重复。目前的检测器使用后处理,如非最大抑制来解决这个问题,但直接集预测是无后处理的。它们需要全局推理方案来建模所有预测元素之间的交互,以避免冗余。对于恒定大小集预测,密集全连接网络[9]是足够的,但代价高昂。一般的方法是使用自回归序列模型,如递归神经网络[48]。在所有的情况下,损失函数应该是不变的排列的预测。通常的解决方案是设计一个基于匈牙利算法[20]的损失,以找到GT和预测值之间的二部匹配。这加强了排列不变性,并保证每个目标元素都有一个唯一的匹配。我们遵循二部匹配损失的方法。然而,与之前的大多数工作相比,我们远离了自回归模型,并使用具有并行解码的transformer,我们将在下面描述。
1、设计一个基于匈牙利算法的损失,来实现目标集与预测集的匹配训练
2.2 Transformers and Parallel Decoding
transformer是由Vaswani等人[47]提出的,作为一种新的基于注意力的机器翻译构建模块。注意机制[2]是一种从整个输入序列中聚合信息的神经网络层。transformer引入了self-attention layer,类似于non-local神经网络[49],它会扫描一个序列中的每个元素,并通过聚合整个序列中的信息来更新它。基于注意力的模型的主要优点之一是它们的全局计算和完美的内存利用,这使得它们比rnn更适合于长序列。transformer现在自然语言处理、语音处理和计算机视觉[8,27,45,34,31]中的许多问题中取代rnn。
transformer首先被用于自回归模型,遵循早期的seq2seq模型[44],逐个生成输出token。然而,高昂的推理成本(与输出长度成正比,难以批处理)导致了并行序列生成,在audio[29]、机器翻译[12,10]、单词表示学习[8]和最近的语音识别[6]领域的发展。我们还结合了transformer和并行解码,以便在计算成本和执行集合预测所需的全局计算的能力之间进行适当的权衡。
1、transformer的并行计算效率高,比rnn强,其已经用在了nlp中的多个场景中2.3 Object detection
大多数现代的目标检测方法都是相对于一些初始的猜测(预先分配的锚框)而做出预测的。两级探测器[37,5]预测盒proposals,而单阶段的方法预测bboxe或者对象中心点位置。最近的工作[52]表明,这些系统的最终性能在很大程度上取决于锚点|锚框的设置规则。在我们的模型中,我们能够删除这个手工制作的过程,直接预测检测集来简化检测过程。训练时只需要输入图像,不需要设计锚框|锚点。
Set-based loss. 一些目标检测器[9,25,35]使用了bipartite matching loss。然而,在这些早期的深度学习模型中,不同预测之间的关系仅用卷积层或全连接层进行建模,而手工设计的NMS后处理可以提高它们的性能。最近的探测器[37,23,53]使用GT和预测之间的非唯一分配规则和NMS。可学习的NMS方法[16,4]和关系网络[17]明确地模拟了不同预测之间的关系。使用直接集损失,它们不需要任何后处理步骤。然而,这些方法使用额外的手工制作的上下文特性,如proposal框坐标来有效地建模检测之间的关系,而我们则寻找减少模型中编码的先验知识的解决方案。
Recurrent detectors. 最接近我们的方法的是目标检测[43]和实例分割[41,30,36,42]的端到端集预测。与我们类似,他们使用基于CNN激活的编解码器架构的二部匹配损失来直接产生一组边界框。然而,这些方法只在小数据集上进行评估,而不是根据现代基线进行评估。特别是,它们是基于自回归模型(更准确地说是rnn),所以它们没有利用最近可并行解码的transformer。
1、bipartite matching loss可以使目标检测不需要密集的锚框|锚点分配策略,从而可以使模型移除标签匹配策略和nms后处理 2、现有的无nms模型还存在一定缺陷,不能推广应用到coco等大型数据集中3 The DETR model
在检测中,Set Prediction loss是必不可少的: (1)Set Prediction loss,迫使预测boxes和GT之间实现唯一匹配;(2)一种 预测(在一次forword中)一组对象并建模它们之间的关系的体系结构。我们将在图2中详细描述我们的架构。
3.1 Object detection set prediction loss
DETR在通过解码器的一次通道中推断出一组固定大小的N个预测,其中N被设置为明显大于图像中物体的典型数量。训练的主要困难之一是对预测的物体(类别、位置、大小)进行评分。我们的损失在预测对象和GT对象之间产生一个最优的二部匹配,然后优化特定对象的(边界框)损失。
让我们用
y
y
y表示对象的GT集,yˆ为预测集,其包含N个预测集合【我们认为y也是一组大小为N的集合,其对象数量少于N时被填充了∅()
】(假设N大于图像中的对象数量)。为了找到这两个集合之间的二部匹配,我们寻找了一个代价最低的N个元素σ∈N的排列:
其中, L m a t c h ( y i , y ˆ σ ( i ) ) L_{match}(y_i,yˆ_{σ(i)}) Lmatch(yi,yˆσ(i)) 是GT y i y_i yi和索引为σ(i)的yˆ之间的成对匹配代价。根据之前的工作(如[43]),匈牙利算法有效地计算这个最优分配。
匹配loss考虑了类预测和预测和GT boxes的相似性。每个元素i的GT集可以被视为一个( c i c_i ci, b i b_i bi)元素, c i c_i ci是目标类标签(可能是∅)和 b i ∈ [ 0 , 1 ] 4 是一个向量 ( 表示 b b o x e s ,格式为 c x , c y , w , h , y o l o 格式 ) 。对于下标 σ ( i ) 的预测,我们将类的概率定义为 b_i∈[0,1]^4是一个向量(表示bboxes,格式为cx,cy,w,h,yolo格式)。对于下标σ(i)的预测,我们将类的概率定义为 bi∈[0,1]4是一个向量(表示bboxes,格式为cx,cy,w,h,yolo格式)。对于下标σ(i)的预测,我们将类的概率定义为ˆp_{σ(i)}(ci) ,预测框定义为 ,预测框定义为 ,预测框定义为ˆb_{σ(i)} 。通过这些符号,我们将 。通过这些符号,我们将 。通过这些符号,我们将L_{match} (y_i,yˆ_{σ(i)})$ 定义为
这种寻找匹配的过程与现代探测器中用于匹配proposals[37]或锚定[22]到GT对象的启发式分配规则(锚框分配机制,如ota、ppa等)起着相同的作用。主要的区别是,我们需要找到一对一匹配的直接集预测,不进行重复预测。
第二步是计算损失函数,即在上一步中匹配的所有对的匈牙利损失。我们对损失的定义类似于普通目标探测器的损失,即类预测的负对数似然loss 和 bboxes loss 的线性组合:
其中,ˆσ是在第一步(1)中计算出的最优赋值。在实践中,我们将 c i = ∅ c_i =∅ ci=∅时的cls_loss权重降低了10倍,以解释6 Carion等人的类不平衡。这类似于Faster R-CNN训练过程如何通过正/负proposals对[37]进行子抽样来平衡样本数量。请注意,对象和∅之间的匹配代价并不依赖于预测,这意味着在这种情况下,代价是一个常数。在匹配代价中,我们使用概率 ˆ p ˆ σ ( i ) ( c i ) ˆp_{ˆσ(i)}(ci) ˆpˆσ(i)(ci)而不是对数概率。这使得cls_loss可以与bbox_loss相平衡,并且我们观察到更好的经验性能。
Bounding box loss 匹配成本和匈牙利损失的第二部分是Lbox(·),它对边界框进行评分。不像许多探测器对bboxes预测数量有一些最初的猜测,我们会直接做出bboxes预测。虽然这种方法简化了实现,但它提出了一个关于损失的相对缩放的问题。最常用的L1损失对于小bboxes和大bboxes将有不同的规模,即使它们的相对误差是相似的。为了缓解这个问题,我们使用了`1损失和GIoU损失[38]的线性组合(Liou(·,·)),这是尺度不变的。总的来说,我们的bboxes损失是 L b o x ( b i ,ˆ b σ ( i ) ) L_{box}(b_i,ˆ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}L_{iou}(b_i,ˆb_{σ(i)})+λ_{L1}||b_{i}−ˆb_{σ(i)}||_1 λiouLiou(bi,ˆbσ(i))+λL1∣∣bi−ˆbσ(i)∣∣1,其中 λ i o u , λ L 1 ∈ R λ_{iou},λ_{L1}∈R λiou,λL1∈R是超参数。这两个损失按批处理内对象的数量进行标准化。
1、与yolo等系列的目标检测方法项链,DETR多出了bipartite matching loss,用于匹配预测集与目标集的关系 2、DETR的常规loss为cls_loss,boxes_loss(=L1_loss+GIOU_loss)3.2 DETR architecture
整体的DETR体系结构出奇地简单,如图2所示。它包含三个主要组件,我们将在下面描述:一个CNN主干来提取一个密集的特征表示,一个编码器-解码器transformer,和一个简单的前馈网络(FFN)来进行最终的检测预测。与许多现代检测器不同,DETR可以在任何深度学习框架中实现,该框架提供了一个通用的CNN主干和一个只有几百行的transformer架构实现。DETR的推理代码可以在PyTorch [32]中在少于50行中实现。我们希望我们的方法的简单性将吸引新的研究人员到检测社区。
Backbone 从初始图像 x i m g ∈ R 3 × H 0 × W 0 x_{img} ∈R^{3×H_0×W_0} ximg∈R3×H0×W0(有3个颜色通道2)开始,传统的CNN主干生成一个低分辨率的激活图。我们使用的典型值是C = 2048和 H , W = H 0 / 32 , W 0 / 32 H,W = H_0/32,W_0/32 H,W=H0/32,W0/32。
Transformer encoder. 首先,一个1x1的卷积将高级激活映射f的特征维度从C降低到一个更小的维度d。创建一个新的特征映射 z 0 ∈ R d × H × W z_0∈R_{d×H×W} z0∈Rd×H×W。编码器期望一个序列作为输入,因此我们将 z 0 z_0 z0的空间维度折叠成一维,从而得到一个dxHW特征图。每个编码器层都有一个标准的架构,由一个多头自注意模块和一个前馈网络(FFN)组成。由于transformer架构是排列不变的,我们用固定的位置编码[31,3]来补充它,并添加到每个注意层的输入中。我们遵循补充材料中架构的详细定义,它遵循[47]中描述的定义。
Transformer decoder 该解码器是标准transformer体系结构,使用多头self-attention和encoder-decoder attention机制将d个数据转换为N个嵌入。与原始transformer的不同之处在于,我们的模型在每个解码器层并行解码N个对象,而Vaswani等人[47]使用一个自回归模型,每次预测一个元素的输出序列。由于解码器也是排列不变的,N个输入嵌入必须不同才能产生不同的结果。这些输入嵌入是学习到的位置编码,我们将其称为对象查询,与编码器类似,我们将它们添加到每个注意层的输入中。N个对象查询被解码器转换为一个输出嵌入。然后,通过前馈网络(在下一节中描述)将它们独立解码为bboxes坐标和类别标签,从而得到N个最终预测。在这些嵌入上使用自编码器和编解码器的注意,该模型使用它们之间的成对关系对所有对象进行全局推理,同时能够使用整个图像作为上下文。
Prediction feed-forward networks (FFNs) 最终的预测是由3个FC-relu层作为隐含层和一个线性投影层(softmax做激活函数)计算的。FFN预测bboxes的标准化中心坐标、高度和宽度。由于我们预测一个固定大小的N个边界框集,其中N通常比图像中感兴趣的对象数量大得多,因此使用额外的特殊类标签∅来表示槽内没有检测到任何对象。这个类在标准的对象检测方法中扮演着与“背景”类类似的角色。
Auxiliary decoding losses. 我们发现在训练过程中使用解码器中的辅助损耗[1]很有帮助,特别是帮助模型输出每个类对象的正确数量。我们在每个解码器层后添加预测FFn和匈牙利损失。所有的预测FFN都有它们的参数。我们使用一个额外的共享层范数来将来自不同解码器层的预测FFN的输入规范化。
DETR由Backbone、Transformer encoder、Transformer decoder、Prediction feed-forward networks构成。
4 Experiments
结果表明,在COCO的定量评价中,DETR比R-CNN取得了具有竞争力的结果。然后,我们提供了一个详细的消融研究的结构和损失。最后,为了证明DETR是一个通用的和可扩展的模型,我们给出了全景分割的结果,只在一个固定的DETR模型上训练一个小的扩展。我们在 https://github.com/facebookresearch/detr 提供代码和预先训练的模型来重现我们的实验。
Dataset 我们在COCO 2017检测和 panoptic segmentation数据集[24,18]上进行了实验,其中包含118k个训练图像和5k验证图像。每幅图像都标注有边界框和全景分割。平均每张图像有7个实例,在训练集中的一个图像中有多达63个实例,在同一图像上从小到大。如果没有指定,我们将AP报告为bbox AP,即超过多个阈值的积分度量。为了与Faster R-CNN进行比较,我们报告了最后一个训练时期的验证AP,对于消融,我们报告了来自过去10个epoch的验证结果的中位数。
Technical details. 我们用AdamW [26]训练DETR,将初始transformer的learning rate设置为10−4,backbone的设置为10−5,weight decay为10−4。所有transformer的权重都用Xavier init [11]初始化,而主干是使用imageNet预训练的ResNet模型[15]。我们报告了两种不同主干的结果:ResNet-50和ResNet-101。相应的模型分别被称为DETR和DETR-R101。在[21]之后,我们还通过在主干的最后一个阶段添加一个扩展,并从该阶段的第一个卷积中删除一步(删除conv_stride_2),来提高特征分辨率。相应的模型分别被称为DETR-DC5和DETR-DC5-R101(扩张型C5阶段)。这种修改将分辨率提高了2倍,从而提高了小对象的性能,但代价是编码器的self-attention成本增加了16倍,导致计算成本总体增加了2倍。表1给出了这些模型的FLOPs与Faster R-CNN的完整比较。
我们使用多尺度增强,调整输入图像的大小,使最短的边最少为480像素,最长为800像素,而最长的边最多为1333 [50]。为了通过编码器的self-attention来帮助学习全局关系,我们还在训练过程中应用了random crop技术,提高了大约1个AP的性能。具体地说,将train图像以概率为0.5裁剪成一个随机的矩形补丁,然后再调整到800-1333。transformer的训练的dropout设置为0.1。在推理时,一些插槽预测为空类。为了优化AP,我们使用相应的置信度,用第二高的评分类来覆盖对这些插槽的预测。与过滤掉空插槽相比,这将AP提高了2个点。其他训练超参数详见A.4节。在我们的消融实验中,我们使用了300个epoch的训练计划,学习速率在200个epoch后下降了10倍,其中一个时期是比所有训练图像传递一次。在16 V100个GPU上训练300个epoch的基线模型需要3天,每个GPU有4张图像(因此总batchsize为64)。与Faster R-CNN相比,又训练了的更长的epoch(500个epoch),在400个epoch后学习率下降。与较短的epoch数相比,这个epoch数增加了1.5 AP。
1、从实验效果来看,相比于Faster RCNN,DETR的性能优势并不明显,将DETR的训练策略用到Faster RCNN后,其提升了2个点的AP 2、random crop技术,提高了大约1个AP的性能;使用更大的epoch,也可以提升epoch;DETR用次高类结果替代空结果,提高了大约2个AP的性能4.1 Comparison with Faster R-CNN
transformer通常由Adam或Adagrad优化器进行训练,并且训练时间很长,并且使用dropout,DETR也是如此。然而,Faster R-CNN是用SGD和最小的数据增强来训练的,我们并没有意识到Adam或dropout的成功应用。尽管存在这些差异,我们还是试图使Faster R-CNN基线更强。为了将其与DETR对齐,我们在boxes loss中添加广义IoU [38],相同的random crop和长时间训练,以改善结果[13]。结果如表1所示,在顶部部分,我们展示了来自Detectron2 Model Zoo[50]的Faster R-CNN结果(用3倍epoch数训练的模型)。在中间部分,我们展示了相同模型但经过训练的结果(带有“+”,使用9x的epoch数(109个epoch)和所描述的增强,这总共增加了1-2个AP)。
在表1的最后一节中,我们展示了多个DETR模型的结果。为了在参数的数量上进行比较,我们选择了一个具有6个transformer层和6个解码器层,宽为256层和8个注意头的模型。与FPN的Faster R-CNN一样,该模型有41.3M的参数,其中23.5M在ResNet-50中,17.8M在transformer中。尽管Faster R-CNN和DETR仍然可能随着长时间的训练而进一步提高,但我们可以得出结论,DETR可以与Faster R-CNN竞争,在COCO val子集上实现42 AP。DETR实现这一点的方法是通过改进 A P L AP_L APL(+7.8),但是请注意,该模型在 A P S AP_S APS(-5.5)中仍然落后。具有相同参数数量和相似FLOP计数的DETR-DC5具有相同的AP更高,但在 A P S AP_S APS中也明显落后。使用ResNet-101骨干,Faster R-CNN和DETR也显示了类似的结果。
4.2 Ablations
transformer解码器中的注意机制是建模不同检测的特征表示之间关系的关键组成部分。在我们的消融分析中,我们探讨了我们的体系结构的其他组件和损失如何影响最终的性能。在本研究中,我们选择了基于resnet-50的DETR模型,其中有6个编码器,6个解码器层,宽度为256。该模型有41.3M参数,在短时间和长调度上分别达到40.6和42.0 AP,在28 FPS的情况下运行,类似于具有相同主干的Faster R-CNN-FPN。
Number of encoder layers. 我们通过改变编码器层的数量来评估全局图像提升self-attention的重要性(表2)。在没有编码器层的情况下,总体AP下降3.9点,大型物体下降6.0 AP。我们假设,通过使用全局场景推理,编码器对于解码对象是重要的。在图3中,我们可视化了模型的最后一个编码器层的注意图,重点关注图像中的几个点。编码器似乎已经分离了实例,这可能简化了解码器的对象提取和定位。
Number of decoder layers.
我们在每个解码层后应用辅助loss(见第3.2节),因此,每一个FFNs被设计为输入解码器的输出,预测出相应的对象。我们通过评估在解码的每个阶段将被预测的对象来分析每个解码器层的重要性(图4)。AP和AP50在每一层后都有所改善,在第一层和最后一层之间总共达到了非常显著的+8.2/9.5 AP的改善。由于DETR具有基于集的损失,因此在设计上不需要NMS。为了验证这一点,我们在每个解码器后的输出运行一个带有默认参数[50]的标准NMS过程。NMS提高了来自第一个解码器的预测的性能。这可以解释为这样一个事实,即transformer的单一解码层不能计算输出元素之间的任何相互关联,因此它容易对同一对象进行多个预测。在第二层和随后的几层中,激活后的self-attention机制允许模型抑制重复的预测。我们观察到,NMS带来的改善随着深度的增加而减少。在最后一层,我们观察到AP的一个小损失,因为NMS错误地消除了正确的预测结果。
与可视化编码器注意类似,我们在图6中可视化解码器注意,将每个预测对象的attention map用不同的颜色着色。我们观察到解码器的注意是相当局部的,这意味着它主要关注物体的四肢,如头部或腿。我们假设,在编码器通过全局注意分离出实例后,解码器只需要注意到末端就可以提取出类和对象的边界。
Importance of FFN. transformer内部的FFN可以看作是1×1的卷积层,使得编码器类似于注意增强卷积网络[3]。我们试图完全去除它,只注意transformer层。通过将网络参数的数量从41.3M减少到28.7M,在transformer中只剩下10.8M,性能下降了2.3 AP,因此我们得出结论,FFN对于获得良好的结果很重要。
Importance of positional encodings. 在我们的模型中有两种位置编码:空间位置编码和输出位置编码(object queries)。我们用固定编码和学习编码的各种组合进行了实验,结果见表3。输出位置编码是必需的,不能删除,所以我们实验在解码器输入传递一次,或者在每个解码器注意层添加查询。在第一个实验中,我们完全删除了空间位置编码,并在输入位置传递输出位置编码,有趣的是,该模型仍然实现了超过32个AP,比基线损失了7.8个AP。然后,我们在输入时传递固定的正弦空间位置编码和输出编码一次,就像在原始transformer[47]中一样,并发现与直接传递位置编码相比,这导致了1.4 AP的下降。传递给注意力的学习的空间编码也会得到类似的结果。令人惊讶的是,我们发现在编码器中不传递任何空间编码只会导致AP小幅下降1.3 AP。当我们将编码传递给注意力时,它们在所有层中共享,并且总是学习输出编码(对象查询)。
考虑到这些问题,我们得出结论,transformer组件:编码器的全局自注意、FFN、多解码器层和位置编码,都对最终的目标检测性能有显著贡献。
Loss ablations. 为了评估匹配成本和损失的不同组成部分的重要性,我们训练了模型。损失有三个组成部分:分类损失、L1 bboxes loss和GIoU [38]损失。分类损失对于训练是必不可少的,不能移除,所以我们训练了一个没有边界框距离损失的模型和一个没有GIoU损失的模型,并与训练了所有三种损失的基线进行比较。结果见表4,GIOU基本上主导了模型的性能(不使用GIOU的loss效果特别差),使用L1 bboxes loss仅提升了0.7的AP。我们只简单实验了这些loss的消融,其他结合它们的方法可能会取得不同的结果。
4.3 Analysis
Decoder output slot analysis 在图7中,我们将COCO 2017 val集中所有图像的不同插槽预测的方框进行可视化。DETR的每一个结果槽都在关注不同区位的目标。我们观察到,每个插槽都有几种操作模式,聚焦于不同的区域和bboxes大小。特别是,所有的插槽都有预测图像范围的方框的模式(在图中间对齐的红点可见)。我们假设这与COCO中物体的分布有关。
Generalization to unseen numbers of instances. COCO中的一些类不能用同一图像中同一类的许多实例很好地表示。例如,在训练集中没有超过13只长颈鹿的图像。我们创建了一个合成图像3来验证DETR的泛化能力(见图5)。我们的模型能够在图像上找到所有的24只长颈鹿,这明显超出了分布范围。这个实验证实了在每个对象查询中都没有很强的类识别能力偏一话。
4.4 DETR for panoptic segmentation
全景分割[19]最近引起了计算机视觉界的广泛关注。类似于Faster R-CNN [37]扩展到mask R-CNN [14],DETR可以通过在解码器输出上添加一个掩模头来扩展。在本节中,我们演示了这样的头可以以一种统一的方式,通过处理东西和事物类来产生全景分割[19]。我们在COCO数据集的全景标注上进行了实验,该数据集除了有80个东西类别外,还有53个东西类别。
我们训练DETR来预测COCO class上的bboxes,使用相同的参数。预测bboxes是训练可行的,因为匈牙利匹配是使用bboxes之间的距离计算的。我们还添加了一个掩码头,它预测每个预测框的二进制掩码,见图8。它将每个对象的transformer解码器的输出作为输入,并在编码器的输出上计算该嵌入的多头(有M个头)注意力分数,在一个小分辨率下生成每个对象的M个注意力热图。为了做出最终的预测并提高分辨率,我们使用了一个类似于FPN的架构。我们将在补充部分中更详细地描述了该体系结构。掩模的最终分辨率为4步,每个掩模使用DICE/F-1损失[28]和焦点损失[23]独立监督。
Mask head可以联合训练,也可以分两步训练,我们只训练bboxes的DETR,然后冻结所有的weight,只训练Mask head25个epoch。实验上,这两种方法给出了相似的结果,我们报告使用后一种方法的结果(分开训练,训练时间更短)。
为了预测最终的全景分割,我们只需在每个像素的掩码分数上使用argmax,并将相应的掩码分配给相应的类别。这个过程保证了最终的掩模没有重叠,因此,DETR不需要一个通常用于对齐不同掩模的启发式[19]。
Training details. 我们训练DETR、DETR-DC5和DETR-R101模型,按照bboxes检测的方法,来预测COCO数据集中的事物和事物类周围的bboxes。新的mask head经过了25个epoch的训练(详情见补充)。在推理过程中,我们首先过滤掉置信度低于85%的检测,然后计算每个像素的argmax,以确定每个像素属于哪个掩码。然后,我们将相同内容类别的不同掩模预测折叠在一个类别中,并过滤空的预测(小于4个像素)
Main results. 定性结果如图9所示。在表5中,我们比较了我们的统一全视分段方法与几种已建立的不同处理事物的方法进行比较。我们报告Panopin质量(PQ)和事物(
P
Q
t
h
PQ_{th}
PQth)和东西(
P
Q
s
t
PQ_{st}
PQst)的缺陷。我们还报告了mask AP(根据事物类计算),在任何全景效果修缮之前(在我们的案例中,在使用像素级的argmax之前)。我们发现,DETR优于COCO-val 2017上发表的结果,以及我们强大的强PanopticFPN基线(使用与DETR相同的数据增强训练,以进行公平比较)。
结果分解显示,DETR在东西类中尤其占主导地位,我们假设编码器注意所允许的全局推理是导致这个结果的关键因素。对于事物类,尽管与掩模AP计算上的基线相比存在高达8 mAP的严重缺陷,但DETR获得了竞争性的 P Q t h PQ_{th} PQth。我们还在COCO数据集的测试集上评估了我们的方法,得到了46 PQ。我们希望我们的方法将启发在未来的工作中探索完全统一的模型的全景分割。
5 Conclusion
我们提出了一种基于transformer和二部匹配损失的目标检测系统的新设计。该方法在具有挑战性的COCO数据集上获得了与Faster R-CNN基线相当的结果。DETR易于实现,并具有灵活的架构,易于扩展到全景分割,具有具有竞争力的结果。此外,它在大型物体上的性能明显优于Faster R-CNN,这可能要归功于self-attention对全局信息的处理。
这种新的探测器设计也带来了新的挑战,特别是在训练、优化和性能方面。目前的探测器需要几年的改进来解决类似的问题,我们希望未来的工作能够成功地解决DETR的这些问题。