Swin-Transformer详解

引言

在这里插入图片描述
在各个cv领域都取得了非常不错的效果。

整体框架

在这里插入图片描述

  • 可以看出他与VIT的主要区别就是SWIN的特征图和CNN类似,是具有层次性的,逐步下采样,所以在分割、检测任务会有更大的优势。而VIT是一次性下采样16倍。
  • 其次,通过在低层次的时候限制patch之间建立关系,即会把图片分隔成不同的大块,大块之间是没有交流的。这样就可以节省大部分没有必要的计算量。即(Windows Multi-self Attention机制)。
    在这里插入图片描述
    在这里插入图片描述

详解

patch partition和linear embedding

4 * 4 * 1的图像为例:
在这里插入图片描述

  • 用一个4 * 4的窗口去对图像分割

  • 对每一个窗口的像素进行展平,就得到4 * 4 = 16的深度为16矩阵,即[1,1,16],3个通道的话就再乘以3,得到深度为48的矩阵,即[1,1,48]

  • linear embedding用于调整特征矩阵的channel之后,还包括了LN层。
    而且,linear embedding得到的深度C根据模型类型不同而不同。

上面两个和VIT类似,都可以通过一个卷积层来实现(卷积核为4 * 4,步距4,48个卷积核)。

patch-merging

以4 * 4 *1输入图像,窗口大小2 * 2为例:
在这里插入图片描述
作用:在stage2,3,4进行下采样。hw减半,c翻倍。
这一看不就是类似于yolo v2里面的passthrough layer嘛,只不过增加了一个linear层用于降低通道数。

STB(swin transformer block)

在每个stage都是重复堆叠偶数次,因为W-MSA和SW-MSA是连续的,成对使用。

W-MSA(window-multi-head self attention)

在这里插入图片描述

在这里插入图片描述
上图公式来源可参考:https://blog.csdn.net/qq_37541097/article/details/121119988

SW-MSA(shift w-msa)

在这里插入图片描述
解决w-mas的窗口之间没有信息交流的问题。

  • 窗口分别向右win_Width // 2个格子,再向下移动win_Height // 2个格子,得到9个窗口,每个窗口包含了上一层不同窗口的像素点,从而实现窗口间的信息交流机制。
  • 如果直接在每个窗口内进行match操作,会增大计算量;如果直接重新划分为4个窗口,那就和上一层的窗口一样了,显然不合理。
  • 所以要得到有效的四个窗口,就需要再把第一行窗口移动到最后一行,再把第一列移动到最后一列,得到cyclic shift后的特征图。如下图所示:在这里插入图片描述
  • 但是如果直接在四个窗口内进行match,就会出现把原本不相邻的窗口强行建立关系,显然不合理。所以需要用mask-msa,如下图所示,窗口3和窗口5是两个本来隔开的窗口,但是移动后现在再同一个4 * 4的窗口里面:在这里插入图片描述
    案例:
  • 下图为将第3 // 2=1行移动到最后一层:
    在这里插入图片描述
  • 下图为将第3 // 2=1列移动到最后一层:
    在这里插入图片描述
  • 如上图所示,相当于把原图向右再向下移动了3 // 2格,并移动相应的行和列。

在这里插入图片描述

  • 上图黄色窗口直接msa,紫色进行masked-msa

Relative position bias

在这里插入图片描述
下面为将二元坐标转换为有效的一元坐标(思想是将x,y相加,但是不能直接相加,需要先对x和y进行变换 ):
在这里插入图片描述
上图为将xy先转化为非负数。
在这里插入图片描述

在这里插入图片描述
上图得到了一维坐标后,再如下图所示按照索引表取值:
在这里插入图片描述

  • 为什么索引表有 (2M-1)x(2M-1)个呢?
    因为在二维索引图中,x和y的取值范围为都是 [-M+1,M-1],即包含了(M-1)-(-M+1)+ 1个数字,即2M-1个,所以xy的排列组合为(2M-1)x(2M-1)

在这里插入图片描述

参考:B站:霹雳吧啦Wz

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shashank497

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值