1. Swin Transformer 的基本结构 Swin Transformer 采用了分层结构,每一层有一个固定大小的窗口,通过窗口内的自注意力计算特征。Swin Transformer 的主要模块包括:Patch Partition:将输入图像划分为不重叠的Patch。Linear Embedding:将每个Patch映射到一个高维向量空间。Swin Transformer Block:窗口化的多头自注意力(...
Swin Transformer Block是Swin Transformer的核心部分,首先明确Swin Transformer Block的输入输出图片维度是不发生变化的。图中的x2表示,Swin Transformer Block有两个结构,在右侧小图中,这两个结构仅有W-MSA和SW-MSA的差别,这两个结构是成对使用的,即先经过左边的带有W-MSA的结构再经过右边带有SW-MSA的结构。 W-...
在前面的章节中,我们学习了SwinTransformer的整体框架,其主要由Patch Merging模块与SwinTansformer Block模块组成, Patch Embedding 在输入进Swin Transformer Block前,需要将图片切成一个个 patch,然后嵌入向量。 具体做法是对原始图片裁成一个个window_size*window_size的窗口大小,然后进行嵌入。 这里可以通过二维卷积层,...
所以Swin Transformer又加上了第二个Transformer Block。这个Block的窗口最好与上一个Block的窗口有很多交集,这样注意力就更全局了。在窗口大小不变的情况下,理想的窗口显然是这样的: 图1. 黑色的是第一个Block的窗口,浅色的是第二个Block的窗口 看上去,这个浅色的窗口就是黑色的窗口移位了(\frac{M}{2},\frac...
但3136对于transformer太长了,就通过基于窗口的自注意力计算,每个窗口默认7x7=49个patch,向量长度就是49相对就短很多。解决计算复杂度。transformer的输入输出序列长度是相同的,所以经过swin transformer block后其输出尺寸仍然为56x56x96. 第三步:Patch Merging类似卷积神经网络中的池化操作,用于获取多尺寸特征信息,构建...
7.分层计算(执行后续的Block) 8.输出层 Swim Transformer是特为视觉领域设计的一种分层Transformer结构。Swin Transformer的两大特性是滑动窗口和层级式结构。 1.滑动窗口使相邻的窗口之间进行交互,从而达到全局建模的能力。 2.层级式结构的好处在于不仅灵活的提供各种尺度的信息,同时还因为自注意力是在窗口内计算的,所...
Swin Transformer Block:此模块是 Transformer 中使用 Shifted Window 的多 ATTENTION 模块,具有一致性;Swin Transformer 模块中包含一个 MSA(多头 Attention)模块 SHIFTED WINDOW,之后是 2 层 MLP,接着将 Layernorm 层添加至各 MSA 模块与各 MLP 层内,而后是剩余连接。
除了Patch Merging模块,接下来便是Swin Transformer Block模块了,这才是重头戏,其主要包含LayerNorm,Window Attention(W-MSA),Shifted Window Attention(SW-MSA)和MLP模块。为方便对整个架构的理解,我们先从外部梳理一遍其具体变换: Swin Transformer整体外部变换过程 ...
上图是两个连续的Swin Transformer Block。一个Swin Transformer Block由一个带两层MLP的shifted window based MSA组成。在每个MSA模块和每个MLP之前使用LayerNorm(LN)层,并在每个MSA和MLP之后使用残差连接。2 Shifted Window based MSA 上图中红色区域是window,灰色区域是patch。W-MSA将输入图片划分成不重合的...
针对第二个问题,在每一个模块(Swin Transformer Block)中,Swin Transformer通过特征融合的方式(PatchMerging,可参考卷积网络里的池化操作)每次特征抽取之后都进行一次下采样,增加了下一次窗口注意力运算在原始图像上的感受野,从而对输入图像进行了多尺度的特征提取,使得在CV领域的其他密集预测型任务上的表现也是SOTA。