本周主要学习了视觉大模型的发展脉络,重点理解了 Vision Transformer(ViT)的原理、结构及其与 CNN 的对比。此外,还了解了 CLIP 和 DINO 这两种前沿视觉模型的设计思想。以下是本周的知识总结与个人思考。

一、视觉大模型发展概述

视觉大模型的发展经历了从 CNN 到 Transformer 的演进:

  • CNN:依赖局部感受野与参数共享,难以建模全局依赖。

  • ViT:将图像切分为 Patch,送入 Transformer 编码器,实现全局建模。

  • CLIP:通过对比学习对齐图像与文本,支持零样本分类。

  • DINO:自监督蒸馏学习,无需标注即可学习高质量视觉特征。

二、ViT 的核心设计

1. 图像分块(Patch Embedding)

输入图像 x∈R^(H×W×C),划分为大小为 P×P 的 Patch,每个 Patch 展平为 P^2C 维向量。

示例(ImageNet 标准输入)

  • 图像尺寸:224×224×3

  • Patch 大小:16×16×3

  • 每个 Patch 维度:16×16×3=768

  • Patch 数量:14×14=196

每个 Patch 通过线性映射得到嵌入向量:

z_i = x_i^p E, \quad E \in \mathbb{R}^{(P^2 C) \times D}

其中 D 为嵌入维度(如 ViT-Base 中 D=768)。

2. 添加 Class Token 与位置编码

  • 在 Patch 序列前添加一个可学习的 Class Token,用于汇聚全局信息。最终输入序列长度为 196+1=197。

  • 由于 Transformer 本身无顺序感知,需加入 位置编码。ViT 使用一维可学习位置编码:

z_0 = [x_{\text{class}}; x_1^pE; x_2^pE; \dots; x_N^pE] + E_{\text{pos}}

此外,经典的正弦位置编码公式也可作为备选:

PE(pos, 2i) = \sin\left(\frac{pos}{10000^{2i / d_{\text{model}}}}\right), \quad PE(pos, 2i+1) = \cos\left(\frac{pos}{10000^{2i / d_{\text{model}}}}\right)

3. Transformer 编码器结构

ViT 采用 Pre-LN 结构(先 LayerNorm,再进入子层):

z'_\ell = \text{MSA}(\text{LN}(z_{\ell-1})) + z_{\ell-1}

z_\ell = \text{MLP}(\text{LN}(z'_\ell)) + z'_\ell

最后取出 Class Token 的输出:y = \text{LN}(z_L^0)

其中:

  • MSA:多头自注意力(Multi-Head Self-Attention)

  • LN:LayerNorm

自注意力机制:

\text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

多头注意力:

\text{MultiHead}(Q,K,V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h)W^O

4. MLP 层与 GELU 激活函数

MLP 通常扩展维度为 4D4D 再压缩回 DD:

\text{MLP}(x) = W_2 \cdot \text{GELU}(W_1 x + b_1) + b_2

GELU 激活函数:

\text{GELU}(x) = x \cdot \Phi(x) = x \cdot \frac12 \left[1 + \text{erf}\left(\frac{x}{\sqrt{2}}\right)\right]

三、预训练与微调

模型规模对比

模型 Patch Size Layers Hidden Size D MLP Size Heads Params
ViT-Base 16×16 12 768 3072 12 86M
ViT-Large 16×16 24 1024 4096 16 307M
ViT-Huge 14×14 32 1280 5120 16 632M

微调中的位置编码插值

当微调时使用更高分辨率图像,Patch 数量增加,预训练位置编码长度不匹配。解决方法:

  1. 将一维位置编码还原为二维网格。

  2. 进行双线性插值到新尺寸。

  3. 重新展开为一维位置编码。

四、CLIP 与 DINO 简介

CLIP(多模态对齐)

  • 核心思想:通过对比学习,将图像和文本映射到同一语义空间。

  • 训练目标:最大化匹配图文对的相似度,最小化不匹配对的相似度。

  • 零样本分类:通过文本提示(如 “a photo of a cat”)识别新类别。

DINO(自监督视觉表征)

  • 核心思想:知识蒸馏 + 自监督学习,无需人工标签。

  • 特点:学生网络模仿教师网络的输出,教师网络由学生网络的动量更新得到。

五、ViT 与 CNN 对比

特性 CNN ViT
主要机制 卷积(局部连接) 自注意力(全局建模)
归纳偏置 强(局部性、平移等变性) 弱(需从数据学习)
小数据表现 较好 一般
大数据表现 一般 优秀
可并行性 较高 极高

两者并非相互替代,而是在不同数据规模和任务场景下各有优势。ViT 更适合大规模数据驱动的全局建模场景。

六、个人总结与思考

通过本周学习,我对视觉大模型有了更系统的认识:

  1. 视觉大模型的核心思想:将图像表示学习推向通用化,ViT 通过 Patch 序列将图像问题转化为序列建模问题。

  2. ViT 的关键设计:Patch Embedding、Class Token、位置编码、多头自注意力、Pre-LN 结构。

  3. 训练范式:大规模预训练 + 下游微调,已成为视觉大模型的主流训练方式。

  4. 跨模态对齐:CLIP 实现了图像与文本的统一表示,为多模态大模型奠定基础。

  5. 自监督学习:DINO 减少了对人工标注的依赖,展示了无标签数据的学习潜力。

  6. 与 CNN 的关系:ViT 与 CNN 互补,未来可能是混合架构(如 Swin Transformer)的天下。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐