[ICCV2021]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

本文主要是介绍[ICCV2021]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

标题:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
链接:https://arxiv.org/pdf/2103.14030

动机

现在在CV中使用transformer的最大问题是运算量太大,因为图片的信息量远远大过NLP中文本的信息量,然后再做self attention会导致N平方的复杂度,这是不可以接受的,因此如何减少运算量是很重要的。而这篇文章就是提出了一个线性计算量的transformer结构

方法

之前的ViT考虑的是直接将一个图片分割,然后每个小块做embedding取到局部特征(?),然后再对所有分割的块做self attention取到全局特征。这样的计算复杂度是随着图片增大而呈平方增大的。
而这篇文章提出的Swin Transformer是按照hierarchical的方式来一层层做transformer的。
大体结构就是先将图片分成小区,然后针对每个小区块做embedding,之后输入一个swing transformer block,然后将相邻区块合并,成为稍微大点的区,再输入另一个swing transformer block,之后类似的操作还会做两次,从而得到最终的输出。
其中最主要的点就是swing transformer block是啥。swing transformer block实际上是由两层组成的,第一层就是一个简单的transformer block(self attention+feedforward),第二层结构类似第一层,只不过attention层变成了shift window multihead self attention,本质上就是比前面的那个self attention多了一个shift功能。
这个shift功能是用来处理边界问题的。因为在将图片分成不同区域之后,区域与区域之间的交互信息就丢失了,而这个shift就是说将原本的2*2的窗口变成3*3个窗口,就像下面这个图这样:

微信截图_20211013225745.png


然后再对每个小窗口内部做self attention,从而获得了边界上的交互信息。但是由于这么划分之后区域变多
了,反而增加了运算量,因此本文使用了mask attention,结合他们提出的cyclic shift来简化运算。如下图所示:

微信截图_20211013230626.png


也就是说划分完九块之后,正中间的大方块和右上,左下的小方块不动,然后将左上角的A,B,C三个块移动到右下角,从而重新拼成一个正方形。之后再对四个方块里的每部分做masked self attention就可以得到原来九个区域的self attention结果了。计算完后再将A,B,C移动回去就可以继续下一步操作。

结果

结果来说,swin transformer不仅减少了运算量,而且在众多CV任务上都取得了很大的进步,之后的衍生文章打破了很多SOTA。

这篇关于[ICCV2021]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/706574

相关文章

问题-windows-VPN不正确关闭导致网页打不开

为什么会发生这类事情呢? 主要原因是关机之前vpn没有关掉导致的。 至于为什么没关掉vpn会导致网页打不开,我猜测是因为vpn建立的链接没被更改。 正确关掉vpn的时候,会把ip链接断掉,如果你不正确关掉,ip链接没有断掉,此时你vpn又是没启动的,没有域名解析,所以就打不开网站。 你可以在打不开网页的时候,把vpn打开,你会发现网络又可以登录了。 方法一 注意:方法一虽然方便,但是可能会有

Windows/macOS/Linux 安装 Redis 和 Redis Desktop Manager 可视化工具

本文所有安装都在macOS High Sierra 10.13.4进行,Windows安装相对容易些,Linux安装与macOS类似,文中会做区分讲解 1. Redis安装 1.下载Redis https://redis.io/download 把下载的源码更名为redis-4.0.9-source,我喜欢跟maven、Tomcat放在一起,就放到/Users/zhan/Documents

Windows中,.net framework 3.5安装

安装.net framework,目前已知2种方法,如下: 一、在MSDN下载对应的安装包,安装,这种可能无法安装成功,概率很大,不成功使用第二种方法,基本上没问题。 二、win8/8.1/10 下安装 .net framework 3.5.1: 1. 打开 win8/8.1/10 安装盘(这里指系统安装镜像文件),提取 sources\sxs 文件夹到 X:\sources\sxs (X代

Windows 可变刷新率是什么?如何开启?

在现代计算设备中,显示屏的刷新率对用户体验起着至关重要的作用。随着显示技术的不断进步,固定刷新率显示器逐渐被支持可变刷新率(Variable Refresh Rate, VRR)技术的显示器所取代。 可变刷新率定义 可变刷新率是什么?可变刷新率(VRR)是一种显示技术,它允许显示器的刷新率动态调整,以匹配显卡输出的帧率。传统的显示器通常具有固定的刷新率(如60Hz、75Hz等),这意味着显示器

如何设置windows计划任务

如何设置windows计划任务 前言:在工作过程中写了一个python脚本,用于调用jira接口查询bug单数量,想要在本地定时任务执行,每天发送到钉钉群提醒,写下操作步骤用于记录。 1. 准备 Python 脚本 确保你的 Python 脚本已经保存到一个文件,比如 jira_reminder.py。 2. 创建批处理文件 为了方便任务计划程序运行 Python 脚本,创建一个批处理文

BD错误集锦1——[Hive]ERROR StatusLogger No log4j2 configuration file found. Using default configuration:

错误描述:在使用IDEA进行jdbc方式连接到hive数据仓库时,出现以下错误:                ERROR StatusLogger No log4j2 configuration file found. 问题原因:缺少log4j2.xml文件   <?xml version="1.0" encoding="UTF-8"?><Configuration><Appender

获取Windows系统版本号(转)

https://blog.csdn.net/sunflover454/article/details/51525179

博通5720 windows server 2003 32位网卡驱动和系统

driver for DELL R320 Broadcom 5720 Windows 2003 32bit 本人安装windows server 2003 网卡驱动成功!! 提供方便网盘下载地址博通5720网卡驱动 : http://pan.baidu.com/s/1GQWpw  windows server 2003 ghost 系统: http://pan

Linux平台与Windows平台字节对齐(一)

记录时间:2014-10-20 20:31 今天白天在整理 winndows平台 + Arm平台的网络数据包。但期间由于经验不足,不了解两平台CPU架构的差距会影响到数据类型的大小,导致在工程非常紧急的时间里还浪费了很多宝贵的时间,鉴于问题的常见性 和 隐秘行,特此列出,以便能帮助需要帮助的人。 解决问题思路:在遇到网络交互数据不对时,可以从如下四方面去排除问题,通常只要使用这三种

论文阅读--Efficient Hybrid Zoom using Camera Fusion on Mobile Phones

这是谷歌影像团队 2023 年发表在 Siggraph Asia 上的一篇文章,主要介绍的是利用多摄融合的思路进行变焦。 单反相机因为卓越的硬件性能,可以非常方便的实现光学变焦。不过目前的智能手机,受制于物理空间的限制,还不能做到像单反一样的光学变焦。目前主流的智能手机,都是采用多摄的设计,一般来说一个主摄搭配一个长焦,为了实现主摄与长焦之间的变焦,目前都是采用数字变焦的方式,数字变焦相比于光学