Swin Transformer详解: Hierarchical Vision Transformer using Shifted Windows

在这里插入图片描述

这篇文章结合了CNN的归纳偏置,基于局部窗口做注意力,并且逐步融合到深层transformer层中构建表征,来达到扩大感受野,并且极大降低了计算量。是一个特征提取的主干网络,backbone。构建了一种分层特征提取的方式,不断减小“feature map”的大小(token的数量),构造层次的特征映射。

关键部分是提出了Shift window移动窗口(W-MSA、SW-MSA),改进了ViT中忽略局部窗口之间相关性的问题。在ViT中使用不重叠的窗口进行self-attention计算,忽略了相邻窗口间的相关性,而Swin-T使用shfit windown移动(M/2)来桥接不同窗口间的信息。但这样会引入很大的计算量,于此作者又提出了cyclic-shift 循环位移,保证计算量不变,但是这样的移动又又又会使得不相关的部分拼接在一起。计算这些部分的注意力是没有意义的。于是提出了attention mask来遮盖无效的部分,使注意力权重为0 这部分的详细推导。还加入了相对位置偏置B

获得了2021ICCV最优文章。

原文链接:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
参考文献:
对Swin-T的输入输出不太清楚的可以看这篇:Swin Transformer详解
W-MSA和SW-MSA复杂度计算:MSA模块计算复杂度推导

Abstract

本文提出了一种新的transformer结构,称为Swin Transformer,它可以作为计算机视觉的通用主干。视觉和语言两个领域之间的差异主要体现在两个方面:尺度和分辨率。

  1. 不同于语言处理中每个token的维度是固定的,视觉元素在规模上的差异很大(词向量的维度是固定的,而图像的尺寸有大有小)。
  2. 与文本段落中的单词量相比,图像中的像素分辨率要高得多。

为了解决以上问题,作者提出了一种分层级的Transformer。通过移位窗口将自注意计算限制在非重叠的局部窗口上,同时允许跨窗口连接。通过融合patch来改变特征图像大小以达到不同层级的注意力计算。这种分层结构具有在各种尺度下建模的灵活性,并且相对于图像大小具有线性计算复杂性。Swin Transformer能够与广泛的视觉任务兼容,包括图像分类和密集预测任务,如目标检测和语义分割。

1 Introduction

  Transformer是为序列建模和转导任务而设计的,它具有建立数据中的长期依赖关系的能力,在语言领域获得了巨大的成功。这促使研究人员想要开发它的对计算机视觉的适应性。事实上Transformer在视觉领域已经获得了部分的成功,用self-attention代替部分或全部CNN;或CNN和transformer结合;或单纯使用transformer结构。
  Swin-T的方法是基于ViT的。ViT的开创性工作直接将Transformer架构应用于非重叠的中等大小图像块,用于图像分类。但ViT需要大规模的训练数据集(即JFT-300M)才能表现良好,因此DeiT引入了几种训练策略,使ViT也能有效地使用较小的ImageNet-1K数据集。ViT的体系结构不适合用作密集视觉任务的通用主干网络:当输入图像分辨率很高,低分辨率特征映射的复杂度随图像大小呈二次增长

在本文中,作者试图扩展Transformer的适用性,将其在语言领域的高性能转移到视觉领域,使其可以像CNN在视觉中一样,作为计算机视觉的通用主干。提出了Swin Transformer结构,它构造了层次特征映射,并具有与图像大小成线性关系的计算复杂度

  1. Swin Transformer通过从小尺寸的patch开始,并逐渐将相邻patch合并到更深的Transformer层中来构建层次表示。有了这些分层特征映射,Swin-T型可以方便地利用高级技术进行密集预测,如特征金字塔网络(FPN)或U-Net。
  2. 线性计算复杂性是通过在分割图像的非重叠窗口内局部计算自注意来实现的。每个窗口中的patch数量是固定的,因此复杂性与图像大小成线性关系。
  3. Swin Transformer的一个关键设计点是在连续的自注意层之间切换窗口分区,移动的窗口桥接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力。这种策略对于真实世界的延迟也是有效的:一个窗口中的所有Q patch都共享相同的K,这有助于减少硬件中的内存访问。

所提出的Swin-T在图像分类、目标检测和语义分割等识别任务上具有很强的性能。它的性能明显优于ViT/DeiT和ResNe(X)t模型。

文章的重点在于移动窗口Shift Window,窗口的移动方式和移动后注意力的计算(里面有个mask attention)

 

2 Method

在这里插入图片描述

2.1 Overview

输入图像大小为 ( 224 × 224 × 3 ) (224×224×3) (224×224×3)

  1. 首先通过patch partition将输入的RGB图像分割为非重叠的patch(同ViT)。每个patch视为一个“token”。设置patch大小为4×4个像素区域。所以每个patch特征维度为 4 × 4 × 3 = 48 4×4×3=48 4×4×3=48。----输出 ( 56 × 56 × 48 ) (56×56×48) (56×56×48)
  2. stage 1:
    经过一个线性嵌入层,将patch映射到维度为C。(C设置为96) ----输出 ( 56 × 56 × 96 ) (56×56×96) (56×
  • 33
    点赞
  • 128
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值