【图像识别】Swin Transformer

一、引言

论文: Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
作者: Microsoft Research Asia
代码: Swin Transformer
特点: 提出滑动窗口自注意力 (Shifted Window based Self-Attention) 解决Vision Transformer输入高分辨率图像注意力模块计算复杂度高的问题。

二、框架

Swin Transformer的整体框架图如下:

可见,Swin Transformer主要包括Patch Partition+Linear Embedding、Swin Transformer Block、Patch Merging几个组件。每经历一个Stage特征图都会缩小2倍、通道数放大2倍,这与ResNet网络的特征尺度变化过程很类似。

Swin Transformer Block的最小单位为上图右侧两个连续的Block,两个Block的差别仅在于注意力模块是窗口多头自注意力 (W-MSA) 还是滑动窗口多头自注意力 (SW-MSA)。所以每个Stage中包含的Block数量都是2的整数倍。

2.1 Patch Partition+Linear Embedding

Patch Partition是要将图像拆分成多个 4 ∗ 4 ∗ 3 4*4*3 443大小的Patch(4*4是每个Patch包含的像素点数,3是原始图像通道数),如下图所示:

之后将每个Patch按行展平,于是每个Patch形成一个 1 ∗ 1 ∗ 48 1*1*48 1148的像素点。 48 = 4 ∗ 4 ∗ 3 48=4*4*3 48=443,原本一个像素点通道数为3,一个Patch有 4 ∗ 4 4*4 44个像素点,所以展平后一个Patch变成一个通道数为48的像素点。所有Patch展平后按原位置拼接则形成 H 4 ∗ W 4 ∗ 48 \frac{H}{4}*\frac{W}{4}*48 4H4W48的特征图。

通过Linear Embedding(例如核为 1 ∗ 1 1*1 11的2D卷积)将通道数从48映射到 C C C(原文中 C = 96 C=96 C=96)。最后通过LayerNorm将所有通道数为 C C C的像素点归一化。

上图为一个Patch上16个像素点的Patch Partition+Linear Embedding过程(图中一个小方格代表一个有3个通道的像素点, c = C 3 c=\frac{C}{3} c=3C)。

事实上,Patch Partition+Linear Embedding就是要将图像尺寸从 H ∗ W ∗ 3 H*W*3 HW3转换为 H 4 ∗ W 4 ∗ C \frac{H}{4}*\frac{W}{4}*C 4H4WCVision Transformer取Patch时采取的策略一致,Swin Transformer并没有分两步完成该操作,而是通过一个卷积核大小为 4 ∗ 4 4*4 44、步长为4、输出通道数为96的2D卷积层进行特征提取,再通过LayerNorm对所有token进行归一化(一个token对应 H 4 ∗ W 4 ∗ C \frac{H}{4}*\frac{W}{4}*C 4H4WC的特征图中的一个像素点)。

2.2 Swin Transformer Block

下图为Vision Transformer(左)和Swin Transformer(右)中Block的结构图:

其中,Swin Transformer中也有DropPath但是没有画出来,并且他们的MLP模块均为如下结构:

可见,两者结构基本一致,主要区别如下:
(1) Vision Transformer的每一个Block都一样,而Swin Transformer中两个不同的Block是一个基本单位,两个Block顺序连接,不会单独出现。
(2) Vision Transformer使用

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Fulin_Gao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值