当前位置: 首页 > news >正文

Swin-Transformer论文阅读

在此前,transformer已经通过ViT等作品展现出了它在cv领域的无限可能性,但是,vit主要针对的是图像分类问题的讨论,而分类只是cv众多问题中最基础的问题之一。那么,怎么用transformer进行物体检测,语义分割这些需要更复杂网络结构的任务呢?

介绍

在CNN对于图像分类,目标检测等问题的探索中,大家已经发现,检测,语义分割这类任务,相比于图像分类对于网络backbone有着不一样的需求。

而基于vit对于图像分类问题的探索,接下来,大家可以依葫芦画瓢,尝试解决更有挑战的问题了。

关于目标检测,语义分割这类任务,通常需要网络具有分层提取不同颗粒度的特征,并且,网络的是输入可能是更高分辨率的图像,输出也是更精细的特征,比如语义分割的mask。所以,基于transformer执行复杂cv任务的挑战在于1. 解决特征的尺度问题 2. 高效的处理大尺度的输入和输出。

4e3ef98f77104f47a381ad75871bd646.png

这张图体现了vit和swin的区别,在vit中,每个block处理的都是相同大小的patch(16 x 16)

 

 

为了解决这些问题,swin transformer提出了shifted window的概念,去建立网络各层窗口的联系,此外,通过对于key的共享,我们可以实现显存更高效的使用。

参考李沐讲论文,在CNN中,我们可以知道,针对目标检测任务,我们通常使用FPN,而针对语义分割任务,我们通常使用UNet来解决问题,以及空洞卷积,PSP,ASPP。

 

方法论

Patch Merging-解决感受野的缩放问题

随着图像尺寸增加,计算量会面临O2级别的复杂度增加: 参考下面的图片,图像处理中,我们的输入通常是512*512以上的大小,再加上O2的复杂度,计算量飙升。在卷积网络中,通常会使用max pooling来实现感受野的缩放,而在swin transformer中,类似的需求是通过patch merging这个方法来满足,

a2bb4a3ac6da476891c2a8973a9a88f6.png

其思路是,以4个元素为patch,分为4层,再通过线性层转换为2层,这样就实现了感受野长宽缩小一倍,通道数增加一倍。

The first patch merging layer concatenates the features of each group of 2 × 2 neighboring patches, and applies a linear layer on the 4C-dimensional concatenated features. This reduces the number of tokens by a multiple of 2×2 = 4 (2× downsampling of resolution), and the output dimension is set to 2C.

 

Shifted Window based Self-Attention 

这里有三个词,shifted,window,self-attention,这三个词很值得推敲,因为它们是三个东西。因果关系是,因为self-attention的引入,我们需要考虑计算量,通过对于特定大小的patch计算注意力,我们保证了计算量没有随着图像尺度增加倍数增加。但是,单个窗口需要与相邻窗口建立联系,所以又提出了shift window的概念。

pixel --> patch --> window

patch是Vit就有的一个概念,意味着以多少个像素为集合进行attention的操作。window是swin提出的“新概念”,为了保证复杂度的限制,我们只在window中进行各个patch彼此间的注意力计算。

shift window

我们通过窗口的偏移,来实现与邻近window的交互,但是,在窗口偏移后,怎么处理edge上的元素呢?这里要考虑2个点,首先不希望增加计算量,其次,不希望像素位置不相邻的元素建立联系,比如左上方和右下方。所以,这里提出了cyclic shift, masked MSA两个概念。

2edc208ccd304799b0ed1befc1972855.png

 

 

 

Pixel shuffling

 

f524a8f193594523b0a80ed0154d580e.png

 

 

 

 

93fea10e213843568973b90eb7d60754.png

 

 

参考资料:

Swin Transformer论文精读【论文精读】_哔哩哔哩_bilibili

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 打印空心正方形(c语言)
  • 8.20
  • 【人工智能】Transformers之Pipeline(十一):零样本图片分类(zero-shot-image-classification)
  • SpringSecurity6
  • 学习C语言 第十八天
  • Java面试题--分布式锁
  • 多目标跟踪之StrongSORT论文(翻译+精读)
  • 目标检测 | yolov9 原理和介绍
  • 吐血整理 ChatGPT 3.5/4.0/4o 新手使用手册~
  • 使用 Python 进行 PDF 文件加密
  • Sed编辑器
  • 【案例49】ORA-01000:超出打开游标的最大数
  • 基于SpringBoot+Vu e.js校园疫情防控系统的设计与实现
  • Visual Studio中 生成版本号
  • LeetCode //C - 316. Remove Duplicate Letters
  • 78. Subsets
  • Angular2开发踩坑系列-生产环境编译
  • CSS居中完全指南——构建CSS居中决策树
  • Electron入门介绍
  • git 常用命令
  • JDK 6和JDK 7中的substring()方法
  • js ES6 求数组的交集,并集,还有差集
  • Js基础知识(四) - js运行原理与机制
  • Making An Indicator With Pure CSS
  • OSS Web直传 (文件图片)
  • Rancher如何对接Ceph-RBD块存储
  • 关于Java中分层中遇到的一些问题
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 前端存储 - localStorage
  • 容器服务kubernetes弹性伸缩高级用法
  • 一起参Ember.js讨论、问答社区。
  • 与 ConTeXt MkIV 官方文档的接驳
  • Linux权限管理(week1_day5)--技术流ken
  • ​queue --- 一个同步的队列类​
  • ​决定德拉瓦州地区版图的关键历史事件
  • #etcd#安装时出错
  • #php的pecl工具#
  • #Ubuntu(修改root信息)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (九)信息融合方式简介
  • (六)c52学习之旅-独立按键
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (转)LINQ之路
  • (转)VC++中ondraw在什么时候调用的
  • ***详解账号泄露:全球约1亿用户已泄露
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .jks文件(JAVA KeyStore)
  • .NET Compact Framework 多线程环境下的UI异步刷新