与标准transformer的self attention基本一致,区别是增加了相对位置编码B 3.3 shifted window 在均分2*2 window的基础上增加3*3 shift window,打破固定的感受野,每个block内实现感受野的交叉,提升信息交流融合。 但是3*3 shift window的size不一样大,无法batch并行处理,因此对3*3 shift window进行特征图位移cyclic shif...
Swin Transformer中最重要的模块是基于移动窗口构建的注意力模块,其内部结构如下图所示,包含了一个基于移动窗口的多头自注意力模块(shifted windows multi-head self attention, SW-MSA)和基于窗口的多头自注意力模块(W-MSA),其他的归一化层和两层的MLP与原来保持一致,并使用了GELU激活函数。 基于移动窗口的W-MSA和...
而Swin Transformer使用的位置编码有两点不同:(1)位置编码加的位置不同,加在了attention矩阵中;(2)使用的是相对位置信息而不是绝对位置信息 如上式,相对位置偏差矩阵B\in\mathbb{R}^{M^2\times M^2}直接加在了attention矩阵中,注意B的维度和attention矩阵相同,即seq_len x seq_len(理解了attention矩阵的本质...
Encoder和decoder拥有几乎一样的结构;他们的区别在于decoder在self-attention以后多了一层encoder-decoder a...
这便是对ViT的一个改进,ViT从头至尾都是对全局做self-attention,而swin-transformer是一个窗口在放大的过程,然后self-attention的计算是以窗口为单位去计算的,这样相当于引入了局部聚合的信息,和CNN的卷积过程很相似,就像是CNN的步长和卷积核大小一样,这样就做到了窗口的不重合,区别在于CNN在每个窗口做的是卷积的计...
Transformer和CNN不同,需要position embedding来编码tokens的位置信息,这主要是因为self-attention是permutation-invariant,即打乱sequence里的tokens的顺序并不会改变结果。如果不给模型提供patch的位置信息,那么模型就需要通过patchs的语义来学习拼图,这就额外增加了学习成本。但是CNN是滑动的,是本身就具有位置信息的。所以在...
官网地址:https://github.com/microsoft/Swin-Transformer 2. 网络框架 2.1 swim VS vit 从图中可以得到,Swin相较于ViT的区别在于:Swim模型的特征图具有层次性,随着特征层加深,特征图的高和宽逐渐变小(4倍、8倍和16倍下采样); **注:**所谓下采样就是将图片缩小,就类似于图片越来越模糊(打码),像素越来越少...
self-attention(MSA)模块替换为基于移动窗口,其它层保持不变。Swin Transformer由一个基于移位窗口的MSA...
Swin Transformer中使用的窗口MSA只在每个窗口内计算注意力。由于窗口大小在整个网络中是固定的,因此基于窗口的MSA的复杂度相对于patch的数量(即图像的大小)是线性的,相对于标准MSA的二次复杂度有了很大的提高。移动窗口Self-Attention 基于窗口的MSA的一个明显缺点是,将注意力限制在每个窗口,限制了网络的建模能力。
Swin Transformer是ICCV 2021的最佳论文,它之所以有这么大的影响力,是因为在ViT之后,swin transformer凭借在一系列视觉任务上的出色表现,进一步证明了transformer是可以在视觉领域广泛应用的。此外,作者团队也发布了一系列基于swin transformer的工作,比如自监督版本的MoBY、视频领域的video-swin-transformer、应用swin思想的MLP...