Transformer系列专题(四)——Swintransformer

news2024/9/23 15:30:18

文章目录

  • 九、SwinTransformer
    • 9.1 整体网络架构
    • 9.2 Transformer Blocks
    • 9.3 Patch Embedding(将图像切割成小块(Patch))
    • 9.4 window_partition
    • 9.5 W-MSA(Window Multi-head Self Attention)
    • 9.6 window_reverse
    • 9.7 SW-MSA(Shifted Window)
    • 9.8 PatchMerging(下采样)


九、SwinTransformer

解决了哪些问题呢?

  • 图像中像素点太多了,如果需要更多的特征就必须构建很长的序列
  • 越长的序列算起注意力肯定越慢,这就导致了效率问题
  • 能否用窗口和分层的形式来替代长序列的方法呢?这就是本质
  • CNN中经常提到感受野,Transformer中该如何体现呢?(答案就是分层)

9.1 整体网络架构

  1. 得到个Pathch特征构建序列;
  2. 分层计算attention(逐步下采样过程)
  3. 其中Block是最核心的,对attention的计算方法进行了改进

image-20240717202504516

9.2 Transformer Blocks

  • W-MSA:基于窗口的注意力机制
  • SW-MSA:窗口滑动后重新计算注意力
  • 上面两个串联在一起就是一个block

image-20240717203154304

9.3 Patch Embedding(将图像切割成小块(Patch))

输入:图像数据(224,224,3)

输出:(3196,96)相当于序列长度是3136个,每个的向量是96维特征

3196也就是(224/4)*(224/4)得到的,也可以根据需求更改卷积参数

9.4 window_partition

输入:特征图(56,56,96)

默认窗口大小为7,所以总共可以分成8*8个窗口

输出:特征图(64,7,7,96)

之前的单位是序列,现在的单位是窗口(共64个窗口)

9.5 W-MSA(Window Multi-head Self Attention)

对得到的窗口,计算各个窗口自己的自注意力得分

qkv三个矩阵放在一起了:(3,64,3,49,32)

3个矩阵,64个窗口,heads为3,窗口大小7*7=49,每个head特征96/3=32

attention结果为:(64,3,49,49)每个头都会得出每个窗口内的自注意力

9.6 window_reverse

通过得到的attention计算得到新的特征(64,49,96)

总共64个窗口,每个窗口7*7的大小,每个点对应96维向量

window_reverse就是通过reshape操作还原回去(56,56,96)

这就得到了跟输入特征图一样的大小,但是其已经计算过了attention

9.7 SW-MSA(Shifted Window)

为什么要shift?原来的window都是算自己内部的

这样就会导致只有内部计算,没有它们之间的关系

容易让模型局限在自己的小领地,可以通过shift操作来改善

image-20240717214848958

  • 位移中的细节

    1. 位移就是像素点挪一下位置:

    image-20240717220313613

      	2. 窗口移动后,还有点小问题,例如原来4个,现在9个了,计算量怎么解决呢?
    

    image-20240717220424342

    首先得到新窗口,并对其做位移操作

    image-20240717220552286

    在计算时,只需要计算自己窗口的,其他的都是无关的

    image-20240717220633676


    只需要设置好上面不需要的结果对应的位置的mask让其值为负无穷即可(softmax)

    输出结果同样为(56,56,96)

    不要忘记,计算完特征后需要对图像进行还原,也就是还原平移

    这两组合就是SwinTransformer中的核心计算模块

9.8 PatchMerging(下采样)

image-20240717221555136

image-20240717221607627

分层计算:

一次下采样后(3176 -> 784也就是56*56 -> 28*28)

然后继续执行SwinTransformer Block

最后根据任务来选择合适的head层即可(分类,分割,检测等)

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

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

相关文章

LinuxShell编程2——shell搭建Discuzz论坛网站

目录 一、环境准备 ①准备一台虚拟机 ②初始化虚拟机 1、关闭防火墙 2、关闭selinux 3、配置yum源 4、修改主机名 二、搭建LAMP环境 ①安装httpd(阿帕奇apache)服务器 查看是否安装过httpd 启动httpd 设置开机启动 查看状态 安装网络工具 测试 ②安装…

Android C++系列:Linux线程(三)线程属性

linux下线程的属性是可以根据实际项目需要,进行设置,之前我们讨论的线程都是采用线程的默认属性,默认属性已经可以解决绝大多数开发时遇到的问 题。如我们对程序的性能提出更高的要求那么需要设置线程属性,比如可以通过设置线程栈的大小来降低内存的使用,增加最大线程个数…

数据结构——栈和队列(C语言实现)

写在前面: 栈和队列是两种重要的线性结构。其也属于线性表,只是操作受限,本节主要讨论的是栈和队列的定义、表示方法以及C语言实现。 一、栈和队列的定义与特点 栈:是限定仅在表尾进行插入和删除的线性表。对栈来说,表…

【Elasticsearch7.11】reindex问题

参考博文链接 问题:reindex 时出现如下问题 原因:数据量大,kibana的问题 解决方法: 将DSL命令转化成CURL命令在服务上执行 CURL命令 自动转化 curl -XPOST "http://IP:PORT/_reindex" -H Content-Type: application…

防洪墙的安全内容检测+http请求头

1、华为的IAE引擎:内部工作过程 IAE引擎主要是针对2-7层进行一个数据内容的检测 --1、深度检测技术 (DPI和DPF是所有内容检测都必须要用到的技术) ---1、DPI--深度包检测,针对完整的数据包,进行内容的识别和检测 1、基于特征子的检…

Spark算子--take(访问量前十网站)

1.题目需求 利用数据集SogouQ2012.mini.tar.gz 将数据按照访问次数进行排序,求访问量前10的网址,每一行数据代表一个url被访问1次 2.代码 from pyspark import SparkContext, SparkConfdef main():conf SparkConf().setMaster("local[*]").s…

【操作系统】文件管理——文件存储空间管理(个人笔记)

学习日期:2024.7.17 内容摘要:文件存储空间管理、文件的基本操作 在上一章中,我们学习了文件物理结构的管理,重点学习了操作系统是如何实现逻辑结构到物理结构的映射,这显然是针对已经存储了文件的磁盘块的&#xff0…

连锁零售门店分析思路-人货场 数据分析

连锁零售门店分析思路 以下是一个连锁零售门店的分析思路: 一、市场与竞争分析 二、门店运营分析(销售分析) 三、销售与财务分析 四、客户分析 五、数字化与营销分析 最近帮一个大学生培训,就门店销售分析 ,说到门店…

尚品汇-(二十)

目录: 一:商品详情页面优化 (1)思路 (2)整合redis到工程 (3)使用redis进行业务开发相关规则 (4)缓存常见问题 二:分布式锁 本地锁的局限性…

【BUG】已解决:java.lang.reflect.InvocationTargetException

已解决:java.lang.reflect.InvocationTargetException 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开发…

【STL详解 —— map和set的使用】

STL详解 —— map和set的使用 关联式容器键值对setset的介绍set的使用set的模板参数列表set的构造set的迭代器set的容量set的修改操作 mapmap的介绍map的使用map的模板参数列表map的构造map的迭代器map的容量与元素访问map中元素的修改 multisetmultimap 关联式容器 在初阶阶段…

Mindspore框架CycleGAN模型实现图像风格迁移|(一)Cycle神经网络模型构建

Mindspore框架:CycleGAN模型实现图像风格迁移算法 Mindspore框架CycleGAN模型实现图像风格迁移|(一)CycleGAN神经网络模型构建Mindspore框架CycleGAN模型实现图像风格迁移|(二)实例数据集(苹果2橘子&#…

彻底搞定C指针系列

1.指针是什么&#xff1f; 运行一下代码 #include <stdio.h> int main() { int i 39; printf("%d\n", i); printf("%d\n",&i); return 0; } 运行结果&#xff1a; 39 618561996 运行测试代码&#xff1a; #include <stdio.…

计组 外围设备

外围设备 peripheral device 概述 基本组成部分&#xff1a;存储介质、驱动装置、控制电路 分类&#xff1a;输入设备、输出设备、外存设备、数据通信设备和过程控制设备 磁盘存储设备 磁化元/存储元&#xff1a;记录一个二进制信息位的最小单位 两个稳定的剩磁状态 读写磁…

2.javaWeb_请求和响应的处理(Request,Response)

2.请求和响应的处理 文章目录 2.请求和响应的处理一、动态资源和静态资源javax.servlet(包) 二、Servlet体系1.简介2.HttpServlet3.Servlet生命周期 三、Request对象1.ServletRequest1)ServletRequest主要功能有&#xff1a;2)ServletRequest类的常用方法: 2.HttpServletReques…

InterSystems IRIS Python 使用 DB-API连接 ,比odbc简单

1、下载安装驱动 同步的gitee下载地址&#xff1a;&#xff1a;于光/iris-driver-distribution - Gitee.com pip install intersystems_irispython-version-py3-none-any.whl 2、python代码测试 import iris as dbapi conn dbapi.connect(hostname127.0.0.1, port1972, names…

只讲干货!!自己喜欢的只能靠自己努力才能拿到!!今天拿下:IO流技术介绍

什么是IO 输入(Input) 指的是&#xff1a;可以让程序从外部系统获得数据&#xff08;核心含义是 “读 ” &#xff0c;读取外部数据&#xff09;。 输出(Output) 指的是&#xff1a;程序输出数据给外部系统从而可以操作外部 系统&#xff08;核心含义是“ 写 ” &#xff0c;将…

基于MindSpore实现BERT对话情绪识别

讲解视频&#xff1a; 基于MindSpore实现BERT对话情绪识别

防御笔记第七天(时需更新)

1.防火墙的可靠性&#xff1a; 因为防火墙不仅需要同步配置信息&#xff0c;还需要同步状态信息&#xff08;会话表等&#xff09;&#xff0c;所以防火墙不能像路由器那样单纯靠动态协议来进行切换&#xff0c;还需要用到双击热备技术。 双机---目前双机技术仅仅支持两台防火…

AI 大事件:超级明星 Andrej Karpathy 创立AI教育公司 Eureka Labs

&#x1f9e0; AI 大事件&#xff1a;超级明星 Andrej Karpathy 创立AI教育公司 Eureka Labs 摘要 Andrej Karpathy 作为前 OpenAI 联合创始人、Tesla AI 团队负责人&#xff0c;他的专业性和实力备受瞩目。Karpathy 对 AI 的普及和教育充满热情&#xff0c;从 YouTube 教程到…