中国海洋大学25秋《软件工程原理与实践》 实验5:ViT & Swin Transformer

| -------------------- | ------------------------------------------------------------ |
| 本实验属于哪门课程? | 中国海洋大学25秋《软件工程原理与实践》 |
| 实验名称? | 实验5:ViT & Swin Transformer |
| 博客链接: | 本链接

一、实验内容

1.第⼀部分:视频学习

1 ViT 学习总结与思考
🌟 核心思想与结构

Vision Transformer(ViT)首次在视觉任务中完全替代卷积,依靠纯 Transformer 结构实现图像识别。主要流程包括:

  1. Patch 分割与嵌入:将输入图像拆分为固定大小的 patch(如 16×16),展平后线性映射至 d 维,形成 token。
  2. 位置编码与 [CLS] Token:加入可学习的 [CLS] token 和位置编码,保留空间位置信息。
  3. Encoder 堆叠结构:由多层 Multi-Head Self-Attention + MLP (FFN) 组成,并配合残差连接与 LayerNorm。
  4. 分类输出:通过 [CLS] token 的输出进行分类。
思考
  • 全局建模能力强:ViT 的自注意力可在图像任意位置间建立联系,捕获远程依赖。
  • 计算量问题明显:注意力计算复杂度为 O(N²),对高分辨率图像极不友好。
  • 数据依赖严重:ViT 缺乏 CNN 的空间归纳偏置,需要大量数据预训练(如 JFT-300M)。
  • 设计取舍:Patch 大小影响精度与效率——小 Patch 细节丰富但算力高,大 Patch 反之。
总结

ViT 的提出是视觉界的一次范式革命。它让我们认识到:卷积并非视觉建模的唯一解。然而,它也暴露出 Transformer 的瓶颈——缺乏归纳偏置、计算昂贵、数据需求大。后续的工作(如 Swin、PVT)正是对这些问题的系统性修正。

2 Swin Transformer 学习总结与思考
🌟 核心创新

Swin Transformer 通过“局部注意力 + 层次化结构”实现了 Transformer 在视觉领域的真正落地。

  1. 窗口多头自注意力(W-MSA):注意力只在局部窗口内计算,将复杂度从 O(N²) 降为近似 O(N)。
  2. 移位窗口(SW-MSA):在相邻层中平移窗口位置,使不同窗口之间能交流信息。
  3. 层次化特征金字塔:通过 Patch Merging 逐层降采样,形成多尺度表示,方便下游检测与分割。
  4. 统一 Backbone:既能替代 ResNet,用于分类、检测、分割等任务。
思考
  • “先局部,后整体”:这是 Swin 的核心哲学。先局部聚焦特征,再通过移位扩大感受野,兼顾效率与全局性。
  • 归纳偏置的回归:Swin 在纯 Transformer 框架中引入了类似 CNN 的层次化结构,提升了模型稳定性。
  • 通用性:Swin 被证明能在视觉多任务中统一架构,成为现代视觉 Transformer 的主流范式。
总结

Swin 的设计体现了结构上的智慧:它以极小的代价让 Transformer 真正适应视觉任务,也为之后的 ConvNeXt、InternImage 等架构提供了基础蓝本。

3 视觉 Transformer 综述与趋势
🌟发展脉络

系统回顾了视觉 Transformer 的发展历程,可归纳为三大阶段:

阶段代表模型特点
I. 全局注意力阶段ViT纯 Transformer,强全局建模但昂贵
II. 局部化/层次化阶段Swin, PVT, CvT引入局部窗口与金字塔结构
III. 高效与多模态阶段Linear-Attn, DeiT, CLIP轻量化、蒸馏与跨模态融合
总结
  • 高效注意力:研究重心转向线性/稀疏/分组注意力以降低计算。
  • Token 自适应:通过动态 Token 选择与压缩减少计算冗余。
  • 多模态融合:视觉-语言、视频、3D 等任务均在 Transformer 框架下统一。
  • 轻量化与边端落地:新结构(如 MobileViT、EfficientFormer)探索在移动端的可部署性。
思考

视觉 Transformer 并非彻底抛弃 CNN,而是在逐步吸收 CNN 的结构智慧。**归纳偏置不是落后,而是经验的升华。**未来趋势是融合:CNN 的局部建模 + Transformer 的全局表达 + 图模型的关系建模。

2.第⼆部分:问题总结

思考下⾯的问题:

1、在ViT中要降低 Attention的计算量,有哪些方法?(提示:Swin的 Window attention,PVT的attention)

  1. 局部化注意力:将全局注意力限制在局部窗口(Swin)。
  2. 金字塔结构:逐层降采样,减少 token 数量(PVT)。
  3. 线性注意力:使用核化或低秩近似,使复杂度线性增长。
  4. Token Pooling / Pruning:动态选取重要 token,减少无效计算。
  5. 稀疏/混合注意力:仅在关键 token 间保留全局连接。

2、Swin体现了一种什么思路?对后来工作有哪些启发?(提示:先局部再整体

  • 核心思路:先局部建模,再整体整合。

    • 局部窗口 → 高效建模
    • 移位窗口 → 跨窗口信息交互
    • 分层金字塔 → 多尺度语义整合
    • 统一 Backbone → 通用视觉框架
  • Swin 的启发在于:Transformer 不必全局关注一切,局部化也能通向全局理解。这成为后续设计(如 MViT、CSWin、ConvNeXt)的通用思路。

3、有些网络将CNN和Transformer结合,为什么一般把 CNN block放在面前,Transformer block放在后面?

  • 因为 CNN 负责局部低层特征提取与降采样,Transformer 负责高层全局建模与语义整合。两者在结构层面是从局部到全局的自然衔接,在工程上也能实现更高的效率与稳定性。它们的顺序体现了视觉特征从“像素 → 图案 → 语义”的自然递进。

  • 同时从以下方面考虑,把 CNN block放在面前,Transformer block放在后面也会更好。

    (1)层次结构上的互补

    • CNN 前置可以快速提取边缘、纹理、颜色梯度等底层特征,形成稳定的空间表征;
    • Transformer 后置通过自注意力机制在高维语义空间建立全局依赖,进行语义整合与模式识别。
      这符合人类视觉处理的层级特征分布:先局部感知,再整体认知。

    (2)计算效率的考量

    • Transformer 的自注意力复杂度为 O(N²),而 CNN 的卷积为 O(N)。
    • 若直接在高分辨率输入上使用 Transformer,会导致巨大的计算与显存开销。
    • 因此,先由 CNN 进行空间降采样与通道扩展,再输入 Transformer,可显著提升效率。

    (3)训练稳定性与归纳偏置

    • CNN 天然具有平移不变性与局部平滑性,这是一种强归纳偏置。
    • Transformer 则依赖大规模数据学习这种偏置。
    • 将 CNN 放前面能帮助模型在有限数据下快速收敛,减少训练不稳定。

    (4)迁移性与模块化优势

    • 前端 CNN 的底层特征可在不同任务间迁移复用(例如从分类迁移到检测)。
    • 后端 Transformer 作为高层语义建模模块,更灵活地适配不同任务需求。

4、阅读并了解Restormer,思考:Transformer的基本结构为 attention+ FFN,这个工作分别做了哪些改进?

  • 结论:
    Restormer 通过在 AttentionFFN 中同时引入 卷积的局部归纳偏置动态门控机制,在保证 Transformer 全局建模优势的前提下,实现了计算高效、结构轻量、细节恢复能力强的图像复原网络。

  • Attention:MDTA(Multi-Dconv Head Transposed Attention)

    改进点传统 TransformerRestormer 的做法作用与效果
    注意力维度空间维度计算自注意力(复杂度 ∝ HW²)通道维度上计算注意力(Transposed Attention)将复杂度降为线性,适应高分辨率图像
    局部上下文融合无局部卷积结构,仅线性映射生成 Q/K/V先做 1×1 卷积 + 3×3 depth-wise 卷积 再生成 Q/K/V融合局部空间特征与全局依赖
    可学习缩放参数固定的 softmax 温度每个注意力头引入可学习参数 α稳定训练,控制注意力分布强度
    整体特征仅捕捉长程依赖,忽视局部细节同时建模局部与全局特征提升复原任务中的纹理细节表现

    总结:
    MDTA 通通道注意力 + 卷积局部增强 + 可学习缩放三重机制,让 Transformer 在不分块、不降分辨率的前提下获得高效全局建模能力。

  • FFN:GDFN(Gated-Dconv Feed-Forward Network)

    改进点传统 TransformerRestormer 的做法作用与效果
    结构形式单纯两层线性层(MLP)增加门控机制(Gating):两分支逐元素相乘控制特征流动,抑制冗余特征
    局部信息建模点操作(逐像素),无邻域感知加入 depth-wise 卷积融合局部上下文信息
    扩张比例通道扩张通常为 4×调整为 2× 或 3×,以减小参数量在保持性能的同时降低计算成本
    激活函数ReLU 或 GELU使用 GELU 激活更平滑的梯度与性能提升

    总结:
    GDFN 让 FFN 不再是纯线性通道变换,而具备了门控选择性局部卷积感知能力,增强了特征表示的灵活性与空间敏感度。

二、问题总结与体会

这次实验让我真正走近了那个大名鼎鼎的 Transformer。在学习 ViT 的过程中,我感受到一种非常纯粹的思路:把图像分成 patch,当作 token 送入 Transformer,让模型自己去学习全局依赖。这种设计看起来优雅而彻底,但也让我看到了它的代价——巨大的计算复杂度、对数据量的强依赖、以及缺乏局部归纳偏置带来的训练不稳定。Swin Transformer 给了我另一种启发。它没有完全抛弃 ViT 的思想,而是通过窗口注意力和金字塔结构,让模型从局部逐步扩展到全局。 这种先局部、再整体的设计思路让我觉得非常聪明。它不再执着于一次性看全图,而是让模型在可控的计算量下,逐层积累全局信息。Restormer 则让我看到了 Transformer 的另一种成熟。它没有推翻原有框架,而是在 Attention 和 FFN 中做了精细的调整: 用通道注意力(MDTA)替代空间注意力,让复杂度降为线性;在 FFN 中加入门控和深度卷积(GDFN),让网络既有全局感知力,也能捕捉局部细节。这些改变并不夸张,却十分有效。

总的来说,这次实验让我重新认识了 Transformer。Transformer 的强大建立在不断的改进之上,从 ViT 到 Swin,再到 Restormer,每一次优化都在修补它的短板。这其实也体现了计算机的迭代思想,最重要的不是一开始有多惊艳,而是能不断修正、不断进化。希望我也能不断进步,不断优化,越学越好。

Swin TransformerSwin)和ViT(Vision Transformer)都是近期提出的用于图像处理的模型架构。它们都是基于Transformer架构并在计算机视觉任务中取得了很好的效果。下面是它们之间的一些对比: 1. 模型结构: - Swin TransformerSwin Transformer通过将图像分割成小的图块,并在图块上应用Transformer结构来处理图像。它引入了一个层次化的Transformer结构,其中包含了多个层级的Transformer块,从而在处理图像时能够捕捉到全局和局部的信息。 - ViTViT直接将输入图像切分为一系列的图块,并将每个图块作为输入序列传递给TransformerViT通过使用预训练的Transformer模型,将其在自然语言处理领域上训练的能力迁移到了计算机视觉任务中。 2. 训练数据: - Swin TransformerSwin Transformer通常使用大规模的图像数据集进行无监督或有监督的训练,例如ImageNet。 - ViTViT在训练时使用了大量的图像数据集,但在预训练阶段没有使用任何标签信息,只是通过自监督学习来学习图像特征。 3. 图像分块策略: - Swin TransformerSwin Transformer采用了分级的图像分块策略,从而允许模型在不同层级上分别捕捉到全局和局部的特征。这种分块策略使得Swing Transformer能够处理较大的图像。 - ViTViT将图像均匀地分成固定大小的图块,并将每个图块作为序列输入到Transformer中。这种分块策略可能导致较大的图像在输入阶段受限于序列长度。 4. 性能: - Swin TransformerSwin Transformer在许多计算机视觉任务上取得了优秀的性能和效果,特别是在目标检测和图像分割等任务上。 - ViTViT在图像分类任务上表现出色,并且在一些基准数据集上超过了传统的卷积神经网络。 总体而言,Swin TransformerViT都是非常有潜力的模型架构,对于特定的计算机视觉任务可能有不同的适用性。选择哪个模型取决于具体问题的需求和数据集的特点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值