人工智能|手算Swin Transformer模型

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: Swin Transformer是一种高效视觉Transformer,通过移位窗口注意力(Shifted Window)替代全局自注意力,结合分层下采样与局部窗口计算,显著降低计算复杂度,同时保持强大建模能力。其核心包括Patch划分、线性嵌入、W-MSA/SW-MSA交替模块及Patch Merging,构成多尺度特征金字塔,已成为目标检测、分割等任务的主流骨干网络。(239字)

 简单的介绍

原始 ViT(图像 Transformer):

        把整张图片切成一个个小块 Patch,直接当成单词 Token,全局注意力缺点:图片太大 →

Token 太多 → 计算爆炸、很慢、效果差。

Swin Transformer 核心解决:

      局部窗口注意力 + 分层下采样 + 移动窗口   Shift Window变成:小窗口自注意力 → 合并窗口

变大 → 再小窗口注意力,也就是金字塔层级视觉 Transformer,也是现在 YOLO、分割、检测几

乎都在用的底座。

                Swin不是一个单词而是Shifted Window,其实就是滑动的意思。

image.gif


Patch Partition

 首先一张图片要经过一个Patch Partition模块。把整个图片进行图片块的分区,假设我们以4个像

素*4个像素作为一个patch,也就是一个块。那么一张图片横着应该是w/4个patch。竖着也可以分

h/4个patch。彩色图片是3个通道的,所以每个patch应该是4*4*3=48的。所以经过Patch Partition

模块的操作后,本质上就是把一张照片转换成一个向量。假设原始图像是224*224的,所以这个向

量最终会变成56*56*48的。

image.gif


Linear Embedding

Linear Embedding=Patch Embedding(48→96线性投影)+Position Embedding(位置编码相加)

Patch Embedding:对图像分块做线性投影(48 维→96 维)

Patch Embedding 是一个可学习的线性全连接层(Linear Projection)

作用:把展平后的48 维原始像素向量 → 映射为模型主干维度 96 维特征 Token

image.gif

Position Embedding 位置编码

Swin Transformer 采用可学习绝对位置编码,并非通过正弦余弦等数学公式固定计算生成。其完整

计算与更新流程如下:

根据 Patch 特征图尺寸 56×56×96

初始化同形状、服从正态分布的随机参数矩阵作为初始位置编码;

位置编码与 Patch Embedding 输出的内容特征维度一致(均为 96 维),满足逐元素相加条件;

训练阶段,位置编码参数会随着网络反向传播、梯度下降自动学习空间位置语义,逐渐学会区分左

上角、中间、右下角等不同空间位置;

推理阶段,训练完成的位置编码参数固定不再更新,直接与对应位置的 Patch 内容特征逐元素相加

融合:


image.gif

图片 224×224×3

Patch Partition:分 4×4 块展平 → 56×56×48

Patch Embedding 线性投影:48→96 → 56×56×96(内容特征)

Position Embedding:初始化 56×56×96 可学习位置参数,训练学习位置信息

两者相加 = Linear Embedding 最终 Token

送入 W-MSA 窗口注意力


Swin Transformer Block

网络结构

一个标准 Swin Block 单元 = 两层 Transformer 层:

第一层:窗口自注意力 W-MSA(只在窗口内注意力)

第二层:移位窗口自注意力 SW-MSA(窗口移动,实现跨窗口交互)

每层后面都带:LayerNorm + MLP 前馈网络 + 残差连接

image.gif

窗口自注意力 W-MSA

        将图像划分成若干 Patch 之后,W-MSA 会在这些 Patch 基础上进一步划分互不重叠的窗

口,仅在每个窗口内部独立进行多头自注意力计算,不再进行全局注意力交互,从而大幅降低模型

计算量。本文设置窗口大小为 7×7,即每个窗口包含 49 个 Patch Token

      但该方式存在明显缺陷:窗口之间完全相互隔绝、信息互不流通,模型全局建模能力较弱。例

如小猫的两只眼睛分别落在两个不同窗口中,自注意力始终无法建立两只眼睛之间的特征关联与交

互。因此 W-MSA 必须搭配SW-MSA 移位窗口自注意力共同使用。

image.gif

输入:56×56×96

含义:高 56 个 Patch × 宽 56 个 Patch × 特征维度 96

W-MSA 内部窗口划分维度变化(设定窗口 7×7)

56×56×96    划窗口     [64,49,96]  

64:一共 64 个窗口

49:每个窗口 49 个 Patch Token

96:每个 Token 维度不变

W-MSA 输入输出维度

W-MSA 窗口自注意力的输入为 Linear Embedding 输出特征:56×56×96

移位窗口自注意力 SW-MSA

只需要将窗口整体移动,就能把原本分属两个窗口的小猫双眼,重新划分到同一个窗口内。那么具

体需要移动多少个 Patch 呢?移位距离由窗口大小超参数 M 决定,取 M//2(向下取整) 即可。我

们窗口大小为 7,因此 7//2 = 3,只需要将窗口向下、向右各移动 3 个 Patch即可。

这时又会出现一个新问题:窗口移位后会移出图片边界怎么办?Swin 采用 循环移位(Cyclic

Shift) 的方式处理:把图片上方、左侧移出边界的区域,循环填补到图片下方、右侧空缺的对应

位置,也就是左上角区域填补到右下角,左侧与顶边区域循环移动到对侧。完成循环移位填补重组

后,再在各个新窗口内部正常执行自注意力计算即可。

image.gif

image.gif

image.gif

对特征图执行窗口移位操作(Shift Window)

移位后重新划分不规则窗口

每个窗口内部依然独立做多头自注意力(和 W-MSA 计算方式一模一样)

加上移位窗口掩码(cyclic shift mask),防止跨无效区域注意力

计算完成后逆移位还原,拼回原图形状

image.gif


Patch Merging

ViT 是一直保持原图尺寸不变,没有下采样;Swin Transformer 用 Patch Merging 做下采样,作

用:把相邻 4 个小 Patch 合并成 1 个大 Patch,尺寸减半、通道翻倍,实现多尺度特征提取。

它就是 Swin 的池化 / 下采样层,比卷积池化更强、更平滑。

我们可以把它类比为 CNN 中的池化层,但二者原理与实现方式完全不同。

我们先展开 Patch Merging 具体逻辑与维度变化,假设前一层输入的 Token 网格尺寸为

H×W×C。Patch Merging 核心操作:将特征图上每相邻 2×2 个 Patch 合并为 1 个新 Token。第一

步:把这 4 个 Patch 的特征在通道维度直接拼接 Concat,特征维度变为原来的 4 倍。对整个

Token 网格执行该操作后,空间宽高尺寸直接减半。

拼接得到的高维特征并不会直接使用,Swin 会在拼接后再接一层线性投影层,对特征维度进行压

缩调整。最终输出 Token 网格尺寸为:空间宽高继续保持减半,特征通道维度变为原来的 2 倍。

到这里可以明显看出 Swin 融入了经典 CNN 的分层思想:网络前向传播过程中,空间分辨率逐渐

降低,通道维度逐渐增大,特征信息密度不断提升,感受野从局部逐步扩散到全局,形成完整的多

尺度特征金字塔结构。

image.gif

image.gif


整体网络结构

随着网络层数不断加深,各个阶段对应的 Patch 感受野在不断变大。初始阶段每个 Patch 对应原

图4×4 像素,经过多次下采样后,后期单个 Patch 可以对应原图32×32 像素。也就是说模型提取

的图像块越来越大、感受野越来越广,以此实现多尺度特征提取。与此同时,特征通道数也在逐层

加倍增长。

模型最终输出特征为7×7×768,经过全局平均池化后压缩为单个 768 维特征向量,再送入全连接

分类层, 分类层权重矩阵维度为768×1000(1000 代表数据集总类别数量),计算得到 1000 维类

别得分向量,经过 Softmax 归一化转换为类别概率,概率最高的类别即为模型最终分类预测结

果。

image.gif

Swin Transformer更像是解码器

    很多人会误以为 Swin Transformer 更像解码器,其实并不是。Swin 虽然使用了掩码多头注意

,但和 Transformer 解码器的掩码完全不同。

在 SW-MSA 移位窗口中,我们通过循环移位把图像不同区域填充到同一个窗口内,如果直接计算

注意力,原本空间不相邻、远距离的区域会产生无意义的注意力交互。因此在注意力分数计算阶

段,我们需要通过循环移位掩码,将这些不属于相邻区域、无意义的灰色部分注意力分数全部遮

挡,赋值为负无穷。屏蔽完成后,再将有效注意力分数送入 Softmax 计算归一化权重,只保留真

实相邻区域的有效注意力交互。

image.gif

参考

【1】深度学习进阶(八)Swin Transformer - 哥布林学者 - 博客园

【2】大白话讲明白 Swin Transformer #SwinTransformer #Transformer #Swin #ai新星计划 #抖音年终知识大赏 - 抖音


目录
相关文章
|
10天前
|
人工智能 自然语言处理 计算机视觉
人工智能|大白话Meshed-Memory Transformer
M2Transformer是一种图像描述生成模型,由三部分构成:骨干编码器(Faster R-CNN)提取区域特征;记忆增强编码器(Transformer)对特征进行语义细化;网格解码器(Transformer)将增强特征转化为自然语言描述。结构清晰、层次分明,兼顾准确性与可解释性。(239字)
163 4
|
10天前
|
人工智能 自然语言处理 数据挖掘
用ChatGPT和Codex搭建个人AI工作流:从一人部门到开源实践
本文探讨AI时代“一人部门”工作法:用ChatGPT拆解任务、构建知识库,用Codex将流程工具化,结合复盘与沉淀,打造可持续的个人AI工作系统(OPC)。非替代团队,而是以工具+流程+知识,提升单人可复用、可迭代的系统性产出能力。
327 7
|
10天前
|
人工智能 自然语言处理 数据挖掘
AI时代的个人知识管理:从知识库、SOP到OPC一人公司
本文探讨AI时代下的个人知识管理新范式——OPC一人公司:它并非法律意义的单人企业,而是以目标判断为核、AI为辅、知识库为基、SOP为纲、复盘为钥的可复用工作系统。强调经验沉淀、流程自动化与持续优化,助力个体实现部门级任务处理能力。
214 4
|
10天前
|
人工智能 机器人 芯片
人工智能|YOLOv8实战
本内容为安全帽检测实战项目,基于YOLOv8模型,涵盖Kaggle数据获取、自定义yaml配置、模型训练(yolo_train.py)与测试(yolo_test.py),并提供服务器(FastAPI+Docker)、边缘(Jetson+TensorRT)及国产嵌入式(RK3588+RKNN)三类部署方案,支持工业场景实时智能识别。(239字)
214 1
|
10天前
|
存储 人工智能 自然语言处理
拒绝“大模型幻觉”:一文彻底搞懂 RAG(检索增强生成)技术全流程
本文深入解析RAG(检索增强生成)技术,直击大模型落地私有知识场景的核心痛点——如何让LLM精准、低成本、高时效地基于企业文档作答。从文本分片、向量化索引,到召回重排、增强生成,系统拆解五大关键步骤,揭示RAG作为“AI外挂”的底层逻辑与工程实践精髓。
拒绝“大模型幻觉”:一文彻底搞懂 RAG(检索增强生成)技术全流程
|
10天前
|
人工智能 数据可视化 测试技术
【教程】阿里云轻量云服务器一键配置OpenClaw
如果你还没有部署自己的 OpenClaw,还可以通过购买腾讯的轻量云服务器,一键秒级部署指南一键秒级部署指南,一键即可在几秒内完成部署。
314 9
|
10天前
|
弹性计算 监控 Java
Maven 并行构建配置:-T 4C 提速 4 倍实战
本文深入讲解了 Maven 并行构建的核心原理和实战技巧,包含 -T 参数详解、模块并行化改造、性能监控与分析等企业级最佳实践。通过真实案例展示了如何将多模块项目的构建时间从 45 分钟缩短到 11 分钟(提升 4.1 倍),提供完整的性能测试脚本和优化检查清单。掌握这些技能,你将能够充分利用多核 CPU 加速 Maven 构建。适合 Java 开发者、架构师、DevOps 工程师阅读。
263 8
|
10天前
|
存储 人工智能 缓存
AI不稳定不是工程Bug,是一场系统性误读——意图共鸣科技行业洞察
过去三年AI狂卷参数与算力,却困于“Demo惊艳、上线翻车”。症结在于误读“AI稳定性”——它非传统软件不宕机,而是大模型在行为分寸、长期记忆、责任可溯、商业可持续四维的结构性缺失。意图共鸣科技正深耕此深水区。
173 6
|
10天前
|
机器学习/深度学习 人工智能 应用服务中间件
别再被误导了!一文讲透 MCP 与 Function Calling 的真实关系
AI圈热议MCP能否取代Function Calling?实则二者定位迥异:Function Calling是大模型的“决策层”,负责选工具、生成参数;MCP是后端与工具间的“执行协议”,统一调用标准。二者分属不同链路环节,非替代关系,而是协同互补的“黄金搭档”。
|
10天前
|
监控 固态存储 Java
Maven 本地仓库优化:SSD+ 目录结构调整最佳实践
本文深入讲解了 Maven 本地仓库优化的完整方案,包含 SSD 迁移、目录结构规划、清理策略、多版本管理等企业级最佳实践。通过真实案例展示了如何将 50GB 仓库优化到 20GB(减少 60%),构建时间从 12 分钟缩短到 2 分钟(提升 6 倍)。提供完整的迁移脚本、清理工具和监控方案,帮助开发者解决磁盘空间不足、I/O 性能瓶颈等问题。适合 Java 开发者、DevOps 工程师阅读。
290 2

热门文章

最新文章