DAB DETR 论文精度,并解析其模型结构

发布于:2023-01-20 ⋅ 阅读:(11) ⋅ 点赞:(0) ⋅ 评论:(0)

 DAB-DETR: DYNAMIC ANCHOR BOXESARE BETTER QUERIES FOR DETR

DAB-DETR:动态锚框是对DETR更好的查询

改进:锚点 >>> 锚框,即(x, y) >>> (x, y, w, h)

内容:分析了查询的作用

目录

一、摘要

二、结论

三、DAB的思想

四、相关工作

五、为什么一个位置先验可以加速训练?

六、DAB DETR模型结构

(1)改进的Transformer解码器

(2)直接学习锚框

(3)升级锚框

(4)宽度和高度调制的高斯核

(5)TEMPERATURE TUNING

七、实验

(1)DAB - Deformable - DETR

(2)固定x, y以获得更好的性能

(3)消融实验


一、摘要

在本文中,我们提出了一种新的使用动态锚框的DETR ( DEtect TRansformer )查询公式,并对DETR中查询的作用有了更深入的理解。这个新的公式直接使用方框坐标作为Transformer解码器中的查询,并逐层动态更新它们。使用 box 坐标不仅有助于使用显式的位置先验( x, y )来提高查询到特征的相似度,并消除DETR中的缓慢训练收敛问题,而且还允许我们使用 box 宽度和高度信息来调整位置注意力图。这样的设计清楚地表明,DETR中的查询可以以级联的方式逐层执行软ROI池化( soft ROI pooling )。因此,在相同设置下,它在MS-COCO基准测试中获得了DETR-like检测模型中的最佳性能,例如,使用ResNet50-DC5作为主干在50个epoch中训练的AP为45.7 %。我们还进行了大量的实验来证实我们的分析,并验证我们方法的有效性。

代码链接:https://github.com/IDEA-opensource/DAB-DETR

 二、结论

我们在本文中提出了一种新的使用DETR的动态锚框的查询表达式,并提供了对DETR中查询的作用的更深入的理解。使用锚框作为查询有几个优点,包括更好的位置先验和温度调节,大小调节的注意力以考虑不同尺度的对象,迭代的锚更新以逐步提高锚估计。这样的设计清楚地表明,DETR中的查询可以以级联的方式逐层执行软ROI池化。进行了大量的实验,有效地证实了我们的分析,并验证了我们的算法设计。

三、DAB的思想

以往的DETR变体模型尽管取得了所有进展,但在DETR中学习到的查询的作用仍然没有被完全理解或利用。虽然大多数先前的尝试使得DETR中的每个查询更明确地与一个特定的空间位置而不是多个位置相关联,但技术解决方案却大相径庭。例如,Conditional DETR通过调整基于内容特征的查询来学习条件空间查询,以便更好地与图像特征匹配《Conditional detr for fast training convergence》。高效的DETR引入了一个密集的预测模块来选择top-K对象查询《Efficient detr: Improving end-to-end objectdetector with dense prior》和Anchor DETR Formulates查询作为2D锚点《Anchor detr: Query design fortransformer-based detector》,两者都将每个查询与特定的空间位置相关联。类似地,Deformable DETR《Deformable detr:Deformable transformers for end-to-end object detection》直接将2D参考点视为查询,并在每个参考点上执行可变形的交叉注意力操作。但上述所有工作都只利用2D位置作为锚点,而没有考虑对象尺度。 

受这些研究的启发,我们仔细研究了Transformer解码器中的交叉注意力模块,并提出使用锚框,即4D锚框坐标( x , y , w , h)作为DETR中的查询并逐层更新。这种新的查询表达式通过同时考虑每个锚框的位置和大小,为交叉注意力模块引入了更好的空间先验,这也导致了更简单的实现和对DETR中查询作用的更深入的理解。

图1:DETR、Conditional DETR和我们提出的DAB - DETR的比较。为了清晰起见,我们只展示Transformer解码器中的交叉注意力部分。

  • ( a ) DETR在没有任何调整的情况下对所有层使用可学习的查询,这导致其训练收敛缓慢。
  • ( b ) Conditional DETR对每一层的可学习查询进行调整,主要是为了从图像特征图中为池化特征提供更好的参考查询点。
  • ( c ) DAB-DETR直接使用动态更新的锚框来提供一个引用查询点( x , y)和一个引用锚大小( w , h)来改进交叉注意力计算。我们用紫色标出了不同的模块。

这一提法背后的关键见解是,DETR中的每个查询由两部分组成:内容部分(解码器自注意力输出)和位置部分(例如DETR中的可学习查询)。交叉注意力权重通过查询与一组键的比较来计算,该组由两部分组成,即内容部分(编码图像特征)和位置部分(位置嵌入)。因此,Transformer解码器中的查询可以理解为基于查询到特征的相似性度量从特征图中池化特征( pooling features ),该相似性度量同时考虑了内容和位置信息。而内容相似度是为了池化语义相关的特征,位置相似度是为了在查询位置周围为池化特征提供位置约束。

这种注意力计算机制促使我们将查询表示为锚框,如图1 ( c )所示,允许我们使用锚框的中心位置( x , y)来池化中心周围的特征,并使用锚框大小( w , h)来调整交叉注意力图,使其适应锚框大小。此外,由于使用坐标作为查询,锚框可以逐层动态更新。这样,DETR中的查询可以实现为以级联的方式逐层执行 soft ROI pooling。

我们通过使用锚框大小来调节交叉注意力,为池化特征提供了更好的位置先验。由于交叉注意力可以从整个特征图中池化特征,因此为每个查询提供一个合适的位置先验,让交叉注意力模块关注目标对象对应的局部区域是至关重要的。它还可以促进加快DETR的训练收敛。大多数先前的工作通过将每个查询与特定位置相关联来改进DETR,但是它们假设一个固定大小的各向同性高斯位置先验,这对于不同尺度的对象是不合适的。利用每个查询锚框中可用的尺寸信息( w , h),我们可以将高斯位置先验调制为椭圆形。更具体地说,我们将x部分和y部分的宽度和高度分别从交叉注意力权重(在softmax之前)中分离出来,这有助于高斯先验更好地匹配不同尺度的对象。为了进一步改进位置先验,我们还引入了一个温度参数( temperature parameter )来调整位置注意的平坦度,这在以前的所有工作中都被忽略。

总之,我们提出的DAB-DETR ( Dynamic Anchor Box DETR )通过直接学习锚作为查询来提供一种新的查询形式。这个公式提供了对查询角色的更深入的理解,允许我们使用锚大小来调整 Transformer 解码器中的位置交叉注意力映射,并逐层执行动态锚更新。实验结果表明,在相同的COCO目标检测基准测试集上,DAB - DETR在同类DETR结构中取得了最好的性能。该方法在使用单个 ResNet - 50 模型作为骨架训练50个epoch时,可以达到45.7 %的AP。我们还进行了大量的实验来证实我们的分析,并验证我们方法的有效性。

四、相关工作

改进DETR的另一个方向是更深入地理解查询在DETR中的作用,这与我们的工作更相关。由于DETR中的可学习查询被用于为特征池化提供位置约束,因此大多数相关工作试图使DETR中的每个查询更明确地与特定的空间位置相关,而不是与vanilla DETR中的多个位置模式相关。例如,Deformable DETR ( Zhu等人, 2021年)直接处理2D参考点查询,并为每个参考点预测可变形采样点,以执行可变形交叉注意力操作。Conditional DETR 将注意力公式解耦,基于参考坐标生成位置查询。Efficient DETR 引入了密集预测模块来选择top - K位置作为对象查询。虽然这些工作将查询与位置信息联系起来,但并没有明确的使用锚点的公式。

不同于以往工作中假设可学习的查询向量包含 box 坐标信息,我们的方法基于一个新的视角,即查询中包含的所有信息都是 box 坐标。也就是说,锚框是DETR更好的查询。并发工作 Anchor DETR 还建议直接学习锚点,而它会像其他以前的工作一样忽略锚点宽度和高度信息。

除了DETR,《Sparse r-cnn: End-to-end object detectionwith learnable proposals》接通过学习框提出了稀疏检测器( asparse detector ),它与我们共享一个类似的 anchor formulation,但它抛弃了 Transformer 结构,并利用 hard ROI align 进行特征提取。表1 总结了相关工作和我们提出的DAB-DETR之间的主要区别。我们将我们的模型与相关工作在5个维度上进行比较:

  1. 如果模型直接学习锚点,如果模型预测参考坐标(在其中间阶段),
  2. 如果模型逐层更新参考锚点,
  3. 如果模型使用标准的密集交叉注意力,
  4. 如果调整注意力以更好地匹配不同尺度的对象,
  5. 如果模型逐层更新学习的查询。

表1 代表性相关模型与我们的DAB - DETR的比较

  • 术语" Learn Anchors ? "询问模型是否直接学习2D点或4D锚点作为可学习参数。
  • 术语"Reference Anchors"是指如果模型预测相对于参考点/锚的相对坐标。
  • 术语"Dynamic Anchors"表示模型是否逐层更新锚。
  • 术语"Standard Attention"表明模型是否在交叉注意力模块中利用了标准的密集注意力。
  • 术语"Object Scale-Modulated Attention"是指如果注意力被调制以更好地与对象尺度匹配。
  • 术语"Size-Modulated Attention"意味着如果注意力被调整以更好地与对象尺度匹配。
  • 术语" Update SpatialLearned Queries ? "是指如果学习的查询逐层更新。注意,Sparse RCNN并不是一个类似于DETR的架构,我们在此列出,以表示它们与我们类似的 anchor formulation。

五、为什么一个位置先验可以加速训练?

图2:DETR的编码器中的自注意力和解码器中的交叉注意力的比较。由于它们具有相同的键和值组件,唯一的区别来自于查询。编码器中的每个查询由图像特征(内容信息)和位置嵌入(位置信息)组成,而解码器中的每个查询由解码器嵌入(内容信息)和可学习的查询(位置信息)组成。两个模块之间的差异用紫色标出。

在加快DETR的训练收敛速度方面已经做了很多工作,但对于它们的方法为什么有效缺乏统一的认识。《Rethinking transformer-based set pre-diction for object detection》的研究表明,交叉注意力模块主要负责缓慢的收敛,但他们只是简单地删除了解码器,以便更快的训练。我们按照他们的分析来寻找交叉注意中的哪个子模块影响性能。对比编码器中的自注意力模块和解码器中的交叉注意力模块,我们发现它们的输入之间的关键差异来自于查询,如图2 所示。由于解码器嵌入被初始化为0,它们被投影到与第一个交叉注意力模块后的图像特征相同的空间。在那之后,它们将像编码器层中的图像特征一样,在解码器层中经历类似的过程。因此,根本原因很可能是由于可学习的查询。

  • 图3 a )原始DETR和带有固定查询的DETR的训练曲线。
  • 图3 b )原始DETR和DETR + DAB的训练曲线。
  • 我们运行每个实验3次,并绘制每个项目的平均值和95 %置信区间。 

图4 我们可视化了DETR、Conditional DETR和我们提出的DAB - DETR的位置查询和位置键之间的位置注意力。对( a )中的四个注意力图进行随机抽样,对于( b )和( c ),我们选择与( a )中查询位置相似的图。颜色越深,注意力权重越大,反之亦然。

  • ( a ) DETR 中的每个注意力图是通过学习到的查询和特征图的位置嵌入之间的点积计算得到的,可以有多种模式和非集中的注意力。
  • ( b ) Conditional DETR 中的位置查询以与图像位置嵌入相同的方式编码,从而生成类似高斯的注意力图。但是,它不能适应不同尺度的对象。
  • ( c ) DAB DETR 利用锚点的宽度和高度信息显式地调节注意力图,使其对物体大小和形状的适应性更强。被调制的注意力可以看作是帮助执行 soft ROI pooling

交叉注意力机制中两个可能的原因解释了模型训练收敛速度慢的原因:

  • 1 )由于优化的挑战很难学习到查询。
  • 2 )学习到的查询中的位置信息没有像用于图像特征的正弦位置编码那样被编码。

由于优化的挑战很难学习到查询?

为了看看这是否是第一个原因,我们重用来自DETR的学习良好的查询(保持它们固定),并且只训练其他模块。图3 ( a )中的训练曲线显示,固定查询只在很早的epoch(例如前25个epoch)中略微提高了收敛性。因此,查询学习(或优化)很可能不是关键的问题。

学习到的查询中的位置信息没有像用于图像特征的正弦位置编码那样被编码?

然后,我们转向第二种可能性,试图发现学习到的查询是否具有一些不希望的性质。由于学习到的查询用于过滤某些区域的对象,我们在图4 ( a )中可视化了学习到的查询与图像特征位置嵌入之间的位置注意力图。在让解码器聚焦于感兴趣的区域之前,可以将每个查询视为一个位置。虽然它们作为一种位置约束,但它们也具有不理想的特性:多个模式和几乎一致的注意力权重。例如,图4 ( a )顶部的两个注意力图具有两个或多个集中中心,当图像中存在多个物体时,很难对物体进行定位。图4 ( a )的底图集中于太大或太小的区域,因此无法在特征提取过程中注入有用的位置信息。我们猜想DETR中查询的多模式属性可能是其训练缓慢的根本原因,并且我们相信引入显式位置先验( explicit positional priors )来约束本地区域上的查询对于训练是可取的。为了验证这一假设,我们将DETR中的查询表达式替换为动态锚框,动态锚框可以强制每个查询集中于特定的区域,并将此模型命名为DETR + DAB。图3 ( b )中的训练曲线表明,与DETR相比,DETR + DAB在检测AP和训练/测试损失方面都有更好的性能。值得注意的是,DETR和DETR + DAB的唯一不同之处在于查询的公式化,并没有引入诸如300查询或焦点损失等其他技术。表明在解决DETR查询的多模态问题后,我们可以同时实现更快的训练收敛和更高的检测精度。

之前的一些工作也有类似的分析,并证实了这一点。例如,SMCA《Fast convergence ofdetr with spatially modulated co-attention》通过在参考点周围应用预定义的高斯映射来加速训练。Conditional DETR 使用显式位置嵌入作为位置查询进行训练,生成类似于高斯核的注意力图,如图4 ( b )所示。虽然显式位置先验在训练中可以获得良好的性能,但是它们忽略了对象的尺度信息。相比之下,我们提出的DAB - DETR显式地考虑了对象尺度信息以自适应地调整注意力权重,如图4 ( c )所示。

六、DAB DETR模型结构

(1)改进的Transformer解码器

 图5 DAB-DETR的框架的解码器

继 DETR ( 2020年 )之后,我们的模型是一个端到端的对象检测器,其中包括CNN主干、Transformer ( 2017年 )编码器和解码器以及框和标签的预测头。我们主要对解码器部分进行改进,如图5所示。

给定一幅图像,我们使用CNN主干和Transformer Encoders提取图像空间特征,以优化CNN特征。然后,双重查询(包括位置查询(锚框)和内容查询(解码器嵌入)被送入解码器,以探测与锚点对应且与内容查询具有相似模式的对象。双重查询被逐层更新,以逐渐接近目标真实对象。最终解码器层的输出用于预测头预测带有标签和框的对象,然后进行二分图匹配来计算DETR中的损失。

为了说明我们的动态锚框的通用性,我们还设计了一个更强的 DAB-Deformable-DETR,文章后面会讲到。

(2)直接学习锚框

针对查询在DETR中的作用,我们提出直接学习查询框或锚框,并从这些锚框中导出位置查询。每个解码器层有两个注意力模块,包括一个自注意力模块和一个交叉注意力模块,分别用于查询更新和特征探测。每个模块都需要查询、键和值来执行基于注意力的值聚合,但这些三元组的输入各不相同。

记  为第 q 个锚点,为其对应的内容查询和位置查询,其中 D 为解码器嵌入和位置查询的维数。

给定一个锚 A_{q},它的位置查询 P_{q} 公式为:

其中 PE 表示位置编码,用于从浮点数生成正弦嵌入,MLP 的参数在所有层之间共享。由于A_{q}是四元数,我们在这里重载PE运算符:

概念 Cat 表示串联函数。在我们的实现中,位置编码函数 PE 将浮点映射到一个具有 D / 2 维的向量:PE:。因此,函数 MLP 将二维向量投影到 D 维:MLP:,MLP 模块有两个子模块,每个子模块由一个线性层和一个ReLU激活组成,并在第一个线性层进行特征降维。 

在自注意力模块中,所有三个查询、键和值都具有相同的内容项,而查询和键包含额外的位置项:

受Conditional DETR的启发,在交叉注意力模块中,我们将位置和内容信息作为查询和键连接起来,这样就可以将内容和位置对查询到特征相似度的贡献解耦为查询和键之间的点积。为了重新缩放位置嵌入,我们也利用了条件spatialquery( Meng等人, 2021年)。更具体地说,我们学习一个,以获得以内容信息为条件的尺度向量,并使用它与位置嵌入进行逐元素乘法:

式中:为位置(x , y)处的图像特征,· 为逐元素乘法。查询和键中的位置嵌入都是基于2D坐标生成的,这使得比较位置相似性更加一致,就像前面的作品( Meng et al , 2021 ; Wang等人, 2021年)一样。 

(3)升级锚框

使用坐标作为查询进行学习使得逐层更新它们成为可能。相反,对于高维嵌入的查询,例如DETR( Carion等人, 2020年)和Con-ditional DETR( Meng等人, 2021年),很难执行逐层查询优化,因为不清楚如何将更新的锚转换回高维查询嵌入。

按照前面的实践(朱军等, 2021 ; Wang等人, 2021年),我们通过一个预测头预测相对位置(∆x ,∆y ,∆w ,∆h)后更新每层中的锚,如图5 所示。请注意,不同层中的所有预测头共享相同的参数。

(4)宽度和高度调制的高斯核

传统的位置注意力图被用作类高斯先验,如左图6 所示。但该先验对所有对象简单地假设为各向同性且大小固定,忽略了其尺度信息。为了改进位置先验,我们提出在注意力图中注入尺度信息。

原始位置注意力图中的查询关键字相似度计算为两个坐标编码的点积之和:

其中用于按照《Attention is all you need》中的建议重新调整值。我们通过将相对锚宽度和高度分别从其 x 部分和 y 部分中分割来调整位置注意力图(在softmax之前),以便在与不同尺度的对象更好地匹配之前平滑高斯: 

其中,是锚 A_{q} 的宽度和高度,是由计算得到的参考宽度和高度: 

这种调制的位置注意力有助于我们提取不同宽度和高度物体的特征,调制注意力的可视化结果如图6 所示。

(5)TEMPERATURE TUNING

对于位置编码,我们使用正弦函数,其定义为:

其中 T 是手工设计的温度,上标 2i 2i+1 表示编码向量中的索引。式( 8 )中的温度 T 影响位置先验的大小,如图7 所示较大的 T 导致更平坦的注意力图,反之亦然。需要注意的是,在自然语言处理中,温度 T 被硬编码为 10000,其中 x 是整数,表示每个单词在句子中的位置。然而,在DETR中,x 的值在 0 和 1 之间浮动,代表 bbox 坐标。因此,对于视觉任务来说,不同的温度是非常需要的。在这项工作中,我们在所有的模型中实证选择 T = 20。

七、实验

表2 展示了我们在COCO 2017验证集上的主要结果。我们将我们提出的DAB - DETRDETR ( Carion等人, 2020年)、Faster RCNN(任军等, 2017)、Anchor DETR ( Wang等人, 2021年)、SMCA ( Gao等人, 2021年)、Deformable DETR ( Zhu等人, 2021年)、TSP ( Sun et al , 2020)和Conditional DETR ( Meng等人, 2021年)进行比较。

表2:我们的DAB - DETR和其他检测模型的结果。除DETR外的所有DETR - like模型使用300个查询,DETR使用100个查询。带有上标*的模型使用3模式嵌入,如Anchor DETR ( Wang等人, 2021年)中所示。

(1)DAB - Deformable - DETR

 为了进一步证明我们的动态锚框的有效性,我们将我们的动态锚框设计添加到Deformable DETR ( Zhu等人, 2021年)2中,开发了DAB - Deformable - DETR。变形DETR与DAB -变形DETR的区别如图8 ( e )和( f )所示。Deformable DETR和DAB - Deformable - DETR的结果如表5 所示。与原始的Deformable DETR (第3行)相比,我们的DAB-Deformable-DETR (第4行)只修改了不超过10行的代码,性能显著提高( + 0.5 AP )。在本实验中,除查询公式外的所有其他设置完全相同。

图9:Deformable DETR和DAB - Deformable - DETR模型的训练对比。我们分别绘制了训练过程中AP的变化(左)、所有层的损失(中)和最后一层的损失(右)。与原始的可变形DETR模型(见左图)相比,DAB - Deformable - DETR在代码修改不超过10行的情况下获得了更好的性能。虽然DAB - Deformable - DETR的所有层的损失都比DeformableDETR (看到中间的身影)大,但是我们的模型在最后一层(见右图)的损失更低,这是最重要的,因为推理结果只取自最后一层。这两个模型在相同的标准R50多尺度设置下进行测试。 

我们还比较了图9 中的收敛速度。这表明我们提出的动态锚框也加快了(左图9 )的训练速度。我们认为性能更好的原因之一是学习到的查询的更新。我们在图9 的中间图中绘制了训练过程中总损失的变化,即所有解码器层的损失之和。有趣的是,它表明DAB-Deformable-DETR的总损耗大于Deformable DETR。然而,DAB - Deformable - DETR的最后一层的损耗低于Deformable DETR (图9右图),这是DAB - Deformable - DETR性能更好的一个很好的指标,因为推理结果只取自最后一层。

表5:Deformable - DETR和DAB - Deformable - DETR的结果比较。第1行和第2行中的模型从原文中复制,第3行和第4行中的模型在相同的标准 R50 多尺度设置下进行测试。Deformable DETR + 指的是迭代边界框精化的Deformable DETR模型,Deformable DETR + (开源)的结果由我们使用开源代码报告。第3行和第4行的唯一区别是查询的制定。 

(2)固定x, y以获得更好的性能

我们在本节中提供一个有趣的实验。众所周知,所有的盒子坐标x,y,h,w都是从数据中学习得到的。当我们用随机初始化来修复锚框的x,y时,模型的性能不断提高。固定x、y坐标的标准DAB - DETR和DAB - DETR的比较如表8 所示。注意,我们只在第一层固定x,y,以防止它们从数据中学习信息。但是x,y会在其他层进行更新。我们猜测随机初始化和固定的x,y坐标有助于避免过拟合,这可能是造成这种现象的原因。

表8:固定锚点中心x,y的DAB - DETR与DAB - DETR的比较。当用随机值固定查询的x,y时,模型的性能得到一致的提高。具有上标的模型使用Anchor DETR中的3个模式嵌入。 

(3)消融实验

表3:我们的DAB - DETR消融结果。所有模型都在ResNet - 50 - DC5主干上进行测试,其他参数与我们的默认设置相同。