ViT:把图像变成句子
本文基于模型知识整理(生成时未联网核对),ViT 细节建议对照 Dosovitskiy et al. 2021(An Image is Worth 16x16 Words)复核。
一句话定义
ViT(2021)把图像切成 16×16 像素的 patch、线性投影成 token 序列,加位置编码后喂给标准 Transformer Encoder——图像就是句子,patch 就是词;在大规模数据上预训练后,纯 Transformer 在分类等视觉任务上超越最强 CNN。
为什么重要
ViT 证明了 Transformer 是模态无关的序列建模器:文本、图像、音频(频谱块)、蛋白质序列——只要能变成 token 序列,同一架构通吃。这打开了"统一架构统一模型"的大门(多模态大模型的架构前提),也是"大预训练+微调"范式从 NLP 平移到 CV 的转折点。
前置知识
kp-002/003(注意力与多头)、kp-012(预训练范式);CNN 的存在性认知(对比用)。
核心概念
- Patch 化流水线:图像 224×224×3 → 切成 14×14=196 个 16×16 patch → 每个 patch 展平 768 维线性投影为 token → 加位置嵌入(可学习 1D)→ 加 [CLS] token → 标准 Encoder → [CLS] 输出分类。"An Image is Worth 16×16 Words"——论文标题即方法。
- 与 CNN 的结构对比:CNN 局部窗口+平移等变+层次化下采样(先边后形);ViT 全局注意力+数据学到的归纳偏置(底层)——ViT 的归纳偏置更少,靠数据补。
- 数据规模定律:小数据(ImageNet-1k)CNN 更强(内置偏置占优);JFT-300M 级大预训练 ViT 反超——"归纳偏置与数据的交换"(偏置少→需要更多数据学出同等结构);这一结论是"大模型时代数据为王"的视觉版证词。
- 层级变体与检测适配:Swin Transformer(滑窗+层级下采样)把 ViT 改造成 CNN 式金字塔,适配检测/分割的多尺度任务——纯全局注意力的工程修正。
- CLIP 与多模态桥:ViT 图像编码器+文本编码器对比学习对齐——图文对齐空间成为"图像的 prompt 接口"(多模态 LLM 的视觉编码器标配,扩散模型的文本条件源)。
原理与机制
为什么 patch 线性投影就够了:16×16×3=768 维的原始像素向量经一层线性映射即"视觉词嵌入"——patch 内的纹理/边缘结构由后续注意力层学习组合;CNN 的卷积核是"手工指定的第一层局部算子",ViT 把这个算子也交给训练学。自由度从算子设计转移到数据。
为什么注意力适合视觉:注意力天然做"长程关系"——远景与近景的关联("骑手与马"的组合语义)、非局部自相似(纹理重复)不需要逐层扩大感受野;CNN 需要 L 层才覆盖 L·k 距离,注意力一步直达(kp-001 优势的视觉版)。
位置编码为什么仍需要:patch 化后序列同样排列等变——"天空的 patch 在上"必须由位置编码告知;ViT 用可学习 1D 位置嵌入(2D 感知可从学到的嵌入相似性中涌现,但不保证)。
图示
图像 224×224×3
→ 切 16×16 patch ×196
→ 线性投影 768维 + 位置编码 + [CLS]
→ 标准 Transformer Encoder (×L)
→ [CLS] → 分类头
规模: 小数据 CNN优 ; 3亿图 ViT反超 (偏置↔数据交换)
CLIP: ViT图像塔 + 文本塔 对比对齐 → 多模态接口
直观类比
CNN 像"拿放大镜从左到右逐块看画,先看笔触再看整体";ViT 像"把画剪成 196 张小卡片摊在桌上,全部同时互相参照"——每张卡片直接问全桌"谁和我构图相关"。桌越大(数据越多),这种"全局互看"的优势越明显。
实例或案例
- DINO 自监督 ViT:无标签预训练的注意力图自动分割物体——自监督+ViT 的涌现分割能力。
- SAM(分割一切):ViT 图像编码器 + 提示化解码——ViT 基座的分割大模型。
- 多模态 LLM 的视觉塔:LLaVA 用 CLIP-ViT 编码图像、投影进 LLM——ViT 作为"视觉 tokenizer"的当代岗位。
常见误区
- 误区一:"ViT 完全取代 CNN"。小数据/边缘设备/实时场景 CNN(或轻量 ViT 变体)仍有优势;混合架构(CNN stem + ViT)也是常见折衷。
- 误区二:"patch 是卷积的一种"。线性投影无共享权重(每 patch 同一投影矩阵但无空间核滑动)——与卷积的权值共享本质不同。
- 误区三:"ViT 天然理解 2D 结构"。1D 位置编码下 2D 邻近性靠学习涌现;显式 2D 编码/Swin 化是常见增强。
与其他知识点的关系
自测题
- 描述 ViT 的输入流水线(从图像到 token)。
答:切 16×16 patch → 展平线性投影为 token → 加位置嵌入与 [CLS] → Encoder——"图像即句子"。
- "ViT 归纳偏置少、靠数据补"是什么意思?
答:CNN 内置局部性/平移等变先验;ViT 无这些先验、需大数据从零学出同等结构——小数据 CNN 优、大数据 ViT 反超。
- CLIP 的训练目标与多模态意义?
答:图文对的对比学习对齐两塔嵌入空间——给图像一个"文本可查询"的接口(多模态 LLM 的视觉入口)。
延伸阅读
- Dosovitskiy 等, "An Image is Worth 16×16 Words"(ICLR 2021,ViT 原文)。
- Radford 等, "Learning Transferable Visual Models From Natural Language Supervision"(2021,CLIP)。
- Liu 等, "Swin Transformer"(2021,层级化变体)。