Backbone - Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

2021/6/5 7:23:27

本文主要是介绍Backbone - Swin Transformer: Hierarchical Vision Transformer using Shifted Windows,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

    • 0. 前言
    • 1. 要解决什么问题
    • 2. 用了什么方法
    • 3. 效果如何
    • 4. 还存在什么问题&可借鉴之处

0. 前言

  • 相关资料:
    • arxiv
    • github
    • 论文解读
  • 论文基本信息
    • 领域:Transformer
    • 作者单位:微软亚洲研究院
    • 发表时间:2021.3
  • 一句话总结:将 hierarchical 引入 Transformer

1. 要解决什么问题

  • CV和NLP任务相比,CV的特点是(换句话说,就是Transformer用在CV时可能存在的问题)
    • large variations in the scale of visual entities:猜测是不是说,视觉任务的输入变化比较大
      • 之前的 Vision Transformer 工作的输入都是token,而token都是固定尺寸,不太适合作为backbone
    • high resolution of pixels:视觉输入数据尺寸非常大
      • 作为视觉任务的backbone,需要支持 high resolution(比如检测、分割)

2. 用了什么方法

  • 为 Vision Transformer 也构建 hierarchical features,如下图所示
    • CNN->Transformer的改变就是,CNN中每个灰色的框就是一个像素(或者说特征图中的一个点),而Transformer中,每个灰色的框就是一个token

image-20210604182839549

  • SwinTransformer的整体结构如下图所示
    • 前两步可以通过一个卷积实现
      • Patch Partition 就是从原始图像中滑框 4x4x3 得到原始像素值组成的一组特征
      • Linear Embedding 就是对 H/4 X W/4 * 48 的原始像素进行卷积操作
    • 左图中间的 Swin Transformer Block 的具体结构如右图所示
    • Patch Merging 主要功能就是对输入特征进行降维(类似于Res Block 非 skip 分支的第一个卷积,降低分辨率增加channels数量,减少计算量)

image-20210604183247753

  • Patch Merging 在这里很好的解释了

img

  • Window based Self-Attention(W-MSA)
    • Vit Transformer的一个问题就是,每个token都要和其他所有token计算相似度。
    • 为了降低计算量,Swin Transformer 中只计算每个window中token之间的相似度,即W-MSA
  • Shifted window partitioning in successive blocks(SW-MSA)
    • W-MSA 存在一个问题,多个window之间没有关联,这就丢失了很多信息。
    • 但SW-MSA会使得计算量大幅度增加
    • 主要就是要实现这个shift操作,没细看

image-20210604191505138

  • Swin Block 的运算过程:要求channels必须能被2整除,因为里面的计算过程就是两个两个实现的,具体计算过程其实图上不如下面公式清晰

image-20210604184344406

3. 效果如何

  • 总结一下:图像分类任务没有什么提高(跟EfficientNet比),但在检测和分割领域独占鳌头

image-20210604172114930

image-20210604172150102

image-20210604172159283

4. 还存在什么问题&可借鉴之处

  • CNN的思想实现Transformer
  • 训练一个TSN-Transformer看看,结果后续会上传到这里


这篇关于Backbone - Swin Transformer: Hierarchical Vision Transformer using Shifted Windows的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程