【论文阅读】【ViT系列】Swin Transformer:使用移动窗口的多层视觉Transformer

论文:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
代码:https://github.com/microsoft/Swin-Transformer

1 主要贡献

  • Transformer架构在NLP领域已成为通行架构,但在CV领域应用尚不广泛,主要有两点原因:
    1. 语言处理以单词为基本元素,其尺度不变,而视觉中的基本元素可以有明显的尺度变化;
    2. 图片中像素的分辨率远高于文本中的单词;
  • Swin Transformer针对以上问题,借鉴了CNN的经验,构建了具有多层特征图的Transformer骨干网络,其计算复杂度与图片尺寸成线性关系;
  • Swin Transformer引入了连续的自注意力层的窗口分割的“移动”机制,解决了滑动窗口的延迟问题;
  • Swin Transformer在图像分类、物体检测和语义分割任务中都取得了出色的结果。

2 原理

2.1 总体架构

上图为Swin-T(tiny)的结构。输入的RGB图片先先被分割为不重叠的patches,每个patch大小为4*4,特征维度为48。阶段一经过线性嵌入和两个Swin Transformer block,将每个patch映射到长度为C的向量。阶段二中将阶段一的输出中2*2的相邻patches进行聚合,经过线性层后输出长度为2C的向量,再使用两个Swin Transformer block进行特征处理。阶段三和阶段四的处理方式类似。这样分层可以获得与经典的CNN分辨率相同的特征图。

Swin Transformer block

上图表示两个连续的Swin Transformer blocks,其中W-MSA和SW-MSA分别表示常规的和移动窗口的多头自注意力模块。每个Swin Transformer block是用基于移动窗口的MSA替换标准的MSA得到的。

2.2 基于移动窗口的自注意力

2.2.1 不重叠窗口中的自注意力

全局自注意力的计算复杂度与图片大小成二次关系,因此不适用于密集预测和高分辨率图像问题。因此本文提出,在局部窗口中计算自注意力,每个窗口包含M*M个patches。此时对于大小为h*w的图片,全局和基于窗口的自注意力的计算复杂度分别为:
Ω ( MSA ) = 4 h w C 2 + 2 ( h w ) 2 C Ω ( SW-MSA ) = 4 h w C 2 + 2 M 2 h w C \Omega(\text{MSA})=4hwC^2+2(hw)^2C\\ \Omega(\text{SW-MSA})=4hwC^2+2M^2hwC Ω(MSA)=4hwC2+2(hw)2CΩ(SW-MSA)=4hwC2+2M2hwC
前者与 h w hw hw成二次关系,后者与 h w hw hw成一次关系。

2.2.2 连续block中的窗口划分

不重叠的窗口中的自注意力计算缺乏跨窗口连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值