【Transformer】8、SMCA: Fast Convergence of DETR with Spatially Modulated Co-Attention


在这里插入图片描述

论文链接:SMCA: Fast Convergence of DETR with Spatially Modulated Co-Attention

代码链接:https://github.com/gaopengcuhk/SMCA-DETR

一、背景

DETR 作为首个使用 Transformer 实现目标检测的方法,获得了和基于 CNN 的检测方法相媲美的检测效果,如 Faster-RCNN 等,而且不需要手工设计的 anchor 和 NMS,但是 DETR 的收敛速度很慢,大概需要 500 个 epochs 才能收敛。

二、动机

DETR 中,有一系列的 query vector 来负责检测不同位置的目标,每个 object query 和 CNN 得到的空间位置特征进行交互,然后使用 co-attention 自适应地从这些空间信息中选择主要特征,估计位置和类别。但在 decoder 中,co-attended 为每个 object query 关注的区域可能和 query 预测的 box 没有联系起来。所以 DETR 的 decoder 需要较大的训练轮次来正确的 co-attended 区域来准确的识别出对应的目标。

基于此,作者提出了一个即插即用的 Spatially Modulated Co-attention (SMCA) 模块来代替 DETR 中的 co-attention 模块,来实现快速收敛并提高效果。

三、方法

3.1 SMCA 概述

本文提出的 SMCA 能够动态的预测每个 object query 对应的 box 的初始中心和尺寸,并且生成一个 2D gaussian-like weight map,该 weight map 和 object query 的 co-attention feature map 进行逐点相乘,以便更有效地从视觉特征图中聚合 query 的相关信息。

这样一来,spatial weight map 有效地调节了每个 object query 的 co-attention 搜索范围,能够让搜索范围更好的趋向于目标对象的中心和尺度。使用该高斯分布先验之后, SMCA 能够明显的加速 DETR 的训练。

虽然 SMCA 能够加速 DETR 的训练,但效果有些下降(41.0 mAP at 50 epochs, 42.7 at 108 epochs vs. 43.3 mAP at 500 epochs)。受到多头注意力[38]和多尺度特征[22]的启发,SMCA 在 encoder 里边使用了多尺度特征,在decoder 里边使用了多头注意力。

在这里插入图片描述
在这里插入图片描述

3.2 Spatially Modulated Co-Attention

SMCA 的主要想法是将学习到的 co-attention maps 和手工设计的 query spatial 特征进行结合,其结构为图 2 橘色部分。

1、Dynamic spatial weight maps

Gaussian-like spatial weight map 的生成:每个 object query 首先动态预测其对应的目标的中心和尺度,这个预测的中心和尺度被用来生成 Gaussian-like spatial weight map。

Gaussian-like 分布的中心:初始化为标准坐标 [ 0 , 1 ] × [ 1 , 0 ] [0,1] \times [1,0] [0,1]×[1,0]

对于 object query O q O_q Oq,Gaussian-like 分布的中心位置 c h n o r m , c w n o r m c_h^{norm}, c_w^{norm} chnorm,cwnorm 和尺度 s h , s w s_h, s_w sh,sw 的初次预测为:

在这里插入图片描述

  • O q O_q Oq 被使用 2 层 MLP 投影得到 normalied 的二维预测结果 c h n o r m , c w n o r m c_h^{norm}, c_w^{norm} chnorm,cwnorm,然后被 unnormalized 来得到原图中的中心位置 c h , c w c_h, c_w ch,cw
  • O q O_q Oq 也被使用 FC 来得到目标的尺度 s h , s w s_h, s_w sh,sw

实际中的目标尺度是很多变的,所以使用了独立的 s h s_h sh s w s_w sw 来预测宽和高,这样有利于适应不同的目标。

对于不同大小的目标,SMCA 能够自适应的产生不同的 s h s_h sh s w s_w sw,所以使用 spatial weight map G G G 修正后的 co-attention map 能够为大目标聚合所有部位,能够为小目标抑制背景的影响。

预测了目标的中心和尺度知乎, SMCA 能够生成如下的 gaussian-like weight map:

在这里插入图片描述

  • ( i , j ) ∈ [ 0 , W ] × [ 0 , H ] (i,j)\in[0, W] \times [0, H] (i,j)[0,W]×[0,H]
  • β \beta β 是超参数,用来调整高斯核的宽度
  • 这个高斯特征图给邻近中心的位置更多关注,远离中心的位置更少的关注,

2、Spatially-modulated co-attention

上面介绍了如何获得 G G G,然后就使用 G G G 来修正 co-attention maps C i C_i Ci (co-attention maps 是object query O q O_q Oq 和 self-attention encoded feature E E E 的 attention map)。

对于每个由公式 2 产生的 attention maps C i C_i Ci,都要使用 G G G 来对其进行修正。

① 在 base version 里边,所有 co-attention head 的 G G G 都是共享的:

在这里插入图片描述

经过公式5后, decoder co-attention 将会更关注于预测框的附近,缩小搜索范围,加速收敛。

② 作者也尝试了对不同的 co-attention head 进行不同的 co-attention 特征修正,也就是不同的 head 使用不同的 G G G

在这里插入图片描述

3、SMCA with multi-scale visual features

目标检测任务中,由于不同目标的大小各异,所以使用多尺度特征尤为重要。给定一幅图像,CNN 能够抽取不同尺度的特征,如下采样 16,32,64 倍等。

在 encoder 中,多尺度自注意编码把不同尺度的所有位置的特征同等对待,这就会导致计算很复杂,计算量很大。为了解决这个问题,作者引入了 intra-scale 自注意编码,也就是仅仅在单个尺度特征图内进行attention,transformer block共享这些权重,并且实验也证明了使用共享的权重有利于模型泛化。

此外,SMCA 共使用了 5 个 blocks: 2 个 intra-scale block encoding + 1 个 multi-scale encoding + 2 个 intra-scale block encoding

给定 CNN 的多尺度输出:

① 一个简单的方法是将这个多尺度特征 rescale 和 concat,形成一个单一尺度的特征图,然后计算 object query 和 resulting map 的 co-attention。但一些 queries 其实不能对所有的尺度都有响应,比如小目标在下采样 64 倍的特征图上已经消失了。所以小目标只能从大分辨率特征图中得到。

② 基于此,本文作者提出了一种使用可学习的 scale-attention 来自动化的给每个 box 选择对应尺度的方法,每个 object query 会生成一个如下的 scale-attention weights:

在这里插入图片描述

  • α 16 \alpha 16 α16 α 32 \alpha 32 α32 α 64 \alpha 64 α64 分别对应下采样为 16,32,64 倍的特征图。
    在这里插入图片描述
  • C i , j C_{i, j} Ci,j 是第 j 个尺度特征和第 i 个 co-attention head 的 co-attention 特征

四、效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值