SwinTransformer学习

参考:

  • Swin-Transformer网络结构详解 https://blog.csdn.net/qq_37541097/article/details/121119988

x.1 前言

x.1.1 特点

它具有两个特点:

  • 采用类似卷积神经网络中的层次构建方法
  • 采用W-MSA和SW-MSA
  • 全新的位置编码方式
  1. 层次构建方法

相比较于ViT,第一个Conv2d直接将图片下采样16x16倍,swin-Transformer则使用了类似卷积神经网络中的层次化构建方法(Hierarchical feature maps),比如特征图尺寸中有对图像下采样4倍的,8倍的以及16倍的,这样的backbone有助于在此基础上构建目标检测,实例分割等任务。他的特征提取方式如下:

请添加图片描述

  1. W-MSA和SW-MSA

采用了Windows Multi-Head Self-Attention(W-MSA)和Shifted Windows Multi-Head Self-Attention(SW-MSA)。W-MSA为了减少参数量?还是计算量?,将特征提取图划分成一个一个小模块;SW-MSA效果同Masked-MSA,为了防止不同的特征图分割后产生的耦合。

请添加图片描述

  1. 全新的位置编码方式

请添加图片描述

根据上面公式,我们的相对位置编码会增加在Attention计算中,通过计算以及查表我们得到最终的偏置矩阵。

增加偏置后我们的精度能提高三个点。

x.1.2 网络结构图

在这里插入图片描述

x.2 Patch-Partition + Linear Embedding

当一个Images图片塞入网络训练的时候,我们先要通过Patch-PartitionConv2d将图片下采样4x4,通道数量增加32倍。

紧接着我们通过flattern+transpose将输入矩阵由4维变成3维[B, C, H, W]->[B, H*W, C],因为Attention模块只处理3维数据。

最后我们将矩阵传入Layer Norm。接下来便可以将矩阵传入后续的stage中进行训练。

x.3 Swin Transformer Block

每一个Block由一个含W-MSA的块和一个含SW-MAS的块组成。

x.3.1 W-MSA

为了减少params,引入W-MSA。虽然传入的是个3维矩阵,但是形象地来说就是将图片进行了分割,分割成了一个一个的windows,一个window由多个patches组成,一个patch(一个patch不是指一个像素,而是指一块区域,包含多个像素)转成一个token再传入网络训练。每次对一个window进行Attention做特征提取

请添加图片描述

x.3.2 SW-MSA

由于分割后的4个图片间缺少相对位置关系,所以我们将图片重新分割,使得区域间具有相对位置关系。

请添加图片描述

但是我们的矩阵计算都是对固定大小的window进行计算,所以我们需要shift移动切割后的window。

请添加图片描述

但是5和3之间并不具备位置关系,所以我们在计算5和3组成的大块的时候,我们需要单独计算5和单独计算3。这个时候我们使用了masked-MSA。几乎一模一样,赋值一个负无穷(这里是-100),经过softmax后变成0。

请添加图片描述

x3.3 Relative Position Bias

通过公式,我们能够看到,在计算Attention的时候,我们还增加了相对位置偏置的矩阵。

请添加图片描述

相对位置偏置矩阵是通过计算和查表得到的。我们计算相对位置,将相对位置展平拼成一个大矩阵;经过行列计算得到绝对位置;由绝对位置查表得到相对位置偏置矩阵。

请添加图片描述
请添加图片描述
请添加图片描述

x.4 patch merging

patch merging即下采样。在Height和width方向上减半,Channel翻倍。

在这里插入图片描述

x.5 End层

最后增加一个End层为了和最后的分类类别数相匹配。

请添加图片描述

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

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

相关文章

从零开始学Python第12课:常用数据结构之集合

在学习了列表和元组之后,我们再来学习一种容器型的数据类型,它的名字叫集合(set)。说到集合这个词大家一定不会陌生,在数学课本上就有这个概念。如果我们把一定范围的、确定的、可以区别的事物当作一个整体来看待&…

有符号加法运算

实例 module Signed_add(input signed [3:0] a,input signed [3:0] b,output signed [4:0] out );wire signed [3:0] a1;wire [3:0] a2;wire signed [3:0] b1;wire [3:0] b2;wire signed [4:0] out1;wire [4:0] out2;wire signed [4:0] out3;wire …

五步教你如何注册一个公司网站

在今天的数字化时代,每个公司都需要一个强大的线上存在感。注册一个公司网站是实现这一目标的第一步。但是,对于许多公司而言,这个过程可能有些困难。因此,在本文中,我将介绍一个五步计划,让您轻松注册一个…

【SpringBoot】面试组合技-天羽屠龙舞,SpringBootApplication注解的作用是什么?SpringBoot怎么实现自动装配的?

SpringBoot源码下载地址:https://github.com/spring-projects/spring-boot/tags 文章目录🍟下载源码🍗环境准备🍖注解解析🍝SpringBootConfiguration注解🍛EnableAutoConfiguration注解🍤AutoC…

AD20的PCB布线规则设定

目录 1、最小安全间距 2、线宽规则 3、过孔 4、盖油工艺设计 5、内电层焊盘模式设置 6、反焊盘间距设计 7、焊盘与覆铜连接类型 AD20的规则库设定是PCB布线的首要工作,在布线初期就要设置好,布线的过程中还需要动态的变更,因此本篇总结了PCB的…

【Linux】之nc命令(连接与扫描指定端口、监测服务端口的使用情况)解析、详解实例、邮件告警

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录nc命令简介nc命令的安装nc命令语法格式…

【K8S系列】Pod详解

目录 序言 1 前言 2 为什么需要pod 3 什么是Pod? 3.1 Pod的组成 3.2 Pod的用途 3.3 Pod的生命周期 3.4 Pod的特点 4 Pod的使用 5 结论 序言 任何一件事情,只要坚持六个月以上,你都可以看到质的飞跃。 今天学习一下K8s-Pod相关内容&…

SQL删除记录方式汇总

大家好,我是RecordLiu! 今天给大家分享的是SQL中删除记录的不同方式,我会用几道真题来给大家讲解。 题目直达链接: 牛客网在线SQL编程练习 切换到SQL篇就能看到了。 我这里先列下知识点: SQL中进行简单删除的语法是什么?SQL…

关于AI 绘画,我给你总结了一份详细的关键词(Prompt 知识)

写在前面 随着人工智能技术的不断发展,越来越多的应用场景被发掘。其中,AI绘画是一种新兴的领域,其应用范围涵盖了数字媒体、游戏设计、动画制作、艺术创作等多个领域。在本文中,我们将介绍AI绘画的基本概念、发展历程、技术原理…

最新JavaFx JDK17如何正确的打出可以使用的exe软件包

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、提前需要准备?二、打包步骤1.现将module-info.java删除 选中module-info.java 鼠标右键 Refactor 然后选择safe deleted2.编辑设置 路径 Run/edi…

教你安装各种应用环境-Nodejs

因为最近做项目用到了Nodejs,如果直接下那么用到的就是最新版本。我要用以前的版本这就让我产生了写这篇文章的想法。 安装官网 官网:https://nodejs.org/en 如果安装最新的直接下载安装就行,流程可以看后面。 流程 其他版本点击"O…

年薪30W+,待遇翻倍,我的经历值得每个测试人借鉴

从自考大专到出走公司,从半年无业露宿深圳北站,从8k…到11.5k…再到20k,我的经历值得每个测试人借鉴 或许学历并没有那么重要 12年高考之后,在朋友的介绍下(骗了过去),没有好好的读大学&#x…

Linux Redis主从复制 | 哨兵监控模式 | 集群搭建 | 超详细

Linux Redis主从复制 | 哨兵监控模式 | 集群搭建 | 超详细一 Redis的主从复制二 主从复制的作用三 主从复制的流程四 主从复制实验4.1 环境部署4.2 安装Redis(主从服务器)4.3 修改Master节点Redis配置文件 (192.168.163.100)4.4 修改Slave节点Redis配置文…

计算机网络 - TCP的效率与特性

前言 本篇是介绍部分TCP的特性,了解TCP提高传输速率的机制;如有错误,请在评论区指正,让我们一起交流,共同进步! 文章目录前言1. 滑动窗口2. 流量控制3.拥塞控制4.延时应答5. 捎带应答6. 面向字节流7. 异常…

Android FrameWork详细教程—第一个启动的程序--init 与 Zygote

第一个启动的程序–init 不管Java还是C运行一个程序都是以main方法作为入口。所以我们先看看init.cpp的main函数. 目录:/system/core/init/main.cpp 具体代码: int main(int argc, char** argv) { #if __has_feature(address_sanitizer)__asan_set_er…

Kaggle 赛题解析 | AMP 帕金森进展预测

文章目录一、前言二、比赛说明1. Evaluation2. Timeline3. Prize4. Code Requirements三、数据说明四、总结🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 竞赛题目:AMP-Parkinson’s Disease Progression Prediction 竞赛地址…

基于逻辑回归构建肿瘤预测模型

使用逻辑回归构建肿瘤预测模型 描述 乳腺癌数据集包括569个样本,每个样本有30个特征值(病灶特征数据),每个样本都属于恶性(0)或良性(1)两个类别之一,要求使用逻辑回归&…

spring beancopier Cannot invoke “Object.getClass()“ because “cause“ is null异常处理

我们项目用到spring beancopier, 在别的机器上运行正常,代码拉到我机器上就不正常了,抛出异常信息如题。 Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.ibm.riskmeasure.rwaservice.service.singlete…

ASP.NET Core MVC 从入门到精通之初窥门径

随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生&#xff0c…

字节跳动软件测试面试过了,起薪20k

普通二本计算机专业毕业,从毕业后,第一份接触测试的工作是在一家通讯小公司,大部分接触的工作是以功能测试为主,一直都是几千块钱工资,还一度被派出差,以及兼职各种产品、运维、运营的活,感觉自…