Swin-transformer 和其升级Cswin-transformer

2023-11-08

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows --论文解读
论文信息、概要

Swin transformer是微软今年三月25日公布的一篇利用transformer架构处理计算机视觉任务的论文。源码仅仅公布两天就在github上收获了2.2k个stars。它是我个人认为迄今为止用tranformer架构处理计算机视觉任务最有实用价值的一篇文章,在图像分割,目标检测各个领域已经霸榜,让很多人看到了transformer完全替代卷积的可能。而且它的设计思想吸取了resnet的精华,从局部到全局,将transformer设计成逐步扩大感受野的工具,它的成功背后绝不是偶然,而是厚厚的积累与沉淀。
论文链接https://arxiv.org/abs/2103.14030
总体结构

输入的图像先经过一层卷积进行patch映射,我有看过源代码,具体是将图像先分割成 4 × 4 4\times4 4×4的小块,然后将每一个小块通过映射成一个像素点,进行了通道上的扩充。以swin-s为例,输入的 224 × 224 224\times224 224×224图像经过这一步操作就变成了 56 × 56 56\times56 56×56的特征图。特征图一开始开始输入到stage1,stage1由两层transformer组成,这两层transformer的核心一个是普通的window attention, 另一个是shift window attention。可以将window attention 和shift window attention视为两个模块,在每一个stage内部就是直接堆积这两个模块。然后在stage与stage之间要有一个pooling操作来降低要处理的数据的尺寸,也就是为了从一开始的局部信息搜索到全局信息的提取。当然这个pooling操作与传统卷积里面的pooling也不太一样,它是将特征图先经过一个space to depth变为 1 4 \frac{1}{4} 41​,通道数变为原来的4倍,再又一个MLP缩减一半。也就是说没经过一个stage,总的数据量变为原来的 1 2 \frac{1}{2} 21​。
此时可以很容易的看出,swin transformer和resnet一样设计的是一个层次结果很明显的网络,底部的结构处理的数据更多也更局部,顶部的网络处理的数据更少但是语义信息是更加丰富的。不同的是swin主要提取信息的方式是采用transformer,而resnet是卷积核。



window attention 和 shift window attention

 

如图,window attention就是按照一定的尺寸将图像划分为不同的window,每次transformer的attention只在window内部进行计算。那么如果只有window attention就会带来每一个像素点的感受野得不到提升的问题,所以它又设计了一个shift window attention的方法,就是换一下window划分的方式,让每一个像素点做attention计算的window块处于变化之中。那么就起到了提升感受野的作用。


存在的问题

 在同尺寸通计算量的前提下,swin确实效果远好于resnet。但是有几个问题:
1. 受缚于shift操作,对不同尺寸的输入要设计不同的网络,而且也要重新开始训练,这是很难接受的。
2. 和Detr一样训练的时候收敛的太慢。我自己有训练了一下最小的swin-tiny版本,大概训练了一百多轮的时候也才到72~73左右。有这方面改进的想法的朋友可以和我交流,整一篇B类应该没问题。
3. shift操作其实主要是为了提升感受野,可以换一种更好的方式。在这个方面我也有一点思路,可以交流。

原文链接:https://blog.csdn.net/qq_41111734/article/details/116353615

 Cswin-transformer

 

【导语】局部自注意力已经被很多的VIT模型所采用,但是没有考虑过如何使得感受野进一步增长,为了解决这个问题,Cswin提出了使用交叉形状局部attention,同时提出了局部增强位置编码模块,超越了Swin等模型,在多个任务上效果SOTA,本文给出Cswin的详细解读和分析。

论文链接:https://arxiv.org/abs/2107.00652 

论文代码:https://github.com/microsoft/CSWin-Transformer 

知乎专栏: https://www.zhihu.com/people/flyegle

 csdn:浅谈CSwin-Transformers_Tom Hardy的博客-CSDN博客

CSWin Transformer:A General Vision Transformer Backbone with Cross-Shaped Windows_Wanderer001的博客-CSDN博客 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swin-transformer 和其升级Cswin-transformer 的相关文章

随机推荐

  • openGL之API学习(七十四)opengl版本的历史沿革

    OpenGL源于SGI公司为其图形工作站开发的IRIS GL 在跨平台移植过程中发展成为OpenGL SGI在1992年7月发布1 0版 后成为工业标准 由成立于1992年的独立财团OpenGL Architecture Review Bo
  • rust换源

    在 HOME cargo 目录下建一个config文件 windows默认是C Users user name cargo config文件输入 source crates io registry https github com rust
  • 算法(二)

    目录 0 前言 1 海明码的使用 2 理解海明码需要明白的知识 a 奇偶校检法 b 异或运算 3 海明码的原理 a 海明码原理的概述 b 多个校检位的设计 c 校检位个数的计算 d 海明码的总结 4 举例 a 计算校检码的个数 b 计算每一
  • Unity编辑器 - 使用GL绘制控件

    Unity编辑器 使用GL绘制控件 控件较为复杂时 可能造成界面卡顿 在EditorGUI中也可以灵活使用GL绘制来提升性能 以绘制线段为例 using UnityEngine using UnityEditor public class
  • 【数据结构】树的基础知识及三种存储结构

    个人主页 阿然成长日记 点击可跳转 个人专栏 数据结构与算法 C语言进阶 不能则学 不知则问 耻于问人 决无长进 文章目录 一 树的概念与定义 二 树的有关名词 三 树的存储结构 1 双亲表示法 2 孩子表示法 3 孩子兄弟表示法 又叫二叉
  • c语言6种内部排序,数据结构6种内部排序算法的比较

    1 需求分析 1 输入数据的形式为 伪随机数产生程序产生 且每次输入数不少于100个 至少要用5组不同的输入数据 2 输出的形式为 输出关键字参加的比较次数和关键字的移动次数 关键字交换计为3次移动 的数据 3 程序能达到的功能 对起泡排序
  • docker 简单安装 redis

    1 redis的简单安装 1 1 docker 寻找 redis镜像 docker search redis 1 2 docker 拉取 redis镜像 docker pull redis 1 3 运行创建Redis 1 4 进入容器 1
  • SQL留存率问题

    什么是留存率 留存率 retention rate 通常用来衡量用户或客户的忠诚度和粘性 留存率指的是在特定时间段内 有多少人保持了对某个产品 服务 平台或应用程序的使用并继续付费或进行其他有价值的操作 通常情况下 留存率会作为一个百分比表
  • redis 连接数据库_如何连接到Redis数据库

    redis 连接数据库 介绍 Introduction Redis is an open source in memory key value data store Whether you ve installed Redis locall
  • Adblock Plus 下载

    作用 下载人数 全球超过5000万人都在使用adblock plus 这个chrome插件完全免费 能够屏蔽整个互联网广告的插件你见过吗 那就是Adblock Plus Adblock Plus牛在哪里 在谷歌开发者商店里面有4000万以上
  • 【SLAM】卡尔曼滤波(Kalman Filter)

    卡尔曼滤波 Kalman filter 一种利用线性系统状态方程 通过系统输入输出观测数据 对系统状态进行最优估计的算法 由于观测数据中包括系统中的噪声和干扰的影响 所以最优估计也可看作是滤波过程 卡尔曼滤波器的原理解释如下 首先 我们先要
  • 团队管理中的代码评审

    代码评审在软件项目管理中是经常组织的活动 通过代码评审的工作也确实给我们的团队带来很多的益处 简单谈谈代码评审的感受 你们的团队是否也在进行代码评审 Code Review 的相关工作呢 1 为什么要组织代码评审 组织代码评审其主要目的是保
  • uni-app跨端开发微信小程序之nodejs与后端通信并动态打包项目以适应多环境开发

    摘要 这篇文章主要的目的是分享一个可与后端接口通信的自动化脚本插件 实现不同环境下可打包成不同配置的微信小程序源码 全程靠命令行自动发起请求 修改配置文件 自动编译 解放双手不是梦 看官在阅读文章前可以思考这样一个场景 有一份代码需要支持本
  • Java与设计模式(3):抽象工厂模式

    一 定义 抽象工厂模式是一种创建型设计模式 它提供了一种将相关对象组合在一起创建的方式 而无需指定它们的具体类 在抽象工厂模式中 有一个抽象工厂接口 该接口定义了一组创建相关对象的方法 每个具体的工厂类都实现了这个接口 并负责创建一组相关的
  • Xshell 使用密钥连接服务器,每次都提示:SSH服务器拒绝了密码。请再试一次

    查了很多 原来问题出在这里 1 在用户身份验证 连接方法设置为public key 2 浏览 导入你服务端下载的密钥 确定 输入密钥密码 问题解决
  • 手写js物理引擎

    先来看效果 包括混沌小球碰撞 上抛 自由落体 滚动 想要手写游戏 这些都是最基础的内容 也是一些游戏库的底层原理 开始之前 先回忆一些物理和数学知识 1 自由落体 重力相关 2 非弹性碰撞 角度 速度 3 向量 标量 4 动量守恒 动能守恒
  • 你了解API测试吗?如何充分的测试一个API?

    什么是API API代表应用程序接口 API是软件系统中的中间层 负责数据源与用户看到的图形用户界面 GUI 之间的数据通信 换句话说 API是软件的业务层 它在表示层和数据层之间创建连接 API测试侧重于所谓的应用程序业务层 这意味着与标
  • 生成式对抗网络(GAN, Generaitive Adversarial Networks)总结

    最近要做有关图像生成的工作 也是小白 今天简单学习一些有关GAN的基础知识 很浅 入个门 大神勿喷 GAN目前确实是在深度学习领域最热门 最有前景的方向之一 近几年有关于GAN的论文非常非常之多 从2016年起关于GAN的论文是爆炸性的增长
  • android图片传输三方框架,Android ImageLoader第三方框架解析

    本文实例为大家分享了Android ImageLoader框架的使用方法 供大家参考 具体内容如下 1 准备工作 1 导入universal image loader 1 9 5 jar到项目中 2 创建MyApplication继承App
  • Swin-transformer 和其升级Cswin-transformer

    Swin Transformer Hierarchical Vision Transformer using Shifted Windows 论文解读 论文信息 概要 Swin transformer是微软今年三月25日公布的一篇利用tra