3.5 现代视觉架构:ViT 与混合设计
3.4 节的主线是「如何把卷积堆得更深」。这一节要问一个更激进的问题:卷积这套归纳偏置,是不是必要的? 如果数据足够多,能否干脆让模型自己从零学出「空间该怎么看」——用与第 2 讲 Transformer 相同的机制?
Vision Transformer(ViT)给出了肯定的回答,但它的答案带着两个重要的附加条件:数据的规模与计算量随分辨率的增长方式。理解这两个条件,比记住「ViT 更强」重要得多——它决定了你在一个具体项目上该选卷积还是注意力。
3.5.1 从卷积到注意力:动机与代价
设输入图像 ,patch 边长 。把图像切成
个不重叠的方块,每个 patch 展平成 维向量,再经一个线性投影(等价于 、步幅 的卷积)映射到 维:
这 个 维向量构成token 序列,此后完全沿用第 2 讲的 Transformer 编码器。
第 2 讲的 Transformer 处理的是序列。图像要变成序列,最直接的做法是把每个像素当一个 token: 个 token。这个数字有两个问题:注意力的计算量按 增长( 量级,不可接受),而且单个像素几乎不携带语义。
patchify 的取舍是:用 个像素换 1 个 token。 时 ——序列长度从五万降到不到两百,注意力完全可行;代价是每个 token 内部的空间结构被抹平(patch 内的 256 个像素被当成一个无序向量投影),而且分辨率越高 token 越多、计算量增长越快(3.5.1 的复杂度分析 见下)。
换句话说:ViT 并没有「抛弃」局部性——它只是把局部性从「每一层都硬编码」降级为「patch 内部的隐式局部性 + 线性投影」。 这才是「卷积的归纳偏置被削弱」的准确含义。
设 token 数 、隐藏维 。一层多头自注意力(忽略头数,按总量计)的主要计算量为
其中注意力矩阵的显式内存为 (每个头一份,层内峰值),随 增长。
逐项计算 MACs(1 MAC = 1 次乘加)。
QKV 投影:三个 矩阵各乘一次 权重矩阵,每次 Nd² 次 MAC,合计 。
注意力矩阵 : 得到 矩阵,每个元素是一次长度为 的内积,共 N²d 次 MAC。
加权求和:,同样 N²d 次 MAC。
输出投影:Nd²。
相加即得 。内存:、softmax 输出(以及反向传播时保存的这些中间量)都是 的量级,这是 ViT 提升分辨率时显存先爆的原因——也是 FlashAttention(3.5.4 的延伸阅读)等 IO 感知算子要解决的问题:不物化 矩阵,而在片上分块计算。
∎以 (ViT-Base 的宽度)为例,计算 、、、 时「线性项 (这里把 MLP 也算上则为 )」与「二次项 」的比例,并求出两者相等的临界 。
取含 MLP 的线性项 (QKV + 投影 Nd² + MLP 8Nd²)与二次项 对比(数值见下):
| 来源 | 线性项 | 二次项 | 二次项占比 | |
|---|---|---|---|---|
| 197 | ,patch 16 | G | G | |
| 576 | ,patch 16 | G | G | |
| 1024 | ,patch 16 | G | G | |
| 4096 | ,patch 16 | G | G |
临界点:令 得
这个结果的工程含义容易被误读,必须说清楚:
- 在常规分辨率下(–),注意力矩阵不是计算瓶颈——二次项只占几个到十几个百分点。ViT 的算力主要花在线性投影与 MLP上(这与 3.5.2 的逐项拆解一致:MLP 占单层计算的 )。
- 但二次项的显存占用是 ,它在内存上比在算力上更早成为限制。 时一个注意力矩阵(单头、fp32)就是 MB,多头与反向传播的中间量叠起来就要几十 MB 的量级、随 batch 线性放大。
- 分辨率一提升, 按平方增长: 使 从 涨到 ( 倍),而二次项的占比也随之上一个台阶。这就是「ViT 很难用高分辨率直接训练」的算术原因——也是后来所有高效注意力工作(Swin、窗口注意力、FlashAttention、线性注意力)的动机来源。
3.5.2 ViT 的结构:cls token 与位置嵌入
位置嵌入(position embedding):由于自注意力对 token 顺序是置换等变的(打乱 token 顺序,输出只是同样打乱),必须显式注入位置信息。ViT 在一维投影后的序列上加一个可学习的向量表:
cls token(分类 token):在序列最前面拼接一个可学习的向量 ,它不对应任何 patch。经过 层 Transformer 后,只取 送入分类头:
位置嵌入解决的是「注意力没有顺序概念」。注意一个细节:ViT 用的是可学习的位置嵌入(不是固定正弦编码),这意味着位置信息是从数据里学出来的——因此当输入分辨率改变( 变化)时,位置表的大小不匹配,需要插值等处理,这是一处常见的工程坑。
cls token 解决的是「怎么从一堆 token 得到一张图的一个标签」。它像一个可学习的汇总槽:在每一层里,它通过注意力从所有 patch 读取信息,最后自己携带了整张图的表示。它的优势是不必事先决定「如何池化」(平均?最大?加权?)——让模型自己学。后续工作也常用全局平均池化替代 cls token,效果相近,说明真正重要的不是这个 token 本身,而是「有一个对所有 token 做聚合的步骤」。
另外两个必须配齐的零件:① Pre-LN——每层写成 ,这与残差块的 pre-activation 是同一个设计动作(3.4.5);② GELU + MLP 扩张比 4——Transformer 的标准配方。
ViT-Base 的配置是 层、、 个注意力头、patch 、输入 、类别数 。求:逐项参数量、总参数量、逐项 MACs 与总 FLOPs。
先算 token 数:,加上 cls token 共 。
参数量
| 部件 | 计算 | 参数量 |
|---|---|---|
| patch 嵌入 | 16·16·3·768+768 | |
| 位置嵌入 | 197×768 | |
| 每层:QKV 投影 | 3×768² | |
| 每层:输出投影 | 768² | |
| 每层:MLP(d→4d→d) | 2×768×3072 | |
| 每层:两个 LayerNorm | 2×2×768 | |
| 每层小计 | — | |
| 12 层合计 | 12×7,080,960 | |
| 分类头 | 768×1000+1000 | |
| 总计 | — | 86,482,408(约 86.5 M) |
与论文报告的 ViT-B 86M 一致。参数分布的关键事实:MLP 占每层参数的 (M / M),12 层共约 M;整个模型里「注意力」相关参数(QKV + 输出投影)只有 M。ViT 里大部分参数在 MLP,不在注意力——这是阅读一切 Transformer 计算分析时必须先建立的量级感。
计算量(MACs)
| 部件 | 计算 | MACs |
|---|---|---|
| QKV 投影 | 3Nd² = 3×197×768² | 348.6 M |
| N²d | 29.8 M | |
| 注意力加权 | N²d | 29.8 M |
| 输出投影 | Nd² | 116.2 M |
| MLP | 8Nd² | 929.6 M |
| 每层合计 | — | 1,454 M |
| 12 层 | — | 17,447 M |
| patch 嵌入 | 196×16·16·3·768 | 115.6 M |
| 总计 | — | 17,563 M ≈ 17.6 GMACs |
即约 GFLOPs(按 1 MAC = 2 FLOPs)。与 ResNet-50 的约 GMACs 对比:ViT-B/16 的计算量是它的约 倍,而参数是它的约 倍。
这一组数字给出的判据:ViT 在同等「参数量」标签下,计算量显著高于卷积网络,而且其中 花在 MLP 上。所以「ViT 与 ResNet 参数量相近就是同量级模型」是错误印象——必须同时比 FLOPs(3.4.6 的对照表给出了两者的对比)。
∎| 模型 | 层数 | 隐藏维 | 头数 | patch | 参数量 | ImageNet-1k | ImageNet-21k | JFT-300M |
|---|---|---|---|---|---|---|---|---|
| ViT-Base | 12 | 768 | 12 | 16 | 86M | 77.9 | 85.3 | 86.8(需核实) |
| ViT-Large | 24 | 1024 | 16 | 16 | 307M | 76.5(需核实) | — | 87.76 |
| ViT-Huge | 32 | 1280 | 16 | 14 | 632M | — | — | 88.55 |
(表中 top-1 准确率为原论文报告的数值;标「需核实」的两项来自二手汇总,正式引用前请以原论文 ViT 的对照表为准。)
这张表的读法:ViT-Large 在只有 ImageNet-1k 时比 ViT-Base 更差(更大的模型反而更糟),而在 JFT-300M 上才展现出规模的收益。原文的表述是「大规模训练胜过归纳偏置」(原文措辞需核实),其含义可以这样理解:注意力架构用「更少的先验」换「更大的假设空间」,因此它需要更多数据才能把这个空间填满。这与 3.1 节的归纳偏置框架完全一致——少先验 = 需要更多样本。
3.5.3 DeiT:把 ViT 拉回单机可训
ViT 的原始配置需要 JFT-300M 级别的私有数据,普通团队无法复现。DeiT(Data-efficient Image Transformers)问的问题是:只用 ImageNet-1k,能不能把 ViT 训到与同期 CNN 同级?
1. 强数据增强(针对 ViT 定制):
RandAugment + Mixup + Cutmix + 随机擦除 + 重复增强(Repeated Augmentation)
→ 弥补 ViT 缺少卷积先验带来的"数据需求"
2. 强正则:随机深度(stochastic depth)、标签平滑、指数滑动平均(EMA)权重
3. 蒸馏:引入一个专门的 distillation token
→ 与 cls token 并列,专门负责从 teacher 模型(如 RegNet)学目标
→ teacher 的 argmax 作为 hard label;梯度经注意力回传到 patch token
4. 更长训练 + 更重视优化细节(AdamW、余弦退火、warmup)
结果:DeiT-B 仅用 ImageNet-1k 达 81.8% top-1;加入硬蒸馏后 83.4%(官方仓库 README;论文摘要记为 83.1,两者差异需核实来源),384² 分辨率下的蒸馏版本达 85.2%。关键结论:ViT 的性能差距主要来自「训练配方」,而不只是数据量——这一点在工程上极其重要,因为配方是公开的。
普通蒸馏只要求学生模型的输出分布接近老师(soft label)。DeiT 的做法是在序列里加一个专门学老师的 token:它在每一层通过注意力去读 patch token,最终输出「老师的判断」。这样蒸馏信号不是作用在一个已经承担分类任务的输出上,而是有一条独立的通路——它甚至可以在推理时被一起使用(把 cls 与 distill 的输出平均)。
更值得记住的一层含义:DeiT 的实验说明,ViT 与 CNN 的关系并不是「谁替代谁」,而是可以通过蒸馏把卷积老师的归纳偏置迁移进 Transformer(老师是纯卷积的 RegNet)。这与 3.5.5 里 ConvNeXt 从反方向做同一件事(把 Transformer 的设计搬进卷积)恰好对称。
3.5.4 Swin:层次化 + 窗口注意力
ViT 的输出自始至终是单一分辨率的 个 token( 输入下 )。这对分类够用,但对检测 / 分割很不利——那些任务需要多尺度特征图(3.3.2 讨论过跳距与分辨率)。
窗口注意力(W-MSA):把 个 token 排成 的网格,划分成 个 token 的非重叠窗口( 常用),只在窗口内部做自注意力。
移位窗口(SW-MSA):下一层把窗口网格整体平移 个 token,使原先跨窗口的相邻 token 进入同一窗口——这样信息可以在相邻窗口间传递。奇偶层交替使用 W-MSA 与 SW-MSA。
设共有 个 token、窗口大小 ( 个 token/窗口,共 个窗口),通道数 。窗口化多头自注意力的计算量为
即关于 线性;而全局注意力为 ,关于 二次。
窗口化后,每个窗口内部的注意力计算与全局注意力同形,只是把 换成 :
故总量为 。 变成了 ——二次项被一个常数 替换,代价是「信息只能先在窗口内流通」。全局版本的第二项为 ,以 、 为例: 对 ,交互数量减少到约 ;若 (、patch 4 的密集 token),比值会扩大到约 。
∎窗口注意力本身有一个明显缺陷:窗口边界是硬边,跨窗口的相邻 token 永远无法直接通信。移位窗口(swapping 半个窗口)让信息在两层之内跨过边界——这与卷积「用重叠的窗口让相邻位置互相看见」是同一个思想,只不过它是在 token 网格上做了交替的错位,因此只需改变「怎么划分窗口」,不需要额外算子,也不增加参数量。
层次化(hierarchical)是 Swin 的另一半:它像卷积骨干一样分四个 stage,每个 stage 之间用 patch merging(把 相邻 token 拼接后线性降维)把分辨率减半、通道翻倍,于是得到 这样的多尺度特征金字塔。这两件事合起来,让 Swin 能直接替换检测 / 分割框架里的 ResNet 骨干。
| 模型 | 输出分辨率 | 注意力范围 | 计算量随 | 典型用途 |
|---|---|---|---|---|
| ViT | 单一() | 全局 | 分类(大分辨率代价高) | |
| DeiT | 单一 | 全局 | 分类(单机可训) | |
| Swin-T | 4 个 stage() | 窗口 + 移位窗口 | 分类 / 检测 / 分割 | |
| ConvNeXt-T | 4 个 stage | 卷积( 深度卷积) | 同上(纯卷积) |
Swin 家族的规模与精度(原论文与官方模型库口径:Swin-T 28M 参数、top-1 81.3%;Swin-S 50M、83.0%;Swin-B 88M、83.5%;ImageNet-22k 预训练的 Swin-L 在 224² 达 86.3%、384² 达 87.3%)。注意官方 model zoo 与论文表格之间存在 0.1–0.2 个百分点的差异,教学引用时注明来源。
3.5.5 ConvNeXt:把「Transformer 的好东西」装回卷积
到 2021–2022 年,主流叙事变成了「Transformer 全面超越卷积」。ConvNeXt 做了一次非常干净的控制变量实验:从 ResNet-50 出发,一次只改一件事,最后得到纯卷积结构,并把它与 Swin 对比。
| 阶段 | 改动 | 说明 |
|---|---|---|
| ① 训练配方 | AdamW、Mixup、RandAugment、EMA、更长的训练与标签平滑 | 先把优化器与增强对齐到 Transformer 的配置(这一步单独就带来可观提升) |
| ② 宏观设计 | 阶段配比从 (3,4,6,3) 改为 (3,3,9,3);首层用 、步幅 4 的 patchify 卷积替代 +池化 | 对齐 Swin 的特征分辨率变化方式 |
| ③ 微观设计 | 用 深度可分离卷积 | 对齐自注意力的「逐通道混合 + 跨通道混合」分离结构 |
| ④ 倒瓶颈 | 通道数先升后降( 扩张,与 Transformer 的 MLP 一致) | 对齐 FFN 的扩张比 |
| ⑤ 大核 | 换成 深度卷积 | 对齐窗口注意力的感受野 |
| ⑥ 微观细节 | 激活换 GELU、减少激活与归一化层数、BN 换 LayerNorm | 对齐 Transformer 的零件 |
结果:ConvNeXt-T 达 82.1% top-1,与同规模的 Swin-T(81.3%)相当甚至略优;ImageNet-22k 预训练的 ConvNeXt-XL 达 87.8%。
三个必须分清的层次:
- 架构层面:注意力的核心优势在于「全局感受野、内容自适应加权、不受固定窗口形状约束」。这部分是真优势,卷积无法用静态核完全复刻。
- 实现层面:ConvNeXt 的结论说明,长期以来卷积网络落后的很大一部分原因是训练配方、归一化位置、激活函数、通道配比这些「非架构」细节——把细节对齐后,纯卷积仍能与 Transformer 同级。所以「Transformer 全面超越卷积」这个说法缺少控制变量的支撑。
- 工程层面:选择依据不是「谁更新」,而是数据量、延迟约束、部署工具链、是否需要多尺度输出。卷积在移动端 / 边缘设备上的算子库与量化支持通常更成熟;Transformer 在跨模态、变分辨率、统一架构(3.8 节)方面更自然。
一句话:ConvNeXt 的价值不在于「卷积赢了」,而在于它指出「归纳偏置 vs 数据量」这个交换的边界是可以移动的——换训练配方相当于人为把先验补回来(3.1.3 的框架在这里直接可用)。
3.5.6 掩码图像建模:从「预测标签」到「重建缺失」
ViT 的数据饥渴问题有一个更根本的解法:放弃有标签的监督,改用自监督。NLP 领域的 BERT 靠「掩码语言建模」(预测被遮住的词)取得了突破;视觉领域的对应做法是掩码图像建模(masked image modeling, MIM)。
MAE(Masked Autoencoders)把图像 patch 随机掩掉大部分(如 75%),训练模型根据可见 patch 重建被掩 patch 的像素。它的两条关键设计与 BERT 不同:
- 非对称编解码器(asymmetric encoder-decoder):编码器只处理可见 patch(因此它的计算量与掩码比例成正比下降,训练效率大幅提升),解码器轻量、负责把可见 token 与可学习的 mask token 一起映射回像素。
- 高掩码比例:视觉信号空间冗余极高(相邻像素高度相关),低掩码比例下任务过于简单(复制邻居就能猜对)。原文发现 75% 附近效果最好。
语言里的「掩码预测」有明确语义(词是可数的离散符号),而图像的像素是连续的、冗余的。这两点差异决定了两条设计:
为什么必须高比例掩码:如果只掩 15%(BERT 的比例),被掩的 patch 几乎可以从邻域插值猜出,任务退化成「图像平滑」,学不到语义。掩掉 75% 后,模型必须依赖全局语义理解才能填回合理的内容——这正是我们想要的能力。
为什么编码器只看可见 patch:这既是效率考虑(计算量降到约 1/4),也是一种防止信息泄漏的设计——如果编码器看到全图再被要求重建,它可以直接抄。非对称结构让捷径消失。
与对比学习的区别:对比学习(3.6 节)通过「同一图的两个增强视图应相似、不同图应远离」来学表示,需要大量负样本或动量机制;MIM 则通过「重建缺失内容」来学表示,不需要负样本、也不需要特殊的批处理技巧。两条路线在 2021–2023 年并行发展,后来出现了结合两者的做法。
| 工作 | 重建目标 | 关键设计 | 备注 |
|---|---|---|---|
| BEiT(2021,arXiv:2106.08254) | 离散视觉 token(由 dVAE 训练出的码本) | 把图像先离散化再预测 token,直接对齐 BERT 的形式 | ViT-B 83.2%、ViT-L 86.3% |
| MAE(2021,arXiv:2111.06377) | 原始像素 | 非对称编解码 + 75% 掩码 + 只编码可见 patch | ViT-H 仅用 ImageNet-1k 即 87.8% |
| EVA(2022,arXiv:2211.07636) | CLIP 的图像特征 | 用 MIM 重建「语义特征」而不是像素,把多模态预训练的知识蒸馏进视觉骨干 | 1B 参数 ViT-E 在 560² 下 89.7%(官方仓库口径) |
为什么这条路线重要:它让「视觉预训练」第一次可以不依赖人工标签,也不需要超大规模的分类数据集。这对医疗影像、遥感、工业质检这类标注昂贵或类别体系完全不同的领域意义重大——你只需要大量无标签图像就能训练一个骨干,再接到少量标签的任务上(3.6 节会把这个流程写成工程清单)。
与监督预训练的对比要点:监督预训练的表示被「1000 类 ImageNet 语义」塑造(可能过拟合到该标签体系);自监督表示更贴近「图像本身的结构」。代价是自监督训练成本更高(MAE 的高掩码比例缓解了这一点),且下游性能对微调配方更敏感。
- 「ViT 完全抛弃了归纳偏置」:错。patchify 本身就是一种局部性假设(每个 token 是一个连续方块),线性投影等价于无重叠卷积,而且 patch 内像素的相对排布由投影权重学到。准确的说法是:ViT 的归纳偏置比 CNN 弱,而不是没有。
- 「ViT 的主要计算在注意力矩阵上」:在常规分辨率下不成立。以 ViT-B/16 为例,注意力矩阵只占单层 MACs 的 (M / M),MLP 占 。二次项要到 才与线性项持平(例 3.5.1)。
- 「ViT 参数与 ResNet 相近,所以算力相近」:错。ViT-B/16 约 GMACs,是 ResNet-50(约 GMACs)的约 倍。比模型大小必须同时看参数与 FLOPs。
- 「DeiT 靠蒸馏才追平 CNN,所以 ViT 不蒸馏不行」:DeiT-B 不蒸馏已达 81.8%,蒸馏到 83.4%——是增益而不是前提。真正的关键是数据增强与正则配方。
- 「Swin 的窗口注意力纯粹为了省算力」:省算力(线性复杂度)只是一半;另一半是层次化输出(多尺度特征),这才是它能在检测 / 分割里替换卷积骨干的原因。
- 「ConvNeXt 证明了卷积比注意力更好」:它证明的是「在对齐训练配方与微观设计之后,纯卷积可与同规模 Transformer 持平」。这是控制变量实验,不是架构优劣的终审判决。
- 「自监督一定比监督好」:条件性结论。自监督的优势主要在标签稀缺与领域迁移场景;在有充足高质量标签、且标签体系与任务高度一致时,监督预训练仍然很有竞争力。
- 「掩码比例越低越像 BERT,效果越好」:视觉里恰好相反。图像的强空间冗余使低掩码比任务过于简单,MAE 原文的最优点在 75% 附近(具体曲线与比例以原文为准)。
Q1 图像、patch 16,token 数是多少?换成 patch 8 与 patch 32 各是多少?patch 从 16 变 8 时,注意力矩阵的显存变化几倍?
Q2 为什么 Transformer 需要位置嵌入?ViT 用的是可学习还是固定的位置编码?这带来什么工程问题?
Q3 写出 ViT-Base 每层参数量的三项(QKV、输出投影、MLP)并说明哪一项最大;总参数量约多少?
Q4 Swin 的窗口注意力把复杂度从 降到 ,代价是什么?移位窗口如何弥补这个代价?
Q5 ConvNeXt 从 ResNet-50 出发做了哪几类改动?它得出的结论应该怎样准确地表述?
Q6 MAE 为什么要把编码器限制在「只看可见 patch」?75% 的掩码比例解决了什么问题?
参考要点
Q1 patch 16:(加 cls 为 197)。patch 8:。patch 32:。注意力矩阵大小 , 从 196 到 784 涨 4 倍,矩阵元素数涨 16 倍(显存与二次项算力同比例)。
Q2 因为自注意力对 token 顺序置换等变,打乱顺序输出只是同样打乱,不含顺序信息。ViT 用可学习的一维位置嵌入。工程问题:输入分辨率改变时 变化,位置表尺寸不匹配,需要插值或改用相对位置 / 多尺度设计(Swin 通过窗口与层次化自然处理了这一点)。
Q3 QKV 投影 ;输出投影 ;MLP (最大,占每层 )。加上两个 LayerNorm()每层共 ;12 层 ,加 patch 嵌入与位置嵌入、分类头,总计约 86.5M。
Q4 代价是信息只能在窗口内部流通,跨窗口无法直接交互(等价于给注意力加了固定的局部性约束)。移位窗口通过把窗口网格整体平移半个窗口,让相邻窗口的边界 token 在下一层进入同一窗口,从而在两层内完成跨窗口信息传递,且不增加任何参数与算子。
Q5 六类改动:训练配方(AdamW/Mixup/RandAug/EMA)、宏观设计(阶段配比 3:3:9:3、patchify 首层)、深度可分离卷积、倒瓶颈、 大核、微观细节(GELU、少激活、BN→LN)。准确表述:在对齐训练配方与非架构设计之后,纯卷积在同规模下与 Swin 持平(ConvNeXt-T 82.1% 对 Swin-T 81.3%),说明此前卷积的落后有相当部分来自配方与细节,而非架构本身。
Q6 两个原因:防信息泄漏(编码器若看到全图再被要求重建,可以直接抄,任务失去意义),以及效率(编码器计算量与可见 patch 数成正比,掩 75% 时降到约 )。75% 掩码解决的是空间冗余:低比例下邻域插值就能猜出被掩内容,任务退化成平滑,学不到语义。
- Dosovitskiy et al., An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale(2020,arXiv:2010.11929)——ViT 原文,含三种规格的配置表与「数据规模 vs 归纳偏置」的对照实验。
- Touvron et al., Training data-efficient image transformers & distillation through attention(2020,arXiv:2012.12877)——DeiT,蒸馏 token 与针对 ViT 的增强 / 正则配方。
- Liu et al., Swin Transformer: Hierarchical Vision Transformer using Shifted Windows(2021,arXiv:2103.14030)——窗口注意力、移位窗口与线性复杂度公式。
- Liu et al., A ConvNet for the 2020s(2022,arXiv:2201.03545)——ConvNeXt,逐步现代化的控制变量实验。
- He et al., Masked Autoencoders Are Scalable Vision Learners(2021,arXiv:2111.06377)——MAE,非对称编解码与高掩码比例。
- Bao et al., BEiT: BERT Pre-Training of Image Transformers(2021,arXiv:2106.08254)——离散视觉 token 的掩码建模。
- Fang et al., EVA: Exploring the Limits of Masked Visual Representation Learning at Scale(2022,arXiv:2211.07636)——重建 CLIP 特征的 MIM。
- Dao et al., FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness(2022,arXiv:2205.14135)——不物化 矩阵的 IO 感知注意力。
- 视觉基础模型对照:Oquab et al., DINOv2: Learning Robust Visual Features without Supervision(2023,arXiv:2304.07193);Zhai et al., Sigmoid Loss for Language Image Pre-Training(SigLIP,2023,arXiv:2303.15343);Dehghani et al., Scaling Vision Transformers to 22 Billion Parameters(ViT-22B,2023,arXiv:2302.05442);Assran et al., Self-Supervised Learning from Images with a Joint-Embedding Predictive Architecture(I-JEPA,2023,arXiv:2301.08243)。
- 其他值得知道的视觉骨干:RepVGG(arXiv:2101.03697)、ConvNeXt V2(arXiv:2301.00808,FCMAE + GRN)、InternImage(arXiv:2211.05778,可变形卷积 DCNv3)、Vision Mamba(arXiv:2401.09417,双向 SSM)。
本节小结:ViT 用 patchify 把图像变成 token 序列,从而复用注意力机制——代价是弱归纳偏置(需要更多数据)与随分辨率增长的计算 / 显存;ViT-B/16 的 M 参数里 在 MLP,计算量约 GMACs,是 ResNet-50 的 倍。DeiT 证明差距主要来自训练配方;Swin 用窗口注意力 + 移位窗口 + 层次化换来线性复杂度与多尺度输出;ConvNeXt 用控制变量实验说明「卷积 vs 注意力」的胜负依赖配方与细节;MAE 一类掩码图像建模让视觉预训练脱离人工标签。下一节把这些预训练权重变成可复用的工程资产:迁移学习与自监督的实操。