前言
为解决DETR attention的计算量大导致收敛速度慢、小目标检测效果差的问题:提出了Deformable Attention,其注意力模块只关注一个query周围的少量关键采样点集,采样点的位置并非固定,而是可学习的(如左图所示,DETR的query要和其他所有的key计算相似度计算量为token的平方, 而Deformable DETR只关注周围少量的key,大大减少了计算量,提高了收敛速度),并采用了多尺度策略提高了小物体的检测性能。
整体网络架构
左图为detr网络架构,右图为deformable detr网络架构。
改造点:
- 多尺度 feature map
- Encoder部分的Muti-Head Self-Attention改为Multi-Scale Deformable Self-Attention
- Dncoder部分的Muti-Head Attention改为Multi-Scale Deformable Cross-Attention
- 让检测头prediction heads预测边界框与参考点的相对偏移量,以进一步降低优化难度。
- 目标数上限从100提升至300,在最后预测的时候会选择top-k前100进行预测。
为什么只将Decoder中的自注意力模块不改成可变形注意力模块?
因为在交叉注意模块中,对象查询从特征映射中提取特征,其中的key是来自编码器的输出特征映射;在自注意模块中,对象查询相互交互,其中key是对象查询 (key value的来源一般都是同一个);而本文提出的可变形注意模块是将卷积特征图作为关键元素设计的,因为交叉注意模块使用了encoder的输出,encoder的输入是特征图,因此只需要修改交叉注意模块就可以了。
可变形注意力模块
deformable思想:
deformable思想来源于DCN(deformable convolution可变形卷积),DCN的思想就是做卷积的时候,不是选取固定的周围n*n区域的像素点,而是用网络学习我到底取哪些点来做卷积。可变形卷积实际是指标准卷积操作中采样位置增加了一个偏移量offset(这个偏移量是通过学习得到的),这样卷积核就能在训练过程中扩展到很大的范围。
如图(a)普通卷积的卷积核权重的固定导致同一CNN在处理一张图的不同位置区域的时候感受野尺寸都相同,这对于编码位置信息的深层卷积神经网络是不合理的。图(b)是可变形卷积,在采样时可以更贴近物体的形状和尺寸。
deformable detr工作中,就是用到了这个思想:原本的DETR计算相似性的时候是稠密的,就是Q中的features要和K中的每个features计算相似性。这个计算量非常大。在deformable detr中,feature只与少部分其他features做相似性计算,然后对特征进行加权融合。
Deformable Attention:
第一行是DETR的attention过程,x是输入特征; z q z_q zq看做query,由x线性变换生成; A m q k A_{mqk} Amqk 表示的是归一化注意力权重attention map,它是通过 Q× K T K^T KT 算出来的&