<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p></p>
讯享网
本文主要介绍下发表在ICLR2022的DAB-Detr论文的基本思想以及代码的实现。
1、代码地址
2、论文地址
另外,感兴趣可以看下本人写的关于detr其他文章:
1、nn.Transformer使用
2、mmdet解读Detr
3、DeformableDetr
4、ConditionalDetr
整体模型结构图和Detr很相似:

讯享网

本文认为原始的Detr系列论文中:可学习的object queries仅仅是给model预测bbox提供了参考点(中心点)信息,却没有提供box的宽和高信息。于是,本文考虑引入可学习的锚框来使model能够适配不同尺寸的物体。上图是可视化的三个模型的空间注意力热图(pk*pq),若读者对热图如何产生的,可参考Detr热图可视化。从图中可以看出,引入可学习锚框后,DAB-Detr能够很好覆盖不同尺寸的物体。本文所得出的一个结论:query中content query和key计算相似度完成特征提取,而pos query则用于限制提取区域的范围及大小。


图中紫色是改动的区域,大体流程是:DAB-Detr直接预设了N个可学习的anchor,这点类似于SparseRCNN。然后经过宽高调制交叉注意力模块,预测出每个锚框四个元素偏移量来更新anchor。

上图是我做的一张PPT,展示的是一层DecoderLayer。简单说下流程:首先设定了N个可学习的4维的anchors,然后经过PE和MLP将其映射成Pq。
1) 在self-attn部分:常规的自注意力,使用的是Cq和Pq做加法;
2) 在cross-attn部分:参考点(x,y)部分完全和ConditionalDetr一样,Cq和Pq使用拼接来生成Qq;唯一区别是“宽和高调制交叉注意力模块”:在计算Pk和Pq的权重相似度时引入了一个(1/w,1/h)的一个尺度变换操作。
Detr中给特征图每个位置生成位置Pk完全使用的是Transformer中温度系数,而Transformer针对的是单词的嵌入向量设计的,而特征图中像素值大多分布在[0,1]之间,因此,贸然采用10000不合适,所以,本文采用了20。算是个trick吧,能涨一个点左右。

在四个backbone比较了性能,总体来看,达到最优。


感觉这套代码质量非常高,因为作者基本上开源了每个实验的代码,值得反复看(包括deformable attn的算子、分布式训练等等)。
首先看下整体Decoder的forward函数部分:
讯享网
内部就是调用了self-attn和cross-attn,pq,pk,cq,ck按照论文中相加或者拼接即可。
后面会介绍DN-DETR,敬请期待。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/146848.html