Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

news2024/11/24 1:40:13

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

  • 摘要
  • 当前的检测sota模型
  • 网络架构
    • swin Transformer和Vision Transformer的不同之处
    • 整体架构
      • Patch Partition结构
      • Linear Embedding结构
      • Swin Transformer Block结构
  • Patch Merging
  • W-MSA
    • MSA模块计算量
    • W-MSA模块计算量
  • SW-MSA
    • SW-MSA如何滑动窗口
    • SW-MSA如何高效批量计算
  • Relative Position Bias
    • 实验效果展示
    • Relative Position Bias的实现
  • 参数配置

在这里插入图片描述

论文地址:https://arxiv.org/abs/2103.14030
源码地址:https://github.com/microsoft/Swin-Transformer

摘要

在这里插入图片描述

本文介绍了一种名为 Swin Transformer 的新型视觉Transformer,它可以作为计算机视觉的通用骨干。将 Transformer 从语言应用到视觉领域所面临的挑战来自这两个领域的差异,例如视觉实体的尺度变化很大,以及与文本中的文字相比,图像中像素的分辨率较高。为了解决这些差异,我们提出了一种分层Transformer,其表示是通过移位窗口计算的。移位窗口方案将自我关注计算限制在非重叠的局部窗口,同时允许跨窗口连接,从而提高了效率。这种分层结构可以灵活地进行各种规模的建模,其计算复杂度与图像大小成线性关系。Swin Transformer 的这些特质使其能够兼容广泛的视觉任务,包括图像分类(ImageNet-1K 上的 Top-1 准确率为 87.3)和密集预测任务,如物体检测(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 的模型作为视觉骨干的潜力。分层设计和移动窗口方法也证明有利于全 MLP 架构。代码和模型可在以下网址公开获取。

当前的检测sota模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

网络架构

swin Transformer和Vision Transformer的不同之处

在这里插入图片描述

  1. swin Transformer构建具体层次性的特征图
  2. swin Transformer使用窗口将特征图分割开

swin Transformer在窗口内执行Multi Head self attention的计算,窗口和窗口之间不进行信息的传递

Vision Transformer

整体架构

在这里插入图片描述

Patch Partition结构

在这里插入图片描述
使用4x4大小的窗口对图像分割,并展平。
在这里插入图片描述在这里插入图片描述

Linear Embedding结构

调整图像channel,从48到c

在代码中,使用卷积层实现的

Swin Transformer Block结构

在这里插入图片描述
的组成为:

在这里插入图片描述
关于MSA:MSA

关于W-MSA和SW-MSA,后面详细论述

Patch Merging

在这里插入图片描述

特征图高和宽减少一半,特征图channel翻倍

W-MSA

在这里插入图片描述

在多头注意力的基础上引入窗口的概念

目的:减少计算量
缺陷:窗口之间无法进行信息交互

MSA:对每一个像素求q,k,v,然后将每一个像素求得的q和其他所有像素求的的k进行计算。

可以理解为在MSA中,每个像素都和所有的像素存在信息的沟通

W-MSA:在每个窗口内部进行MAS操作,但是不同窗口之间是没有通讯的

MSA模块计算量

在这里插入图片描述
在这里插入图片描述

W-MSA模块计算量

在这里插入图片描述
在这里插入图片描述

SW-MSA

SW-MSA如何滑动窗口

全称:shifted window -MSA

目的:实现不同窗口之间的信息交互

在这里插入图片描述
在拟议的 Swin Transformer 架构中计算自我注意力的移动窗口方法示意图。在第 l 层(左),采用常规窗口划分方案,并在每个窗口内计算自注意力。在下一个第 l + 1 层(右图)中,窗口划分会发生变化,从而产生新的窗口。新窗口中的自我注意力计算跨越了第 l 层中前一个窗口的边界,提供了它们之间的联系。

就是说:第 l 层采用W-MSA机制,第 l+1 层采用SW-MSA机制

在这里插入图片描述
移动窗口后:
在这里插入图片描述

l+1层通过滑动窗口融合了l层相邻窗口之间的信息,达到了相邻窗口之间融合的目的

SW-MSA如何高效批量计算

在这里插入图片描述

移位窗口中自我关注的高效批量计算方法说明

  1. 第一步
    在这里插入图片描述
    在这里插入图片描述

  2. 第二步
    在这里插入图片描述
    在这里插入图片描述

  3. 第三步

在这里插入图片描述
在这里插入图片描述

然后将步骤三得到的图像按照4x4的窗口划分区域:

在这里插入图片描述

对于4区域,已经完成了融合 l 层中不同窗口的目的
因此对于4,之间进行MSA的计算

但对于右上角的区域,由5和3组成,需要分隔开进行MSA的计算

论文中使用的方式是:mask

在这里插入图片描述

具体的实现为:
在这里插入图片描述

这样就在一个窗口的MSA计算中,将区域5和区域3分隔开了

全部计算完成后,在将数据挪回原来的位置

Relative Position Bias

在这里插入图片描述
这里的Relative Position Bias就是公式中的 B
在这里插入图片描述

实验效果展示

在这里插入图片描述

可以看到使用绝对位置偏置的效果并不好
使用相对位置偏置达到最好的效果

Relative Position Bias的实现

  1. 第一步

在这里插入图片描述

将其展平,组成最终

  1. 第二步
    偏移从0开始,行列标加M-1

这里M=2.所以M-1=1

在这里插入图片描述

  1. 第三步

行标乘 2M-1

在这里插入图片描述

  1. 第四步

行标列标相加
在这里插入图片描述

将二元坐标转换为一元坐标

  1. 对应相对位置偏置表

在这里插入图片描述

网络中训练的是 relative position bias table中的值。

参数配置

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学术论文翻译攻略:哪家公司最靠谱?

学术论文是针对科学领域中的学术问题进行研究的理论文章,其目的是表述科研成果。在权威平台上发布学术论文通常要求翻译为英文文稿。那么,如何翻译学术论文,以及哪家公司在翻译学术性论文方面表现最好? 业内人士指出,学…

PSP - 扩散生成模型 (Diffusion Generative Model) 预测蛋白质结构 EigenFold 算法与环境配置

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132357976 Paper: EigenFold: Generative Protein Structure Prediction with Diffusion Models EigenFold 是用于蛋白质结构预测的扩散生成模型…

Intel CPU E-core 和P-core 介绍

多年来,计算机 CPU 中的内核一直在以稳定的速度发展。我们最初有单核 CPU,但很快发展到多线程,然后从那里开始多核设置,从双核设计开始,然后推出四核、八核等。 英特尔的第 12 代 CPU 给我们带来了意想不到的惊喜&…

微信小程序拉起支付报: 调用支付JSAPI缺少参数: total_fee

1. 调用支付JSAPI缺少参数: total_fee 2. 检查返回给前端调起支付的参数是否正确 一开始是params.put("package", prepay_id); 回来改回params.put("package", "prepay_id"prepay_id);

LeetCode刷题——46.全排列

46. 全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 【递归实现】 func permute(nums []int) [][]int {var permutation func([]int, int, int)r : make([][]int,0)permutation func(arr []int, start int,…

【动态规划】两个数组问题

文章目录 动态规划(两个数组问题)1. 最长公共子序列2. 不相交的线3. 不同的子序列4. 交错字符串5. 两个字符串的最小ASCII和6. 最长重复子数组7. 通配符匹配 动态规划(两个数组问题) 1. 最长公共子序列 题目链接 状态表示 dp[i]…

爬虫小白也能玩转!Python爬虫中的异常处理与网络请求优化

大家好,我是来自爬虫世界的小编。今天,我要和大家分享一些关于Python爬虫中的异常处理和网络请求优化的经验。不论你是初学者还是有一定经验的爬虫程序员,我相信这些实用的技巧和代码示例都能为你在爬取数据的过程中带来方便和效率。 1.异常…

广告牌安全传感器,实时监测事故隐患尽在掌握

在现代城市中,广告牌作为商业宣传的重要媒介,已然成为城市中一道独特的风景线。然而,随着城市迅速发展,广告牌的安全问题也引起了大众关注。广告招牌一般悬挂于建筑物高处,量大面大。由于设计、材料、施工方法的缺陷&a…

VC2019调用pngquantDLL示例源码

pngquantDLL是大名鼎鼎的PNG图片压缩命令行程序pngquant的源码编译的一个DLL库文件,主要是方便第三方程序集成使用; pngquant是一个命令行实用程序和一个用于有损压缩PNG图像的库。 这种转换大大减少了文件大小(通常高达70%),并保持了alpha透…

相机的位姿在地固坐标系ECEF和ENU坐标系的转换

在地球科学和导航领域,通常使用地心地固坐标系(ECEF,Earth-Centered, Earth-Fixed)和东北天坐标系(ENU,East-North-Up)来描述地球上的位置和姿态。如下图所示: ​地心地固坐标ecef和…

fastapi系列1-基础知识

学习资料 官网:https://fastapi.tiangolo.com/ github:https://github.com/tiangolo/fastapi 视频教程【独家新技术】从0到1学习 FastAPI 框架的所有知识点 依赖底层包:https://www.starlette.io/ 轻松上手Python的Web神器:FastAPI教程&…

ubuntu20.04共享文件夹—— /mnt/hgfs里没有共享文件夹

参考文章:https://blog.csdn.net/Edwinwzy/article/details/129580636 虚拟机启用共享文件夹后,/mnt/hgfs下面为空,使用 vmware-hgfsclient 查看设置的共享文件夹名字也是为空。 解决方法: 1. 重新安装vmware tools. 在菜单…

HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制ForEach循环渲染

ForEach基于数组类型数据执行循环渲染。说明,从API version 9开始,该接口支持在ArkTS卡片中使用。 一、接口描述 ForEach(arr: any[], itemGenerator: (item: any, index?: number) > void,keyGenerator?: (item: any, index?: number) > stri…

谈谈IP地址和子网掩码的概念及应用

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、IP地址的概念 二、IP地址的分类 1、A类 …

react之 router6路由 (两种路由模式、两种路由跳转、两种传参与接收参数、嵌套路由,layout组件、路由懒加载)

目录 react路由1:安装和两种模式react路由2:两种路由跳转 ( 命令式与编程式)2-1 路由跳转-命令式2-2 路由跳转-编程式 - 函数组件2-2-1 app.jsx2-2-2 page / Home.jsx2-2-3 page / About.jsx2-2-4 效果 react路由3:函数…

恒运资本:A股质押降至十年新低,高比例质押公司不足1%!

2018年,A股商场股权质押规划到达历史高位,为化解危险,监管层通过多种方式、多方合力给予纾解,取得积极成效。上篇分析了A股质押危险大幅缓解的六大原因,本篇从高份额质押股特征、职业、地域、企业类型等视点&#xff0…

七麦analysis参数加密分析

文章目录 1. 接口分析2. 断点调式3. 补环境重写加密4. 验证结果 1. 接口分析 目标站点: aHR0cHM6Ly93d3cucWltYWkuY24vcmFuay9tYXJrZXRSYW5r 先刷新网页,请求接口中的analysis参数本次分析的目标 2. 断点调式 打上XHR断点,刷新页面之后断点…

【MT32F006】MT32F006之串口

本文最后修改时间:2023年03月30日 一、本节简介 本文介绍如何使用MT32F006的串口。 二、实验平台 库版本:V1.0.0 编译软件:MDK5.37 硬件平台:MT32F006开发板(主芯片MT32F006) 仿真器:JLINK…

无涯教程-Perl - umask函数

描述 此函数为当前进程设置umask(创建文件和目录时应用的默认掩码)。 EXPR的值必须是八进制数。如果省略EXPR,则只需返回先前的值。 语法 以下是此函数的简单语法- umask EXPRumask返回值 此函数返回先前的umask值。 例 以下是显示其基本用法的示例代码- #!/usr/bin/pe…