深度学习网络学习(1):Swin Transformer

网络整体框架

  • 相比于ViT模型,Swin Transformer使用了类似卷积神经网络的层次化构建方法(a hierarchical representation),即生成多尺度的特征图,在不同的特征图上下采样的倍数是不一样的,而不是像ViT直接使用16x16大小的patch直接下采样16倍(在代码中的实现是使用16x16的卷积核),而后面的特征层都是维持这个下采样不变。
  • Swin Transformer使用窗口(Window)进行分割,Multi-Head Self-Attention只在每个窗口(Window)内进行,在浅层特征图计算中减少了计算量。
    在这里插入图片描述
    Swin Transformer(Swin-T)网络的架构图如下图所示。在这里插入图片描述
  • 首先输入图片经过 Patch Partition 模块进行分块,这类似于 ViT 中的 Linear Projection of Flattened Patches, 4*4的相邻像素为一个patch,每个patch的序列长度为 4x4x3,所以通过Patch Partition后图像shape由 [H, W, 3]变成了 [H/4, W/4, 48] 。然后通过线性编码(Linear Embeding)层对每个patch的通道进行线性变换。
  • 然后在四个不同的Stage使用 Patch Partition 进行4次2倍下采样,获得不同尺度的特征图。

Patch Merging

Swin Transformer是在小窗口中进行自注意力,这些小窗和ViT的patch不同的是,各个窗口相对独立,小窗口区域不相交,无法进行数据传递。面对不相交的窗口如何传递信息,如何学习多尺度信息,它提出了patch merging,简单来说就是由小窗口patch合成大窗口patch增大感受野,再通过序号选取的方式去提取出深度特征图,模拟出一种类似池化的操作。本质是对于不同patch组成的特征图,使用一种类似于focus的方法进行有序拼接,形成新的特征图,同时实现下采样的功能。生成的新的特征图由于各行取值,与其他窗口进行了交互,获得了更多信息。
在这里插入图片描述
图片引用自:https://blog.csdn.net/qq_37541097/article/details/121119988

W-MSA

W-MSA(Windowed Multi-head Self-Attention)是一种窗口化多头自注意力机制,它通过分层和局部化的方式显著提高了计算和内存效率,同时保持了强大的建模能力。对于feature map中的每个像素(或称作token或patch)与Class序列在Self-Attention计算过程中需要和所有的像素去计算全局。
使用W-MSA模块时,首先将feature map按照M×M大小划分成一个个Windows,每个窗口不重叠,然后单独对每个Windows内部使用多头自注意力机制。

SW-MSA

Shifted Windows Multi-Head Self-Attention (SW-MSA),目的是实现不同Window之间的信息交互。
在这里插入图片描述
对于一个feature map,使用不同形状的窗口对原feature map进行划分,然后再将他们拼接到右下角。这时,形成了一个新的feature map,再将其进行Windows划分进行MSA计算,最后将右下角的feature map还原到原来的左上角。对于连续的window直接MSA,对于不连续的window使用masked MSA,将新的window中的不连续的token进行掩码计算。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值