End-to-End Object Detection with Transformers(Detection Transformer)翻译
摘要
我们提出了一种新方法,将目标检测视为直接的集合预测问题。我们的方法简化了检测流程,有效消除了对许多手工设计组件的需求,如非极大值抑制过程或锚框生成,这些组件显式编码了我们对任务的先验知识。新框架称为检测变换器(DEtection TRansformer,简称DETR),其主要成分是通过二分匹配强制唯一预测的基于集合的全局损失,以及一个变换器编码器-解码器架构。给定一组固定的小规模学习到的目标查询,DETR推理目标之间的关系和全局图像上下文,以并行方式直接输出最终的预测集合。新模型概念上简单,并且不需要像许多其他现代检测器那样的专用库。在具有挑战性的COCO目标检测数据集上,DETR的表现与经过充分研究和高度优化的Faster RCNN基线相当。此外,DETR可以轻松推广,以统一的方式产生全景分割。我们证明了它显著优于竞争性的基线。训练代码和预训练模型可在https://github.com/facebookresearch/detr获取。
1 引言
目标检测的目标是预测每个感兴趣目标的边界框和类别标签。现代检测器通过在一组大量的提议[37,5]、锚框[23]或窗口中心[53,46]上定义替代回归和分类问题,来间接解决这个集合预测任务。它们的性能受到后处理步骤的显著影响,这些步骤用于合并近似重复的预测,受到锚框集设计的影响,以及将目标框分配给锚框的启发式方法的影响[52]。为了简化这些流程,我们提出了一种直接的集合预测方法,以绕过替代任务。这种端到端的理念在复杂的结构化预测任务(如机器翻译或语音识别)中取得了显著进展,但在目标检测中尚未实现:之前的尝试[43,16,4,39]要么添加了其他形式的先验知识,要么在具有挑战性的基准测试中尚未证明能与强大的基线相竞争。本文旨在弥合这一差距。
我们通过将目标检测视为直接的集合预测问题,来简化训练流程。我们采用基于变换器[47]的编码器-解码器架构,这是一种流行的序列预测架构。变换器的自注意力机制显式建模序列中元素之间的所有成对交互,这使得这些架构特别适合于集合预测的特定约束,如去除重复预测。
我们的检测变换器(DETR,见图1)一次性预测所有目标,并使用集合损失函数进行端到端训练,该函数在预测目标和真实目标之间进行二分匹配。DETR通过去除多个编码先验知识的手工设计组件(如空间锚框或非极大值抑制)来简化检测流程。与大多数现有的检测方法不同,DETR不需要任何定制层,因此可以在包含标准CNN和变换器类的任何框架中轻松复现。
图 1: DETR directly predicts (in parallel) the final set of detections by combining a common CNN with a transformer architecture.
与以往关于直接集合预测的大多数工作相比,DETR的主要特点是二分匹配损失和变换器与(非自回归)并行解码[29,12,10,8]的结合。相比之下,以往的工作侧重于使用RNN的自回归解码[43,41,30,36,42]。我们的匹配损失函数唯一地将预测分配给真实目标,并且对预测目标的排列是不变的,因此我们可以并行地发出它们。
我们在最受欢迎的目标检测数据集之一COCO[24]上评估了DETR,与非常有竞争力的Faster R-CNN基线[37]进行了比较。Faster R-CNN经历了许多设计迭代,其性能自最初发表以来得到了极大的提高。我们的实验表明,我们的新模型实现了相当的性能。更具体地说,DETR在大目标上表现出显著更好的性能,这一结果很可能是由变换器的非局部计算所实现的。然而,它在小目标上的性能较低。我们预计未来的工作将像FPN[22]对Faster R-CNN的发展那样,改善这一方面。
DETR的训练设置与标准的目标检测器在多个方面有所不同。新模型需要更长的训练计划,并从Transformer中的辅助解码损失中获益。我们彻底探索了哪些组件对于所展示的性能至关重要。
DETR的设计理念很容易扩展到更复杂的任务。在我们的实验中,我们展示了一个在预训练的DETR之上训练的简单分割头在全景分割[19]这一具有挑战性的像素级识别任务上优于有竞争力的基线。
2 相关工作
我们的工作建立在多个领域的先前工作之上:用于集合预测的二元匹配损失、基于Transformer的编码器-解码器架构、并行解码以及目标检测方法。
2.1 集合预测
没有用于直接预测集合的规范深度学习模型。基本的集合预测任务是多标签分类(例如,参见[40,33]在计算机视觉背景下的参考文献),对于该问题,基线方法(一对一剩余)不适用于如检测这样存在元素间底层结构(即近乎相同的框)的问题。这些任务中的第一个困难是避免近乎重复的项。大多数当前的检测器使用如非极大值抑制的后处理来解决这个问题,但直接集合预测是无需后处理的。它们需要全局推理方案来建模所有预测元素之间的相互作用,以避免冗余。对于恒定大小的集合预测,密集的全连接网络[9]是足够的,但成本高昂。一种通用方法是使用如循环神经网络[48]的自回归序列模型。在所有情况下,损失函数应该对预测的排列保持不变。通常的解决方案是基于匈牙利算法[20]设计损失,以找到真实值和预测之间的二分匹配。这强制实现排列不变性,并保证每个目标元素都有一个唯一匹配。我们遵循二分匹配损失的方法。然而,与大多数先前的工作不同,我们放弃了自回归模型,而使用具有并行解码的Transformer,我们将在下面进行描述。
2.2 Transformer和并行解码
Transformer是由Vaswani等人[47]作为机器翻译的一种新的基于注意力的构建块而引入的。注意力机制[2]是神经网络层,它从整个输入序列中聚合信息。Transformer引入了自注意力层,它类似于非局部神经网络[49],扫描序列的每个元素并通过从整个序列聚合信息来更新它。基于注意力的模型的主要优点之一是它们的全局计算和完美记忆,这使得它们比循环神经网络更适合处理长序列。Transformer现在正在自然语言处理、语音处理和计算机视觉的许多问题中取代循环神经网络。
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)激活的编码器-解码器架构来直接生成一组边界框。然而,这些方法仅在小型数据集上进行了评估,并未与现代基线进行比较。特别是,它们基于自回归模型(更具体地说是循环神经网络(RNN)),因此没有利用具有并行解码能力的最新Transformer模型。
3 DETR模型
直接集合预测在检测中的两个关键要素是:(1)一个集合预测损失,它强制在预测的边界框和真实边界框之间进行唯一匹配;(2)一个架构,它(在一次通过中)预测一组对象并建模它们之间的关系。我们在图2中详细描述了我们的架构。
图 2: DETR uses a conventional CNN backbone to learn a 2D representation of aninput image.
3.1 目标检测集合预测损失
DETR在一次通过解码器的过程中推断出一个固定大小的N个预测集,其中N被设置为远大于图像中对象的典型数量。训练的主要困难之一是根据真实值对预测的对象(类别、位置、大小)进行评分。我们的损失在预测的对象和真实对象之间产生一个最优的二分匹配,然后优化对象特定的(边界框)损失。
我们用y表示真实对象集,用表示N个预测的集合。假设N大于图像中的对象数量,我们也将y视为大小为N的集合,并用“无对象”进行填充。为了在这两个集合之间找到一个二分匹配,我们搜索具有最低成本的N个元素的排列σ ∈ SN:
其中是真实值yi和索引为σ(i)的预测之间的成对匹配成本。这种最优分配是通过Hungarian算法高效计算的,遵循先前的工作(例如[43])。
匹配成本同时考虑了类别预测以及预测框和真实框之间的相似性。真实集中的每个元素i可以看作是一个yi = (ci; bi),其中ci是目标类别标签(可能是“无对象”),bi ∈ [0,1]4是一个向量,定义了真实框的中心坐标以及相对于图像大小的高度和宽度。对于索引为σ(i)的预测,我们定义类别ci的概率为^ pσ(i)(ci),预测框为^bσ(i)。使用这些符号,我们将定义为
这种寻找匹配的过程在现代检测器中起到了与启发式分配规则相同的作用,后者用于将候选区域[37]或锚点[22]与真实对象进行匹配。主要的区别在于,我们需要为没有重复的直接集合预测找到一对一的匹配。
第二步是计算损失函数,即上一步中所有匹配对的匈牙利损失。我们定义损失函数的方式与常见目标检测器的损失函数类似,即类别预测的负对数似然和稍后定义的框损失的线性组合:
其中是在第一步(1)中计算出的最优分配。在实践中,当
时,我们通过因子10来降低对数概率项的权重,以考虑类别不平衡。这与Faster R-CNN训练过程中通过子采样来平衡正负候选区域的方式类似[37]。请注意,对象与
之间的匹配成本不依赖于预测,这意味着在这种情况下成本是恒定的。在匹配成本中,我们使用概率pσ(i)(ci)而不是对数概率。这使得类别预测项与
(下面描述)具有可比较性,并且我们观察到了更好的经验性能。
边界框损失。匹配成本的第二部分和匈牙利损失的第二部分是Lbox(·),它对边界框进行评分。与许多将边界框预测作为相对于某些初始猜测的Δw.r.t 进行的方法不同,我们直接进行边界框预测。虽然这种方法简化了实现,但它带来了相对损失缩放的问题。最常用的L1损失对于小框和大框即使它们的相对误差相似也会有不同的尺度。为了缓解这个问题,我们使用L1损失和广义交并比(IoU)损失[38]的线性组合,后者是尺度不变的。总的来说,我们的框损 定义为
其中λiou, λL1 ∈ R是超参数。这两个损失由批次中的对象数量进行归一化。
3.2 DETR架构
DETR的整体架构出奇地简单,如图2所示。它包含三个主要组件,我们将在下面进行描述:一个CNN主干网络用于提取紧凑的特征表示,一个编码器-解码器变换器,以及一个简单的前馈神经网络(FFN),用于进行最终的检测预测。
与许多现代检测器不同,DETR可以在任何提供通用CNN主干和变换器架构实现的深度学习框架中用仅几百行代码实现。DETR的推理代码在PyTorch[32]中可以用不到50行代码实现。我们希望我们方法的简单性能够吸引新的研究人员加入到检测领域。
主干网络。从初始图像(具有3个颜色通道)开始,一个常规的CNN主干网络生成一个低分辨率的激活图
。我们使用的典型值是C=2048和H, W=H/32, W/32。
Transformer编码器。首先,一个1x1卷积将高级激活图f的通道维度从C减小到一个更小的维度d,创建一个新的特征图。编码器期望一个序列作为输入,因此我们将z0的空间维度折叠成一个维度,得到一个d×HW特征图。每个编码器层都具有标准架构,并包含一个多头自注意力模块和一个前馈神经网络(FFN)。由于变换器架构是排列不变的,我们用固定的位置编码[31,3]对其进行补充,这些位置编码被添加到每个注意力层的输入中。我们推迟到补充材料中对架构的详细定义,该定义遵循[47]中描述的架构。
Transformer解码器。解码器遵循变换器的标准架构,使用多头自注意力和编码器-解码器注意力机制对N个大小为d的嵌入进行变换。与原始变换器的不同之处在于,我们的模型在每个解码器层中并行解码N个对象,而Vaswani等人[47]使用自回归模型,该模型一次预测输出序列的一个元素。我们建议不熟悉这些概念的读者参阅补充材料。由于解码器也是排列不变的,因此N个输入嵌入必须不同才能产生不同的结果。这些输入嵌入是学习到的位置编码,我们称之为对象查询,与编码器类似,我们将它们添加到每个注意力层的输入中。N个对象查询被解码器转换为输出嵌入。然后,它们被独立地解码为框坐标和类别标签,由一个前馈神经网络(在下一小节中描述)进行处理,从而产生N个最终预测。通过对这些嵌入使用自注意力和编码器-解码器注意力,模型使用它们之间的成对关系全局地推理所有对象,同时能够使用整个图像作为上下文。
预测前馈神经网络(FFNs)。最终预测是通过一个具有ReLU激活函数和隐藏维度d的三层感知机以及一个线性投影层来计算的。FFN预测相对于输入图像的归一化中心坐标、高度和宽度,而线性层则使用softmax函数预测类别标签。由于我们预测了一个固定大小的N个边界框集合,其中N通常远大于图像中感兴趣对象的实际数量,因此我们使用了一个额外的特殊类别标签“无对象”来表示某个槽位内未检测到对象。这个类别在标准目标检测方法中起着与“背景”类别类似的作用。
辅助解码损失。我们发现,在训练期间在解码器中使用辅助损失[1]很有帮助,特别是帮助模型输出每个类别的正确对象数量。我们在每个解码器层之后添加了预测前馈神经网络(FFN)和匈牙利损失。所有预测FFN共享它们的参数。我们使用额外的共享层归一化来归一化来自不同解码器层的预测FFN的输入。
4 实验
我们展示了DETR在COCO数据集上与Faster R-CNN相比的定量评估结果具有竞争力。然后,我们对架构和损失进行了详细的消融研究,提供了见解和定性结果。最后,为了证明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,将初始变换器的学习率设置为10^-4,主干网络的学习率设置为10^-5,权重衰减设置为10^-4。所有变换器权重均使用Xavier初始化[11],主干网络使用来自torchvision的预训练ResNet模型[15],并冻结批归一化层。我们报告了使用两种不同主干网络的结果:ResNet-50和ResNet-101。相应的模型分别称为DETR和DETR-R101。根据[21],我们还通过在主干网络的最后阶段添加扩张来增加特征分辨率,并从该阶段的第一个卷积中移除步长。相应的模型分别称为DETR-DC5和DETR-DC5-R101(扩张的C5阶段)。这种修改将分辨率提高了两倍,从而提高了小对象的性能,但代价是编码器自注意力的计算成本增加了16倍,导致总体计算成本增加了两倍。这些模型与Faster R-CNN的浮点运算数(FLOPs)完整比较见表1。
表1: Comparison with Faster R-CNN with a ResNet-50 and ResNet-101 backbones on the COCO validation set.
我们使用尺度增强,将输入图像的大小调整为最短边至少为480像素,最多为800像素,最长边最多为1333像素[50]。为了帮助学习编码器自注意力中的全局关系,我们还在训练期间应用了随机裁剪增强,性能大约提高了1 AP。具体来说,以0.5的概率对训练图像进行随机矩形裁剪,然后再次调整大小至800-1333像素。变换器使用默认丢弃率为0.1进行训练。在推理时,一些槽位预测为空类别。为了优化AP,我们使用相应置信度的第二高评分类别覆盖这些槽位的预测,这比过滤掉空槽位提高了2 AP。其他训练超参数见第A.4节。对于我们的消融实验,我们使用300个训练周期的训练计划,在200个周期后学习率下降10倍,其中单个周期是指所有训练图像通过一次。在16个V100 GPU上训练基线模型300个周期需要3天时间,每个GPU有4张图像(因此总批大小为64)。为了与Faster R-CNN进行比较,我们使用了一个更长的训练计划,训练了500个周期,并在400个周期后降低学习率。与较短的训练计划相比,这个计划增加了1.5 AP。
4.1 与Faster R-CNN的比较
变换器通常使用Adam或Adagrad优化器进行训练,训练周期很长,并应用了dropout,DETR也是如此。然而,Faster R-CNN通常使用SGD进行优化,且数据增强较少,并且我们尚未了解到Adam或dropout在Faster R-CNN中的成功应用案例。尽管存在这些差异,我们仍尝试增强Faster R-CNN基线。为了使其与DETR对齐,我们在边界框损失中添加了广义交并比(IoU)[38],应用了相同的随机裁剪增强,并采用了已知可以提高结果的长期训练[13]。结果如表1所示。在表1的上部,我们展示了来自Detectron2模型库[50]的Faster R-CNN结果,这些模型使用3x训练计划进行训练。在中部,我们展示了相同模型的结果(带有“+”),但这些模型使用了9x训练计划(109个周期)和上述增强功能,总共增加了1-2 AP。在表1的最后部分,我们展示了多个DETR模型的结果。为了在参数数量上进行比较,我们选择了一个具有6个变换器层和6个解码器层、宽度为256、具有8个注意力头的模型。与具有FPN的Faster R-CNN类似,该模型具有4130万个参数,其中2350万个在ResNet-50中,1780万个在变换器中。尽管Faster R-CNN和DETR都有可能通过更长的训练进一步提高性能,但我们可以得出结论,具有相同参数数量的DETR可以与Faster R-CNN相媲美,在COCO验证子集上达到了42 AP。DETR通过提高APL(+7.8)来实现这一点,但请注意,该模型在APS方面仍然落后(-5.5)。具有相同参数数量和类似浮点运算数(FLOPs)的DETR-DC5模型具有更高的AP,但在APS方面仍然显著落后。具有ResNet-101主干的Faster R-CNN和DETR也显示了可比的结果。
4.2 消融研究
Transformer解码器中的注意力机制是关键组件,用于建模不同检测特征表示之间的关系。在我们的消融分析中,我们探讨了架构和损失的其他组件如何影响最终性能。为此,我们选择了基于ResNet-50的DETR模型,具有6个编码器层和6个解码器层,宽度为256。该模型具有4130万个参数,在短期和长期训练计划下分别达到了40.6和42.0 AP,运行速度为每秒28帧,与具有相同主干的Faster R-CNN-FPN相似。
编码器层数。我们通过改变编码器层的数量来评估全局图像级自注意力的重要性(表2)。没有编码器层时,总体AP下降了3.9点,其中大对象的AP下降了6.0点。我们假设,通过使用全局场景推理,编码器对于区分对象很重要。在图3中,我们可视化了训练好的模型最后一个编码器层的注意力图,重点关注图像中的几个点。编码器似乎已经区分了实例,这可能简化了解码器中的对象提取和定位。
Table 2: Effect of encoder size.
解码器层数。我们在每个解码层之后应用辅助损失(见第3.2节),因此,预测前馈神经网络(FFN)被设计为从每个解码层的输出中预测对象。我们通过分析在每个解码阶段预测的对象来评估每个解码层的重要性(图4)。每增加一层,AP和AP50都有所提高,在第一层和最后一层之间总共提高了+8.2/9.5 AP。由于基于集合的损失,DETR在设计上不需要非极大值抑制(NMS)。为了验证这一点,我们对每个解码器输出后的预测运行了标准NMS程序,使用了默认参数[50]。NMS改善了第一个解码器预测的性能。这可以解释为,变换器的一个解码层无法计算输出元素之间的任何互相关,因此容易对同一对象做出多个预测。在第二层和后续层中,通过激活的自注意力机制允许模型抑制重复预测。我们观察到,随着层数的增加,NMS带来的改进逐渐减少。在最后一层,我们观察到AP略有下降,因为NMS错误地移除了真正正样本的预测。
图. 4: AP and AP50 performance after each decoder layer.
与可视化编码器注意力类似,我们在图6中可视化了解码器注意力,用不同的颜色为每个预测对象的注意力图着色。我们观察到解码器注意力相当局部化,意味着它主要关注对象的末端部分,如头部或腿部。我们假设,在编码器通过全局注意力分离实例后,解码器只需要关注末端部分即可提取类别和对象边界。
FFN的重要性。变换器中的FFN可以看作是1x1卷积层,这使得编码器类似于注意力增强的卷积网络[3]。我们尝试完全移除FFN,只留下变换器层中的注意力。通过减少网络参数数量从4130万到2870万(变换器中仅保留1080万),性能下降了2.3 AP,因此我们得出结论,FFN对于实现良好结果很重要。
位置编码的重要性。在我们的模型中有两种位置编码:空间位置编码和输出位置编码(对象查询)。我们尝试了各种固定和学习的编码组合,结果如表3所示。输出位置编码是必需的,不能移除,因此我们尝试在解码器输入时传递它们,或者在每个解码器注意力层中将它们添加到查询中。在第一个实验中,我们完全移除了空间位置编码,仅在输入时传递输出位置编码,有趣的是,模型仍然达到了32 AP以上,但与基线相比损失了7.8 AP。然后,我们传递固定的正弦空间位置编码,并在输入时仅传递一次输出编码,如原始变换器[47]中所做的那样,并发现与直接在注意力中传递位置编码相比,这导致AP下降了1.4。将学习的空间编码传递给注意力得到了类似的结果。令人惊讶的是,我们发现不在编码器中传递任何空间编码仅导致AP轻微下降了1.3。当我们将编码传递给注意力时,它们在所有层之间共享,并且输出编码(对象查询)始终是学习的。
根据这些消融研究,我们得出结论,变换器组件:编码器中的全局自注意力、FFN、多个解码器层以及位置编码,都对最终的目标检测性能做出了显著贡献。
损失消融研究。为了评估匹配成本和损失中不同组件的重要性,我们训练了几个模型来打开和关闭它们。损失有三个组件:分类损失、L1边界框距离损失和GIoU[38]损失。分类损失对于训练是必不可少的,不能关闭,因此我们训练了一个没有边界框距离损失的模型和一个没有GIoU损失的模型,并与具有所有三个损失的基线进行了比较。结果如表4所示。仅GIoU损失就占模型性能的大部分,与具有组合损失的基线相比,仅损失了0.7 AP。仅使用L1而不使用GIoU显示结果较差。我们只研究了不同损失的简单消融(每次使用相同的权重),但其他组合方式可能会产生不同的结果。
4.3 分析
解码器输出槽位分析。在图7中,我们可视化了COCO 2017验证集中所有图像的不同槽位预测的边界框。DETR为每个查询槽位学习了不同的专业化。我们观察到,每个槽位都有几种操作模式,专注于不同的区域和边界框大小。特别是,所有槽位都有预测整个图像边界框的模式(在图的中间可见为红色点对齐)。我们假设这与COCO中对象的分布有关。
推广到未见过的实例数量。COCO中的一些类别在同一图像中具有多个相同类别的实例时,并未得到很好的表示。例如,训练集中没有包含超过13只长颈鹿的图像。我们创建了一个合成图像来验证DETR的泛化能力(见图5)。我们的模型能够在图像中找到所有24只长颈鹿,这明显超出了分布。该实验证实了每个对象查询中没有强烈的类别专业化。
4.4 DETR用于全景分割
全景分割[19]最近在计算机视觉界引起了广泛关注。与将Faster R-CNN[37]扩展到Mask R-CNN[14]类似,DETR可以自然地通过在解码器输出上添加一个掩码头来进行扩展。在本节中,我们证明了这样的头部可以以统一的方式处理“stuff”和“thing”类别,从而生成全景分割[19]。我们在COCO数据集的全景注释上进行了实验,该数据集除了80个“thing”类别外,还有53个“stuff”类别。我们训练DETR来预测COCO中“stuff”和“thing”类别的边界框,使用相同的方法。预测边界框是训练成为可能的必要条件,因为匈牙利匹配是使用边界框之间的距离来计算的。我们还添加了一个掩码头,为每个预测的边界框预测一个二进制掩码,如图8所示。它接受变换器解码器对每个对象的输出,并计算该嵌入对编码器输出的多头(具有M个头)注意力分数,以在低分辨率下为每个对象生成M个注意力热图。为了进行最终预测并提高分辨率,我们使用了一个类似FPN的架构。我们在补充材料中更详细地描述了该架构。掩码的最终分辨率步长为4,每个掩码都使用DICE/F-1损失[28]和Focal损失[23]独立进行监督。
掩码头可以联合训练,也可以分两步进行,即我们先训练DETR仅用于边界框预测,然后冻结所有权重,仅训练掩码头25个周期。实验上,这两种方法给出了相似的结果,我们报告了使用后者方法的结果,因为它导致总挂钟时间更短。
为了预测最终的全景分割,我们只需在每个像素上对掩码分数使用argmax,并将相应的类别分配给生成的掩码。此过程保证了最终掩码之间没有重叠,因此DETR不需要通常用于对齐不同掩码的启发式方法[19]。
训练细节。我们按照边界框检测的配方训练DETR、DETR-DC5和DETR-R101模型,以预测COCO数据集中“stuff”和“thing”类别的边界框。新的掩码头被训练了25个周期(有关详细信息,请参阅附录)。在推理期间,我们首先过滤掉置信度低于85%的检测,然后计算每个像素的argmax以确定每个像素属于哪个掩码。然后,我们将同一“stuff”类别的不同掩码预测合并为一个,并过滤掉空的掩码(小于4个像素)。
主要结果。定性结果如图9所示。在表5中,我们将统一的全景分割方法与几种不同的方法进行了比较,这些方法以不同的方式处理“thing”和“stuff”。我们报告了全景质量(PQ)以及“thing”(PQth)和“stuff”(PQst)的细分。我们还报告了在任何全景后处理之前(在我们的情况下,是在逐像素argmax之前)的掩码平均精度(AP)(在“thing”类别上计算)。我们表明,DETR在COCO-val 2017上的表现优于已发表的结果,也优于我们强大的PanopticFPN基线(为了公平比较,使用与DETR相同的数据增强进行训练)。结果细分表明,DETR在“stuff”类别上尤其占主导地位,我们假设编码器注意力所允许的全局推理是这一结果的关键因素。对于“thing”类别,尽管在掩码AP计算上与基线相比存在高达8 mAP的严重赤字,但DETR获得了具有竞争力的PQth。我们还在COCO数据集的测试集上评估了我们的方法,并获得了46 PQ。我们希望我们的方法将激发未来工作中对全景分割完全统一模型的探索。
5 结论
我们提出了DETR,这是一种基于变换器和二分匹配损失的直接集合预测的新型目标检测系统。该方法在具有挑战性的COCO数据集上与优化的Faster R-CNN基线相比取得了可比的结果。DETR实现起来很简单,具有灵活的架构,可以轻松扩展到全景分割,并具有竞争力的结果。此外,由于自注意力进行的全局信息处理,DETR在大对象上的表现明显优于Faster R-CNN。这种新型检测器设计也带来了新的挑战,特别是在训练、优化和小对象性能方面。当前的检测器经过了几年的改进才解决了类似的问题,我们预计未来的工作将成功解决DETR的这些问题。
相关文章:

End-to-End Object Detection with Transformers(Detection Transformer)翻译
摘要 我们提出了一种新方法,将目标检测视为直接的集合预测问题。我们的方法简化了检测流程,有效消除了对许多手工设计组件的需求,如非极大值抑制过程或锚框生成,这些组件显式编码了我们对任务的先验知识。新框架称为检测变换器&a…...

uniapp打开地图直接获取位置
uniapp官网文档 https://en.uniapp.dcloud.io/api/location/open-location.html <view class"map-content" click.stop"kilometer(item)"><view class"km">{{item.distance||0}}km</view></view>import map from ../../…...
Qt的事件处理机制、信号和槽以及两者之间的区别
Qt的事件处理机制 Qt 的事件处理机制是其框架的核心部分之一,用于处理用户操作、系统事件以及其他各种事件。以下是 Qt 事件处理机制的关键组成部分和流程: 事件对象 (QEvent): 所有事件在 Qt 中都是通过事件对象来表示的。QEvent 是所有事…...

LSTM实战之预测股票
📈 用PyTorch搭建LSTM模型,轻松预测股票价格!🚀 Hey小伙伴们,今天给大家带来一个超级实用的项目教程——如何用PyTorch和LSTM模型来预测股票价格!🌟 🔍 项目背景 我们都知道股市是…...

30-50K|抖音大模型|社招3轮面经
情况介绍:我主要做nlp,也涉及到多模态和强化学习。现在大环境比较差,能投的公司不是很多,比如腾讯,主要还是高级别的,所以腾讯我就没投 抖音一面 1、聊项目。 2、AUC的两种公式是?你能证明这…...

ChatGPT首次被植入人类大脑:帮助残障人士开启对话
马斯克在脑机接口中最强大的竞争对手Synchron有了新的技术进展,他们首次将ChatGPT整合到其脑机系统中,以使瘫痪患者更容易控制他们的数字设备。Synchron凭借其独特的脑机接口(BCI)技术脱颖而出,该技术巧妙地运用了成熟…...

数据结构-常见排序的七大排序
1.排序的概念及其运用 1.1排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录…...
程序员学CFA——财务报告与分析(四)
财务报告与分析(四) 资产负债表资产负债表的构成和格式资产负债表的要素资产负债所有者权益 资产负债表的格式分层的资产负债表基于流动性的资产负债表 资产的计量属性资产负债表科目金融资产持有至到期投资交易性金融资产可供出售金融资产 商誉少数股东…...

【消息队列】kafka如何保证消息不丢失?
👏大家好!我是和风coding,希望我的文章能给你带来帮助! 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 📝点击 我的主页 还可以看到和风的其他内容噢&#x…...
不同随机数生成的含义
torch.manual_seed(all_args.seed) torch.cuda.manual_seed(all_args.seed) torch.cuda.manual_seed_all(all_args.seed) np.random.seed(all_args.seed) random.seed(all_args.seed) 这几种随机种子设置的含义如下: torch.manual_seed(all_args.seed): 设置PyTor…...
Jar工具完全指南:从入门到精通
Jar工具完全指南:从入门到精通的详尽教程 前言 欢迎来到Jar工具的完全指南!无论你是Java编程的初学者,还是经验丰富的开发者,掌握Jar工具都是必不可少的。Jar(Java Archive)是Java生态系统中的一个核心组…...
前端使用docx-preview展示docx + 后端doc转docx
文章目录 后端 doc 转 docxdcox - preview安装导入使用注意 最近菜鸟刚搞完签字,结果需求就加了,如果合同有附件(.doc.docx),签名就是签到附件里面,没有附件才是签到那个html里面! 这里附件签名…...

Vue3 组件通信
目录 create-vue创建项目 一. 父子通信 1. 父传子 2. 子传父 二. 模版引用(通过ref获取实例对象) 1.基本使用 2.defineExpose 三. 跨层通信 - provide和inject 1. 作用和场景 2. 跨层传递普通数据 3. 跨层传递响应式数据 4. 跨层传递方法 create-vue创建项目 npm ini…...
如何在Ubuntu 14.04上安装、配置和部署Rocket.Chat
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 Rocket.Chat 是一个使用 Meteor 构建的开源消息应用程序。它支持视频会议、文件共享、语音消息,具有完整的 API 等功能…...

ISO 26262中的失效率计算:IEC TR 62380-Section 15-Switches and keyboards
目录 概要 1 开关和键盘的分类 2 开关和键盘失效率的计算 2.1 Switches and keyboards 2.1.1 Base失效率 2.1.2 接触数量 2.1.3 温度循环De-rating系数 概要 IEC TR 62380《电子组件、PCBs和设备的可靠性预计通用模型》是涵盖电路、半导体分立器件、光电组件、电阻器、电…...
Linux安全与高级应用(五)深入探讨Linux Shell脚本应用:从基础到高级
文章目录 深入探讨Linux Shell脚本应用:从基础到高级引言一、Shell脚本基础知识1. Shell的作用与分类2. 编写第一个Shell脚本 二、Shell变量的使用1. 变量的类型与定义2. 引号的使用3. 位置变量与预定义变量 三、重定向与管道操作1. 重定向操作2. 管道操作 四、计划…...
Java中等题-解码方法(力扣)
一条包含字母 A-Z 的消息通过以下映射进行了 编码 : "1" -> A "2" -> B ... "25" -> Y "26" -> Z 然而,在 解码 已编码的消息时,你意识到有许多不同的方式来解码,因为有些…...

【Git】git 从入门到实战系列(二)—— Git 介绍以及安装方法
文章目录 一、前言二、git 是什么三、版本控制系统是什么四、本地 vs 集中式 vs 分布式本地版本控制系统集中式版本控制系统分布式版本控制系统 五、安装 git 一、前言 本系列上一篇文章【Git】git 从入门到实战系列(一)—— Git 的诞生,Lin…...

【QT 5 QT 6 构建工具qmake-cmake-和-软件编译器MSVCxxxvs MinGWxxx说明】
【QT 5报错:/xxx/: error: ‘class Ui::frmMain’ has no member named ‘xxx’-和-软件编译器MSVCxxxvs MinGWxxx说明】 1、前言2 、qt 中 Qmake CMake 和 QBS1-qmake2-Cmake3-QBS4-官网一些说法5-各自特点 3、软件编译套件1-Desktop Qt 6.7.2 llvm-mingw 64-bit2-…...

SD卡参数错误:深度解析与数之寻软件恢复实战
一、SD卡参数错误:数据与设备的隐形杀手 在数字化时代,SD卡作为便携存储设备,广泛应用于相机、手机、无人机及各类电子设备中,承载着人们珍贵的照片、视频、文档等重要数据。然而,SD卡在使用过程中,有时会…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...