论文精读--Swin Transformer

想让ViT像CNN一样分成几个block,做层级式的特征提取,从而使提取出的特征有多尺度的概念

Abstract

This paper presents a new vision Transformer, called Swin Transformer, that capably serves as a general-purpose backbone for computer vision. Challenges in adapting Transformer from language to vision arise from differences between the two domains, such as large variations in the scale of visual entities and the high resolution of pixels in images compared to words in text. To address these differences, we propose a hierarchical Transformer whose representation is computed with Shifted windows. The shifted windowing scheme brings greater efficiency by limiting self-attention computation to non-overlapping local windows while also allowing for cross-window connection.This hierarchical architecture has the flexibility to model at various scales and has linear computational complexity with respect to image size. These qualities of Swin Transformer make it compatible with a broad range of vision tasks, including image classification (87.3 top-1 accuracy on ImageNet-1K) and dense prediction tasks such as object detection (58.7 box AP and 51.1 mask AP on COCO testdev) and semantic segmentation (53.5 mIoU on ADE20K val). Its performance surpasses the previous state-of-theart by a large margin of +2.7 box AP and +2.6 mask AP on COCO, and +3.2 mIoU on ADE20K, demonstrating the potential of Transformer-based models as vision backbones.The hierarchical design and the shifted window approach also prove beneficial for all-MLP architectures. The code and models are publicly available at https://github.com/microsoft/Swin-Transformer.

翻译:

本文提出了一种新的视觉Transformer,称为Swin Transformer,可以作为通用的计算机视觉主干网络。从语言到视觉领域中,适应Transformer面临的挑战主要源自两个领域之间的差异,例如视觉实体的尺度变化较大,以及图像像素的高分辨率相对于文本中的单词。为了应对这些差异,我们提出了一种分层Transformer,其表示通过Shifted窗口计算。Shifted窗口方案通过将自注意力计算限制在不重叠的局部窗口内,同时允许跨窗口连接,从而提高了效率。这种分层架构具有在不同尺度上建模的灵活性,并且对图像大小具有线性计算复杂度。Swin Transformer的这些特性使其能够适用于广泛的视觉任务,包括图像分类(在ImageNet-1K上达到87.3的top-1准确率)和密集预测任务,如目标检测(在COCO testdev上达到58.7的box AP和51.1的mask AP)和语义分割(在ADE20K val上达到53.5的mIoU)。其性能大幅超越了之前的最先进水平,在COCO上分别提高了2.7的box AP和2.6的mask AP,在ADE20K上提高了3.2的mIoU,展示了基于Transformer的模型作为视觉主干网络的潜力。分层设计和Shifted窗口方法对于全MLP架构也有益。代码和模型已公开发布在:https://github.com/microsoft/Swin-Transformer。

总结:

ViT只是证明了视觉可以有自己的transformer,没有证明可以作为骨干网络用于所有的图像任务

从nlp到cv的挑战主要有两方面,其中一个是尺度上的问题,nlp中都是单词,而cv中不同物体的尺度不同,如果用像素点作为基本单位则序列长度不可控,因此之前的工作要么把特征图输入transformer,要么把图片打成patch输入transformer,本质上都是为了减少序列的影响。

作者通过移动窗口的方法解决序列长度问题

Introduction

对于很多视觉任务,多尺度是非常重要的,右边的VIT始终只有patch这一个尺度

Swin Transformer在小窗口算自注意力而不是整图上,计算复杂度与图片大小成线性增长关系,而ViT则是平方关系

窗口也能捕捉附近其他窗口的连续信息,是够用的,全局建模有可能会浪费资源

CNN有多尺度特征是因为pooling增大每个卷积核的感受野,所以在这里提出patch merging,把相邻的小patch合成一个大patch

红色是窗口,灰色是4x4的小patch

shift操作:把整个特征图整体向右下角移动2个patch,移动使得窗口可以看见更多patch的信息

Method

(1)图片打patch,大小4x4

(2)linear embedding把向量维度变成预设好的值,维度是超参数C

(3)因为patch小,所以序列长,transformer接受不了,因此通过swin变成窗口并做自注意力,每个窗口7x7=49个patch,所以序列长度变成49

(4)block堆叠,加一个patch merging操作获得多尺度信息,patch merging将每隔一个的patch放入同一新窗口,按照通道合并,最后用1x1卷积调整通道大小,保证每次维度翻倍

(5)如果要做分类,则在最后加一个全局池化;而ViT使用了cls token

先做一次窗口的自注意力,再做一次移动窗口的多头自注意力

向右下角移动实现移动窗口的方法不好,增加了窗口数量

作者提出一种掩码方式:当往右下角移动得到9个窗口时,再做一次循环移位,也就是把左上角被移走的部分拼回右下角,但此时破坏了像素之间的相邻信息,因此把不合适做自注意力的地方mask掉,最后把移动部分拼回左上角还原语义

mask通过矩阵加法实现,加一个合适的负数和0

 Conclusion

This paper presents Swin Transformer, a new vision Transformer which produces a hierarchical feature representation and has linear computational complexity with respect to input image size. Swin Transformer achieves the state-of-the-art performance on COCO object detection and ADE20K semantic segmentation, significantly surpassing previous best methods. We hope that Swin Transformer’s strong performance on various vision problems will encourage unified modeling of vision and language signals.

As a key element of Swin Transformer, the shifted window based self-attention is shown to be effective and efficient on vision problems, and we look forward to investigating its use in natural language processing as well.

翻译:

本文提出了Swin Transformer,这是一种新的视觉Transformer,它生成分层特征表示,并且相对于输入图像大小具有线性计算复杂度。Swin Transformer在COCO目标检测和ADE20K语义分割任务上实现了最先进的性能,显著超过了之前的最佳方法。我们希望Swin Transformer在各种视觉问题上的强大性能能够促进视觉和语言信号的统一建模。

作为Swin Transformer的关键要素,基于Shifted窗口的自注意力在视觉问题上被证明是有效且高效的,我们期待着进一步研究其在自然语言处理中的应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/675460.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

做了几年的广告设计,发现一些东西

我换了多个行业,发现了一些广告设计的一些行业规律,先从面试说起。 他们面试比较倾向是本行业的,找到他们去当前公司来当设计,但是重点;还是不喜欢我这种经常被试用期不合格的情况。 还有甲方公司,经常需要…

【机器学习】【遗传算法】【项目实战】药品分拣的优化策略【附Python源码】

仅供学习、参考使用 一、遗传算法简介 遗传算法(Genetic Algorithm, GA)是机器学习领域中常见的一类算法,其基本思想可以用下述流程图简要表示: (图参考论文:Optimization of Worker Scheduling at Logi…

EMQX Enterprise 5.7 发布:新增会话持久化、消息 Schema 验证、规则引擎调试与追踪功能

EMQX Enterprise 5.7.0 版本现已正式发布! 在这个版本中,我们引入了一系列新的功能和改进,包括会话持久化、消息 Schema 验证、规则引擎调试与追踪测试等功能。此外,新版本还进行了多项改进以及 BUG 修复,进一步提升了…

QT 编译Lua 动态库,使用Lua脚本混合编程

一,编译Lua动态库 1,下载lua源码 地址:Lua: downloadhttps://www.lua.org/download.html 2,配置 解压lua源码压缩包,里面有个src文件夹,里面的代码就是lua的源码

TMS320F280049 ECAP模块--capture模式(1)

功能框图 event预分频 如下图所示,可以对输入信号进行预分频。 一次性触发和连续触发 如下图所示,可以进行一次性触发,也可以进行连续触发。 中间计数器的clk是事件1-4,stop是由一次性触发逻辑控制,rst是由ctrfiltre…

【数据结构与算法 经典例题】(C语言)反转链表图文详解

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法 经典例题》C语言 期待您的关注 ​ 目录 一、问题描述 二、解题思路分析 三、代码实现 一、问题描述 二、解题…

华为机考入门python3--(33)牛客33-整数与IP地址间的转换

分类:进制转换 知识点: 十进制转8位二进制 format(num, 08b) 二进制转十进制 int(binary_str, 2) 列表中元素类型转换 new_list map(int, old_list) 题目来自【牛客】 # 将IP地址转换为十进制形式的整数 def ip_to_int(ip):# map返回的是迭…

SEO之关键词扩展(一)

初创企业搭建网站的朋友看1号文章;想学习云计算,怎么入门看2号文章谢谢支持: 1、我给不会敲代码又想搭建网站的人建议2、新手上云 确定了核心关键词后,接下来就是进行关键词扩展。对一个稍有规模的网站来说,研究几十个…

【计算机毕设】【计算机毕设】基于SpringBoot平台的医疗病历交互系统设计与实现 - 源码免费(私信领取) - 源码免费(私信领取)

免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 研究目的 本项目旨在设计并实现一个基于SpringBoot的医疗病历交互系统,以改善病历管理和医患沟通的效率,提升医疗服务质量。具体目标包…

质数计数问题求解

质数计数问题求解 题目 leetcdoe204 计数质数:https://leetcode.cn/problems/count-primes 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例1: 输入:n = 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 示例 2: 输入:n = 0 输出:0 示…

Go 线程同步

一、介绍 通常在 Go 语言中有两种方法可以用来做线程同步 sync.Cond channel channel 的很好理解,当我们从一个 channel 中接收数据的时候,如果里面没有数据,那我们直接就阻塞在那里了。 在 Go 语言中,如果你尝试在已经持有某…

【设计模式】JAVA Design Patterns——Monitor(监视器模式)

🔍目的 主要目的是为多个线程或进程提供一种结构化和受控的方式来安全地访问和操作共享资源,例如变量、数据结构或代码的关键部分,而不会导致冲突或竞争条件。 🔍解释 通俗描述 监视器模式用于强制对数据进行单线程访问。 一次只允…

基于java的CRM客户关系管理系统(六)

目录 5.3 表现层设计 5.3.1 模型层(M) 5.3.2 视图层(V) 5.3.3 控制层(C) 5.4 系统主要功能模块的实现 5.4.1 登录功能的实现 5.4.2 客户管理的实现 5.5 本章小结 参考文献 前面内容请移步 基于java…

基本元器件 - 电感与磁珠

电感 电感的选型 体积大小电感值所在工作频率开关频率下的电感值为实际需要的电感值线圈的直流阻抗(DCR)越小越好工作电流应降额至额定饱和电流的 0.7 倍以下,额定 rms 电流;交流阻抗(ESR)越小越好&#…

10 款在线剽窃检查的 [免费工具]

剽窃或抄袭他人文章而不注明出处,几乎在所有领域都被认为是有害的。然而,学术界最痛恨这种行为。抄袭是对学术诚信的最大威胁。这就是为什么每个教育机构总是希望学生提交无抄袭的作业。 然而,有时学生无意中剽窃了他人的作业,直…

【软件开发】Java学习路线

本路径视频教程均来自尚硅谷B站视频,Java学习课程我已经收藏在一个文件夹下,B站文件夹同时会收藏其他Java视频,感谢关注。指路:https://www.bilibili.com/medialist/detail/ml3113981545 2024Java学习路线(快速版&…

命名空间,缺省参数和函数重载

前言:本文章主要介绍一些C中的小语法。 目录 命名空间 namespace的使用 访问全局变量 namespace可以嵌套 不同文件中定义的同名的命名空间可以合并进一个命名空间,并且其中不可以有同名的变量 C中的输入和输出 缺省参数(默认参数&#…

超越Devin!姚班带队,他们创大模型编程新世界纪录

超越Devin!SWEBench排行榜上迎来了新玩家—— StarShip CodeGen Agent,姚班带队初创公司OpenCSG出品,以23.67%的成绩获得全球第二名的成绩。 同时创造了非GPT-4o基模的最高纪录(SOTA)。 我们都知道,SWEBe…

for深入学习

目录 练习&#xff1a; 例1&#xff1a; 求解0-100中整除3的数有哪些 例2&#xff1a; 求0-100中含数字9个个数 作业&#xff1a; 练习&#xff1a; 例1&#xff1a; 求解0-100中整除3的数有哪些 代码&#xff1a; #include<stdio.h> int main() {printf("整…

JAVAEE之网络初识_协议、TCP/IP网络模型、封装、分用

前言 在这一节我们简单介绍一下网络的发展 一、通信网络基础 网络互连的目的是进行网络通信&#xff0c;也即是网络数据传输&#xff0c;更具体一点&#xff0c;是网络主机中的不同进程间&#xff0c;基于网络传输数据。那么&#xff0c;在组建的网络中&#xff0c;如何判断到…