Swin Transformer:Hierarchical Vision Transformer using Shifted Windows 论文阅读

本文详细介绍了SwinTransformer,一种在计算机视觉中应用的Transformer模型,它通过patch partition、patch merging和层级转换器优化计算效率,特别强调了其在处理大尺度图像和空间信息方面的优势。消融实验显示了相对位置偏置和窗口注意力的重要性。SwinTransformer在各种任务中表现出色,如图像分类、语义分割和目标检测,并能替代ResNet作为主干网络。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该论文是Transformer模型在计算机视觉领域的应用,Swin Transformer的输入与DETR不同,同为Transformer模型在计算机视觉领域的应用,Swin Transformer是直接将image作为输入不需要CNN为主干网络进行特征提取,而且DETR是将image输入到CNN主干网络中进行特征提取,然后将feature map当作输入进行embedding。Swin Transformer提出的层级转换器,为了解决计算复杂度问题,以及多层特征融合问题,其中对patch进行编码和层级转换器共同解决Transformer模型无法将大尺度图像作为输入的问题。


网络结构

在这里插入图片描述
该网络将三通道的图像作为输入,通过patch partition模块将原图像按照规则划分成一个一个不重叠的patch(默认的是按照4x4像素进行划分)。为了保证patch的数量不变,在切分patch的同时,通道数也相应的增加16倍,每个patch的每个通道会被当成token进行embedding。在Stage1中通过一个线性embedding层将每个patch进行编码成一维的vector作为Swin Transformer块的输入。在Stage2中首先通过patch merging进行合并上一层的patch,合并规则是相邻的四个,进而产生多层特征,随着patch尺寸的增大,通道数也随之增加2倍。如此反复进行,并且每个stage输入的特征分辨率与ResNet的相同,所以该结构可以通用在大部分的模型中代替ResNet作为特征提取主干网络。

1.Patch Partition & Patch Merging & 分层特征图

在这里插入图片描述
Patch Partition
上图中白色的块为patch,如果将每个像素点进行编码,会产生数量极其巨大的embedding向量,使得Transformer结构无法训练,为了减少输入,将图像分成4x4分辨率的不重叠的patch,将每个patch进行编码,这样就减少了embedding之后的向量数量,使得Transformer可以将高分辨率图像作为输入。

Patch Merging
从底层划分的patch开始,将每层相邻的4个patch进行特征合并然后生成一个新的patch,作为新的一个特征层。

分层特征
左边的为Swin Transformer构建的分层特征图,右图为ViT模型的特征结构。通过patch merging结构合并下层特征,进而构建了分层特征。

2.Swin Transformer block

在这里插入图片描述
这里的Swin Transformer块不同与传统的Transformer block,首先是对MSA(multi-head-attention)做出了改进,使用了两种改进方法。在Swin Transformer block中分别使用两种改进的attention相互连接,一种是W-MSA(规则的位移窗口), 一种是SW-MSA(循环位移窗口)。然后将原本的前馈神经网络替换成了MLP。

改进与创新

1.Patch Merging

在这里插入图片描述
由上图可见从4x4的像素为一个patch合并到8x8像素的patch,在从8x8像素的patch再合并到16x16像素的patch,通过将不同区域的patch进行合并,进而构建分层的特征,并且使模型获得空间信息。

2.Swin Transformer block

这里的Swin Transformer block与原本的Transformer block主要的不同之处在于MSA,这里的多头注意机制的计算方法与Transformer block中的计算方法不同
Ω(MSA)=4hwC2+2(hw)2C\Omega (MSA)=4hwC^2 + 2(hw)^2CΩ(MSA)=4hwC2+2(hw)2C
Ω(W−MSA)=4hwC2+2M2hwC\Omega (W-MSA)=4hwC^2 + 2M^2hwCΩ(WMSA)=4hwC2+2M2hwC
M为固定的窗口数,通常取7,MSA是一个关于hw的二次方程,而W-MSA是一个关于hw的一次方程,所以计算复杂MSA更好,W-MSA仅仅为线性计算复杂度。

3.两种MSA计算方法

在这里插入图片描述

1)W-MSA
基于规则窗口的self-attention计算方法,Layer 1相当于基于规则的self-attention计算方法,窗口的数量是固定的,通过规则的位移转换,对不重叠的patch进行self-attention计算,进而学习到不同patch之间的空间关联信息。
2)SW-MSA
在这里插入图片描述
基于循环位移的self-attention计算方法。通过从左上角开始的空白地方(空白地方通过padding进行补充)进行循环的窗口计算,这样的计算方法可以使self-attention学习到更多的边界信息。

4.相对位置偏置

Attention(Q,K,V)=SoftMax(QKT/d+B)VAttention(Q, K, V) = SoftMax(QK^T/\sqrt{d} + B)VAttention(Q,K,V)=SoftMax(QKT/d+B)V
首先因为CNN结构的卷积运算是通过滑动窗口的运算,在运算过程中可以学习得到位置偏执这种先验知识,但是Transformer结构初始化的时候并没有这种位置偏置,只有通过大量的数据训练才可以达到CNN一样的效果,为了使模型可以在中小型数据集中就获得很好的性能,通过增加一个可学习的位置偏置bias来在训练中获得相对位置信息。

实验与结果分析

1.消融实验

在这里插入图片描述
上表分别针对了有无循环位移窗口绝对位置编码以及相对位置偏置的比较。从表中的前两行可以看到,增加了循环位移窗口模型,不论是在ImageNet分类数据集上的表现还是在ADE20K语义分割数据集上的表现,又或者使COCO目标检测数据集上的表现,都比没有循环位移窗口的模型性能更好,尤其是COCO和ADE20K中提升更为明显。
上表的下面几行则是位置编码的比较。通过位置编码的比较,可以看出绝对位置编码对Swin Transformer的性能提升不明显,但是相对位置偏置(rel. pos)对模型的性能提升比较明显,尤其是语义分割中的表现提升了2.3%。所以可以说明相对位置偏置和位移窗口都对模型的性能都有不同程度的提升。
在这里插入图片描述
上表是针速度的比较,通过不同的self-attention的窗口计算方法在各阶段的计算时间和不同模型所处理的图片速度。循环位移窗口的各阶段速度与无位移窗口的速度相当,并且每秒处理图片的速度也差距不大,但是循环位移窗口的性能更好,在多种任务中的检测精度更高。

在这里插入图片描述
上表是针对self-attention计算方法来进行比较的,由表可见,位移窗口同样是性能最好的。

2.模型对比实验

在这里插入图片描述
首先是针对backbone网络,分别在ImageNet-1K和ImageNet-22K中预训练模型,与不同的主干网络进行对比,在同等速度的情况下,Swin Transformer模型的精确度是最高的。
在这里插入图片描述
不同框架下作为主干网络的比较,比ResNet50的结果更好。以及将Swin作为模型进行检测的结果同样是最好的结果。
在这里插入图片描述
在分割中的表现同样突出。

3.结论

通过上述实验可见,Swin Transformer既可以作为主干网络代替ResNet50,通用性强。并且没有ViT的那种需要在大数据集上训练才会有很好的效果的缺点,因为相对位置偏置的加入,使得Swin Transformer在中小型数据集就有相当于ResNet或者超过ResNet的成绩。另一方面通过消融实验检验了各模块的有效性。最后Swin Transformer模型的提出使得视觉和自然语言处理两个方面的多模态融合得到进一步的发展。

### Swin Transformer 论文精读:Hierarchical Vision Transformer Using Shifted Windows Swin Transformer 是一种基于视觉的分层 Transformer 模型,其核心创新在于通过 **Shifted Window-based Self-Attention** 实现了线性计算复杂度,同时能够生成多尺度特征表示。这种方法在图像分类、目标检测和语义分割等任务中取得了显著的性能提升 [^2]。 #### 核心架构概述 Swin Transformer 的整体结构分为多个阶段(Stage),每个阶段包含多个 Swin Transformer Block。这些块使用 **窗口化自注意力机制** 和 **移位窗口策略** 来实现高效计算并捕捉长距离依赖关系。 - **分层特征提取** 类似于传统卷积神经网络(如 ResNet),Swin Transformer 采用分层设计来逐步降低空间分辨率并增加通道维度。这种设计允许模型从局部到全局地构建特征表示。 - **窗口划分与移位窗口机制** 在每个 Swin Transformer Block 中,输入特征图被划分为不重叠的窗口,并在这些窗口内执行自注意力计算。为了增强跨窗口的信息交互,在下一个 Block 中对窗口进行移位操作(Shifted Windows)。这种方式既减少了计算量,又保持了模型对全局信息的感知能力 [^1]。 ```python # 窗口划分伪代码示例 def window_partition(x, window_size): B, H, W, C = x.shape # 将图像划分为多个窗口 x = tf.reshape(x, shape=[B, H // window_size, window_size, W // window_size, window_size, C]) windows = tf.transpose(x, perm=[0, 1, 3, 2, 4, 5]) return tf.reshape(windows, shape=[-1, window_size, window_size, C]) # 移位窗口伪代码 def shifted_window_attention(x, window_size, shift_size): B, H, W, C = x.shape # 对特征图进行滚动操作以实现窗口移位 x = tf.roll(x, shift=(-shift_size, -shift_size), axis=(1, 2)) return window_partition(x, window_size) ``` #### 自注意力机制优化 传统的 Vision Transformer(ViT)在整个图像上应用自注意力机制,导致计算复杂度为 $O(n^2)$,其中 $n$ 是图像块的数量。而 Swin Transformer 通过将注意力限制在局部窗口内,将复杂度降低到 $O(n)$,使其适用于高分辨率图像处理 [^4]。 此外,移位窗口机制确保了相邻窗口之间的信息流动,从而避免了局部注意力带来的信息隔离问题。这种设计使得 Swin Transformer 能够在保持计算效率的同时实现全局建模能力。 #### 实验结果与性能优势 Swin Transformer 在多个视觉任务中表现出色: - **ImageNet 分类任务**:Swin-Tiny、Swin-Small、Swin-Base 和 Swin-Large 四种变体均在 ImageNet-1K 上实现了优于其他 Transformer 主干网络的 Top-1 准确率。 - **COCO 目标检测**:在 COCO 数据集上,Swin Transformer 在 Faster R-CNN 框架下达到了 SOTA 性能,mAP 超过之前的最佳方法。 - **ADE20K 语义分割**:在 ADE20K 数据集上,Swin Transformer 作为编码器也取得了领先的 mIoU 指标 [^2]。 #### 消融实验分析 论文还进行了详细的消融研究,验证了以下几个关键组件的有效性: - **窗口大小的影响**:较大的窗口有助于捕捉更广泛的上下文,但会增加计算开销。 - **移位窗口的重要性**:实验证明,移位机制可以显著提升模型性能,尤其是在长距离依赖任务中。 - **不同层级的设计**:通过对比不同层级深度和通道配置,论文展示了如何平衡精度与效率 [^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值