当前位置: 首页 > news >正文

Swin Transformer:分层局部注意力

源码、配套笔记&讲解视频,点击文末名片

  1. Swin Transformer 的背景和动机
    1.1 Transformer 的起点:从 NLP 到视觉
    Transformer 最初是用在 自然语言处理(NLP) 的,比如翻译、写文章。它的核心是 自注意力机制(Self-Attention),能让模型自己决定哪些元素更相关。
  • 在句子里,每个词长度差不多,关系相对“平等”,所以 Transformer 处理文字很顺手。
    但是一搬到图像领域,问题就来了:
  • 像素量太大:一句话几十个词,一张图上百万像素,直接做自注意力计算,复杂度爆炸。
  • 尺度不一致:语言里的词基本差不多大,而图像里的物体大小差别很大(蚂蚁 vs 飞机)。模型必须学会多尺度表征。

1.2 Vision Transformer (ViT) 的第一步
ViT 的做法很直接:把图片切成固定大小的“小方块”(Patch),当作词元输入 Transformer。

  • 好处:完全抛弃卷积,模型很“纯粹”。
  • 问题:
    1. 只在单一尺度上工作(固定 Patch 尺寸),对多尺度目标不友好。
    2. 计算复杂度二次方增长:像素越多,算力消耗飞涨。
    3. 需要巨量数据 才能训练好(比如 JFT-300M),否则容易过拟合。

1.3 PVT(Pyramid Vision Transformer)的改进
PVT 想解决 多尺度 问题,于是引入了类似 CNN 的“金字塔”设计:

  • 逐层下采样,高层特征图更小,能捕捉到大范围语义;低层特征保留细节。
  • 这样模型更适合目标检测、分割这些任务,不再局限于分类。
    但 PVT 依旧有问题:
  • 自注意力计算虽然减少了,但还是比较重,尤其在高分辨率任务里。
  • 窗口没有很好地被“局部化”,计算效率和效果还有优化空间。

1.4 Swin Transformer 的动机与巧思
在 ViT 和 PVT 的基础上,Swin Transformer(Shifted Window Transformer)提出了两个关键想法:

  1. 分层结构(Hierarchical)
  • 像 CNN 一样,Swin 把图像逐步下采样,形成 从细节到整体 的层次化特征。
  • 这样自然能处理不同大小的目标,和 PVT 的目标是一致的,但实现更高效。
  1. 移位窗口(Shifted Window Attention)
  • 不像 ViT 那样全局自注意力,而是在局部“小窗口”内算注意力,计算量大幅下降(复杂度从二次方降到线性)。
  • 为了避免“各自为战”,Swin 会在下一层把窗口稍微挪动一下,让窗口之间的信息交流。
  • 这就像上课时:你先和同桌小组讨论(窗口注意力),下一轮换组讨论(移位窗口),最终全班信息互通。

1.5 背景小结(为什么 Swin 必须出现?)

  • ViT:能学全局关系,但计算量太大,缺乏多尺度,且对小数据集不友好。
  • PVT:引入金字塔设计,适合下游任务,但在效率上还有瓶颈。
  • Swin Transformer:在金字塔思路上更进一步,用“局部窗口 + 移位”的方式,在 效率 和 建模能力 之间找到完美平衡。
    结果就是:Swin 不仅能做分类,还能很自然地扩展到 检测、分割,成为一个真正意义上的 通用视觉主干网络(backbone)。

2、Swin Transformer 的创新点

  1. 分层结构(Hierarchical Representation)
  • 传统 ViT:整张图片被切成固定大小的 Patch,经过一层层 Transformer,得到的特征图大小几乎不变,缺少层次。
  • Swin:像 CNN 一样,逐步下采样,构建 金字塔式的特征图。
    • 低层 → 分辨率高,细节丰富。
    • 高层 → 分辨率低,语义强大。
      👉 好处:天然支持检测、分割等需要多尺度特征的任务。

  1. 窗口注意力(Window-based Self-Attention)
  • 问题:全局注意力计算量随图像大小是 二次方 增长,算不动。
  • Swin 的做法:只在 局部窗口 里算注意力,每个窗口固定大小(如 7×7 Patch)。
    👉 好处:复杂度降低到 线性,高分辨率图像也能处理。

  1. 移位窗口机制(Shifted Windowing)
  • 问题:如果只在局部窗口里算注意力,不同窗口之间就互相“断开联系”。
  • Swin 的巧思:在下一层,把窗口整体“挪一下位置”(比如往右下移动一半)。
    👉 结果:窗口之间可以“交叉讨论”,信息自然流通,又不增加太多计算。
    (就像小组讨论时换桌子,避免信息被困在原小组。)

  1. 通用性与高效性
  • Swin 的设计能轻松接入现有框架,比如 FPN(特征金字塔网络)、U-Net。
  • 由于是分层 + 线性复杂度,它能同时兼顾 速度 和 精度,在分类、检测、分割任务上都能达到 SOTA(当时最优)。

  1. 相对位置编码(Relative Position Bias)
  • ViT 使用 绝对位置编码,不够灵活。
  • Swin 改成 相对位置偏置:学习不同 Patch 相对位置的影响。
    👉 好处:更符合视觉的平移不变性,检测和分割性能更好。

3、核心模型网络结构
[图片]

  1. 从图片到“小方块”
  • 最左边写着 Images (H×W×3),就是我们输入的一张彩色照片。
  • Patch Partition(切小块):把图片像“切西瓜”一样切成很多小方块(比如每块 4×4 像素)。
  • Linear Embedding(小方块编码):给每个小方块贴上“身份证”,把它变成一个向量。
    👉 这一步就把图片变成了“小方块的队伍”,像文字里的一串词。

  1. 四个学习阶段(Stage 1 → Stage 4)
    看左边 (a) 的大框框,里面有四个 Stage,可以想象成四层学习:
  • Stage 1:第一层学习,学生还在“看细节”,图像分辨率比较大。
  • Patch Merging:每次升级到下一层前,都会把“4 个小方块合并成 1 个大方块”。
    • 👉 就像拼乐高,先拼小零件,再拼成大积木。
  • Stage 2 → Stage 4:随着层数加深,分辨率越来越小,但每个方块的信息量越来越大。
    • 👉 就像读书时:小学生记细节(字词),大学生总结大意(段落、文章)。

  1. Swin Transformer Block(右边的图 b)
    右边的 (b) 展示了 Swin Transformer Block 的内部“学习流程”。你可以把它理解成“同学讨论问题”的场景。
    第一个 Block(W-MSA)
  • LN(Layer Norm):先让大家状态归一(像是先安静下来,准备讨论)。
  • W-MSA(Window Attention):同学们分小组讨论,每组只和附近的人交流(局部窗口)。
  • MLP(全连接层):讨论结束后,每个人整理自己的想法。
  • 残差连接:把原来的想法和新想法结合(避免“推翻重来”)。
    👉 就像同桌之间先小范围讨论。
    第二个 Block(SW-MSA)
  • 一开始一样 LN。
  • SW-MSA(Shifted Window Attention):这次换个座位!把小组“整体挪一挪”,让不同小组的同学交流。
  • 再做一次 MLP 和残差。
    👉 就像换组讨论,保证大家不是“各玩各的”,而是能全班互通信息。

  1. 整体理解
  • 左边 (a):展示了“分层学习”的过程(小块 → 大块 → 金字塔)。
  • 右边 (b):展示了“窗口注意力 + 移位窗口”的讨论方式。
    一句话总结:
    👉 Swin Transformer 就像一群学生(Patch),先分组讨论(窗口注意力),然后换组交流(移位窗口),再逐级总结(分层结构)。这样既能看细节,又能看全局,还能高效完成大任务。

4、 Swin Transformer 的重大缺点

  1. 只能先看局部,再慢慢拼全局 → 不如一次性看全图
    Swin 通过 窗口注意力(W-MSA) 来降低计算量,但这意味着它的注意力范围一开始是局限在小窗口里的。
    虽然有 移位窗口(SW-MSA) 来打通窗口之间的信息,但全局交互是“间接的”,并不是像 ViT 那样直接全局建模。
    👉 这导致 Swin 对一些需要 强全局依赖 的任务(比如图像里非常远的区域之间的关系)可能不如全局 Transformer。
    想象一下:
  • ViT 是“全班开大会”,每个人都能和全班所有人说话(直接全局交流)。
  • Swin 是“小组讨论”,只允许和同桌聊一聊,再换组,再慢慢传递到全班。
    👉 优点是效率高,不乱,但缺点就是 信息传递绕了一圈,不像 ViT 那样一步到位。
  1. 窗口大小固定,灵活性不足
  • Swin 的小组大小(窗口,比如 7×7)是提前规定好的。
  • 但图片里的物体有的很小(蚂蚁 🐜),有的很大(飞机 ✈️)。
  • 小组太小 → 看不到大物体全貌。
  • 小组太大 → 小物体容易被忽略。
    👉 就像课堂分组,每组固定 7 个人,但问题是:有些任务适合 2 人小组,有些任务适合 20 人大组,Swin 没办法灵活调整。
  1. 遇到超大图还是很吃力
  • 虽然 Swin 已经比 ViT 省了很多力气,但如果你给它一张 8K 高清大图,它还是会“累到爆显存”。
  • 就像小组讨论:班级人太多(图像分辨率太高),小组再怎么分配,也会有人抱怨“太吵、记不住”。
    👉 所以在特别大的任务上,Swin 依然有性能瓶颈。

5、基于 Swin Transformer 的改进模型


  1. CoAtNet(Google)——CNN + Transformer 的“混血儿”
    🔹 CoAtNet 的思路:
    👉 CNN overs Attention transformer = CoAtNet
  • 前几层:用 卷积(CNN) → 学习图像的局部细节(边缘、纹理等)。
  • 后几层:用 注意力(Transformer) → 学习全局依赖(大范围关系)。
  • 整体是一个 “先 CNN,后 Transformer” 的流水线。
    🔹 可以类比成:
  • 小学生(低层)先背字帖(卷积,强归纳偏置,细节清晰)。
  • 高年级学生(高层)再学文章结构(注意力,全局建模)。
  • 这样结合起来,比 Swin 单独用注意力更稳健,也比纯 CNN 更灵活。
http://www.dtcms.com/a/501305.html

相关文章:

  • 湛江网站建设与网页天气预报网站开发
  • 萧山建设局网站容桂营销网站建设
  • 安徽做公司网站哪家好厦门网站建设人才
  • 定制网站建设公司哪家便宜如何仿网站模板
  • 安徽安搜做的网站怎么样微电影网站模板
  • 单页网站的制作用mvc做网站的缺点
  • 苏州国内网站建设公司哪个网站做简历
  • PHP网站开发程序员招聘韩国优秀网站欣赏
  • 海南网站seo四川外国语大学网站建设系
  • 中国网站排行榜前100名做调查问卷网挣钱的网站
  • 能制作网站的公司联系方式番禺做网站费用
  • 如何让百度收录网站免费网站建设模板下载
  • 百科网站模板网站实名制注册怎么做
  • 重庆网站设计定制seo百度刷排名
  • 做网站书苏州优化外包
  • 刷单网站建设江苏建设人才网查询
  • 可信网站友链怎么做门户网站建设信息工作讲话
  • 代理注册公司协议seo关键词优化软件
  • 哈尔滨 做网站公司有哪些南宁百度seo优化
  • 住房和城乡建设部注册中心网站纯静态网站seo
  • 网站模板二次开发沈阳网站建设推广
  • 免费网站制作平台推荐免费源码资源源码站入口
  • 影视公司网站模板百度推广退款投诉
  • 济南市做网站的公司汕头投资建设总公司网站
  • 嘉兴网站建设网址河源东莞网站建设
  • 企业网站建设费做a视频在线观看网站
  • 制作网页网站搭建服务器教程
  • 抚顺地区网站建设网站建费用
  • 主机搭建网站教程移动微网站建设
  • 成都网站建设加推广公司东阿网站建设产品