当前位置:   article > 正文

【论文阅读】Swin transformer解读_swin transformer优点

swin transformer优点


前言

1. 为什么要做这个研究?
Transformer的高性能迁移到视觉领域,解决CNN中对于全局信息特征提取的不足。将注意力计算限制在窗口中,引入CNN卷积操作的局部性,节省计算量。
2. 实验方法是什么样的?
Swin Transformer提出hierarchical Transformer,来构建不同尺度的特征金字塔,每一层使用移位窗口将self-attention计算限制在不重叠的局部窗口内,同时通过跨窗口连接增加不同窗口之间的信息交互。
3. 得到了什么结果?
在图像分类、分割任务上都取得了比较好的结果。

Abstract

Swin Transformer可以作为计算机视觉的通用主干。将Transformer从自然语言转到视觉的挑战主要来自两个领域之间的差异,例如视觉实体的比例差异很大,图像中的像素与文本中的文字相比分辨率较高。因此,作者提出了一种hierarchical Transformer,其表示是用移位窗口计算的。移位窗口方案通过将self-attention计算限制在不重叠的局部窗口内,同时还允许跨窗口连接,带来了更高的效率。这种分层体系结构可以在不同尺度上建模,并且在图像大小方面的计算复杂度为 O ( N ) O(N) O(N)。Swin Transformer能够适应广泛的视觉任务,包括图像分类和密集预测任务,如目标检测和语义分割。代码和模型在 https://github.com/microsoft/Swin-Transformer。

1. Introduction

视觉领域长期流行CNN,而自然语言处理(NLP)流行的架构则是Transformer,专为序列建模和转换任务而设计,关注数据中的长期依赖关系。本文试图扩展Transformer的适用性,使其可以作为计算机视觉的通用主干。
作者观察到将Transformer在语言领域的高性能转移到视觉领域的困难可以用两种模式之间的差异来解释。

  • 规模差异。与作为Transformer处理的基本元素的单词标记不同,视觉元素在规模上可以有很大的不同,这是一个在目标检测等任务中受到关注的问题。现有的基于Transformer的模型中,tokens都是固定大小的,这种属性不适合视觉应用。
  • 图像分辨率高,像素点多。如语义分割等任务需要像素级的密集预测,Transformer难以处理高分辨率图像,因为其self-attention的计算复杂度是图像大小成平方。

针对上述两个问题,作者提出了一种包含滑窗操作、层级设计的Swin Transformer。它构建了分层特征映射,并且计算复杂度与图像大小成线性关系。如图1(a)所示,Swin Transformer从小块(用灰色勾勒)开始,逐渐合并更深的Transformer层中的相邻patch来构建分层表示。有了这些分层特征图,Swin Transformer模型可以方便地利用先进技术进行密集预测,例如特征金字塔网络(FPN) 或U-Net。线性计算复杂度是通过在分割图像的非重叠窗口(用红色标出)内局部计算self-attention来实现的。每个窗口中的patch数量是固定的,因此复杂度与图像大小成线性关系。这些优点使Swin Transformer适合作为各种视觉任务的通用主干,与以前基于Transformer的架构形成对比,后者产生单一分辨率的特征图,并且具有二次复杂度。
在这里插入图片描述
Swin Transformer的一个关键设计元素在于其连续的self-attention层之间的移动窗口分区,如图2所示。移动的窗口连接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力(见表4)。这种策略在实际延迟方面也很有效:一个窗口内的所有 query patches共享相同的key集,这有利于硬件中的内存访问。
在这里插入图片描述

2. Related Work

2.1 CNN and variants.
2.2 Self-attention based backbone architectures.
2.3 Self-attention/Transformers to complement CNNs.
2.4 Transformer based vision backbones. ViT。

3. Method

3.1 Overall Architecture

图3给出了Swin Transformer架构的概述,展示了小型版本(SwinT)。首先将输入的RGB图像分割成不重叠的patches(类似ViT)。每个patch都被视作“token”,其特征为所有像素RGB值的串联。在这些patches上应用了经过修改的Swin Transformer blocks。为了产生分层表示,随着网络的深入,通过patch合并层来减少patch的数量。
在这里插入图片描述

  • Stage1:图片尺寸为 H × W H×W H×W,设置每个patch的尺寸为 4 × 4 4×4 4×4,得到patches数量为 H 4 × W 4 \frac{H}{4} ×\frac{W}{4} 4H×4W;每个patch有16个像素,RGB图像有3个通道,得到一个patch的特征维度 4 × 4 × 3 = 48 4×4×3=48 4×4×3=48作为输入的Embedding,再经过一层线性层投影到C维度,这样就得到了 H 4 × W 4 × C \frac{H}{4} ×\frac{W}{4}×C 4H×4W×C作为第一个Swin Transformer Block的输入。
  • Stage2:Patch Merging层将每组2×2相邻的patch特征进行拼接,将4个patch的feature embedding串接起来得到4C的feature,然后接一个线性层得到2C维度特征,再通过Swin Transformer Block进行特征变换,最终输出 H 8 × W 8 × 2 C \frac{H}{8} ×\frac{W}{8}×2C 8H×8W×2C
  • Stage3:同理,得到输出为 H 16 × W 16 × 4 C \frac{H}{16} ×\frac{W}{16}×4C 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/328362
推荐阅读
相关标签
  

闽ICP备14008679号