论文阅读笔记:Swin Transformer

  • 摘要
  • 1 简介
  • 2 相关工作
  • 3 方法论
    • 3.1 总览
      • Swin Transformer block
    • 3.2 shifted window-based Self-attention
      • 非重叠的窗口上计算Self-attention
      • 模块间的移位窗口划分
      • 使用shifted配置的高效批处理计算

  • 读了,但是只能读一点,仅作涉猎

Author: Yue Cao et.al.
Translate from: arXiv:2103.14030v2
Cite as: Liu, Z., Lin, Y., Cao, Y., Hu, H., Wei, Y., Zhang, Z., Lin, S.C., & Guo, B. (2021). Swin Transformer: Hierarchical Vision Transformer using Shifted Windows. ArXiv, abs/2103.14030.
Open source: https://github. com/microsoft/Swin Transformer

摘要

本文提出了一种新的ViT,称为Swin Transformer,它可以作为CV领域的通用backbones。把Transformer从NLP用到CV的挑战来自于两个领域之间的差异,例如视觉对象的规模以及图像中像素的高分辨率。为了解决这些差异,我们提出了一种分层 (hierarchical) Transformer,它的表示是用移位窗口 (Shifted windows) 计算的。

移位窗口的设计限制将Self-attenion的计算限制在非重叠的局部窗口中,同时允许跨窗口的连接,从而提高了效率。
这种分层结构具有在不同尺度下建模的灵活性,并且相对于图像大小具有线性计算复杂度。

Swin Transformer的这些特性使其与广泛的视觉任务兼容,包括图像分类(ImageNet-1K),密集预测任务,目标检测(COCO)和语义分割(ADE20K)。它的性能超过了之前的最先进水平,这表明了基于ViT的模型作为视觉backbones的潜力。分层设计和移位窗口方法也证明对所有MLP体系结构都是有益的。

1 简介

计算机视觉中的建模一直由卷积神经网络(CNN)主导。CNN架构通过更大的规模、更广泛的连接和更复杂的卷积形式变得越来越强大。CNN已成为各种视觉任务的Backbones。

事实上,Shifted windows的思想就和CNN中Conv的计算方法很像

另一方面,自然语言处理(NLP)中网络体系结构的演变走了一条完全不同的道路,最流行的体系结构是Transformer。它是为序列建模 (sequence modeling)转换任务而设计的,它以关注数据中的long-range的依赖关系而著称。它在NLP领域的巨大成功促使研究人员研究它对CV的适应性,最近它在某些任务上展示了有希望的结果,特别是图像分类和联合视觉语言建模。

在本文中,我们试图扩展Transformer以便使其作为计算机视觉的通用backbones,就像CNN所做的那样。我们观察到,将Transformer从NLP迁移到CV领域的挑战可以通过两种模式之间的差异来解释。

  • 其中一个差异涉及规模。与作为语言转换器处理基本元素的单词token不同,视觉元素在规模上可能有很大差异。在现有的基于Transformer的模型中,token都是固定比例的,这一属性不适合这些vision应用。
  • 另一个区别是图像中像素的分辨率比文本中的单词高得多。存在许多视觉任务,例如需要在像素级进行密集预测的语义分割,这对于高分辨率图像是很困难的,因为Self-attention的计算复杂度是图像大小的二次方。


图1(a)Swin Transformer通过在更深的层中合并图像块(灰色分块)来构建分层的feature maps,并且由于只在每个局部窗口(红色分块)内计算Self-attention,因此对于输入图像大小具有线性计算复杂性。(b)相比之下,以前的ViT生成单一低分辨率的feature maps,并且由于计算全局自我注意,输入图像大小具有二次计算复杂性。

我们提出了一种通用的backbone,称为Swin-Transformer,它构造了层次化feature maps,并且具有与图像大小成线性关系的计算复杂度。如图1所示,Swin Transformer从小尺寸的patch开始,逐步合并更深层次的Transformer层中的相邻patch,构建层次表示。有了这些层次化feature maps,Swin Transformer模型可以方便地利用先进技术进行密集预测。线性计算复杂性是通过在分割图像的非重叠窗口内局部计算Self-attention来实现的。每个窗口中的patch数量是固定的,因此复杂性与图像大小成线性关系。Swin Transformer与以前基于Transformer的体系结构不同,后者生成单一分辨率的feature maps,并且具有二次方复杂度。

图2 一个用于计算Self-attention的shifted window方法的示例。在lll层(左),采用规则的window划分方案,并在每个窗口内计算Self-attention。在下一层l+1l+1l+1(右)中,窗口分区被shifted,从而产生新的窗口。因此新窗口中的Self-attention计算跨越了先前窗口的边界,建立了它们之间的联系。

Swin Transformer的一个关键设计元素是在连续的shifted window分区,如图2所示。这种策略在考虑真实世界的时延(latency)方面也很有效:window中的所有query patch都共享相同的key集合,这有助于硬件访问内存。早期的基于滑动窗口的自我注意方法[33,50]由于不同query像素的key集合不同,在普通硬件上的延迟问题更严重。实验表明,shifted window方法比sliding window方法具有更低的延迟,但建模能力相似。

注意!移动的是窗口的划分(所以叫shifted window),而非移动窗口本身(这是以前的sliding window)!这一改动的好处在这段写得很清楚,即shifted window使得不重叠的窗口共享key集合,从而计算复杂度好很多。

具体来说,该方法在前后相继的SWN Transformer模块中交替使用两种划分配置,如3.2节所详细解释。

2 相关工作

3 方法论

3.1 总览

图3概述了Swin Transformer体系结构,其中说明了tiny版本(Swin-T)。它首先将RGB图像分割为非重叠的patch。每个patch被视为一个token,其特征被就是被展平的像素RGB值。在我们的实现中,我们使用4×4像素的patch,因此每个patch的特征维度为4×4×3=48。在该原始值特征上应用线性嵌入层将其投影到任意维度(表示为C)。


图3(a)Swin-T的结构(b)两个前后相继的的Swin-T模块,W-MSA和SW-MSA分别表示具有标准和移位window的多头自注意力模块。

首先,在这些patch上应用了几个改进的Swin Transformer blocks。转换器块保持token的数量(H4×W4\frac{H}{4}\times \frac{W}{4}4H×4W),与Linear embedding一起被称为“stage 1”。

为了产生分层表示,随着网络的深入,通过将patch合并来减少token的数量。第一个合并层连接每组2×2相邻patch的特征,并在4C维合并后的特征上应用线性层。这将令牌的数量减少了2×2=4倍(相当于分辨率的2×降采样),输出维度变为2C。之后应用SW Transformer块进行特征变换,分辨率保持在H8×W8\frac{H}{8}\times \frac{W}{8}8H×8W,被称为“stage 2”。
“stage 2”重复两次,即“stage 3”和“stage 4”,输出分辨率经过两次降采样变为分别为H16×W16\frac{H}{16}\times \frac{W}{16}16H×16WH32×W32\frac{H}{32}\times \frac{W}{32}32H×32W。这些阶段共同产生分层表示,具有与典型卷积网络相同的特征图的分辨率,因此,所提出的体系结构可以方便地替换现有方法中的backbone,用于各种视觉任务。

Swin Transformer block

Swin Transformer是通过将标准多头自关注(MSA)模块替换为基于shifted window的模块而构建的,其他层保持不变。如图3(b)所示,Swin Transformer模块由一个SW-MSA模块组成,然后是一个具有GELU非线性的2层MLP。在每个MSA模块和每个MLP之前应用LayerNorm(LN)层,在每个模块之后添加残差连接。

3.2 shifted window-based Self-attention

全局的Self-attention计算具有token数量二次方的复杂性,这使得它不适用于许多高分辨率图像的视觉问题。

非重叠的窗口上计算Self-attention

为了有效建模,我们建议只在局部窗口中计算Self-attention。每个窗口以不重叠的方式均匀地分割图像。假设每个窗口包含M×M个patch,则全局MSA模块和基于窗口的MSA模块计算复杂度分别(假设有h×wh\times wh×w个patch):

其中,前者是patch总数hwhwhw的二次方,而后者在窗口数MMM固定时对hwhwhw是线性的。全局MSA计算量通常是负担不起的,而基于窗口的W-MSA是scalable的。

模块间的移位窗口划分

到目前为止基于窗口W-MSA模块缺乏跨窗口之间的连接,这限制了其建模能力。为了在保持非重叠窗口的高效计算的同时引入跨窗口连接,我们提出了一种移位窗口划分的方法,该方法在前后相继的SWN transformer模块中交替使用两种划分配置

如图2所示,第一个模块使用从左上角像素开始的常规窗口分区策略,将8×8特征映射均匀地划分为大小为4×4(M=4)的2×2大小的窗口。然后,下一个模块采用与前一层不同的窗口配置,按照M2\frac{M}{2}2M移动窗口分区策略。

使用移位窗口划分方法,整体的SWN transformer模块计算如下(对应图2b):

使用shifted配置的高效批处理计算

移位窗口分区的一个问题是,它将得到更多的窗口,并且处于图像边缘的窗口大小将小于M×MM×MM×M。一个简单的解决方案是将较小的窗口填充到M×M大小,并在计算attention时mask掉填充值。但还有一个问题是,当划分的窗口数很少时,使用此填充方法增加的计算量相当大。在这里,我们提出了一种更有效的批量计算方法,方法是向左上方向循环移位,如图4所示。在该移位之后,批处理窗口可能由多个子窗口组成,这些子窗口在feature maps中不相邻,因此采用mask机制将Self-attention计算限制在每个子窗口内。通过循环移位,批处理窗口的数量与常规窗口分区的数量相同,因此也是有效的。

论文阅读笔记:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows相关推荐

  1. Swin Transformer: Hierarchical Vision Transformer using Shifted Windows论文阅读

    Swin Transformer: Hierarchical Vision Transformer using Shifted Windows论文阅读 摘要 介绍 相关工作 方法 整个架构 基于sel ...

  2. 【Transformer 论文精读】……Swin Transformer……(Hierarchical Vision Transformer using Shifted Windows)

    文章目录 一.Abstract(摘要) 二.Introduction(引言) 三.Related Work(相关工作) 四.Method(方法) 1.Patch Merging模块 2.W-MSA模块 ...

  3. 【读点论文】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows通过窗口化进行局部MSA,sw-MSA融合信息

    Swin Transformer: Hierarchical Vision Transformer using Shifted Windows abstract 本文提出了一种新的视觉transfor ...

  4. 【文献阅读】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

    题目:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 时间:2021 会议/期刊:ICCV 2021 研 ...

  5. Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

    目录 Introduction Method Hierarchical feature maps and Linear computational complexity Patch merging S ...

  6. 13、Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

    简介 主页:https://github. com/microsoft/Swin-Transformer. Swin Transformer 是 2021 ICCV最佳论文,屠榜了各大CV任务,性能优 ...

  7. 【Swin Transformer】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

    文章:https://arxiv.org/abs/2103.14030 代码:GitHub - microsoft/Swin-Transformer: This is an official impl ...

  8. Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 论文翻译 + 网络详解

    目录 1 3 4 5 是论文的翻译,如果看过论文也可以直接看关于网络的结构详解. Abstract 1. Introduction 3. Method 3.1 Overall Architicture ...

  9. 论文笔记33 -- (CV)【ICCV2021】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

    CV + Transformer 论文:点这里 官方代码:点这里 第三方代码:点这里 Ze Liu,Yutong Lin,Yue Cao,Han Hu,Yixuan Wei,Zheng Zhang,S ...

最新文章

  1. 项目实施中应该注意的事项
  2. 用python解析html[SGMLParser]
  3. java socket 字节读取_Java SocketChannel 读取ByteBuffer字节的处理模型
  4. 【转】简述configure、pkg-config、pkg_config_path三者的关系
  5. win7 IIS7.5 HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态...
  6. File Io 删除类中的引用
  7. 论文浅尝 - EMNLP2020 | 跨媒体关键词预测: 多模态多头注意力和图像文本的统一框架...
  8. 5G领域最权威绿宝书迎来中文版啦!
  9. 五分钟用Docker快速搭建Go开发环境
  10. ubuntu 以太网已连接但是无法联网_连接wifi时,出现“已连接但无法访问互联网”,这样做就可以了...
  11. P2P共享经济都可接受 O2O×××有何不可?
  12. 腾讯2014在广州站实习生offer经验(TEG-开发背景)
  13. ubuntu14.04小米无线网卡驱动安装
  14. 西数480G绿盘SSD搬板,SM2258xt开卡成功,附量产工具
  15. Java能和comsol连接吗_安装COMSOL时遇到与Java相关的错误
  16. python卸载pip_python 怎样卸载pip
  17. 永久域名存在吗?永久域名注册流程是什么样的?
  18. stl文件html预览,【stl文件在线预览】示例源码
  19. 台式计算机箱ip5x,IP5X防水是个什么概念?
  20. 字符串之间的大小比较方法

热门文章

  1. http://www.xuexi111.com/
  2. 自动编解码器的训练与数据识别效果解析
  3. samba访问共享提示,NT_STATUS_ACCESS_DENIED listing \*
  4. 网络开发工具应用客户端下载Dreamweaver8在Windows XP中安装详解与步骤
  5. 利用互相关求时差---xcorr
  6. 【Qt】main.cpp:1:24: fatal error: QApplication: No such file or directory
  7. 软件开发:界面库详细对比,开发工具的选择指导
  8. SocksCapV2
  9. [支付宝服务窗]序言
  10. hud抬头显示器哪个好_车萝卜又一新品,智能HUD蓝牙版1S抬头显示器上手评测