文章目录
0. 前言
- 相关资料:
- 论文基本信息
- 领域: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
- SwinTransformer的整体结构如下图所示
- 前两步可以通过一个卷积实现
- Patch Partition 就是从原始图像中滑框
4x4x3
得到原始像素值组成的一组特征
- Linear Embedding 就是对
H/4 X W/4 * 48
的原始像素进行卷积操作
- 左图中间的 Swin Transformer Block 的具体结构如右图所示
- Patch Merging 主要功能就是对输入特征进行降维(类似于Res Block 非 skip 分支的第一个卷积,降低分辨率增加channels数量,减少计算量)
- 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操作,没细看
- Swin Block 的运算过程:要求channels必须能被2整除,因为里面的计算过程就是两个两个实现的,具体计算过程其实图上不如下面公式清晰
3. 效果如何
- 总结一下:图像分类任务没有什么提高(跟EfficientNet比),但在检测和分割领域独占鳌头
4. 还存在什么问题&可借鉴之处
- CNN的思想实现Transformer
- 训练一个TSN-Transformer看看,结果后续会上传到这里