Conditional DETR论文笔记
原文链接
[2108.06152] Conditional DETR for Fast Training Convergencehttps://arxiv.org/abs/2108.06152
原文笔记
What
《Conditional DETR for Fast Training Convergence》
这个工作也是针对于DETR Query的工作 用于解决DETR训练收敛慢(Object query需要长时间才能建立能有效感知图片信息的注意力图,这主要是是因为:1、Object Query的初始化与image feature的无关初始化,2、未能指定Object Query中的位置嵌入正确的关注指定的区域)
Why
DETR存在以下问题
1、对于模型训练时间长,主要原因有两方面,一个是大量的注意力计算,一个是模型的结构复杂,参数量多
2、模型的结构复杂,参数量多,收敛的慢:这是由于decoderquery的全0初始化,导致必须要6个decoder去进行cross的信息交互(该论文仍然采用6层的解码器)
3、检测小物体效果不好:DETR是因为不设计多尺度特征,而这个问题并没有解决(该论文仍然采用没有关注多尺度的注意力)
Challenge
检测框的高回归率,分类结果的高准确率
Idea
1、仍然使用全局密集注意力,并提出了一种改进的解码器交叉注意机制来加速训练过程。
(其实他这里是说的比较好听是提出新的解码器交叉注意力机制,实际上是改了一下key进而query的内容编码的组合方式(从add变成了concat,进而将他的最终的交叉注意力权重就可以变成两部分,一部分是内容注意力权重,一部分是空间注意力权重)
2、对于本文提出的重点内容——空间注意力,核心是这段话:一个重要的任务是从前一个解码器层的嵌入 f 计算空间查询 pq。我们首先确定不同区域的空间信息由解码器嵌入和参考点这两个因素共同决定。然后我们展示了如何将它们映射到嵌入空间,形成查询 pq ,以便空间查询与key的2D坐标映射到的空间位于同一空间中。(在第一个交叉注意力层中,没有解码器内容嵌入,我们基于 DETR 实现 [3] 进行了简单的更改:将对象查询(位置嵌入)预测的位置嵌入连接到原始查询(键)。)
3、具体的计算过程见下边的原文
再一个就是
文中的 decoder embedding指的是detr中的tgt,content query指的是detr中的query的pos_embed(也被称为object query)
原文翻译
Abstract
最近开发的DETR方法将变压器编码器和解码器架构应用于目标检测,取得了良好的性能。在本文中,我们解决了关键问题,训练收敛缓慢,并提出了一种条件交叉注意机制来实现快速DETR训练。我们的方法的动机是 DETR 中的交叉注意力高度依赖于内容嵌入来定位四肢并预测框,这增加了对高质量内容嵌入的需求,从而增加了训练难度。
我们的方法名为条件 DETR,从解码器嵌入(decoder embedding)中学习条件空间查询(a conditional spatial query),用于解码器多头交叉注意力。好处是,通过条件空间查询,每个交叉注意力头都能够处理包含不同区域的波段,例如对象末端或对象框内的区域。这缩小了空间范围,用于定位不同区域用于对象分类和框回归的,从而放松了对内容嵌入的依赖并简化了训练。实证结果表明,对于主干R50和R101,条件DETR收敛速度快6.7倍,对于更强的主干DC5-R50和DC5-R101快10倍。代码可在https: //github.com/Atten4Vis/ConditionalDETR获得。
1. Introduction
检测变压器(DETR)方法[3]将变压器编码器和解码器架构应用于目标检测,取得了良好的性能。它有效地消除了对许多手工制作的组件的需求,包括非最大抑制和锚生成。
DETR 方法在训练中收敛缓慢,需要 500 个训练时期才能获得良好的性能。最近的工作,可变形DETR[53],通过将全局密集注意力(自注意力和交叉注意力)替换为处理一小组键采样点并使用高分辨率和多尺度编码器的可变形注意力来处理这个问题。相反,我们仍然使用全局密集注意力,并提出了一种改进的解码器交叉注意机制来加速训练过程。
我们的方法的动机是对内容嵌入的高度依赖性和交叉注意中的空间嵌入做出的微小贡献。DETR [3] 中的实证结果表明,如果从第二个解码器层中删除键中的位置嵌入和对象查询,并且仅使用键和查询中的内容嵌入,则检测 AP 仅仅略有下降 1。
图 1(第二行)显示,在 50 个 epoch 训练的 DETR 中,来自交叉注意力的空间注意力权重图。可以看到,四个映射中的两个不能正确地突出相应四肢的波段,因此,在缩小内容查询的空间范围以精确定位四肢方面很弱。原因是(i)空间查询,即对象查询,只给出一般的注意权重图,而不利用特定的图像信息;(ii)由于训练轮数少,内容查询不够强,无法匹配空间键,因为它们也用于匹配内容键。这增加了对高质量内容嵌入的依赖,从而增加了训练难度。
我们提出了一种条件DETR方法,该方法从相应的先前解码器输出嵌入中学习每个查询的条件空间嵌入,以形成所谓的条件空间查询用于解码器多头交叉注意。通过将用于回归对象框的信息映射到嵌入空间来预测条件空间查询,这与键的二维坐标也映射到的空间相同。
我们凭经验观察到,使用空间查询和键,每个交叉注意力头在空间上关注包含对象四肢或对象框内的区域(图 1,第一行)。这缩小了内容查询的用于定位有效区域去分类和预测边界框的空间范围,因此,放宽了对内容嵌入的依赖,训练更容易。实验结果表明,对于主干R50和R101,条件DETR收敛速度快6.7倍,对于更强的主干DC5-R50和DC5-R101快10倍。图2给出了条件DETR和原始DETR[3]的收敛曲线。
2. Related Work
Anchor-based and anchor-free detection.大多数现有的对象检测方法都是从精心设计的初始猜测中进行预测。有两个主要的初始猜测:锚框或对象中心。基于锚框的方法继承了基于提议的方法 Fast R-CNN 的想法。示例方法包括Faster R-CNN[9]、SSD[26]、YOLOv2[31]、YOLOv3[32]、YOLOv4[1]、RetinaNet[24]、Cascade R-CNN[2]、Libra R-CNN[29]、TSD[35]等。
无锚检测器预测对象中心附近的点的框。典型的方法包括YOLOv1[30]、CornerNet[21]、ExtremeNet[50]、CenterNet[49,6]、FCOS[39]等[23,28,52,19,51,22,15,46,47]。
DETR and its variants.DETR成功地将变压器应用于目标检测,有效地消除了对许多手工设计的组件的需求,如非最大抑制或初始猜测生成。由全局编码器自注意引起的高计算复杂度问题在自适应聚类变压器[48]中和在可变形DETR[53]中的稀疏注意处理。
另一个关键问题,训练收敛缓慢,引起了最近的许多研究关注。TSP(基于变压器的集合预测)方法[37]消除了交叉注意模块,并结合了FCOS和R-CNN样检测头。可变形 DETR [53] 采用可变形注意力,它关注从内容嵌入中学习到的稀疏位置,以取代解码器交叉注意力。
与我们的方法同时进行的空间调制共同注意 (SMCA) 方法 [7] 非常接近我们的方法。它使用从解码器嵌入学习的几个(移位)中心周围的高斯图调制 DETR 多头全局交叉注意力,以更多地关注估计框内的几个区域。相比之下,所提出的条件 DETR 方法从解码器内容嵌入中学习条件空间查询,并在不手工制作注意力衰减的情况下预测空间注意力权重图,这突出了框回归的四个末端,以及对象内部的不同区域进行分类。
Conditional and dynamic convolution.所提出的条件空间查询方案与条件卷积核生成有关。动态滤波网络[16]从输入中学习卷积核,应用于CondInst[38]和SOLOv2[42]中的实例分割,用于学习依赖于实例的卷积核。CondConv[44]和动态卷积[4]将卷积核与输入学习到的权值混合。SENet [14], GENet [13] abd Lite-HRNet [45] 从输入中学习通道权重。
这些方法从输入中学习卷积核权重,然后将卷积应用于输入。相比之下,我们的方法中的线性投影是从解码器嵌入中学习的,用于表示位移和缩放信息。
Transformers.transformer模型依赖注意力机制,自注意力和交叉注意力,去建立输入和输出之间的全局依赖关系。有几种方法与我们的方法密切相关。高斯变压器[11]和T-GSA(具有高斯加权自我注意的变压器)[18],然后是SMCA[7],根据目标符号和上下文符号与学习或人工高斯方差之间的距离衰减注意权重。与我们的类似,TUPE [17] 也从空间注意力权重和内容注意力权重计算注意力权重。相反,我们的方法主要关注高斯函数以外的可学习形式的注意力衰减机制,并可能有利于语音增强[18]和自然语言推理[11]。
3. Conditional DETR
3.1. Overview
Pipeline.所提出的方法遵循检测转换器 (DETR),这是一种端到端的对象检测器,无需 NMS 或锚点生成即可一次预测所有对象。该架构由一个 CNN 主干、一个转换器编码器、一个转换器解码器和对象类和框位置预测器组成。Transformer 编码器旨在改进 CNN 主干输出的内容嵌入。它是多个编码器层的堆栈,其中每一层主要由自注意力层和前馈层组成。
Transformer 解码器是一堆解码器层。每个解码器层,如图 3 所示,由三个主要层组成:(1)用于去除重复预测的自注意力层,该层执行嵌入之间的交互,从前一个解码器层输出并用于类和框预测,(2)一个交叉注意力层,聚合编码器的输出来细化解码器嵌入以改进类和框预测,以及(3)前馈层。
Box regression.从每个解码器嵌入预测一个候选框,如下所示,
这里,f 是解码器嵌入。b 是一个四维向量 [bcx bcy bw bh]⊤,由框中心、框宽度和框高度组成。sigmoid() 用于将预测 b 归一化到 [0, 1] 的范围内。FFN() 旨在预测非归一化框。s 是参考点的非归一化 2D 坐标,在原始 DETR 中为 (0, 0)。在我们的方法中,我们考虑两种选择:学习参考点 s 作为每个候选框预测的参数,或从相应的对象查询中生成它。
Category prediction.每个候选框的分类分数也由通过 FNN 嵌入的解码器预测,e = FFN(f)。
Main work.交叉注意力机制目的在于定位不同的区域,为了框检测定位四个端点,定位框内部的区域去进行物体分类,并且聚合相应的嵌入,我们提出一个条件交叉注意力机制,通过引入条件空间查询来提高定位能力并且加快训练过程。
3.2. DETR Decoder Cross-Attention
DETR 解码器交叉注意机制接受三个输入:查询、键和值。每个键都是通过相加一个内容键ck(来自编码器的内容嵌入输出)和空间键pk(对应归一化2D坐标的位置嵌入)来形成的。值由内容嵌入组成,像内容键一样,他们都使来自于编码器的输出。
在原始 DETR 方法中,每个查询都是通过相加内容查询 cq(解码器自注意力的嵌入输出)和空间查询 pq(即对象查询 oq )来形成的。在我们的实现中,有 N = 300个对象查询,相对应的有N=300个 查询 每个查询在每一个解码器层输出一个候选的检测结果
注意力权重基于查询和键之间的点积,用于注意力权重计算,
3.3. Conditional Cross-Attention
所提出的条件交叉注意机制通过拼接内容查询 cq (解码器自注意力输出)和空间查询 pq 来形成查询。对应的,键形成为内容键ck和空间键pk的拼接。
交叉注意力权重由两部分组成,内容注意力权重和空间注意力权重。这两个权重来自两个点积、内容和空间点积,
与原始 DETR 交叉注意不同,我们的机制分离了内容和空间查询的作用,以便空间查询和内容查询分别关注空间和内容注意力权重。
另一个重要的任务是从前一个解码器层的嵌入 f 计算空间查询 pq。我们首先确定不同区域的空间信息由解码器嵌入和参考点这两个因素共同决定。然后我们展示了如何将它们映射到嵌入空间,形成查询 pq ,以便空间查询与key的2D坐标映射到的空间位于同一空间中。
The decoder embedding contains the displacements
解码器嵌入包含不同区域相对于参考点的位移。等式 1 中的框预测过程包括两个步骤:(1)预测相对于非归一化空间中的参考点的框,以及(2)将预测框归一化到 [0, 1] 的范围内。
步骤 (1) 表示解码器嵌入 f 包含四个末端(形成框)相对于非归一化空间中的参考点 s 的位移。这意味着嵌入 f 和参考点 s 都需要确定不同区域的空间信息、四肢以及用于预测分类分数的区域。
Conditional spatial query prediction.
我们从嵌入 f 和参考点 s 预测条件空间查询,
使其与将键的归一化2D坐标映射到的位置空间对齐,该过程如图 3 的灰色阴影区域所示。
我们对参考点 s 进行归一化,然后将其映射到 256 维正弦位置嵌入,其方式与键位置嵌入相同:
然后,我们通过由可学习的线性投影 + ReLU + 可学习的线性投影组成的 FFN 将解码器嵌入 f 中包含的位移信息映射到同一空间中的线性投影:T = FFN(f)。
条件空间查询是通过将参考点转换到嵌入空间计算得到的Pq=Tps.我们选择选择简单并且计算高效的投影矩阵,即一个对角矩阵。这个256个对角元素被写作向量λq.条件空间查询通过下式的元素间乘法计算得到:
Multi-head cross attention.在 DETR [3] 之后,我们采用标准的多头交叉注意机制。对象检测通常需要隐式或显式地定位四个对象末端,以进行准确的框回归,并对对象区域进行定位,以实现准确的对象分类。多头机制有利于解开定位任务。
我们通过将查询、键和值 M = 8 次通过可学习的线性投射层投影到低维来执行多头并行注意力。空间查询和内容查询(键)通过不同的线性投影层分别投影到每个头部。值的投影与原始 DETR 相同,这个相同仅适用于内容。
3.4Visualization and Analysis
Visualization.图 4 显示了每个头部的注意力权重图:空间注意力权重图、内容注意力权重图和组合注意力权重图。这些映射在空间点积 p⊤q pk、内容点积 c⊤q ck 和组合点积 c⊤q ck + p⊤q pk 上进行归一化。我们展示了 8 个地图中的 5 个,其他三个是重复项,对应于底部和顶部末端,以及对象框 4 内的一个小区域。
我们可以看到,每个头部的空间注意力权重图能够定位一个不同的区域,一个区域包含一个四肢或对象框内的区域。有趣的是,对应于四肢的每个空间注意力权重图都突出了与对象框的相应边缘重叠的空间波段。对象框内区域的其他空间注意力图仅突出显示一个小区域,其表示可能已经编码了足够的信息以进行对象分类。
四肢对应的四个头部的内容注意力权重图除了四肢外,还突出了分散的区域。空间和内容映射的组合过滤掉了其他亮点,并保留四肢亮点以实现准确的框回归。
Comparison to DETR.图 1 显示了我们的条件 DETR(第一行)和使用 50 个 epoch(第二行)训练的原始 DETR 的空间注意力权重图。我们的方法的映射是通过对空间键和查询之间的点积进行软极大归一化来计算的,Pq⊤Pk。DETR的映射是通过软最大值计算的,用空间键(oq + cq)⊤pk对点积进行归一化。
图 1 显示了我们的条件 DETR(第一行)和使用 50 个 epoch(第二行)训练的原始 DETR 的空间注意力权重图。我们的方法的映射是通过对空间键和查询之间的点积进行软极大归一化来计算的,Pq⊤Pk。DETR的映射是通过软最大值计算的,用空间键(oq + cq)⊤pk对点积进行归一化。
可以看出,我们的空间注意力权重图准确地定位了四个四肢的不同区域。相比之下,具有 50 个 epoch 的原始 DETR 的映射无法准确定位两个四肢,500 个训练时期(第三行)使内容查询更强,导致精确定位。这意味着很难学习内容查询 cq 作为两个角色5:同时匹配内容键和空间键,因此需要更多的训练时期。
Analysis.图 4 所示的空间注意力权重图表明,用于形成空间查询的条件空间查询至少有两个影响。(i) 将突出显示位置转换为四个末端和对象框内的位置:有趣的是,突出显示的位置在空间上类似地分布在对象框中。(ii) 缩放四肢高光的空间扩散:大物体的大扩散和小物体的小扩散。
这两个效应是通过在 ps 上应用变换 T 来实现的(通过交叉注意中包含的与图像无关的线性投影进一步解开并分布到每个头部)。这表明变换 T 不仅包含前面讨论的位移,还包含对象尺度。
3.5. Implementation Details
Architecture.我们的架构与 DETR 架构 [3] 几乎相同,包含 CNN 主干、变压器编码器、变压器解码器、预测前馈网络 (FFN),每个解码器层(最后一个解码器层和 5 个内部解码器层),参数共享在 6 个预测 FFN 中。超参数与 DETR 相同。
主要的架构区别是我们引入条件空间嵌入作为条件多头交叉注意的空间查询,空间查询(键)和内容查询(键)通过加法以外的连接组合。在第一个交叉注意力层中,没有解码器内容嵌入,我们基于 DETR 实现 [3] 进行了简单的更改:将对象查询(位置嵌入)预测的位置嵌入连接到原始查询(键)。
Reference points.在原始 DETR 方法中,对于所有解码器嵌入,s = [0 0]⊤ 是相同的。我们研究了形成参考点的两种方法:将非归一化 2D 坐标视为可学习的参数,以及从对象查询 ooq 预测的非归一化 2D 坐标。后一种方法类似于可变形DETR[53],预测单元是一个FFN,由可学习的线性投影+ReLU+可学习线性投影组成:s = FFN(oq)。当用于形成条件空间查询时,二维坐标由 sigmoid 函数归一化。
Loss function.我们遵循 DETR [3] 使用匈牙利算法在预测和地面实况对象之间找到最佳二分匹配 [20],然后形成损失函数来计算和反向传播梯度。我们使用与可变形 DETR [53] 相同的方式来制定损失:相同的匹配成本函数、具有 300 个对象查询的相同损失函数和相同的权衡参数;分类损失函数是焦点损失 [24],框回归损失(包括 L1 和 GIoU [34] 损失)与 DETR [3] 相同。