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(比如检测、分割)
- large variations in the scale of visual entities:猜测是不是说,视觉任务的输入变化比较大
2. 用了什么方法
- 为 Vision Transformer 也构建 hierarchical features,如下图所示
- CNN->Transformer的改变就是,CNN中每个灰色的框就是一个像素(或者说特征图中的一个点),而Transformer中,每个灰色的框就是一个token
- SwinTransformer的整体结构如下图所示
- 前两步可以通过一个卷积实现
- Patch Partition 就是从原始图像中滑框
4x4x3
得到原始像素值组成的一组特征 - Linear Embedding 就是对
H/4 X W/4 * 48
的原始像素进行卷积操作
- Patch Partition 就是从原始图像中滑框
- 左图中间的 Swin Transformer Block 的具体结构如右图所示
- Patch Merging 主要功能就是对输入特征进行降维(类似于Res Block 非 skip 分支的第一个卷积,降低分辨率增加channels数量,减少计算量)
- 前两步可以通过一个卷积实现
- Patch Merging 在这里很好的解释了
- 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看看,结果后续会上传到这里
这篇关于Backbone - Swin Transformer: Hierarchical Vision Transformer using Shifted Windows的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享