论文阅读笔记:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
论文阅读笔记: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×16W和H32×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相关推荐
- Swin Transformer: Hierarchical Vision Transformer using Shifted Windows论文阅读
Swin Transformer: Hierarchical Vision Transformer using Shifted Windows论文阅读 摘要 介绍 相关工作 方法 整个架构 基于sel ...
- 【Transformer 论文精读】……Swin Transformer……(Hierarchical Vision Transformer using Shifted Windows)
文章目录 一.Abstract(摘要) 二.Introduction(引言) 三.Related Work(相关工作) 四.Method(方法) 1.Patch Merging模块 2.W-MSA模块 ...
- 【读点论文】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows通过窗口化进行局部MSA,sw-MSA融合信息
Swin Transformer: Hierarchical Vision Transformer using Shifted Windows abstract 本文提出了一种新的视觉transfor ...
- 【文献阅读】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
题目:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 时间:2021 会议/期刊:ICCV 2021 研 ...
- Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
目录 Introduction Method Hierarchical feature maps and Linear computational complexity Patch merging S ...
- 13、Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
简介 主页:https://github. com/microsoft/Swin-Transformer. Swin Transformer 是 2021 ICCV最佳论文,屠榜了各大CV任务,性能优 ...
- 【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 ...
- Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 论文翻译 + 网络详解
目录 1 3 4 5 是论文的翻译,如果看过论文也可以直接看关于网络的结构详解. Abstract 1. Introduction 3. Method 3.1 Overall Architicture ...
- 论文笔记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 ...
最新文章
- 项目实施中应该注意的事项
- 用python解析html[SGMLParser]
- java socket 字节读取_Java SocketChannel 读取ByteBuffer字节的处理模型
- 【转】简述configure、pkg-config、pkg_config_path三者的关系
- win7 IIS7.5 HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态...
- File Io 删除类中的引用
- 论文浅尝 - EMNLP2020 | 跨媒体关键词预测: 多模态多头注意力和图像文本的统一框架...
- 5G领域最权威绿宝书迎来中文版啦!
- 五分钟用Docker快速搭建Go开发环境
- ubuntu 以太网已连接但是无法联网_连接wifi时,出现“已连接但无法访问互联网”,这样做就可以了...
- P2P共享经济都可接受 O2O×××有何不可?
- 腾讯2014在广州站实习生offer经验(TEG-开发背景)
- ubuntu14.04小米无线网卡驱动安装
- 西数480G绿盘SSD搬板,SM2258xt开卡成功,附量产工具
- Java能和comsol连接吗_安装COMSOL时遇到与Java相关的错误
- python卸载pip_python 怎样卸载pip
- 永久域名存在吗?永久域名注册流程是什么样的?
- stl文件html预览,【stl文件在线预览】示例源码
- 台式计算机箱ip5x,IP5X防水是个什么概念?
- 字符串之间的大小比较方法
热门文章
- http://www.xuexi111.com/
- 自动编解码器的训练与数据识别效果解析
- samba访问共享提示,NT_STATUS_ACCESS_DENIED listing \*
- 网络开发工具应用客户端下载Dreamweaver8在Windows XP中安装详解与步骤
- 利用互相关求时差---xcorr
- 【Qt】main.cpp:1:24: fatal error: QApplication: No such file or directory
- 软件开发:界面库详细对比,开发工具的选择指导
- SocksCapV2
- [支付宝服务窗]序言
- hud抬头显示器哪个好_车萝卜又一新品,智能HUD蓝牙版1S抬头显示器上手评测