Deformable DETR
PDF:https://arxiv.org/pdf/2010.04159
Code:https://github.com/fundamentalvision/Deformable-DETR
一、大体内容
前面介绍DETR时,说明了其还存在对小物体检测效果不佳和训练慢的问题,Deformable DETR引入了DCN(Deformable Convolutional Networks)并将其和DETR相结合,借助可变形卷积的思想设计Deformable Attention让网络自己学习一些位置来进行交互,而不是像Transformer模块一样和其他所有位置进行交互,这一定程度上减少了计算量,进而可以加速训练。另外对于小物体检测,Deformable DETR引入多尺度特征和不同层级的编码来提升小物体检测精度。
整体结构和流程
输入图片经过骨架网络ResNet提取特征后保留C3至C5多个尺度的特征,C5经过步长为2的3x3卷积后得到特征C6,所有层次特征通道数都为256,并在Encoder中进行多尺度的可变行自注意力,Ojbect Queries输入到Decoder中与Encoder输出进行自注意力,像DETR一样直接输出框,但注意这里预测的是框的偏移量,而BETR里预测的是框坐标(主要是Deformable DETR里面引入了参考点)。
二、贡献点
- 结合了可变形卷积的稀疏空间采样和Transformer的关系建模能力,解决了DETR训练慢和对小物体检测效果不佳的问题
- 还提出了两阶段Deformable DETR方法进一步提高检测性能
三、细节
3.1 DCN
Deformable DETR可以看成DCN(Deformable Convolutional Networks) + DETR,所以先简单了解下DCN。
上图中a表示标准卷积,b表示DCN,cd是DCN的特例。可以看到DCN相比于标准卷积来看就相当于其卷积核里面对应的特征点不是固定位置的,而是可变位置的,这样看标准卷积其实是DCN的一种特例。
可以看到可变形卷积的结构可以分为上下两个部分,上面那部分是基于输入的特征图生成offset,而下面那部分是基于特征图和offset通过可变形卷积获得输出特征图。
图中以两个3*3卷积为例,可以看到对于普通卷积来说,标准卷积操作的位置都是固定的。而DCN因为引入了offset,所以卷积操作的位置会在监督信息的指导下进行选择,可以较好的适应目标的各种尺寸,形状,因此提取的特征更加丰富并更能集中到目标本身。
3.2 可变形注意力模块
模块示意图如上(3个注意力头),输入特征图中参考点的Query特征经过一个线性层后预测多卷积的偏移量,分别输入到不同的注意力头进行可变形卷积得到对应输出,再与Query特征经过注意力机制得到的归一化权重相乘得到每个头的输出,再经过一个线性层得到模块的输出。
论文中用公式表示如下:
这之前需要看下标准的多头Transformer,用公式表示如下:
其中\(z_q\)表示query特征,由\(x\)经过线性变换生成,\(q\)是对应的索引,\(k\)是key的索引,\(\Omega_k\)表示所有\(k\)的集合,\(m\)表示多头注意力个数,\(W'_k\)用于将\(x_k\)变为value,\(A_{mqk}\)表示归一化后的注意力权重。也就是中括号里面其实可以表示为单头注意力机制,外部\(W_m\)用于将多个注意力输出加权输出。
再回过头来看就清楚了,可变形注意力模块相对而言多了一个\(p_q + \Delta p_{mqk}\),其中\(p_q\)论文中称为参考点表示\(z_q\)的位置,其实可以理解成\(z_q\)的坐标,后面的\(\Delta p_{mqk}\)表示采样点相对于参考点的位置偏移,这里了解了DCN后就好理解了,后续就是通过偏移来确定做自注意力的采样点,偏移量开始进行随机初始化,后续通过网络进行学习。
但有一点要注意,可变形注意力模块中的注意力权重直接通过query经过线性层预测得到,而Transformer中是需要query和key进行交互得到的。这一点可以参考CW头脑风暴2的解释
大体是因为Deformable DETR中参考点和query之间存在联系,query由object query + query embedding组成,在Encoder中,参考点表示特征点本身位置,其中object query来自特征图,而query embedding由位置编码(position embedding)和多尺度编码(scal-level embedding)组成。在Decoder中,如果是1阶段模型,参考点由query embedding经过全连接生成,在2阶段模型中由参考点经过位置编码生成query embedding和object query(参考点是由Encoder预测出来的proposals,本身一定程度上代表着物体的位置信息)。
3.2 多尺度特征
骨架网络ResNet提取特征后保留C3至C5多个尺度的特征,C5经过步长为2的3x3卷积后得到特征C6。在多尺度特征中,不同特征层的特征点可能具有相同的位置信息,因此为了区分出不同尺度的位置编码,作者对每一个尺度特征都引入了scale-level embedding
,其是随机初始化,并利用网络进行学习。
再看下公式表示:
式中\(l\)表示的是不同尺度特征,\(x^l\)表示第\(l\)层特征,\(\hat{p} _q\)表示归一化后的位置信息,值的范围为[0, 1], \(\phi _l\)用于将位置信息映射回原来的尺度上去。其他和之前的一致。
3.3 为什么没有用FPN
作者给出的解释是多尺度的Deformable注意力已经可以提取多尺度特征,并进行了消融实验,FPN并没有带来精度提升。这估计和参考点坐标采用归一化也有点关系,归一化后同一个参考点在不同尺度特征图上的位置相差不会太大。
3.4 预测偏移量而不是直接回归坐标值
由于多尺度可变形注意力模块提取参考点周围的图像特征,检测头预测边界框也是相对于参考点的相对偏移,这样相比于直接回归可以进一步降低优化难度。详见附录A.3,参考点作为框中心的初始位置,检测头预测相对于参考点的相对偏移,学习到的解码器注意力将与预测的边界框具有很强的相关性。
四、效果
-
精度和训练时间
-
方法对比
-
可视化