ICCV2021 | Swin Transformer: 使用移位窗口的分层视觉Transformer
前言
本文解读的论文是ICCV2021中的最佳论文,在短短几个月内,google scholar上有388引用次数,github上有6.1k star。
本文来自公众号CV技术指南的论文分享系列
关注公众号CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。
论文: Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
代码:https://github. com/microsoft/Swin-Transformer
Motivation
论文试图扩展Transformer的适用性,使其可以作为计算机视觉的通用主干,就像它在NLP中所做的那样,也可以像CNNs在视觉中所做的那样。
论文提到,将其在语言领域的高性能转换到视觉领域的重大挑战可以用这两种模式之间的差异来解释。这些不同之处之一涉及到规模。
与作为语言transformer中处理的基本元素的单词tokens不同,视觉元素在尺度上可以有很大的变化,这是一个在诸如目标检测之类的任务中受到关注的问题。在现有的基于transformer的模型中,tokens都是固定比例的,这一特性不适合这些视觉应用。
另一个不同之处在于,与文本段落中的文字相比,图像中像素的分辨率要高得多。存在许多视觉任务,如语义分割,需要在像素级别进行密集预测,这对于高分辨率图像上的Transformer来说是很困难的,因为它的self-attention的计算复杂度是图像大小的二次方。
创新思路
为了克服这些问题,论文提出了一种通用的Transformer骨干网,称为Swin Transformer,它构造了分层的特征映射,并且计算复杂度与图像大小成线性关系。
如图1(A)所示,Swin Transformer通过从小块(灰色轮廓)开始,逐渐合并更深的Transformer层中的相邻块来构建分层表示。
有了这些分层的特征图,Swin Transformer模型可以方便地利用先进的技术进行密集预测,如特征金字塔网络(FPN)或U-Net。线性计算复杂度是通过在分割图像(红色轮廓)的非重叠窗口内局部计算self-attention来实现的。每个窗口中的patches数量是固定的,因此复杂度与图像大小成线性关系。
这些优点使得Swin Transformer适合作为各种视觉任务的通用主干,而不是以前基于Transformer的架构,后者生成单一分辨率的特征地图,并且具有二次方复杂性。
Swin Transformer的一个关键设计元素是窗口分区在连续的self-attention层之间的移动,如图2所示。移动的窗口桥接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力。
这种策略在实际延迟方面也是有效的:一个窗口内的所有query patch都共享相同的key集,这便于硬件中的内存访问。相反,较早的基于滑动窗口的self-attention方法由于不同query像素的不同key集而在一般硬件上受到低延迟的影响。
实验表明,所提出的移位窗口方法比滑动窗口方法具有更低的延迟,但在建模能力上是相似的。事实证明,移位窗口方法对于全MLP体系结构也是有益的。
Methods
Overall Architecture
Swin Transformer架构的概述如图3所示,它展示了tiny版本(Swin-T)。
图3.(a)Swin Transformer(Swin-T)的架构;(b)两个连续的Swin Transformer块(用公式表示(3))。W-MSA和SW-MSA分别是具有规则和移位窗口配置的多头自注意模块。
它首先通过patch分割模块(如ViT)将输入的RGB图像分割成不重叠的patch。每个patch都被视为一个“token”,其特征被设置为原始像素RGB值的串联。在实现中,论文使用了4×4的块大小,因此每个块的特征维度是4×4×3=48。将线性嵌入层应用于该原始值特征以将其投影到任意维度(表示为C)。
在这些patch tokens上应用了几个带有修改的self-attention计算的transformer block (Swin Transformer block)。transformer块保持tokens数(H/4×W/4),与线性嵌入一起称为“Stage1”。
为了产生分层表示,随着网络的深入,通过patch合并层来减少tokens的数量。第一个patch合并层将每组2×2相邻patch的特征进行拼接,并在4C维拼接的特征上应用线性层。这将tokens的数量减少了2×2=4的倍数(2倍下采样),并且输出维度被设置为2C。然后应用Swin Transformer块进行特征变换,分辨率保持为H/8×W/8。这第一个块的拼接和特征变换称为“Stage2”。重复“Stage3”和“Stage4”两次,输出分辨率分别为H/16×W/16和H/32×W/32。
这些Stage共同产生具有与典型卷积网络(如VGG和ResNet)相同的特征映射分辨率的分层表示。因此,该体系结构可以方便地取代现有方法中的骨干网络,用于各种视觉任务。
Swin Transformer Block: Swin Transformer通过将transformer块中的标准多头self-attention(MSA)模块替换为基于移位窗口的模块,在保持其他层不变的情况下构建Swin Transformer。
如图3(b)所示,Swin Transformer模块由一个基于移位窗口的MSA模块和一个中间带有GELU非线性的两层MLP组成。在每个MSA模块和每个MLP之前应用LayerNorm(LN)层,并且在每个模块之后应用残差连接。
基于移位窗口的self-attention
非重叠窗口中的self-attention: 为有效建模,论文提出在局部窗口中计算self-attention。窗口被布置成以不重叠的方式均匀地分割图像。假设每个窗口包含M×M个patch,全局MSA模块和基于h×w patch图像的窗口的计算复杂度分别为
其中,前者与patch数HW为平方关系,后者在M固定时是线性的(缺省情况下设置为7)。全局self-attention计算对于大型硬件来说通常是负担不起的,而基于窗口的self-attention是可伸缩的。
在连续块中移动窗口分区: 基于窗口的self-attention模块缺少跨窗口的连接,这限制了其建模能力。为了在保持非重叠窗口计算效率的同时引入跨窗口连接,论文提出了一种移位窗口划分方法,该方法在连续Swin Transformer块中的两种划分配置之间交替。
在Swin Transformer架构中计算self-attentioin的移位窗口方法的图示。在Layer1(左)中,采用规则的窗口划分方案,并在每个窗口内计算自我关注。在下一层l+1(右)中,窗口分区被移位,从而产生新窗口。新窗口中的self-attention计算跨越了层l中先前窗口的边界,提供了它们之间的连接。
如图所示,第一个模块使用从左上角像素开始的规则窗口划分策略,将8×8特征图均匀划分为大小为4×4(M=4)的2×2个窗口。然后,下一模块通过将窗口从规则划分的窗口移位(M/2,M/2)(向下取整)像素来采用从前一层的窗口移位的窗口配置。使用移位窗口分区方法,连续的Swin Transformer块计算为
其中,ˆzl和zl分别表示块1的(S)WMSA模块和MLP模块的输出特征;W-MSA和SW-MSA分别表示使用规则和移位窗口分区配置的基于窗口的多头self-attention。
移位窗口划分方法引入了前一层相邻非重叠窗口之间的连接,在图像分类、目标检测和语义分割中被发现是有效的。
移位的高效批处理计算:移位窗口分区的一个问题是,它将在移位中产生更多窗口,从h/M x w/M(向上取整)到(h/M + 1) x (w/M+1)(向上取整),并且一些窗口将比MxM更小。一个原始的解决方案是将较小的窗口填充到M×M的大小,并在计算注意力时屏蔽填充的值。当规则分区中的窗口数量较小时,例如2×2,使用这种朴素的解决方案增加的计算量是相当可观的(2×2→3×3,是2.25倍)。
在这里,论文提出了更有效的批处理计算方法,即向左上角方向循环移动,如图所示。在这种转移之后,批处理窗口可能由特征图中不相邻的几个子窗口组成,因此采用mask机制将self-attention计算限制在每个子窗口内。在循环移位的情况下,批处理窗口的数量与常规窗口划分的数量相同,因此也是有效的。
相对位置偏差:在计算self-attention时,在计算相似度时将每个头部的相对位置偏差B(大小为M^2×M^2)包括在内:
其中Q,K,V大小为M^2 x d;d的大小为query/key,M^2是一个窗口中的patches数量。由于沿每个轴的相对位置在[−M+1,M−1]范围内,将较小尺寸的偏置矩阵ˆB(大小为(2M−1)×(2M−1))参数化,并且B中的值取自ˆB。
如表所示,论文提到,与没有这种bias项或使用绝对位置嵌入的同行相比,有显著的改进。进一步向输入添加绝对位置嵌入会略微降低性能,因此在论文的实现中不采用它。在预训练中学习到的相对位置偏差还可以用于通过双三次插值来初始化具有不同窗口大小的微调模型。
Architecture Variants
论文构建了名为Swin-B的基本模型,其模型大小和计算复杂度与ViTB/Deit-B相似。还提出了Swin-T、Swin-S和Swin-L,它们的模型规模和计算复杂度分别约为0.25×、0.5×和2倍。请注意,Swin-T和Swin-S的复杂度分别与ResNet-50(Deit-S)和ResNet-101相似。默认情况下,窗口大小设置为M=7。对于所有实验,每个头的query维度为D=32,每个MLP的扩展层为α=4。这些模型变体的体系结构超参数包括:
Conclusion
论文提出的Swin Transformer在图像分类、目标检测和语义分割等识别任务中取得了较好的性能。它在三个任务上的延迟与Vit/Deit和ResNe(X)t模型相比要高得多。
1. 不同骨干网在ImageNet-1K分类上的比较。
2. 其在COCO测试开发集上的58.7box AP和51.1mask AP超过了之前SOTA结果+2.7box AP(无外部数据的复制-粘贴)和+2.6mask AP(DetectoRS)。
3.在ADE20K语义分割上,它在Val集合上获得了53.5mIoU,比之前的SOTA(SETR])提高了+3.2mIoU。在ImageNet-1K图像分类上达到了87.3%的TOP-1正确率。
4. 不同的self-attention计算方法和实现在V100 GPU上的真实速度。
欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。
在公众号中回复关键字 “入门指南“可获取计算机视觉入门所有必备资料。
其它文章
ICCV2021 | SOTR:使用transformer分割物体
ML2021 | PatrickStar:通过基于块的内存管理实现预训练模型的并行训练
ICCV2021 | PnP-DETR:用Transformer进行高效的视觉分析
ICCV2021 | 医学影像等小数据集的非自然图像领域能否用transformer?
ICCV2021 | Vision Transformer中相对位置编码的反思与改进
ICCV2021 | MicroNet:以极低的 FLOPs 改进图像识别
ICCV2021 | 重新思考视觉transformers的空间维度
CVPR2021 | TransCenter: transformer用于多目标跟踪算法
CVPR2021 | TimeSformer-视频理解的时空注意模型
CVPR2021 | SETR: 使用 Transformer 从序列到序列的角度重新思考语义分割
经典论文系列 | Group Normalization & BN的缺陷
经典论文系列 | 目标检测--CornerNet & anchor boxes的缺陷
经典论文系列 | 缩小Anchor-based和Anchor-free检测之间差距的方法:自适应训练样本选择
全面理解目标检测中的anchor| 实例分割综述总结综合整理版
单阶段实例分割综述| 小目标检测的一些问题,思路和方案
视觉Transformer综述| 2021年小目标检测最新研究综述
Siamese network综述| 姿态估计综述| 语义分割综述
视频理解综述:动作识别、时序动作定位、视频Embedding
ICCV2021 | Swin Transformer: 使用移位窗口的分层视觉Transformer的更多相关文章
- EdgeFormer: 向视觉 Transformer 学习,构建一个比 MobileViT 更好更快的卷积网络
前言 本文主要探究了轻量模型的设计.通过使用 Vision Transformer 的优势来改进卷积网络,从而获得更好的性能. 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结.最新技术跟 ...
- ICCV2021 | 渐进采样式Vision Transformer
前言 ViT通过简单地将图像分割成固定长度的tokens,并使用transformer来学习这些tokens之间的关系.tokens化可能会破坏对象结构,将网格分配给背景等不感兴趣的区域,并引 ...
- 计算机视觉--CV技术指南文章汇总
前言 本文汇总了过去本公众号原创的.国外博客翻译的.从其它公众号转载的.从知乎转载的等一些比较重要的文章,并按照论文分享.技术总结三个方面进行了一个简单分类.点击每篇文章标题可阅读详细内容 欢迎关注 ...
- ICCV2021 | 用于视觉跟踪的学习时空型transformer
前言 本文介绍了一个端到端的用于视觉跟踪的transformer模型,它能够捕获视频序列中空间和时间信息的全局特征依赖关系.在五个具有挑战性的短期和长期基准上实现了SOTA性能,具有实时性,比 ...
- ICCV2021 | Vision Transformer中相对位置编码的反思与改进
前言 在计算机视觉中,相对位置编码的有效性还没有得到很好的研究,甚至仍然存在争议,本文分析了相对位置编码中的几个关键因素,提出了一种新的针对2D图像的相对位置编码方法,称为图像RPE(IRPE). ...
- ICCV2021 | SOTR:使用transformer分割物体
前言 本文介绍了现有实例分割方法的一些缺陷,以及transformer用于实例分割的困难,提出了一个基于transformer的高质量实例分割模型SOTR. 经实验表明,SOTR不仅为实例分割提供了 ...
- ICCV2021 | Tokens-to-Token ViT:在ImageNet上从零训练Vision Transformer
前言 本文介绍一种新的tokens-to-token Vision Transformer(T2T-ViT),T2T-ViT将原始ViT的参数数量和MAC减少了一半,同时在ImageNet上从 ...
- X-former:不止一面,你想要的Transformer这里都有
原创作者 | FLPPED 参考论文: A Survey of Transformers 论文地址: https://arxiv.org/abs/2106.04554 研究背景: Transforme ...
- Duiib 创建不规则窗口(转载)
方法一: 转载:http://blog.csdn.net/chenlycly/article/details/46447297 转载:http://blog.csdn.net/harvic880925 ...
随机推荐
- Java(35)IO特殊操作流&Properties集合
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228454.html 博客主页:https://www.cnblogs.com/testero ...
- [对对子队]Beta设计和计划
需求再分析 Alpha阶段用户反馈的问题主要有三个 新手引导部分没有明确指出合成按钮可以使用下拉框切换目标,因此不少玩家卡在第三关 觉得合成动画太长,希望可以快进或者跳过 对游戏目标很迷惑,不知道为什 ...
- [对对子队]会议记录5.27(Scrum Meeting12)
今天已完成的工作 朱俊豪 工作内容:寻找电池模型和BGM,修改关卡选择场景 相关issue:优化初步导出版本 相关签入:perf:地图界面优化 feat:更新系列资源(星星,大电池) 何瑞 ...
- 2021.7.15考试总结[NOIP模拟16]
ZJ模拟D2就是NB.. T1 Star Way To Heaven 谁能想到这竟是个最小生成树呢?(T1挂分100的高人JYF就在我身边 把上边界和下边界看成一个点和星星跑最小生成树,从上边界开始跑 ...
- sed初理多行合并+sed之G、H、g、h使用+sed n/N使用说明
转载:[shell]sed处理多行合并 - seyjs - 博客园 (cnblogs.com) 文件格式 table=t1 name owner address table=t2 id text co ...
- poj 1704 Georgia and Bob (nim)
题意: N个棋子,位置分别是p[1]...p[N]. Georgia和Bob轮流,每人每次可选择其中一个棋子向左移动若干个位置(不能超过前一个棋子,不能超出最左边[位置1]且不能不移) Georgia ...
- 批量免密ssh
参考连接:https://www.cnblogs.com/xiaoyuxixi/p/11413355.html 适用于所有密码都一样的情况下 应用场景: 在应用ansible的实际情况中,有一个很现实 ...
- 【性能测试】常见的性能问题分析思路(二)案例&技巧
上一篇介绍了性能问题分析的诊断的基本过程,还没看过的可以先看下[性能测试]常见的性能问题分析思路-道与术,精炼总结下来就是,当遇到性能问题的时候,首先分析现场,然后根据现象去查找对应的可能原因,在通过 ...
- 不破不立,祝贺EDG夺得S11冠军。这一夜,我看到太多Flag成真
在昨晚11月6号夜进行的2021英雄联盟S11总决赛中,中国战队EDG夺冠!全国各地高校的男生宿舍像过年一般庆祝夺冠,高呼:EDG世界冠军! 前三局1:2的劣势下,第四局十分胶着,最终EDG顽 ...
- 环境(6)Linux文件系统二
一:计算机间的数据传输 windows---linux : lrzsz :需要手动安装 yum install lrzsz -y ; rz 将文件从window上传到linux : ...