CSWin Transformer: A General Vision Transformer Backbone with Cross-Shaped Windows(CVPR2022)



原文
代码

Abstract

我们提出CSWin Transformer,一个高效且有效的基于Transformer的通用视觉任务骨干。
Transformer设计中的一个具有挑战性的问题是,全局自注意的计算成本非常高,而局部自注意通常会限制每个token的交互领域
为了解决这个问题,我们开发了Cross-Shaped Window自注意机制,计算水平和垂直平行条纹的自注意,这些条纹形成十字形窗口,每个条纹通过将输入特征分割成等宽的条纹获得。
我们对条纹宽度的影响进行了数学分析,并对不同层的条纹宽度进行了调整在限制计算成本的同时,实现了较强的Transformer器网络建模能力
我们还引入了局部增强位置编码(LePE),它能比现有的编码方案更好地处理局部位置信息。
LePE支持任意输入分辨率,因此对下游任务特别有效和友好
结合这些设计和高层次结构,CSWin Transformer在常见的视觉任务上展示了竞争性的性能

在没有任何额外训练数据或标签的情况下,在ImageNet-1K上实现了85.4%的Top-1准确率,在COCO检测任务上实现了53.9 box AP和46.4 mask AP,在ADE20K语义分割任务上实现了52.2 mIOU,在类似FLOPs设置下分别比之前最先进的Swin Transformer主干提高了+1.2,+2.0,+1.4和+2.0。
通过在更大的数据集ImageNet-21K上进行进一步的预训练,我们在ImageNet-1K上达到了87.5%的Top-1准确率,在ADE20K上达到了55.7 mIoU的高分割性能

Introduction

前任架构取得的成绩

基于Transformer的架构[17,38,53,60]最近在各种视觉任务中取得了与CNN同行相比具有竞争力的性能,通过利用多头自注意机制,这些视觉Transformers在建模长距离依赖关系方面表现出很高的能力,这对于处理下游任务中的高分辨率输入特别有帮助,例如目标检测和分割。

存在效率低下的问题

尽管取得了成功,但具有全注意力机制的Trans former架构在计算上效率低下

经典的解决方法

为了提高效率,一种典型的方法是将每个标记的注意区域从全注意限制为局部/窗口注意

存在的不足

接受野的扩大相当缓慢,它需要堆叠大量的块来实现全局的自注意

引言

一个足够大的接受野对于表现是至关重要的,特别是对于下游任务(例如:(目标检测和分割)。因此,如何在保证低计算成本的前提下高效地实现大的接收域是非常重要的

我们的方法

在本文中,我们提出了十字形窗口(CSWin)自注意,如图1所示

我们的CSWin在两个方面有着根本的不同。首先,我们拆分多头({h1,…, hK})分为两组,同时在水平和垂直条纹上进行自注意计算(这种并行策略在增加了每个Transformer块内用于计算自关注的面积的同时,没有增加额外的计算成本)
其次,我们根据深度网络调整条带宽度:浅层宽度小,深层宽度大,可以在计算成本和性能之间实现更好的权衡

条纹宽度

条纹宽度是十字窗的一个重要参数,因为它可以在限制计算成本的同时实现强大的建模能力。
条带宽度越大,远程元素之间的连接越强,在计算成本增加较少的情况下获得更好的网络容量

Related Work

Vision Transformer(ViT)

最近,开创性的工作ViT表明,纯基于transformer的架构也可以取得非常有竞争力的结果,这体现了在统一框架下处理视觉任务和自然语言处理(NLP)任务的潜力。以往的ViT及其改进都遵循分层的Transformer架构,但采用不同的自注意机制。本文通过引入十字窗自注意和局部增强的位置编码,提出了一种新的分层ViT backbone

Efficient Self-attentions(以前的ViT在这方面做的不好,哒哒哒…)

由于视觉任务中的图像分辨率通常很高,因此设计有效的自注意机制也非常重要
现有的许多ViT仍然采用原始的全局注意算法,其计算复杂度与图像大小成二次关
轴向自注意和交叉注意提出沿水平或/和垂直轴计算条纹窗口内的注意,然轴向注意受其顺序机制和受限的窗口大小的限制,而交叉注意由于其重叠的窗口设计和受限的窗口大小而在实践中效率低下

Positional Encoding

由于自注意是排列不变的,并且忽略了标记的位置信息,因此在Transformer中广泛使用位置编码来添加这些位置信息
典型的位置编码机制包括绝对位置编码(APE)、相对位置编码(RPE)和条件位置编码(CPE)

APE和RPE通常被定义为一系列频率或可学习参数的正弦函数,它们是为特定的输入大小而设计的,对不同的输入分辨率不友好

CPE以特征为输入,可以生成任意输入分辨率的位置编码,然后将生成的位置编码添加到输入特征上

我们的LePE与CPE相类似,但建议将位置编码作为并行模块添加到自注意操作中,并对每个Transformer块中的投影值进行操作,这种设计将位置编码与自注意计算解耦,并且可以执行更强的局部归纳偏置

Method

Overall Architecture


卷积层(3 × 3,stride 2)在两个相邻的阶段之间使用,以减少token的数量并使通道维度加倍
第i个阶段构造的特征映射有H/2^i+1 × W/2的i次方+1
每个阶段由N个连续的CSWin Transformer block组成,并维护token的数量
CSWin变压器块具有与vanilla多头自注意Transformer块总体相似的拓扑结构,但有两个不同之处:1)它用我们提出的十字窗自注意取代了自注意机制;2)为了引入局部感应偏置,在自注意支路上增加LePE并联模块

Cross-Shaped Window Self-Attention

为了扩大注意区域,更有效地实现全局自注意,我们提出了十字形窗口自注意机制,该机制通过在水平和垂直平行的条纹上形成十字形窗口来实现自注意

Horizontal and Vertical Stripes

根据多头自注意机制,输入特征X∈R (H×W)×C将首先线性投影到K个头部,然后每个头部将在水平或垂直条纹内执行局部自注意
对于水平条纹自关注,X被均匀划分为不重叠的水平条纹[X 1,…,XM]等宽的sw,每个都包含sw × W tokens。其中,sw是条纹宽度,可以调整以平衡学习能力和计算复杂度,形式上,假设第k个头的投影查询、键和值的维数都是dk,那么第k个头的水平条纹自关注的输出定义为:

X、Yik、H-Attention(X)分别表示第k个头的查询、键和值的投影矩阵,dk设置为C/K
垂直条纹的自注意也可以类似地推导出来,它对第k个头部的输出记为V-Attention k (X)
假设自然图像没有方向偏差,我们将K个正面平均分成两个平行组(每个组有K/2个正面,K通常是偶数值)
第一组头像进行横条纹自注意,第二组头像进行竖条纹自注意
最后,这两个平行组的输出将被连接回一起
在这里插入图片描述
其中W O∈R C×C是常用的投影矩阵,将自关注结果投影到目标输出维度(默认设置为C)
如上所述,我们的自注意机制设计的一个关键见解是将多头分成不同的组,并相应地应用不同的自注意操作,换句话说,通过多头分组扩大了一个Transformer块中每个token的关注区域

Computation Complexity Analysis


对于高分辨率输入,考虑到H,W在前期大于C,后期小于C,我们前期选择小的sw,后期调大sw
调整sw提供了灵活性,可以在后期以有效的方式扩大每个token的关注区域

Locally-Enhanced Positional Encoding

由于自注意操作是置换不变的,它将忽略二维图像中重要的位置信息
APE和CPE在输入到Transformer块之前引入位置信息,而RPE和LePE在每个Transformer块中操作。与RPE将位置信息添加到注意力计算中不同,我们的LePE直接对V进行操作,并作为并行模块
同时,我们注意到RPE以每个头部的方式引入偏差,而我们的LePE是每个通道的偏差,这可能显示出更大的潜力作为位置嵌入。

q、k、v是序列、键和值,通过对输入x进行线性变换得到的,d是特征维度
我们的局部增强位置编码执行为可学习的每个元素偏差,并且公式4可以表示为:

为了使LePE适合于不同的输入大小,我们为LePE设置了距离阈值,如果标记i和j的切比雪夫(Chebyshev)距离大于阈值τ(默认设置中τ = 3),则将其设置为0。

CSWin Transformer Block

具有上述自关注机制和位置嵌入机制的CSWin Transformer块被正式定义为:

xl表示第l个Transformer块或每级前一卷积层的输出

Architecture Variants

为了与类似设置下的其他视觉Transformer进行公平的比较,我们构建了四个不同的变体CSWin Transformer如表1所示
CSWin-T (Tiny),CSWin-S(Small), CSWin-B(Base), CSWin-L(Large)
在所有这些变体中,每个MLP的扩展比设置为4

Experiments

为了证明CSWin Transformer作为通用视觉主干的有效性,我们对ImageNet- 1K分类、COCO目标检测和ADE20K语义分割进行了实验。我们还进行了全面的烧蚀研究,以分析CSWin Transformer的每个组件

result

具体来说,在没有任何额外训练数据或标签的情况下,它在ImageNet-1K上达到了85.4%的Top-1准确率,在COCO检测任务上达到了53.9 box AP和46.4 mask AP,在ADE20K语义分割任务上达到了52.2 mIOU,在类似FLOPs设置下分别比之前最先进的Swin Transformer主干提高了+1.2,+2.0,+1.4和+2.0。通过在更大的数据集ImageNet-21K上进行进一步的预训练,我们在ImageNet-1K上达到了87.5%的Top-1准确率,在ADE20K上达到了55.7 mIoU的高分割性能

Conclusion

本文提出了一种新的视觉Transformer体系结构——CSWin Transformer,CSWin Transformer的核心设计是CSWin自注意,它通过将多头分成平行组,在水平和垂直条纹中进行自注意计算。这种多头分组设计可以有效地扩大一个Transformer块内每个token的关注区域,另一方面,数学分析也允许我们沿着网络深度增加条纹宽度,以微小的额外计算成本进一步扩大注意区域,我们进一步在CSWin Transformer中引入局部增强的位置编码,用于下游任务,在计算复杂度受限的情况下,我们在各种视觉任务上取得了最先进的性能。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值