Paper
Code
DETR的提出免去了目标检测任务中许多人工组件的参与,同时又能保证较好的检测精度。但是DETR也存在着收敛过慢、特征空间分辨率有限的问题,Transformer自身的局限性无法较好的处理图像feature map。
为了减轻上述问题,本文提出了Deformabel DETR,其注意力模块仅参与一小部分key set的计算,使得训练时间缩短10倍的基础上达到比DETR更好的效果。
目前的目标检测方法大多还依赖于人工设计的组件,比如锚框、非极大值抑制等,并不能完全做到端到端。而DETR的提出是首个纯端到端的目标检测器,移除了一切人工组件,也取得了不错的检测性能。DETR的结构很简洁,充分融合了CNN和Transformer,借助Transformer强大的建模能力来替代人工设计的组件。
但DETR也有自身局限,首先它需要训练更多的epoch才能收敛,比如COCO数据集上需要训练500epoch,是Faster R-CNN的10-20倍;其次DETR在检测小目标时效果不是很好。
目前主流的一些目标检测器主要使用多尺度特征,需要从较高分辨率的feature map检测小型目标比较有效,但是如果使用高分辨率的feature map会使得DETR的计算复杂度大大提升。
以上问题可以归因为Transformer自身在处理图像特征时的问题;在初始化阶段,SA模块对特征图中的所有像素施加的注意力几乎是一样的,因此需要较长的学习时间来学习注意力权重。
此外,注意力的计算是输入序列长度的平方项,因此输入较高分辨率图像时所需的计算成本和内存是非常大的。
在图像领域,可变卷积是一种关注稀疏空间位置的强大有效的方法,可以有效避免前述问题;但它缺乏有效建模元素之间关系的能力,这正是DETR擅长的。
本文提出的Deformable DETR,解决了DETR中收敛太慢、计算复杂度高的问题。
通过与可变卷积结合,使得每次计算只关注一部分采样位置,作为所有像素中一些突出的关键像素的预过滤器(pre-filter),这个模块可以自然的扩展到多尺度特征聚合,因此省略了FPN的使用。在Deformab DETR中使用的是多尺度可变注意力模块代替原始DETR中的注意力模块来处理特征,详情参见Fig 1
.
这一思路为我们提供了使用其他端到端目标探测器变体的可能性。比如本文使用了一种简单但高效的迭代边界框逐渐精炼的机制来提升检测精度;本文还尝试了一个两阶段的可变形DETR,其中推荐区域也是由一个可变形DETR生成的,然后送入decoder作为迭代生成的边界框参考。
本文在COCO数据集上验证的可变形DETR的有效性,与DETR相比,训练次数减少了10倍,而两阶段的可变形DETR在性能上也有进一步提升。
Efficient Attention Mechanism
Transformer包含自注意力和交叉注意力两部分,Transformer最突出的问题在于注意力的计算需要耗费巨大的计算成本和内存空间,限制了模型的可扩展性。近期研究人员在这方面做了诸多尝试,大致可以分为三类:
第一类是使用预定义的稀疏注意力来稀疏计算,即使用固定大小的局部窗口来减少每次参与计算的key的数目;这样会丢失全局信息,可以通过在关键位置扩大感受野进行一定补偿,或者在特定位置增加全局注意力。
第二类是学习与数据相关的洗漱注意力,比如Kitave等人提出一种局部敏感哈希的注意力计算方法,会将k,q哈希到不同的桶中进行计算,还有用k-nn的思路来寻找每次计算最相关的一组key。
第三类是对注意力进行低秩近似,比如将注意力投影到更低维度或者采用核近似。
另一方面,许多卷积的变体,比如可变卷积和动态卷积也可以看做是注意力机制,尤其是可变卷积在图像识别任务中比Transformer的自注意力更有效、更高效,但是它的缺点就是缺乏元素之间的建模机制。
本文的可变DETR的灵感来自于可变卷积,属于第二类改进,也就是在计算过程中值关注query elements中一小部分固定的采样集合,已有研究表明在相同的FLOPs下可变注意力仅比传荣的卷积计算稍慢一点。
Multi-scale Representation for Object Detection
目标检测的难点之一就是如何有效的表示不同尺度的目标,目前的主流方法通常使用多尺度特征,比如FPN采取的是自顶向下的方法来聚合;PANet则采用的是自下而上的方法;还有通过全局注意力操作来聚合多尺度特征,或者通过NAS的方法寻求特征之间的最优连接方式。
本文提出的多尺度可变注意力模块可以通过注意力机制自然而然的聚合多尺度特征,不需要像特征金字塔网络的帮助。
首先回顾一下Transformer和DETR。
Transformer是基于注意力机制搭建的用于机器翻译的网络。对于给定的查询元素(目标语言的单词)和一组关键元素(源语言的一组单词),多头注意力会根据q-k之间的相似性(注意力分数)来逐渐聚合相关的key。
为了能够让模型关注到来自不同子空间和不同位置的信息,不同注意力头的输出会被加权后线性组合在一起。
Transformer存在两个明显的问题:
(1)Transformer需要更长的训练时间才能收敛。
对于q,k的数量分别是Nq,Nk,做完embedding后UmZq和Vmxk分别遵循高斯分布,使得注意力权重约为个数的倒数;因此需要较长的训练时间才能使得注意力关注到一些特定的key上。尤其在图像领域,Nk可能会更大,使得收敛过程更冗长。
(2)Transformer的计算复杂度和内存需求。当q,k数目很大时会使得计算复杂度指数上升,尤其在图像领域,q,k一般远远大于通道数,使得MHA的计算复杂度更高。
DETR是基于Transformer的一种编解码结构来做目标检测,损失函数中使用了匈牙利损失来做bbox预测,双边损失来做类别预测,好处就是一次获得最终结果,没有重复的区域,也无需任何人工设计的部件。
DETR的输入是CNN backbone提取的feature map,Transformer负责将输出编码成一系列object query,然后将object query结合decoder输出的query feature作为探测头;最后送入FFN网络进行bbox和类别的预测。
DETR encoder的注意力计算中,使用的q,k均是特征图的像素点,因此计算复杂度为H2W2C,即会随着feature map的大小指数增长。
Transformer decoder的计算中,输入包括encoder提取的feature map以及N个object query;decoder会计算两种注意力:self-attention和cross-attention。
cross-attention:object query会从encoder feature map提取特征。即query来自object query,key来自feature map。
self-attention:query 和key均来自query object。
DETR的优势在于,不需要传统目标检测中人工组件的介入,但自身的问题是:
(1)DETR在小目标检测时性能较差
因为小目标需要用较高分辨率的feature map,但这会增加SA的计算复杂度,无法接受;
(2)DETR需要更久的训练时间,因为需要训练注意力模块关注到不同的特征,最开始做初始化时对所有key施加的注意力几乎都是一样的,需要将其训练到稀疏,即只关注一些相关的key。
Deformable Attention Module
Transformer应用到图像任务,计算的核心是要计算feature map所有像素点之间的相关性,本文提出的可变注意力也是改进的这一部分。
在可变卷积中,可变注意力模块每次只关注参考点附近的一部分范围,不管整张图的分辨率是多大。因此将每次查询的key的数目限定在一定范围内,就可以减轻收敛过慢和空间分辨率带来的复杂度影响。
Deformable Attention的计算表示为:
m表示第m个注意力头,k代表采样第k个key,K就是采样key的总数目,Pmqk表示学习的位移,是一个二维量,Amqk是注意力权重,会被归一化到[0,1]区间。
实际计算时,query feature zq会先映射到3MK个通道,前2MK个通道用来编码偏移,最后MK个通道用来计算注意力权重Amqk.
计算复杂度分析:
Deformable self attention module处理的依旧是CNN提取的feature map,对于Nq个query,MK远小于HW,因此计算复杂度为:
原始Transformer复杂度为:
计算cross-attention时,N=Nq即object query的数目,复杂度是:
与feature map 的 空间分辨率无关。
Multi-scale Deformable Attention Module
在流行的目标检测框架中,使用多尺度的特征图可以有效提升检测性能,因此本文可以将可变注意力模块拓展到使用多尺度特征图。
xl表示第l层输入的特征图谱,p代表的是每次查询对应的参考点,multi-deformable attention module的计算表示为:
与单尺度的相比,多了l层,即计算的是l层相加的结果,区别在于需要将LxK层的注意力系数最后归一化到和为1即可。
Pmlqk表示的是第l层的特征图第m个attention head的第k个采样点的偏移,Amlqk是对应的注意力系数。
原始的可变卷积是为单尺度特征设计的,即每次只关注一个采样点;多尺度可变形注意力会从多尺度图中采集多个采样连,这种可变的采样位置作为一种预过滤机制,当采样点是所有可能的位置时,计算的结果就等于原始Transformer attention计算的结果。
Deformable Transformer Encoder
因此本文将DETR中的注意力模块都替换为了本文提出的多尺度可变注意力模块,encoder和decoder输入的feature map都是同样的分辨率,一共提取4层feature map,分别是ResNet C3到C5的feature map,以及C5经过3x3步长卷积之后的结果(C6).
encoder就从这些feature map中提取query和key,并且嵌入了一个尺度信息(el:scale-level embedding)来表示来自于哪一层。 尺度嵌入式随机初始化进行训练的。
同时也不需要使用FPN,因为可变注意力自己就可以完成不同尺度特征图之间的信息交互的计算。
Deformable Transformer Decoder
Decoder中需要计算cross-attention和self-attention。
Cross-attention:query from object query, key from encoder feature map
Self-attention:query,key from object query
因为本文提出的可变注意力模块是用来将feature map看做key来处理,因此只替换了cross-attention部分。
因为多尺度可变注意力提取的是参考点附近的特征,因此本文让detection head预测的bbox作为参考的偏移量,参考点作为预测的中心,这样就会使得decoder attention与bbox有更强的相关性,也可以达到加速收敛的效果。
Deformable DETR为我们提供了一种新的思路,就是可以使用一些端到端的目标检测器来替换Transformer的目标检测器。
此外本文还进行了一些其他优化:
Interative Bounding Box Refinement
本文使用一迭代bbox的方式来优化检测精度,即每一层decoder layer会基于前一层预测的结果来精炼本层bbox的输出
Two-stage Deformable DETR
原始DETR中,object query与房钱图没有任何关联;受两阶段目标检测框架的启发,本文也建立了一种两阶段检测框架,首先通过DETR生成推荐区域,然后将推荐区域作为object query送入decoder来做进一步的精炼。
在第一阶段,为了提高召回率,会将feature map每一个像素点进行查询;这样带来计算成本爆炸;因此本文在RP生成时移除了decoder,只是用了encoder部分;会对每一个像素点进行查询,预测一个bbox,选择得分最高的bbox作为推荐区域,然后提交给第二阶段,并不使用非极大值抑制。
Dataset
COCO 2017数据集
Implementation Details
设置M=8 K=4分别对应head的数目和采样多少个key
Table 1展示了与Faster R-CNN,FPN和DETR之间的对比结果;可以看到DETR需要训练更多epoch才能收敛,具体收敛时间的对比按键Fig 3.
可以看到Deformabel DETR在训练时间缩短10x的前提下精度比DETR更高,如果使用迭代精炼bbox和two-stage model,检测精度会进一步提升。
在参数量上大家都比较相近,在运行时间上比DETR-DC5提升了1.6x
消融实验
Table 2是消融实验的结果,主要探究了多尺度特征图输入、多尺度注意力的计算、K的数量对精度的影响。
多尺度特征图输入: AP 1.7%↑ 尤其对小物体有2.9%↑
采样点K: AP 0.9%
多尺度注意力:1.5%↑
因为已经进行了特征之间的交互,因此再用FPN也不会带来性能的提升了。
Comparison with SOTA
Table 3展示的是与目前SOTA的对比,以及采用不同CNN backbone性能的对比。
Deformable DETR是一种端到端的目标检测器,大大加速了收敛时间;并且提供了新的思路,使我们能够探索使用更有趣、更实用的目标检测器的其他变体。
Deformable DETR的核心是多尺度可变形注意力模块,是一种有效的处理图像特征图的注意力机制。本文希望能够为探索端到端的目标检测器增添更多可能性。
分别取的是ResNet C3,C4,C5和C5步长卷积后的结果,然后使用1x1卷积进行通道变换。
为了探究Deformable DETR是怎么做最终的目标检测的,本文绘制了最终检测结果对应的每一个像素点,参见Fig 5.
梯度项可以反映输出会随着输入波动改变的大小,即可以反应预测结果是依赖哪些像素点做出的。
从可视化的结果可以看出Deformable DETR检测出的像素点决定了bbox,即检测出的相关像素点更关注于检测对象的左右边界和上下边界;同时也会根据bbox内部的像素点决定所属的类别。
为了进一步理解多尺度注意力模块的作用,Fig 6展示了encoder和decoder最后一层的采样点和注意力权重。
可以看到deformable DETR已经和DETR一样,可以很好的区分不同实例。但是本文decoder会更关注于前景物体,而并不只是关注物体的边界。
我们猜测Deformable DETR不仅需要关注极端点也需要关注内部的点来决定最终的类别。
可视化的结果还表明,多尺度注意力模块可以根据前景物体的尺度和形状来调整采样点的位置和注意力权重。
十字表示参考点,即encoder中的query point,红色颜色的深浅表示注意力权重的大小。