深度学习之DAT

在这里插入图片描述

这篇文章是2022年Vision-Transformer领域的CVPR论文。文章推出了一种新的Vision Transformer模型——Deformable Attention Transformer(DAT)。DAT将DCN运用到Transformer中,从而将注意力的运算集中在重要性区域上,为目标检测带来了一定程度的性能提升。DAT最大的价值在于其使得自注意力层可以聚焦于相关区域来捕获信息

参考目录:
源码
CVPR 2022 | 清华开源DAT:具有可变形注意力的视觉Transformer
DAT论文解读(暖风)

Abstract

  1. 相比CNN,Vision Transformer具有更大的感受野或者说具有建模长距离范围内相关性的能力,这也就为其产生更高表现力奠定了基础。但是目前的Vision Transformer仍然暴露出2大问题:①使用稠密注意力机制的模型,如ViT将会产生较大的计算消耗以及其无法聚焦于重要区域,要知道一幅图像中并不是所有的区域信息都是有用的,比如背景等;②稀疏注意力机制的模型,如Swin-T、PVT等不具备长距离建模的能力,其更适合于一定窗口内的相关性捕捉。
  2. 为了解决上述2大问题,作者推出了Deformable Self-Attention机制,即可变形自注意力。该注意力机制利用可变形卷积技术产生offset,并通过可导采样产生sampled-K和sampled-V,之后再进行常规的MHSA从而可以使得注意力计算集中于和 Q Q Q相关的区域。需要注意的是,DA可以产生较小的K和V,并且DCN天然可学习重要区域的特性可帮助改模型减少计算量以及避免不相关token的干扰;此外DA仍然可以捕捉全局相关性,只不过其捕捉的范围被合理缩小了(DCN)
  3. 利用Swin-T、DA进行堆叠,从而就产生了可变形注意力模型——DAT

Note:

  1. PVT、Swin-T属于数据不可知型模型(data-agnostic):当前窗口内的 Q Q Q无法在全局范围内搜索,他无法知道窗口外面的世界。
  2. DAT属于数据依赖型(data-dependent)模型:这是因为其 K , V K,V K,V的产生是依赖于 Q Q Q的,即 Q Q Q产生了 K , V K,V K,V。它的搜索范围也是全局,故其不属于数据不可知模型。
  3. 关于DCN如何聚焦于重要区域,这是分类等任务的loss驱动产生的,loss驱动去学习合适的offset,从而让卷积具有合理的采样区域。下图分别展示了DCN对采样区域缩小、变大、变大的作用:
    在这里插入图片描述
    有关DCN的知识可参考我的2篇文章:①深度学习之DCN;②深度学习之DCN-v2
  4. DCN本身和视频超分中各有不同作用,即DCN和超分中的DCN用法是不一样的,前者聚焦于重要区域,后者更像flow,侧重于对齐。
  5. 可变形注意力的本质:利用DCN的offset聚焦到目标的核心重要位置,然后进行放大,而对于背景区域则会缩小。放大后的重要目标会拿来做注意力,从而凸显了重要区域(或者说informative、relavant)的重要性。

1 Introduction

Vision Transformer是一把双刃剑:

  1. 优点:具有较大的感受野以及具备捕捉较长范围内相关性的能力。
  2. 缺点:由于搜索范围往往很大,所以相似度计算量较大,需要较大的计算资源。

Swin-T && PVT \colorbox{lightskyblue}{Swin-T \&\& PVT} Swin-T && PVT
为了减少Vision Transformer的计算量,Swin-T和PVT各自发表了自己的模型:Swin-T基于窗口的局部相关性建模将计算量缩小到了窗口而非全图;PVT则是将Key和Value下采样从而节约计算资源。这些手工设计的注意力模式虽然可以降低相似度计算次数,但是两者均属于数据不可知模型——显然这不是最优的方式。这是因为你可能丢弃了一些较好的token,而只在一些次优的token里来回计算,这样一定会陷入局部最优的。

因此下一步的发展就变成了如何既能降低计算量又可以使得 Q Q Q可以搜寻到最佳匹配的token


可变形卷积(DCN)具有可聚焦采样于重要区域,这重要区域的选择是loss驱动的结果,比如一个 3 × 3 3\times 3 3×3的卷积由于感受野不够产生0.1的loss,为了降低loss,DCN的offset就会想办法往外扩张使得新的卷积可以有更大的感受野从而将采样区域聚集于更好的地方。受启发于这样的思想,DAT作者将可变形卷积迁移到Vision-Transformer里来。
这里面有loss的驱动才是DCN有效的关键,关于Conv和DCN的对比如下:在这里插入图片描述


Deformable Attention Transformer \colorbox{tomato}{Deformable Attention Transformer} Deformable Attention Transformer
本文的核心就是可变形注意力——DA,以DA为核心的金字塔网络结构(分辨率逐渐降低)就组成了DAT模型,如下图所示:
在这里插入图片描述
输入是 224 × 224 224\times 224 224×224的图像,经过4个stage,最后输出特征向量进行分类等任务。
①S1:利用卷积使分辨率下降 1 4 \frac{1}{4} 41 56 × 56 56\times 56 56×56;特征通道不变;LA+Shift-LA,即Swin-T。
②S2:利用卷积使分辨率下降 1 2 \frac{1}{2} 21 28 × 28 28\times 28 28×28;特征通道翻倍;同样是一个Swin-T结构
③S3:利用卷积使分辨率下降 1 2 \frac{1}{2} 21 14 × 14 14\times 14 14×14;特征通道翻倍;LA+DA。
④S4:利用卷积使分辨率下降 1 2 \frac{1}{2} 21 7 × 7 7\times 7 7×7;特征通道翻倍;LA+DA。

Note:

  1. 这种卷积型的patch embedding(即有重叠区域)比无重叠区域的卷积性能要高出 0.5 % − 1 % 0.5\%-1\% 0.5%1%在这里插入图片描述
    但并非所有想要利用DA的任务都适合于卷积型patch embedding,尤其是需要细节恢复的任务要格外注意这一点。现在许多涉及Vision-Transformer的模型获取token的方式都是利用卷积来做的( s t r i d e < c o n v _ s i z e stride < conv\_size stride<conv_size),比如VRT;还有一部分利用Unfold-fold来做;剩余的都像DAT-baseline或者ViT取不重叠的token。
  2. 总的来说,DAT中分为3个模块:L、D、S,分别为局部local注意力、可变形注意力、shift注意力。根据源码来看,其中L、S都是swin-T的一部分。
  3. 卷积利用窗口内的局部相关性提取特征;Transformer利用全局(局部)相关性提取特征。
  4. 上下采样之后记得LN(层归一化)。

首先简单描述下DA的inference,具体的见第三节:
在这里插入图片描述
输入 x x x是token结构(源码是四维张量),首先要经过全连接层输出 Q Q Q;然后利用 Q Q Q通过轻量级网络学习offset(源码里只学了1对方向,类同于光流)以及产生和offset相同大小的网格点坐标reference points;接着利用offset、reference points、 x x x通过双线性插值输出sampled-K和sampled-V。最后 Q , s a m p l e d − K , s a m p l e d − V Q,sampled-K,sampled-V Q,sampledK,sampledV三者之间通过MHSA输出 z z z

Note:

  1. ★★★由于 K , V K,V K,V都是由offset产生的,因此其在loss的驱动下会聚焦于图像的重要区域;且由于它两都是反向采样生成的,因此重要区域往往会被放大,背景区域往往会缩小,从而展现了突出重要区域,弱化次要区域的视觉效果;具体如下图所示:在这里插入图片描述

  2. 这些集中的regions由offset网络从Query中学习到的多组Deformable sampling点确定。采用双线性插值对特征映射中的特征进行采样,然后将采样后的特征输入key投影得到Deformable Key。

  3. 坐标格点归一化为 [ − 1 , 1 ] [-1, 1] [1,1],flow(offset)也同样需要归一化为 [ − 1 , 1 ] [-1, 1] [1,1]之间;光流是图像坐标,而非矩阵坐标, f l o w ∈ R H × W × 2 flow\in\mathbb{R}^{H\times W\times 2} flowRH×W×2,这个2里面,默认[0]为x,[1]为y。比如TTVSR中的位图是按图像坐标来的,而非矩阵坐标。

  4. Offset的源码如下:

ksizes = [9, 7, 5, 3]
kk = ksizes[stage_idx]  # DA只有ksizes[2],ksizes[3]用到
# stride=1
self.conv_offset = nn.Sequential(
            nn.Conv2d(self.n_group_channels, self.n_group_channels, kk, stride, kk//2, groups=self.n_group_channels),
            LayerNormProxy(self.n_group_channels),
            nn.GELU(),
            nn.Conv2d(self.n_group_channels, 2, 1, 1, 0, bias=False)
        )

DAT的贡献:

  1. 这是首次将可变形注意力机制用于目标分类、目标识别任务。
  2. 在ImageNet、ADE20K、COCO数据集上的展现了非常不错的表现力!

2 Related Work

3 Deformable Attention Transformer

3.1 Preliminaries

首先回顾下经典的Vision-Transformer中的注意力模块。
设输入为shape为 ( B , N , C ) (B, N, C) (B,N,C),则对于每一张图片 x ∈ R N × C x\in\mathbb{R}^{N\times C} xRN×C,其MHSA模块的数学表达式如下(设head的总数为 M M M):
q = x W q , k = x W k , v = x W v . (1) q = x W_q, k=x W_k, v = x W_v.\tag{1} q=xWq,k=xWk,v=xWv.(1) z ( m ) = σ ( q ( m ) k ( m ) T d ) v ( m ) , m = 1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值