Conditional DETR 论文笔记

论文连接:https://arxiv.org/abs/2108.06152v2
源码连接:https://github.com/Atten4Vis/ConditionalDETR

DETR中的交叉注意力模块高度依赖于内容嵌入来定位四端和预测方框,这增加了对高质量内容嵌入的需求,从而增加了训练的难度

Conditional DETR的主要内容是从decoder embedding学习出一个conditional spatial query(条件空间查询)

其好处是,通过条件空间查询,每个交叉注意头都能够关注一个不同区域,例如,一个对象的末端或对象框内的一个区域

这缩小了定位对象类别和盒子区域的空间范围,从而放松了对内容嵌入的依赖,简化了训练


DETR方法的训练收敛速度缓慢,需要500个epochs才能获得良好的性能

在交叉注意力中,内容嵌入是起着最主要的作用,空间嵌入是作为次要的贡献
如果在DETR中,移除key中的空间位置编码,,移除第二个decoder以后的object queries
只使用内容嵌入和query,mAP下降的不多

请添加图片描述
第一行是Conditional 训练50轮
第二行是DETR训练50轮
第三行是DETR训练500轮

可以看出第二行最后两个预测还没有学习好

原因为:

  1. 空间查询,即对象查询,只给出一般的注意力权重图,而没有利用特定的图像信息
  2. 由于训练时间较短,content queries不足以很好地匹配spatial keys,因为它们也被用于匹配content keys

Conditional DETR方法,该方法从相应的解码器输出嵌入中学习每个查询的条件空间嵌入,以形成所谓的解码器多头交叉注意的条件空间查询

条件空间查询是通过将回归对象框的信息映射到嵌入空间


Conditional DETR

请添加图片描述
Conditional DETR的模型构成与DETR相同:

  1. backbone
  2. encoder
  3. decoder
  4. ffn

Conditional DETR主要是修改了decoder部分,其他部分是相同的


b = sigmoid ⁡ ( F F N ( f ) + [ s ⊤ 00 ] ⊤ ) \mathbf{b}=\operatorname{sigmoid}\left(\mathrm{FFN}(\mathbf{f})+\left[\mathbf{s}^{\top} 00\right]^{\top}\right) b=sigmoid(FFN(f)+[s00])


DETR Decoder Cross-Attention

DETR解码器交叉注意机制采用三种输入:query,key,value。

每个键(key)由内容键(content key )(Ck)(来自编码器的content embedding输出)和一个空间键(spatial key)(Pk)(相应的归一化二维坐标的位置嵌入)来形成的

value是就是编码器(encoder)的content embedding输出

在原始的DETR方法中,每个查询(query)由内容查询(content query)(Cq)(来自解码器自注意的embedding output)和 一个空间查询(spatial query)(Pq)(即对象查询 Object query Oq)来形成的。

注意权重是基于查询和键之间的点积

( c q + p q ) ⊤ ( c k + p k ) = c q ⊤ c k + c q ⊤ p k + p q ⊤ c k + p q ⊤ p k = c q ⊤ c k + c q ⊤ p k + o q ⊤ c k + o q ⊤ p k . \begin{aligned} & \left(\mathbf{c}_q+\mathbf{p}_q\right)^{\top}\left(\mathbf{c}_k+\mathbf{p}_k\right) \\ = & \mathbf{c}_q^{\top} \mathbf{c}_k+\mathbf{c}_q^{\top} \mathbf{p}_k+\mathbf{p}_q^{\top} \mathbf{c}_k+\mathbf{p}_q^{\top} \mathbf{p}_k \\ = & \mathbf{c}_q^{\top} \mathbf{c}_k+\mathbf{c}_q^{\top} \mathbf{p}_k+\mathbf{o}_q^{\top} \mathbf{c}_k+\mathbf{o}_q^{\top} \mathbf{p}_k . \end{aligned} ==(cq+pq)(ck+pk)cqck+cqpk+pqck+pqpkcqck+cqpk+oqck+oqpk.

Conditional Cross-Attention

交叉注意权重由内容注意权重和空间注意权重两个组成部分组成

c q ⊤ c k + p q ⊤ p k \mathbf{c}_q^{\top} \mathbf{c}_k+\mathbf{p}_q^{\top} \mathbf{p}_k cqck+pqpk

与DETR交叉注意不同,我们的机制将内容查询和空间查询的角色分开,使空间查询和内容查询分别关注空间注意权重和内容注意权重

另一个重要的任务是从前一个解码器层的嵌入f中计算空间查询Pq。我们首先确定了不同区域的空间信息是由解码器嵌入和参考点这两个因素共同决定的

Conditional spatial query prediction

我们从嵌入的f和参考点s来预测条件空间查询

( s , f ) → p q (\mathbf{s}, \mathbf{f}) \rightarrow \mathbf{p}_{q} (s,f)pq

p s = sinusoidal ⁡ ( sigmoid ⁡ ( s ) ) \mathbf{p}_{s}=\operatorname{sinusoidal}(\operatorname{sigmoid}(\mathbf{s})) ps=sinusoidal(sigmoid(s))

p q = T p s = λ q ⊙ p s \mathbf{p}_q=\mathbf{T} \mathbf{p}_s=\lambda_q \odot \mathbf{p}_s pq=Tps=λqps


请添加图片描述
可视化了每个头的注意力权重图

  1. 第一行是 spatial attention weight p q ⊤ p k \mathbf{p}_q^{\top} \mathbf{p}_k pqpk
  2. 第二行是 content attention weight c q ⊤ c k \mathbf{c}_q^{\top} \mathbf{c}_k cqck
  3. 第三行是 这两者的结合 c q ⊤ c k + p q ⊤ p k \mathbf{c}_q^{\top} \mathbf{c}_k+\mathbf{p}_q^{\top} \mathbf{p}_k cqck+pqpk

decoder的self attention的输出作为query,同时需要查询出内容以及空间位置信息
那么在原始的DETR,就会需要很长的时间才能够学好

而条件空间查询就是在有意的把一份空间信息concat到self attention的输出上


Experiments

请添加图片描述

请添加图片描述


Ablations

The effect of the way forming the conditional spatial query

请添加图片描述

  1. CSQ-C 表示只使用decoder的content embedding
  2. CSQ-T 表示最有转换 λ q \lambda_q λq
  3. CSQ-P 表示只有位置编码 Ps
  4. CSQ-I 表示 c q \mathbf{c}_q cq p s \mathbf{p}_s ps 相乘

Focal loss and offset regression with respect to learned reference point

请添加图片描述

  1. OR表示偏移量回归(offset regression)
  2. FL 表示focal loss
  3. CSQ 就是 Conditioanal spatial query

The effect of linear projections T forming the transformation

请添加图片描述

  1. 一个单位矩阵,意味着不学习线性投影
  2. 一个单个标量
  3. 一个块对角矩阵,意味着每个头部有一个学习的32×32线性投影矩阵
  4. 一个没有约束的完整矩阵
  5. 一个对角矩阵

有趣的是,单标量有助于提高性能,这可能是由于缩小了目标区域的空间范围

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值