【论文精读】Swin Transformer

本文针对ViT不适合视觉应用、计算复杂度过高的问题,提出Swin Transformer。它基于滑动窗口机制,有层级设计,能节省计算量并注意全局特征。文中介绍其框架、自注意力机制等,还通过多组实验对比,验证了Swin Transformer在图像分类、目标检测和语义分割等任务上的有效性。

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

摘要

       ViT的缺点:

  • Transformer在语言处理中的基本元素是word token,其特点是语义信息比较密集。而ViT中token的尺度(scale)是固定的,且视觉token携带的语义信息比语言文字序列差,故认为不适合视觉应用
  • 图像分辨率高,像素点多,如果采用ViT模型,自注意力的计算量会与像素的平方成正比,计算复杂度过高是导致ViT速度慢的主要原因

       故本文做出改进:

  • 基于滑动窗口机制,具有层级设计(下采样层)的Swin Transformer。滑窗操作包括对token不重叠的local window,和对token重叠的cross-windos
  • 将注意力计算限制在一个小窗口中,一方面能引入CNN卷积操作的局部性,另一方面能大幅度节省计算量,它只和窗口数量成线性关系
  • 通过下采样的层级设计,能够逐渐增大感受野,从而使得注意力机制也能够注意到全局的特征

框架

image
       给定图像 x x x,首先通过Patch拆分(Patch Partition)模块将输入的 H × W × 3 H\times W \times3 H×W×3的RGB图像拆分为非重叠等尺寸的 N × ( P 2 × 3 ) N\times(P^2\times3) N×(P2×3)的patch。每个 P 2 × 3 P^2\times3 P2×3的patch都被视为一个patch token,共拆分出 N N N个(即Transformer的有效输入序列长度)。

       具体地,令 P 2 = 4 × 4 P^2=4 \times 4 P2=4×4且通道数 C = 3 C=3 C=3,则各patch展平后的特征维度为 P × P × C = 4 × 4 × 3 = 48 P \times P \times C = 4 \times 4 \times 3 = 48 P×P×C=4×4×3=48,共有 N = H 4 × W 4 = H W 16 N = \frac H 4 \times \frac W 4 = \frac {HW} {16} N=4H×4W=16HW个patch tokens。换言之,每张 H × W × 3 H\times W \times3 H×W×3的图片被处理为了 H 4 × W 4 \frac H 4 \times \frac W 4 4H×4W个图片patches,每个patch被展平为48维的token向量(类似ViT的Flattened Patches),整体上是一个展平(flatten)的 N × ( P 2 × 3 ) = ( H 4 × W 4 ) × 48 N \times (P^2 \times 3) = (\frac H 4 \times \frac W 4) \times 48 N×(P2×3)=(4H×4W)×48的patch序列。

       线性嵌入层(Linear Embedding)(即全连接层)会将此时维度为 ( H 4 × W 4 ) × 48 (\frac H 4 \times \frac W 4) \times 48 (4H×4W)×48的张量投影到任意维度 C C C,得到维度为 ( H 4 × W 4 ) × C (\frac H 4 \times \frac W 4) \times C (4H×4W)×C的Linear Embedding。

       随后,这些经过Linear Embedding的patch tokens被馈入若干具有改进自注意力的Swin Transformer blocks。首个Swin Transformer block保持输入输出tokens数恒为 H 4 × W 4 × C \frac H 4 \times \frac W 4 \times C 4H×4W×C不变,且与线性嵌入层共同被指定为Stage 1(如图3的第一个虚线框所示)。

       整个模型采取层次化的设计,一共包含4个Stage,每个stage都会缩小输入特征图的分辨率,逐层扩大感受野。随着网络的加深,tokens数逐渐通过Patch合并层(Patch Meraging)被减少。首个Patch合并层拼接了每组 2 × 2 2 \times 2 2×2相邻patch,则patch token数变为原来的 1 4 \frac 1 4 41,即 H 8 × W 8 \frac H 8 \times \frac W 8

### Swin Transformer 学术论文 Swin Transformer 是一种基于窗口的分层视觉变换器架构,在计算机视觉任务上表现出色[^1]。为了满足特定需求,研究者们引入了多种改进方法来优化训练过程并提升性能。 #### 论文推荐 一篇重要的学术论文是《Swin Transformer: Hierarchical Vision Transformer using Shifted Windows》。该文章提出了通过移位窗口机制实现局部性和全局性的有效建模,从而提高了模型效率和准确性。此设计使得Swin Transformer能够在保持竞争力的同时减少计算成本。 另一篇值得关注的文章是《AutoFormer: Searching Transformers for Visual Recognition》,其中探讨了自动化搜索技术应用于构建高效的Transformer结构的方法论。虽然重点不完全放在Swin Transformer上,但对于理解如何进一步优化这类模型具有重要价值。 对于希望深入了解Swin Transformer及其应用的研究人员来说,《Masked Autoencoders Are Scalable Vision Learners》也是一份有价值的参考资料。尽管主要讨论的是掩码自编码器作为可扩展的学习工具的作用,但文中提到的技术进步同样适用于增强像Swin Transformer这样的先进框架的表现力。 ```python import torch from swin_transformer import SwinTransformerModel # 假设这是导入预训练好的Swin Transformer库的方式 model = SwinTransformerModel(pretrained=True) def load_swin_paper(): papers = [ "Liu Z, Mao H, Wu C, et al. Swin Transformer: Hierarchical Vision Transformer Using Shifted Windows[J]. arXiv preprint arXiv:2103.14030, 2021.", "Touvron H, Cord M, Douze M, et al. Focal Self-attention for Local-Global Interactions in Vision Transformers[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022: 7986-7995." ] return papers papers_list = load_swin_paper() for index, paper_info in enumerate(papers_list): print(f"{index + 1}. {paper_info}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值