Swin Transformer【Backbone】

背景

Swin Transformer是ICCV2021最佳论文。

ViT让transformer从NLP直接应用到CV有两个直接的问题:尺度问题(比如行人,车等大大小小的尺度问题在NLP领域就没有),序列问题(如果以图像像素点为基本单位,序列太大)。16个patch(分辨率低)使ViT可能不适合密集预测型的任务,全局建模使计算复杂度平方倍增长。

Swin Transformer让transformer也能做层级式的特征提取,使得提取的特征具备多尺度概念。窗口内计算自注意力使序列长度降低(计算复杂度随着图像大小线性增长,非平方级增长),移动使相邻两个窗口之间有了交互。语义相近的部分大概率出现在相邻的区域,这样local的设计是完全够用的,ViT的全局设计还是冗余的。

总的来说,是借鉴卷积的窗口滑动与自身全局视野的把握优势相结合。

模型结构

(1)开始的操作可对比ViT理解,假设输入的图片[224,224,3],经过Patch Partition打成[56,56,48](类似ViT,不过这里的patch大小为4*4),经过Linear Embedding形成[56,56,96],改成[3136*96],再输入到Block的最终处理成[3136*96]。

(2)Patch Merging(空间大小除2,通道数乘4再除2(用1*1卷积再将通道数降低),为了对比卷积神经网络有了这样的操作,这种操作可以理解为以空间换维度,可看参考的视频,很详细。)成[28,28,192],依次循环构成整个Swin Transformer。

在这里插入图片描述

 Swin Transformer Block 

前面提到,[56,56,96]的张量输入块后,是在在7*7的窗口里算自注意力(也就是8*8=64个窗口)。见第一张图(b)是Swin Transformer的一个基本计算单元(含两个Block),先在窗口计算自注意力,再在shift后的窗口做自注意力。

如何算滑动窗口后的自注意力这个细节看B站沐神的讲解吧。

参考

B站沐神Swin Transformer论文精读【论文精读】

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Swin Transformer作为backbone在计算机视觉任务中具有很高的性能。它是一种基于Transformer的网络架构,通过将输入图像分割成多个Patch,并使用Transformer模块对这些Patch进行处理来提取特征。Swin Transformer的网络结构包括多个阶段(Stage),每个阶段都包含多个Swin Transformer块。 在Swin Transformer中,Patch Merging模块的作用是进行降采样,通过该模块后,特征图的形状会减小一倍,通道数会增加一倍。这个模块类似于YOLOX或Yolov5中的Fcous模块。Patch Merging模块存在于Stage2到Stage4中。 Swin Transformer的输入是一个H×W×3的图像,经过Patch Partition和Linear Embedding后,形状和通道维度会变为(H/4,W/4,48)。然后,类似于ResNet,不同的阶段对特征图进行降采样,形状缩小的同时通道数会扩展相同的倍数。这样做的目的是为了获得更大的感受野和丰富每个特征点对应原图上的特征信息。 Swin Transformer一共有四个模型,从Tiny、Small、Basic到Large。以Swin-T为例,其中的concat4×4、96-d、LN操作代表Patch Partition和Linear Embedding操作,其和Patch Merging模块一样。其中,concat4×4表示将高和宽下采样四倍,96-d表示Linear Embedding将通道数变为96,LN表示layer norm。win.sz代表window size即窗口大小,dim 96代表通过Swin-Transformer Block输出的特征通道维度为96,head 3代表Multi-Head Self-attention的头数。 此外,Swin Transformer还利用相对位置索引矩阵来计算注意力,通过对索引矩阵进行一系列操作,得到相对位置偏置表,用于Attention计算中的B矩阵。这个表是网络训练过程中真正要训练的参数,且只要窗口大小是固定的,一元索引矩阵的值就是固定的。 综上所述,Swin Transformer作为backbone在计算机视觉任务中通过分割图像为Patch并使用Transformer模块进行特征提取,具有较高的性能和灵活性。 #### 引用[.reference_title] - *1* *2* *3* [检测分割算法改进(篇五) 引入Swin Transformer做检测网络Backbone](https://blog.csdn.net/qq_42308217/article/details/122861881)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值