目标检测论文阅读:DETR算法笔记

news2024/11/15 16:01:41

标题:End-to-End Object Detection with Transformers
会议:ECCV2020
论文地址:https://link.springer.com/10.1007/978-3-030-58452-8_13
官方代码:https://github.com/facebookresearch/detr
作者单位:巴黎第九大学、Facebook AI

文章目录

  • Abstract
  • 1 Introduction
  • 2 Related Work
    • 2.1 Set Prediction
    • 2.2 Transformers and Parallel Decoding
    • 2.3 Object Detection
  • 3 The DETR Model
    • 3.1 Object Detection Set Prediction Loss
    • 3.2 DETR Architecture
  • 4 Experiments
    • 4.1 Comparison with Faster R-CNN and RetinaNet
    • 4.2 Ablations
    • 4.3 DETR for Panoptic Segmentation
  • 5 Conclusion

Abstract

我们提出了一种新的方法,将目标检测视为一个直接的集合预测问题。我们的方法简化了检测pipeline,有效地消除了许多手工设计的组件,如非极大值抑制过程或锚框生成,这些组件显式地编码了我们关于任务的先验知识。新框架,称为DEtection TRansformer或DETR,其主要成分是一个基于集合的全局损失,它通过二分图匹配强制进行唯一预测,以及一个transformer编码器-解码器结构。给定一个固定的学习到的目标query小型集合,DETR推理目标和全局图像上下文的关系,并行地直接输出最终的预测集合。与许多其它的现代探测器不同,这个新模型在概念上很简单,并且不需要专门的库。DETR在具有挑战性的COCO目标检测数据集上证明了与公认的、高度优化的Faster R-CNN基线相当的准确性和实时性能。此外,DETR可以很容易地扩展,以统一的方式产生全景分割。我们表明,它明显优于有竞争力的基线。

1 Introduction

目标检测的目标是为每个感兴趣的目标预测一组边界框和类别标签。现代检测器以间接的方式解决这个集合预测任务,通过在一个大的proposal、锚框或窗口中心集合上定义代理回归和分类问题。它们的性能在很大程度上受到后处理步骤的影响,这些步骤可以去除近似重复的预测,通过锚框集合的设计以及将目标框分配给锚框的启发式方法。为了简化这些pipeline,我们提出了一种直接的集合预测方法来绕过这些代理任务。这种端到端的思想导致了诸如机器翻译或语音识别等复杂结构化预测任务的重大进展,但在目标检测方面还没有:先前的尝试要么添加了其它形式的先验知识,要么在具有挑战性的基准测试上没有被证明和强大的基线相比具有竞争力。本文旨在弥补这一差距。
我们通过将目标检测视为直接的集合预测问题来简化训练pipeline。我们采用了基于transformers的编码器-解码器结构,这是一种流行的序列预测结构。transformers的自注意力机制显式地建模了序列中元素之间的所有成对交互,使得这些结构特别适用于集合预测的特定约束,例如删除重复预测。
我们的DEtection TRansformer(DETR,见图1)一次性预测所有目标,并使用一个集合损失函数进行端到端的训练,该损失函数在预测和真值目标之间执行二分图匹配。DETR通过删除多个手工设计的编码了先验知识的组件来简化检测pipeline,如空间锚框或非最大抑制。与大多数现有的检测方法不同,DETR不需要任何定制的层,因此可以很容易地在包含标准ResNet和Transformer类的任何框架中复现。
与以往大多数直接的集合预测工作相比,DETR的主要特点是二分图匹配损失和(非自回归)并行解码transformers的结合。相比之下,以前的工作主要集中在使用RNN的自回归解码。我们的匹配损失函数唯一地将一个预测分配给一个真值目标,并且对预测目标的排列是不变的,因此我们可以并行地输出它们。
在这里插入图片描述
我们在一个最流行的目标检测数据集COCO上评估了DETR,该数据集与一个非常有竞争力的Faster R-CNN基线相比。Faster R-CNN自最初发布以来,经历了多次设计迭代,性能得到了极大的提升。我们的实验表明,我们的新模型取得了相当的性能。更确切地说,DETR在大目标上表现出明显更好的性能,这可能是由于transformer的非局部计算所导致的。然而,它在小目标上的性能较低。我们期望未来的工作能够像FPN对Faster R-CNN的发展那样,在这一方面进行改进。
DETR的训练设置与标准的目标检测器有许多不同。新模型需要超长的训练时间,并且会从transformer中的辅助解码损失中获益。我们深入探究了哪些成分对演示的性能至关重要。
DETR的设计理念很容易扩展到更复杂的任务。在我们的实验中,我们展示了在预训练的DETR上训练的一个简单的分割头在全景分割上超过了具有竞争力的基线,全景分割是一个具有挑战性的像素级识别任务,最近得到了流行。

2 Related Work

我们的工作基于几个领域的先前工作:集合预测的二分图匹配损失、基于transformer的编码器-解码器结构、并行解码和目标检测方法。

2.1 Set Prediction

目前还没有典型的深度学习模型来直接预测集合。基本的集合预测任务是多标签分类,其一对多的基线方法不适用于元素之间存在潜在结构的检测等问题(即近似相同的框)。这些任务的第一个困难是避免近似重复(near-duplicates)。当前大多数检测器使用诸如非极大值抑制之类的后处理来解决此问题,但直接的集合预测是免后处理的(postprocessing-free)。它们需要全局推理方案来建模所有预测元素之间的交互,以避免冗余。对于恒定大小(constant-size)的集合预测,稠密全连接网络是足够的,但成本很高。一般的做法是使用循环神经网络等自回归序列模型。在所有情况下,损失函数都应该按照预测的排列保持不变。通常的解决方法是在匈牙利算法的基础上设计一个损失,在真值和预测之间找到一个二分图匹配。这实现了排列不变性(permutation-invariance),保证了每个目标元素具有独一无二的匹配。我们遵循二分图匹配的损失方法。然而,与大多数先前的工作不同,我们跳出自回归模型,使用具有并行解码的transformers。

2.2 Transformers and Parallel Decoding

Transformers是由Vaswani等人提出的一种新的基于注意力机制的机器翻译结构单元。注意力机制是指从整个输入序列中聚合信息的神经网络层。Transformers引入了自注意力层,类似于非局部神经网络,通过扫描序列的每个元素,并通过聚合来自整个序列的信息来更新它。基于注意力机制的模型的主要优点之一是它们的全局的计算和理想的内存,这使得它们在长序列上比RNNs更合适。在自然语言处理、语音处理和计算机视觉等诸多问题中,Transformers正在取代RNN。
Transformers最早用于自回归模型,沿用早期的序列到序列(sequence-to-sequence)模型,逐个产生输出token。然而,在音频、机器翻译、单词表示学习以及最近的语音识别领域,令人望而却步的推理代价(与输出长度成正比,且难以分批处理)导致了并行序列生成的发展。我们也结合了transformers和并行解码,以在计算成本和执行集合预测所需的全局计算能力之间进行适当的权衡。

2.3 Object Detection

大多数现代目标检测方法都是相对于一些初始猜测做出预测。两阶段检测器关于proposal的框进行预测,而单阶段方法则关于锚框或者一个可能的目标中心的网格进行预测。最近的工作证明,这些方法的最终性能在很大程度上取决于这些初始猜测的确切设置方式。在我们的模型中,我们可以移除这种手工制作的过程,并通过使用关于输入图像而不是关于锚框的绝对框预测来直接预测检测集合,从而简化检测过程。
基于集合的损失。 一些目标检测器使用了二分图匹配损失。然而,在这些早期的深度学习模型中,不同预测之间的关系仅用卷积层或全连接层建模,手工设计的NMS后处理可以提高它们的性能。最近的检测器结合NMS,使用真值和预测之间的非唯一分配(non-unique assignment)的规则。
可学习的NMS方法和关系网络通过注意力显式地建模了不同预测之间的关系。使用直接的集合损失,它们不需要任何后处理步骤。然而,这些方法使用了额外的手工制作的上下文特征,如建议框的坐标,以有效地建模检测之间的关系,而我们则寻找减少模型中编码的先验知识的解决方案。
循环检测器。 与我们的方法最接近的是用于目标检测和实例分割的端到端集合预测。与我们类似,他们使用基于CNN激活的编码器-解码器结构的二分图匹配损失直接生成一组边界框。然而,这些方法仅在小数据集上进行了评估,并没有与现代的基线相比。尤其它们是基于自回归模型(更准确地说是RNNs)的,所以它们没有利用最近的并行解码的transformers。

3 The DETR Model

在检测中,两个要素对于直接的集合预测是必不可少的:①一个集合预测损失,它迫使预测和真值框之间唯一地匹配;②一个(在单次传播内)预测一组目标并建模它们之间关系的结构。我们在图2中详细描述了我们的结构。
在这里插入图片描述

3.1 Object Detection Set Prediction Loss

DETR在通过解码器的单次传播中推理一个固定大小为 N N N个预测的集合,其中 N N N被设置为明显大于图像中典型的目标数。训练的主要困难之一是根据真值对预测目标(类别、位置、尺寸)进行评分。我们的损失在预测和真值目标之间产生一个最优的二分图匹配,然后优化特定目标(边界框)的损失。
y y y表示目标的真值集合, y ^ = { y ^ i } i = 1 N \hat{y}=\{\hat{y}_i\}_{i=1}^N y^={y^i}i=1N表示 N N N个预测的集合。假设 N N N大于图像中目标的个数,我们将 y y y也看作是一个大小为 N N N的用 ∅ \varnothing (没有目标)填充过的集合。为了在这两个集合之间找到一个二分图匹配,我们寻找一个损失最小的 N N N个元素 σ ∈ S N \sigma\in\mathfrak{S}_N σSN的排列:
σ ^ = a r g   m i n σ ∈ S N ∑ i N L m a t c h ( y i , y ^ σ ( i ) ) \hat{\sigma}=\underset{\sigma\in\mathfrak{S}_N}{\mathrm{arg~min}}\sum_i^N\mathcal{L}_{\mathrm{match}}(y_i,\hat{y}_{\sigma(i)}) σ^=σSNarg miniNLmatch(yi,y^σ(i))其中, L m a t c h ( y i , y ^ σ ( i ) ) \mathcal{L}_{\mathrm{match}}(y_i,\hat{y}_{\sigma(i)}) Lmatch(yi,y^σ(i))是真值 y i y_i yi和索引为 σ ( i ) \sigma(i) σ(i)的预测之间的成对匹配损失(pair-wise matching cost)。遵循之前的工作,这个最优分配是用匈牙利算法高效计算的。
匹配损失同时考虑了类别预测以及预测框和真值框的相似度。真值集合中的每个元素 i i i可以看作 y i = ( c i , b i ) y_i=(c_i,b_i) yi=(ci,bi),其中, c i c_i ci是目标类别标签(可能会是 ∅ \varnothing ), b i ∈ [ 0 , 1 ] 4 b_i\in[0,1]^4 bi[0,1]4是定义真值框中心坐标和其相对于图像尺寸高度和宽度的向量。对于索引为 σ ( i ) \sigma(i) σ(i)的预测,我们定义类别 c i c_i ci的概率为 p ^ σ ( i ) ( c i ) \hat{p}_{\sigma(i)}(c_i) p^σ(i)(ci),预测框为 b ^ σ ( i ) \hat{b}_{\sigma(i)} b^σ(i)。利用这些记号,我们定义 L m a t c h ( y i , y ^ σ ( i ) ) \mathcal{L}_{\mathrm{match}}(y_i,\hat{y}_{\sigma(i)}) Lmatch(yi,y^σ(i)) − I { c i ≠ ∅ } p ^ σ ( i ) ( c i ) + I { c i = ∅ } L b o x ( b i , b ^ σ ( i ) ) -\mathbb{I}_{\{c_i\neq\varnothing\}}\hat{p}_{\sigma(i)}(c_i)+\mathbb{I}_{\{c_i=\varnothing\}}\mathcal{L}_{\mathrm{box}}(b_i,\hat{b}_{\sigma(i)}) I{ci=}p^σ(i)(ci)+I{ci=}Lbox(bi,b^σ(i))
这种寻找匹配的过程与现代检测器中用于匹配proposal或anchor到真值目标的启发式分配规则具有相同的作用。主要区别在于,我们需要为没有重复、直接的集合预测找到一对一的匹配。
第二步是计算损失函数,即上一步中匹配到的所有对的匈牙利损失。我们定义的损失类似于常见目标检测器的损失,即一个类别预测的负对数似然和后面要定义的一个框损失 L b o x ( ⋅ , ⋅ ) \mathcal{L}_{\mathrm{box}}(·,·) Lbox(⋅,⋅)的线性组合:
L H u n g a r i a n ( y , y ^ ) = ∑ i = 1 N [ − l o g   p ^ σ ^ ( i ) ( c i ) + I { c i ≠ ∅ } L b o x ( b i , b ^ σ ^ ( i ) ) \mathcal{L}_{\mathrm{Hungarian}}(y,\hat{y})=\sum_{i=1}^N[-\mathrm{log}~\hat{p}_{\hat{\sigma}(i)}(c_i)+\mathbb{I}_{\{c_i\neq\varnothing\}}\mathcal{L}_{\mathrm{box}}(b_i,\hat{b}_{\hat{\sigma}(i)}) LHungarian(y,y^)=i=1N[log p^σ^(i)(ci)+I{ci=}Lbox(bi,b^σ^(i))。其中, σ ^ \hat{\sigma} σ^是第1步中计算的最优分配。在实际操作中,我们将 c i = ∅ c_i=\varnothing ci=时的对数概率项降权10倍来考虑类不平衡。这类似于Faster R-CNN在训练过程中通过二次抽样来平衡正负proposal。注意,一个目标和 ∅ \varnothing 之间的匹配成本并不取决于预测,这意味着在这种情况下,损失是一个常数。在匹配损失中,我们使用概率 p ^ σ ^ ( i ) ( c i ) \hat{p}_{\hat{\sigma}(i)}(c_i) p^σ^(i)(ci)代替对数概率。这使得类别预测项与 L b o x ( ⋅ , ⋅ ) \mathcal{L}_{\mathrm{box}}(·,·) Lbox(⋅,⋅)可以同单位度量,并且我们观察到了更好的实验性能。
边界框损失。 匹配成本和匈牙利损失的第二部分是 L b o x ( ⋅ , ⋅ ) \mathcal{L}_{\mathrm{box}}(·,·) Lbox(⋅,⋅),它对边界框进行评分。不同于许多检测器关于一些初始猜测做框预测,我们直接进行框预测。这种方法在简化实现的同时,也带来了损失相对尺度的问题。最常用的 ℓ 1 \ell_1 1损失即使相对误差接近,对于小框和大框也会有不同的尺度。为了缓解这个问题,我们使用 ℓ 1 \ell_1 1损失和广义IoU损失的线性组合 L i o u ( ⋅ , ⋅ ) \mathcal{L}_{\mathrm{iou}}(·,·) Liou(⋅,⋅),它是尺度不变的。总的来说,我们的框损失 L b o x ( b i , b ^ σ ( i ) ) \mathcal{L}_{\mathrm{box}}(b_i,\hat{b}_{\sigma(i)}) Lbox(bi,b^σ(i))定义为 λ i o u L i o u ( b i , b ^ σ ( i ) ) + λ L 1 ∣ ∣ b i − b ^ σ ( i ) ∣ ∣ 1 \lambda_{\mathrm{iou}}\mathcal{L}_{\mathrm{iou}}(b_i,\hat{b}_{\sigma(i)})+\lambda_{\mathrm{L1}}||b_i-\hat{b}_{\sigma(i)}||_1 λiouLiou(bi,b^σ(i))+λL1∣∣bib^σ(i)1,其中 λ i o u , λ L 1 ∈ R \lambda_{\mathrm{iou}},\lambda_{\mathrm{L1}}\in\mathbb{R} λiou,λL1R是超参数。这两个损失通过batch内的目标数量进行归一化。

3.2 DETR Architecture

DETR的整体结构惊人地简单,如图2所示。它包含三个主要组成部分,我们将在下面描述:一个用于提取简练特征表示的CNN主干,一个编码器-解码器transformer,以及一个进行最终检测预测的简单前馈网络(feed forward network,FFN)。
与许多现代检测器不同,DETR可以在任何深度学习框架中实现,只要该框架提供了常见的CNN主干和transformer结构的实现,并且只需要仅仅几百行代码。在PyTorch中,DETR推理代码的实现可以少于50行。我们希望我们的方法的简洁性可以吸引新的研究人员加入检测界。
主干。 从初始图像 x i m g ∈ R 3 × H 0 × W 0 x_{\mathrm{img}}\in\mathbb{R}^{3×H_0×W_0} ximgR3×H0×W0(具有3个颜色通道。对输入图像进行批处理,使用足够的0来填充,保证它们都具有与该批里最大图像相同的维度 ( H 0 , W 0 ) (H_0,W_0) (H0,W0))开始,一个传统的CNN主干生成一个较低分辨率的激活图 f ∈ R C × H × W f\in\mathbb{R}^{C×H×W} fRC×H×W。我们一般使用的取值为 C = 2048 C=2048 C=2048 H , W = H 0 32 , W 0 32 H,W=\frac{H_0}{32},\frac{W_0}{32} H,W=32H0,32W0
Transformer编码器。 首先,一个1×1卷积将高层激活图 f f f的通道维度从 C C C降低到较小的维度 d d d。得到一个新的特征图 z 0 ∈ R d × H × W z_0\in\mathbb{R}^{d×H×W} z0Rd×H×W。编码器期望一个序列作为输入,因此我们将 z 0 z_0 z0的空间维度压缩成一维,得到一个 d × H W d×HW d×HW的特征图。每个编码器层都具有一个标准的结构,由一个多头自注意力模块和一个前馈网络(FFN)组成。由于Transformer结构是排列不变的,因此我们用固定的位置编码来补充它,这些位置编码被添加到每个注意力层的输入中。
Transformer解码器。 解码器遵循transformer的标准结构,使用多头自注意力和编码器-解码器注意力机制来转换大小为 d d d N N N个嵌入。与原始transformer不同的是,我们的模型在每个解码器层并行解码 N N N个目标,而Vaswani等人使用自回归模型,一次只预测输出序列的一个元素。由于解码器也是排列不变的,所以 N N N个输入嵌入必须不同才能产生不同的结果。这些输入嵌入是我们称为目标query的学习位置编码,类似于编码器,我们将它们添加到每个注意力层的输入中。解码器将这 N N N个目标query转换为输出嵌入。然后通过前馈网络将它们独立地解码为框的坐标和类别标签,得到 N N N个最终预测。利用这些嵌入(embeddings)的自注意力和编码器-解码器注意力,模型使用它们之间的成对关系对所有目标进行全局推理,同时能够使用整个图像作为上下文。
预测前馈网络(FFNs)。 最终的预测由一个具有ReLU激活函数和隐藏维数 d d d的3层感知器和一个线性投影层计算。FFN预测关于输入图像的归一化中心坐标、框的高度和宽度,线性层使用softmax函数预测类别标签。由于我们预测了一个固定大小的 N N N个边界框的集合,其中 N N N通常远大于图像中感兴趣目标的实际数量,因此使用一个额外的特殊类别标签 ∅ \varnothing 表示在一个slot中没有检测到目标。这个类别起到了类似于标准目标检测方法中的“背景”类的作用。
辅助解码损失。 我们发现在训练过程中,解码器里使用辅助损失是有帮助的,特别是帮助模型输出正确的每个类别的目标个数。每个解码器层的输出用一个共享的layer-norm归一化,然后馈送给共享的预测头(分类和框预测)。然后我们像惯常一样应用匈牙利损失进行监督。

4 Experiments

介绍了数据集和技术细节。

4.1 Comparison with Faster R-CNN and RetinaNet

在这里插入图片描述
对比实验,提升主要来自大目标,小目标落后很多。具体的实验结论可以参照原文。

4.2 Ablations

编码器层数。 我们通过改变编码器层数来评估全局的图像级自注意力的重要性。在没有编码器层的情况下,整体AP下降了3.9个点,在大目标下降更明显,为6.0AP。我们猜测,通过使用全局场景推理,编码器对于分离物体是重要的。在图3中,我们可视化了训练好的模型的最后一个编码器层的注意力图,聚焦于图像中的几个点。编码器似乎已经分离了实例,这可能简化了解码器的目标提取和定位。
在这里插入图片描述
解码器层数。 我们在每个解码层之后施加辅助损失,因此,预测FFNs被有意地训练来预测每个解码层输出中的目标。我们通过评估在解码的每个阶段将要预测的目标来分析每个解码器层的重要性(图4)。每层后性能都有提高,第一层和最后一层之间总共有非常显著的+8.2/9.5AP提高。
在这里插入图片描述
DETR基于集合损失,在设计上不需要NMS。为了验证这一点,我们对每个解码器后的输出执行一个带有默认参数的标准NMS过程。NMS提高了第一个解码器的预测性能。这可以解释为transformer的单个解码层无法计算输出元素之间的任何交叉关系(cross-correlations),因此容易对同一目标进行多次预测。在第二层和后续层中,激活后的自注意力机制允许模型抑制重复预测。我们观察到NMS带来的改善随着深度的增加而减小。它在最后一层损害了AP,因为它错误地删除了真正的正预测。
与可视化编码器注意力类似,我们在图6中可视化了解码器注意力,为每个预测目标绘制不同颜色的注意力图。我们观察到解码器注意力是相当局部的,这意味着它主要关注目标的四肢,如头部或腿部。我们猜测编码器通过全局注意力分离出实例后,解码器只需要关注边缘来提取类别和目标边界。
在这里插入图片描述
FFN的重要性。 tranformers内部的FFN可以看作是1×1的卷积层,使得编码器类似于注意力增强卷积网络。我们尝试将其完全移除,只在transformer层留下注意力。通过将网络参数量从41.3M减少到28.7M,transformer只剩下10.8M,性能下降了2.3AP,从而得出FFN对于取得好的结果很重要。
位置编码的重要性。 在我们的模型中有两种位置编码:空间位置编码和输出位置编码(目标query)。我们用固定编码和可学习编码的各种组合进行实验,结果见附录。输出位置编码是必需的,不能被删除,所以我们在解码器输入传播一次,或者在每个解码器注意力层添加query。在第一个实验中,我们完全去除空间位置编码,并在输入传播输出位置编码,有趣的是,模型仍然达到了32AP以上,比基线损失了7.8AP。然后,在输入一次性传播固定的正弦空间位置编码和输出编码,正如原始的transformer一样,发现这比直接在注意力传播位置编码导致了1.4AP下降。传播给注意力的可学习空间编码也给出了类似的结果。令人惊讶的是,我们发现不在编码器中传播任何空间编码只会导致1.3AP的微小AP下降。当我们将编码传播给注意力时,它们是跨所有层共享的,并且输出编码(目标query)总是被学习的。
通过这些消融,我们得出结论,transformer里的组件:编码器中的全局自注意力、FFN、多个解码器层和位置编码,都对最终的目标检测性能有重要贡献。
不可见的实例数的泛化。 COCO中的一些类别在同一幅图像中的多个同类实例中没有得到很好的表示。例如,训练集中没有长颈鹿数量超过13只的图像。我们创建了一个合成图像来验证DETR(见图5)的泛化能力。我们的模型能够在明显不符合分布的图像上找到全部24只长颈鹿。本实验证实了每个目标query都不存在较强的类别专门性(class-specialization)。
在这里插入图片描述

4.3 DETR for Panoptic Segmentation

全景分割最近引起了计算机视觉界的广泛关注。类似于Faster R-CNN到Mask R-CNN的扩展,DETR可以通过在解码器输出上方添加一个掩码头进行自然地扩展。在本节中,我们证明了这样一个头部可以用来产生全景分割,以统一的方式处理stuff和thing类别。我们在COCO数据集的全景标注上进行了实验,该数据集除了80个thing类别外,还有53个stuff类别。
我们使用相同的配方,在COCO上训练DETR来预测stuff和thing类别周围的框。为了使训练成为可能,需要预测框,因为匈牙利匹配是使用框之间的距离计算的。我们还添加了一个掩码头,为每个预测框预测一个二进制掩码,如图7所示。它将每个目标的ransformer解码器的输出作为输入,并在编码器的输出上计算该嵌入的多头(有 M M M个头)注意力分数,以小分辨率生成每个目标的 M M M个注意力热图。为了进行最终的预测并提高分辨率,采用了类似FPN的结构。更多细节参见附录。掩码的最终分辨率为stride4,每个掩码使用DICE/F-1损失和Focal Loss独立监督。
掩码头可以联合训练,也可以分两步训练,即DETR只训练框,然后冻结所有权重,只训练25个epoch的掩码头。实验上,这两种方法给出了类似的结果,我们报告了使用后一种方法的结果,因为它的计算量较小。
为了预测最终的全景分割,我们只需在每个像素的掩码得分上使用一个argmax,并将相应的类别分配给结果掩码。这个过程保证了最终的掩码没有重叠,因此DETR不需要启发式步骤来对齐不同的掩码。
在这里插入图片描述
在这里插入图片描述
具体的训练细节和实验结论可以参照原文。

5 Conclusion

我们提出了DETR,一种新的基于transformers和二分图匹配损失的直接集合预测目标检测系统设计。该方法在具有挑战性的COCO数据集上取得了与最优的Faster R-CNN基线相当的结果。DETR实现简单,具有灵活的结构,易于扩展到全景分割,具有竞争性的结果。此外,它在大目标上取得了显著更好的性能,这可能是由于自注意力对全局信息的处理。
这种新的检测器设计也带来了新的挑战,特别是在小目标的训练、优化和性能方面。目前的检测器需要几年的改进来应对类似的问题,我们期望未来的工作能够成功地解决这些问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356656.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】进程替换

文章目录进程程序替换替换原理替换函数函数返回值函数命名理解在makefile文件中一次生成两个可执行文件总结:程序替换时运行其它语言程序进程程序替换 程序要运行要先加载到内存当中 , 如何做到? 加载器加载进来,然后程序替换 为什么? ->冯诺依曼 因为CPU读取数据的时候只…

【原创】java+swing+sqlserver药品管理系统设计与实现

之前数据库都是用的mysql,今天我们使用sqlserver在配合swing来开发一个药品管理系统。方便医院工作人员进行药品的管理,基础功能基本都是一些增删改查操作。 功能分析: 药品管理系统主要提供给管理员和员工使用,功能如下&#x…

[python]win10安装gym

anconda3里面安装: pip install gym[atari,accept-rom-license]0.26.1 AutoRom 测试结果: import gym envgym.make(Assault-v4,render_modehuman) env.reset() for _ in range(100000): actionenv.action_space.sample() env.step(action) env.c…

数据结构——算法的时间复杂度

🌇个人主页:_麦麦_ 📚今日名言:生命中曾经有过的所有灿烂,都终究需要用寂寞来偿还。——《百年孤独》 目录 一、前言 二、正文 1.算法效率 1.1如何衡量一个算法的好坏 1.2算法的复杂度 2. 时间复杂度 2.1时间复杂度的…

元胞自动机

文章目录前言文献阅读摘要主要贡献方法框架实验结论元胞自动机元胞自动机是什么?构成及规则案例及代码实现总结前言 This week,the paper proposes a Multi-directional Temporal Convolutional Artificial Neural Network (MTCAN) model to impute and forecast P…

部署dapr的辛酸历程

前言dapr大概的了解,个人理解他就是一个分布式服务的管理,把微服务常用的组件(缓存,消息中间件、分布式锁、安全id4等)和监控以及服务注册、发现等等一系列功能以一个很抽象的方式管理起来。可能我们部署微服务用consul、ocelot、polly套件、…

DDD单根 聚合根 实体 值对象

前言2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity in the Heart of Software (领域驱动设计),简称Evans DDD。快二十年的时间,领域驱动设计在不断地发展,后微服务时代强调的东西,在国…

Nginx网站服务及优化

Nginx网站服务及优化一、简介1、Nginx概述2、Nginx和Apache的优缺点比较3、Nginx和Apache最核心的区别二、Linux中的I/O三、Nginx编译安装详细1、关闭防火墙、安装依赖关系2、新建用户nginx便于管理3、将压缩包传入到/opt目录下,编译安装4、做软连接并启动nginx5、创…

软件测试简历个人技能和项目经验怎么写?(附项目资料)

目录 前言 个人技能 项目实战经验 项目名称:苏州银行项目(webapp) 项目描述: 项目名称:中国平安项目(webapp) 项目描述: 项目名称:苏宁易购项目(webapp&a…

软件体系结构(期末复习)

文章目录软件体系结构软件体系结构概论软件体系结构建模软件体系结构风格统一建模语言基于体系结构的软件开发软件体系结构 软件体系结构概论 软件危机是指计算机软件的开发和维护过程中遇到的一系列严重问题。 软件危机的表现: 软件危机的原因: 软件工程的基本要素&#xf…

轻松上手nacos使用

三步上手nacos使用1.为什么使用nacos?2.如何使用nacos1.为什么使用nacos? 1.服务发现中心。 微服务将自身注册至 Nacos,网关从 Nacos 获取微服务列表。 2.配置中心。 微服务众多,它们的配置信息也非常复杂,为了提高系统的可维护性&#xf…

每天一个linux命令---awk

awk命令 1. 简介 awk是一种处理文本文件的语言,是一个强大的文本分析工具,grep、sed、awk并称为shell中文本处理的三剑客。 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho&am…

1.OCR--文本检测算法FCENet

文章目录1.简介2.主要工作2.1 傅里叶轮廓嵌入(Fourier Contour Embedding)2.2 FCE模型3.代码实现参考资料欢迎访问个人网络日志🌹🌹知行空间🌹🌹 论文:Fourier Contour Embedding for Arbitrary-Shaped Text Detection 1.简介 这…

设计模式之中介模式与解释器模式详解和应用

目录1 中介模式详解1.1 中介模式的定义1.1.1 中介者模式在生活场景中应用1.1.2 中介者模式的使用场景1.2 中介模式的通用实现1.2.1 类图设计1.2.2 代码实现1.3 中介模式应用案例之聊天室1.3.1 类图设计1.3.2 代码实现1.4 中介者模式在源码中应用1.4.1 jdk中Timer类1.5 中介者模…

logd守护进程

logd守护进程1、adb logcat命令2、logd守护进程启动2.1 logd文件目录2.2 main方法启动3、LogBuffer缓存大小3.1 缓存大小优先级设置3.2 缓存大小相关代码位置android12-release1、adb logcat命令 命令功能adb bugreport > bugreport.txtbugreport 日志adb shell dmesg >…

kafka-11-kafka的监控工具和常用配置参数

kafka官方文档 参考Kafka三款监控工具比较 1 查看kafka的版本 进入kafka所在目录,通过查看libs目录下的jar包。 2.11是scala的版本,2.0.0是kafka的版本。 测试环境 #systemctl start zookeeper #systemctl start kafkka 2 kafka的常用配置 Kafka使用…

SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】

SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】 目录SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】一、创建一个SpringBoot项目二、修改pom.xml中SpringBoot的版本三、配置文件3.1 application-dev.ym…

2.TCP/UDP什么时候选择,HTTP,使用TCP/UDP的协议有哪些,TCP三次握手四次挥手大概流程,为什么要三次握手.

文章目录1.什么时候选择 TCP,什么时候选 UDP?2. HTTP 基于 TCP 还是 UDP?3.使用 TCP 的协议有哪些?使用 UDP 的协议有哪些?4.TCP 三次握手和四次挥手(非常重要、传输层)5.为什么要三次握手?1.什么时候选择 TCP,什么时候选 UDP? UDP 一般…

Spring Cloud Nacos实战(五)- 命名空间分组和DataID三者关系

Nacos命名空间分组和DataID三者关系 名词解释 命名空间(Namespace) ​ 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发…

Kubernetes一 Kubernetes之入门

二 Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应…