论文阅读:CVPR2021 | Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

本文主要是介绍论文阅读:CVPR2021 | Swin Transformer: Hierarchical Vision Transformer using Shifted Windows,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1、前言
  • 2、Introduction
  • 3、Method
    • 3.1、Overall Architecture
    • Swin Transformer block
    • 3.2、Shifted Window based Self-Attention
    • Self-attention in non-overlapped windows
    • Shifted window partitioning in successive blocks
    • Relative position bias
  • 总结


1、前言

本文提出了一种新的视觉Transformer,称为Swin Transformer,它可以很好地作为计算机视觉的通用主干。将Transformer从语言转换为视觉的挑战来自这两个领域之间的差异,例如视觉实体的大小差异很大,图像中的像素与文本中的文字相比分辨率较高。为了解决这些差异,我们提出了一种hierarchical Transformer,其表示是通过移位窗口来计算的。移位窗口方案通过将自注意计算限制到非重叠的局部窗口,同时还允许跨窗口连接,带来了更高的效率。这种分层结构具有在不同尺度上建模的灵活性,并且具有关于图像大小的线性计算复杂度。Swin Transformer的这些特性使其与广泛的视觉任务兼容,包括图像分类(ImageNet-1K上的86.4 TOP-1准确率)和密集预测任务,如目标检测(COCO TEST-DEV上的58.7 box AP和51.1 MASK AP)和语义分割(ADE20K Val上的53.5 mIou)。其性能大大超过了之前最先进的产品,COCO上的+2.7box AP和+2.6 MASK AP,以及ADE20K上的+3.2mIou,显示了基于Transformer的机型作为视觉主干的潜力。

2、Introduction

自然语言处理(NLP)中网络体系结构的演变走了一条不同的道路,今天流行的体系结构是Transformer。Transformer专为序列建模和转换任务而设计,以其对数据中的远程依赖关系进行建模而著称。它在语言领域的巨大成功促使研究人员研究它对计算机视觉的适应性,最近它在某些任务上展示了令人振奋的结果,特别是图像分类和联合视觉-语言建模。

在本文中,作者试图扩展Transformer的适用性,使其可以作为计算机视觉的通用主干,就像它在NLP中所做的那样,也可以像CNNs在视觉中所做的那样。作者观察到,将其在语言领域的高性能转换到视觉领域的重大挑战可以用这两种模式之间的差异来解释。这些不同之处之一涉及到规模。与作为语言Transformer中处理的基本元素的单词标记不同,视觉元素在尺度上可以有很大的变化,这是在诸如物体检测之类的任务中引起注意的问题。在现有的基于Transformer的模型中,tokens都是固定比例的,这一特性不适合这些视觉应用。另一个不同之处在于,与文本段落中的文字相比,图像中像素的分辨率要高得多。存在许多视觉任务,如语义分割,需要在像素级别进行密集预测,这对于高分辨率图像上的Transformer来说是很困难的,因为它的self-attention的计算复杂度是图像大小的平方。为了克服这些问题,我们提出了一种通用的Transformer骨干网,称为Swin Transformer,它构造了分层的特征映射,并且计算复杂度与图像大小成线性关系。如图1(A)所示,Swin Transformer通过从小块(灰色轮廓)开始,逐渐合并更深的Transformer层中的相邻块来构建分层表示。有了这些分层的特征图,Swin Transformer模型可以方便地利用先进的技术进行密集预测,如特征金字塔网络(FPN)或U-Net。线性计算复杂度是通过在分割图像(红色轮廓)的非重叠窗口内局部计算自我关注来实现的。每个窗口中的补丁数量是固定的,因此复杂度与图像大小成线性关系。这些优点使得Swin Transformer适合作为各种视觉任务的通用主干,而不是以前基于Transformer的架构,后者生成单一分辨率的特征地图,并且具有二次复杂度。
在这里插入图片描述
Swin Transformer的一个关键设计元素是在连续的 self-attention层之间移动窗口分区,如图2所示。移动的窗口连接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力(参见表4)。该策略在实际延迟方面也是有效的:一个窗口内的所有query patches共享相同的key 集,这便于硬件中的内存访问。相反,较早基于滑动窗口的self-attention方法由于不同query 像素的不同键集而在一般硬件上受到低等待时间的影响。我们的实验表明,所提出的移位窗口方法比传统的移位窗口方法具有更低的时延。
在这里插入图片描述

图2.在建议的Swin Transformer架构中,展示了用于计算self-attention的移位窗口方法。在l层(左),采用规则的窗口划分方案,在每个窗口内计算self-attention。在下一层l+1(右)中,窗口分区被移位,从而产生新窗口。新窗口中的self-attention计算跨越了层l中先前窗口的边界,从而提供了它们之间的连接

3、Method

3.1、Overall Architecture

图3显示了Swin Transformer体系结构的概述,其中演示了微型版本(Swin-T)。它首先通过patch分割模块(如VIT)将输入的RGB图像分割成不重叠的patch。每个patch都被视为一个“token”,其特征被设置为原始像素RGB值的串联。在我们的实现中,我们使用了4×4的patch大小,因此每个patch的特征维数是4×4×3=48。将线性嵌入层应用于该原始值特征以将其投影到任意维度(表示为C)。
在这里插入图片描述

图3.(A)Swin Transformer(Swin-T)的架构;(B)两个连续的Swin Transformer块(用公表示)。W-MSA和SW-MSA分别是具有规则和移位窗口配置的多头自注意模块。

在这些patch token上应用了经过修改的自我self-attention的几个Transformer块(Swin Transformer块)。Transformer patch保持token数(H/4×W/4),与线性嵌入一起称为“阶段1”。

为了产生分层表示,随着网络的深入,通过patch合并层来减少token的数量。第一个patch合并层将每组2×2相邻面片的特征进行拼接,并在4C维拼接的特征上应用线性层。这将令牌数减少2×2=4的倍数(分辨率的2倍下采样),并且输出维度被设置为2C。然后应用Swin Transformer块进行特征变换,分辨率保持为H/8×W/8。这第一个块的拼接和特征变换称为“Stage2”。该过程重复两次,分别为“阶段3”和“阶段4”,输出分辨率分别为H/16×W/16和H/32×W/32。这些阶段共同产生具有与典型卷积网络(例如,VGG和ResNet)相同的特征映射分辨率的分层表示。因此,该体系结构可以方便地取代现有方法中的骨干网络,用于各种视觉任务。

Swin Transformer block

Swin Transformer是通过将Transformer模块中的multi-head self attention(MSA)模块替换为基于移位窗口的模块(在第3.2节中描述)而构建的,其他层保持不变。如图3(b)所示,Swin Transformer模块由一个基于移位窗口的MSA模块和一个中间带有Gelu非线性的2层MLP组成。在每个MSA模块和每个MLP之前应用LayerNorm(LN)层,并且在每个模块之后应用残差连接。

3.2、Shifted Window based Self-Attention

标准Transformer体系结构及其用于图像分类的适配都进行self-attention注意,其中计算token和所有其他token之间的关系。全局计算导致了关于token数量的二次方复杂性,使得它不适合于许多需要大量token集来进行密集预测或表示高分辨率图像的视觉问题。

Self-attention in non-overlapped windows

为了有效地建模,我们建议在局部窗口内计算self-attention注意。窗口被布置成以不重叠的方式均匀地分割图像。假设每个窗口包含M×M个patches,则全局MSA模块和基于h×w块图像的窗口的计算复杂度为:
在这里插入图片描述
其中,前者与patches 数量HW是平方的,后者在M固定时是线性的(默认情况下设置为7)。全局self-attention计算对于大型硬件来说通常是负担不起的,而基于窗口的自我注意是可伸缩的。

Shifted window partitioning in successive blocks

基于窗口的self-attention模块缺乏跨窗口的连接,这限制了其建模能力。为了在保持非重叠窗口计算效率的同时引入跨窗口连接,我们提出了一种移位窗口划分方法,该方法在连续的Swin Transformer块中交替使用两种划分结构。

如图2所示,第一个模块使用从左上角像素开始的常规窗口划分策略,将8×8特征图均匀划分为大小为4×4(M=4)的2×2个窗口。然后,下一模块通过将窗口从规则划分的窗口移位( ⌊ M 2 ⌋ \left \lfloor \frac{M}{2}\right \rfloor 2M ⌊ M 2 ⌋ \left \lfloor \frac{M}{2}\right \rfloor 2M)像素来采用从前一层的窗口移位的窗口配置。

Relative position bias

在计算self-attention时,遵循,在计算相似度时包括每个头部的相对位置偏差 B ∈ R M 2 × M 2 B\in \mathbb{R}^{M^{2}\times M^{2}} BRM2×M2
在这里插入图片描述

总结

在Vit的基础上,改进成分层transformer的。给我感觉像是CNN中从全连接进化到卷积网络一样。vit相当于粗暴的全连接,swim就有点cnn的感觉了。果然微软亚研的工作都是神仙级别的工作

这篇关于论文阅读:CVPR2021 | Swin Transformer: Hierarchical Vision Transformer using Shifted Windows的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/706573

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

Windows如何添加右键新建菜单

Windows如何添加右键新建菜单 文章目录 Windows如何添加右键新建菜单实验环境缘起以新建`.md`文件为例第一步第二步第三步 总结 实验环境 Windows7 缘起 因为我习惯用 Markdown 格式写文本,每次新建一个.txt后都要手动修改为.md,真的麻烦。如何在右键新建菜单中添加.md选项呢? 网上有很多方法,这些方法我都尝试了,要么太麻烦,要么不凑效

Windows下Nginx的安装及开机启动

1、将nginx-1.16.1.zip解压拷贝至D:\web\nginx目录下。 2、启动Nginx,两种方法: (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。 (2)打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可。 3、检查nginx是否启动成功。 直接在浏览器地址栏输入网址 http://lo

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

软件架构模式:5 分钟阅读

原文: https://orkhanscience.medium.com/software-architecture-patterns-5-mins-read-e9e3c8eb47d2 软件架构模式:5 分钟阅读 当有人潜入软件工程世界时,有一天他需要学习软件架构模式的基础知识。当我刚接触编码时,我不知道从哪里获得简要介绍现有架构模式的资源,这样它就不会太详细和混乱,而是非常抽象和易