Deformable DETR算法原理

传统的DETR解决了YOLO中锚框机制以及NMS后处理手段,DETR实现了真正的端到端结构。

但DETR训练时间较长和特征空间分辨率有限,原始的DETR不能输入特别大的图像,Transformer注意力机制的限制(输入图像转换为序列后维度过大,注意力机制的计算量会显著增加),因此提出可变形DETR。

可变形卷积在稀疏的特征空间中可以关注到想要关注的区域,对每个特征进行注意力偏移,偏移到更为重要的特征,但缺乏元素关系的建模机制。因此将可变性卷积和transformer结合到一起。

可变形注意力机制

可变形注意模块只关注参考点周围的一小部分关键采样点,而不考虑特征图的空间大小,源码中k为4表示特征是根据周围四个关键采样点得到的,可以减少稀疏空间和特征空间分辨率的问题。输入一个特征图并转换为序列,q是特征图上的每一个点。向量为Z,P是二维的向量坐标。m表示多头注意力(源码中M是8),k表示采样点(源码中K是4),pmqk是采样的偏移量(采样的偏移量不一定是整数,并且不一定是正上(下、左、右)方,预测的地方用周围四个点进行双线性插值,都要贡献一部分特征)偏移量是自己z预测得到的。pq是原来的位置,然后加上偏移量,Amqk是注意力权重表示第m个注意头中第k个采样点的注意力权值。Wm和Wm'都是权重参数,做好一个特征点偏移量后连接一个全连接层FC的权重值,Wm是所有点特征连接FC。(偏移量和Amqk是怎么得到的?都是通过输入特征向量Zq通过全连接层得到的)

要得到每个点的结果进行更新对应特征,维度不变,向量数值变了。

其中(-1,-1)表示偏移量,向左向下偏移一个。

输入特征图中的固定一点特征序列Zq,通过全连接层得到预测特征V,原先的Transformer是连接三个全连接层FC得到q,k,v的值。同时通过Zq得到偏移量,采样点是三个取采样点。Zq再通过全连接层得到三个采样点的权重,偏移量、采样点、注意力机制都是通过原始特征经过FC得到的。

多尺度特征,既有大的特征又有小的特征,转换为一个序列,多尺度的特征对应的位置是一个但是在特征空间不是同一个位置,不用FPN,FPN只是利用特征金字塔进行拼接,此多尺度特征采取了对齐方式。在deformable DETR采用多尺度可变形注意力模块来替换Transformer中注意力模块处理特征映射。l是层级数(源码中L是4),输入特征还要表示属于哪个层级,如果使用绝对尺寸那么在不同层级的特征图对应的位置不同,所以使用归一化的坐标Pq。

公式如下,M表示多头,L表示不同层级,最终特征是不同层级特征进行累加决定的,层级不同偏移量也会相应变换。

DETR结构图如上图所示,输入图像中每个层级的采样点经过自注意力机制得到encoder中的特征点,最后得到特征图中所对应的向量,进入decoder。原始的DETR算法是100个初始化Q向量,而Deformable DETR是300个初始化向量,初始化向量是通过位置编码初始化得到的,先自己做self-attention,并将encoder得到的特征进行cross-attention。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值