Deformable DETR(2020 ICLR)

Deformable DETR(2020 ICLR)

detr训练epochs缩小十倍,小目标性能更好

Deformable attention

  1. 结合变形卷积的稀疏空间采样和Transformer的关系建模能力

  2. 使用多层级特征层特征,不需要使用FPN的设计(直接使用backbone多层级输出)

    两种提升方法:

    1. bbox迭代细化机制
    2. 2.两阶段Deformable DETR

整体结构:

在这里插入图片描述

同样是6encoder,6decoder。

首先,运用了多层的图像特征,在一个采样点周围进行多层级的可变形注意力模块(紫色部分)

decoder用交叉注意力,红色的线指向第二个(cross,第一个是selfattention)

object query一样

详细展示

multihead-attention:
 MultiHeadAttn  ( z q , x ) = ∑ m = 1 M W m ⏟ \ R C × C v [ ∑ k ∈ Ω k A m q k W m ′ ⏟ \ R C v × C x k ]  where  A m q k ∝ exp ⁡ { ( U m z q ) T ( V m x k ) C v } U m , V m ∈ \ R C p × C \begin{array}{c} \text { MultiHeadAttn }\left(\mathrm{z}_{\mathrm{q}}, \mathrm{x}\right)=\sum_{m=1}^{M} \underbrace{W_{m}}_{\backslash \mathrm{R}^{C \times C_{v}}}[\sum_{k \in \Omega_{k}} A_{m q k} \underbrace{W_{m}^{\prime}}_{\backslash \mathrm{R}^{C_{v} \times C}} x_{k}] \\ \text { where } A_{m q k} \propto \exp \left\{\frac{\left(U_{m} z_{q}\right)^{T}\left(V_{m} x_{k}\right)}{\sqrt{C_{v}}}\right\} \quad U_{m}, V_{m} \in \backslash \mathbf{R}^{C_{p} \times C} \end{array}  MultiHeadAttn (zq,x)=m=1M\RC×Cv Wm[kΩkAmqk\RCv×C Wmxk] where Amqkexp{Cv (Umzq)T(Vmxk)}Um,Vm\RCp×C
deformable-attention:
DeformAttn ⁡ ( z q , p q , x ) = ∑ m = 1 M W m ⏟ \ R C × C v [ ∑ k = 1 K A m q k W m ′ ⏟ \ R C v × C x ( p q + Δ p m q k ) ] \operatorname{DeformAttn}\left(\mathrm{z}_{\mathrm{q}}, \mathrm{p}_{\mathrm{q}}, \mathrm{x}\right)=\sum_{m=1}^{M} \underbrace{W_{m}}_{\backslash \mathrm{R}^{C \times C v}}[\sum_{k=1}^{K} A_{m q k} \underbrace{W_{m}^{\prime}}_{\backslash \mathrm{R}^{C_{v} \times C}} x\left(p_{q}+\Delta p_{m q k}\right)] DeformAttn(zq,pq,x)=m=1M\RC×Cv Wm[k=1KAmqk\RCv×C Wmx(pq+Δpmqk)]

M:head

K:采样点

特征图:xl,l∈[1,L],表示多个尺度的特征图

p_q:参考点,query的坐标点

这里每个像素点z_q只和其对应的k个采样点算attention

  • z_q:query可以是encoder的图像或上一个decoder的输出(特征图中每个像素点都是一个维度为C的向量z_q)
  • 每个像素点的Reference Point也就是二维位置坐标为 p_q(在图像上生成很多采样点p_q,文章最后写了如何在encoder和decoder处获得reference point)。
  • M代表多头注意力机制中头的数目(论文中M=8)
  • 每一个头中只考虑 z_q 附近 K 个点(K远小于H x W,论文K=4)。
  • Δpmqk代表采样的位置偏移量(第一个linear),是一个二维的坐标(初始化采样点是固定的,但后续将通过全连接层计算预测更加值得关注的点的坐标)

K 个采样点由参考点 p_q和偏移量 Δpmqk共同得到,当然这个偏移量不可能就是一个整数,这里获取该偏移量上的特征时是使用了双线性插值的

之后再接通过权重norm,输出。

img

Deformable Attention使用的地方:

  • Encoder中的Self-Attention使用Deformable Attention替换.
  • Decoder中的Cross-Attention使用Deformable Attention替换,selfattention没替换,关注的还是原始的qkv

原始DETR:分类头,bbox预测头输出四个值(中心点和宽高)

deformable detr:bbox的预测头的预测结果是相对于参考点的坐标偏移量,这样的设计可以降低优化难度网络

首先会经过Linear得出参考点的初始坐标,因此最后的bbox的输出不再是表示坐标值,而是表示了坐标的偏移量,用以对参考点的坐标进行修正,这样也更加符合网络的设计

在这里插入图片描述

deformable detr几个变体:

变体1:bbox强化 bbox refinement(不是辅助分类)

reference point:encoder:gird H*W

decoder:经过linear后生成的300个坐标( 参考点的获取方法为object queries通过一个nn.Linear得到每个对应的reference point)

不适用bbox强化,decoder连续作用

使用:

过一个decoder,算一次bbox坐标(加上reference point),传入下一层,反复

变体2:two-stage

6encoder -> memory(output)-> 传入两个FFN分类头(cls,bbox) -> bbox输出 和memory-> 6decoder

其他:

num_class没有no object(+1),但是有类似的处理过程

matcher的label loss计算不同:

原始:直接过softmax

这里用的是focal bce loss

参考:

um_class没有no object(+1),但是有类似的处理过程

matcher的label loss计算不同:

原始:直接过softmax

这里用的是focal bce loss

参考:

https://www.bilibili.com/video/BV1B8411M73e/?spm_id_from=333.788&vd_source=4e2df178682eb78a7ad1cc398e6e154d


http://www.niftyadmin.cn/n/5040644.html

相关文章

340. 至多包含 K 个不同字符的最长子串

340. 至多包含 K 个不同字符的最长子串 vip

机器学习入门:从算法到实际应用

机器学习入门:从算法到实际应用 机器学习入门:从算法到实际应用摘要引言机器学习基础1. 什么是机器学习?2. 监督学习 vs. 无监督学习 机器学习算法3. 线性回归4. 决策树和随机森林 数据准备和模型训练5. 数据预处理6. 模型训练与调优 实际应用…

山西电力市场日前价格预测【2023-09-22】

日前价格预测 预测说明: 如上图所示,预测明日(2023-09-22)山西电力市场全天平均日前电价为322.75元/MWh。其中,最高日前电价为386.53元/MWh,预计出现在06: 45。最低日前电价为237.40元/MWh,预计…

微软(TTS)文本转语音服务API实现

此博客实现与java实现微软文本转语音(TTS)经验总结_java tts_${简简单单}的博客-CSDN博客之上,首先感谢博客源码的提供,本人在上面添加了一些详细的注释,方便大家跟好的理解和使用,毕竟我已经用原文调试了一…

相机Camera

Camera需与SurfaceView配合使用 Camera类常用方法: Camera.open() 创建Camera实例,打开相机 getParameters() 获取相机参数 release() 释放相机资源 setParameters(Camera.Parameters parameters) 设置相机参数 setPreviewDisplay(SurfaceHolder holde…

2023年贵州省职业院校技能大赛高职组信息安全管理与评估竞赛试题

2023年贵州省职业院校技能大赛高职组 信息安全管理与评估 竞赛试题 第一阶段竞赛项目试题 根据信息安全管理与评估技术文件要求,第一阶段为网络平台搭建与网络安全设备配置与防护。本文件为信息安全管理与评估项目竞赛-第一阶段试题。 介绍 竞赛阶段 任务阶段 竞…

【C++11保姆级教程】继承构造函数和花括号等式初始化器(brace-or-equal initializers)

文章目录 前言一、继承构造函数(Inherited Constructors)1.1概念解释1.2示例代码1.3优势1.4劣势 二、花括号等式初始化器(Brace-or-Equal Initializers)2.1花括号等式初始化器是什么? 2.2示例代码2.3优势2.4劣势 总结 …

21天学会C++:Day10----类的默认成员函数

CSDN的uu们,大家好。这里是C入门的第十讲。 座右铭:前路坎坷,披荆斩棘,扶摇直上。 博客主页: 姬如祎 收录专栏:C专题 目录 1. 构造函数 1.1 引入 1.2 默认构造函数 2. 析构函数 2.1 析构函数的定义…