When Do We Not Need Larger Vision Models?¶
会议: ECCV2024
arXiv: 2403.13043
代码: https://github.com/bfshi/scaling_on_scales
领域: 3d_vision
关键词: 多尺度特征, 视觉模型缩放, S2-Wrapper, ViT, 多模态大模型
一句话总结¶
提出 Scaling on Scales (S2) 策略:冻结小模型(如 ViT-B)在多个图像尺度上运行并拼接特征,无需增加参数即可在分类、分割、深度估计、MLLM 等任务上匹敌甚至超越大模型(ViT-H/G),并从理论和实验上论证了大模型学到的表征大部分可由多尺度小模型线性近似。
研究背景与动机¶
- 领域现状:视觉表征学习遵循"越大越好"范式——ViT-B → ViT-L → ViT-H → ViT-G,参数量从 86M 到数十亿,几乎所有 SOTA 方法默认使用巨型 backbone。
- 现有痛点:大模型参数多、推理慢、部署成本高,且在某些下游任务(尤其是密集预测)上收益递减。同时,已有多尺度表征研究仅限于特定架构,无法直接施加于任意预训练模型。
- 核心矛盾:模型容量的提升主要通过增加参数来实现,但图像理解还有另一个维度——分辨率/尺度。高分辨率输入能提供更多细节但受限于 \(O(n^2)\) 自注意力复杂度。
- 本文要解决:(1) 能否用多尺度小模型代替大模型?(2) 大模型的表征优势究竟是什么、能否被小模型复制?(3) 小模型预训练时就加入 S2 能否进一步缩小差距?
- 切入角度:作者观察到把图像放大再切成子图分别过同一个冻结小模型,得到的多尺度特征在信息量上与大模型高度重合——简单拼接就能替代大模型。
- 核心 idea:用"尺度缩放"(Scaling on Scales)替代"模型缩放"(Scaling on Model Size),以零额外参数实现更好的视觉表征。
方法详解¶
整体框架¶
S2-Wrapper 是一个即插即用的无参数模块,作用于任意预训练视觉模型。输入图像被插值到多个尺度(如 \(224^2\)、\(448^2\)、\(672^2\)),每个尺度切分为 \(224^2\) 的子图,所有子图过同一冻结 backbone 提取特征,拼回对应尺度的特征图后 average-pool 到原始空间尺寸,最后在通道维度拼接。输出特征空间大小不变、通道数翻倍(如 768→1536)。
关键设计¶
- 子图切分而非全图处理:
- 做什么:把大尺度图像切成与预训练分辨率相同的子图,分别独立推理
- 核心思路:避免 ViT 自注意力的 \(O(n^2)\) 复杂度爆炸,同时绕开位置编码插值带来的性能衰减
-
设计动机:直接对大图做位置编码插值会导致 ViT 性能显著下降(已有文献 Bolya et al. 2023 证明),而切子图让模型始终工作在训练时见过的分辨率下
-
多尺度特征池化与拼接:
- 做什么:各尺度特征图 average-pool 到原始空间大小,再沿通道维度拼接
- 核心思路:保持输出 token 数不变(如 \(16^2 = 256\) 个 token),下游 LLM/decoder 无需修改
-
设计动机:如果不做池化,token 数会随尺度平方增长(\(448^2\) 产生 4 倍 token),对 MLLM 而言 LLM 推理成本不可接受
-
插值而非原始高分辨率输入:
- 做什么:从原始 \(224^2\) 图像上采样到 \(448^2\)/\(672^2\),而非直接使用高分辨率原图
- 核心思路:确保与模型尺度缩放的公平对比,因为大模型也只见过 \(224^2\) 分辨率
- 设计动机:消除额外高分辨率信息带来的混淆变量;实际应用中推荐直接使用高分辨率原图
损失函数 / 训练策略¶
S2-Wrapper 本身无需训练(zero parameter, zero training)。在 MLLM 场景下,视觉 backbone 冻结,仅训练投影层和 LoRA,遵循 LLaVA-1.5 标准训练流程。论文另外验证了在预训练阶段就引入 S2(ImageNet-21k 上训练 ViT 和 DINOv2 时使用多尺度输入),结果表明 S2 预训练能进一步提升小模型的泛化能力。
实验关键数据¶
主实验¶
| 模型 | 任务 | ViT-B+S2 vs ViT-H/G | 参数量比 | GFLOPs |
|---|---|---|---|---|
| ViT (IN-21k) | ImageNet 分类 | B+S2 ≈ H | 0.28× | 相当 |
| DINOv2 | ADE20k 分割 | B+S2 > L(+1.5 mIoU) | 0.28× | 相当 |
| DINOv2 | NYUv2 深度 | B+S2 > L | 0.28× | 相当 |
| OpenCLIP | 6/9 任务 | B+S2 > 大模型 | 0.07×~0.28× | 相当 |
MLLM 结果(LLaVA-1.5 + S2 @1008²):
| 模型 | V*_Att | V*_Spa | VQAv2 | TextVQA | MMBench | SEED |
|---|---|---|---|---|---|---|
| LLaVA-1.5-7B | 43.5 | 56.6 | 78.5 | 58.2 | 64.3 | 65.7 |
| LLaVA-1.5-7B-S2 | 51.3 | 61.8 | 80.0 | 61.0 | 66.2 | 67.9 |
| GPT-4V | 51.3 | 60.5 | 77.2 | 78.0 | 75.8 | 71.6 |
V* 基准上 S2 版本达到 GPT-4V 水平,在视觉细节理解上超越所有开源 MLLM。
消融实验¶
| 配置 | 说明 | 关键结论 |
|---|---|---|
| Base-S2 (post-pretrain) | 预训练后才加 S2 | 6/9 任务超大模型,但泛化较弱 |
| Base-S2 (pre-train) | 预训练时就用 S2 | ViT 分类 82.4 vs Large 81.6,超越大模型 |
| 特征重建实验 | Base-S2 线性重建 Large 特征 | 重建率 96-100%,几乎覆盖大模型全部信息 |
| 机器人抓取 | MVP-Base+S2 vs MVP-Large | S2 成功率 +20%,远超模型扩大的 +6% |
关键发现¶
- 密集预测任务受益最大:分割和深度估计上,S2 优势最明显(多尺度特征天然适配细粒度任务)
- 唯一失败案例:DINOv2 在 ImageNet 分类上,B+S2 不如 L(训练 loss 更低但测试更差 → 过拟合),但预训练时加入 S2 可修复
- 特征可近似性:大模型 99%+ 的有用表征能被多尺度小模型线性重建,说明大模型没有学到本质上不同的东西
- 大模型唯一优势:在罕见/困难样本(如电视形状的雕塑)上泛化更好,但这可通过 S2 预训练弥补
亮点与洞察¶
- 极简设计却强力:S2-Wrapper 无任何可训练参数,一行代码即可应用于任何视觉模型,但效果堪比或超越几十亿参数的大模型。这种"不加参数只加分辨率"的思路非常优雅
- 特征重建分析独到:用互信息和线性重建量化"小模型到底缺什么",发现答案是"几乎什么都不缺"——这为社区的模型缩放方向提供了新视角
- 保持 token 数不变:通过池化回原始空间尺寸,LLM 端零开销,解决了高分辨率 MLLM 的核心瓶颈。可以直迁移到任何 LLaVA 类架构
- 并行处理潜力:子图独立推理天然支持并行化,对延迟敏感场景意义重大
局限性 / 可改进方向¶
- 计算量并未减少:虽然参数少,但 GFLOPs 是匹配的(\(448^2\) 需 4× 推理),实际推理速度提升取决于并行化实现
- 子图间无交互:每个子图独立过 backbone,丢失了跨子图的全局上下文(如大物体被切断)。可考虑加入轻量级跨窗口注意力
- 仅验证了 ViT 系列:ConvNeXt 实验放在附录且结果不如 ViT 显著,对于其他架构(如 Mamba 视觉模型)的适用性未知
- 预训练 S2 实验规模有限:仅在 ImageNet-21k 上验证,在 LAION-2B 等更大规模数据上的效果待验证
相关工作与启发¶
- vs 多尺度 ViT(MViT, Swin): 这些方法在架构内部设计多尺度,需要专门训练;S2 则是对任意已有模型的后处理,零训练成本,且可叠加使用
- vs LLaVA-NeXT/InternVL 的动态分辨率: 后续工作采用了类似的子图切分思路但有所改进(如动态分辨率选择),S2 是这一方向的先驱工作
- vs 高分辨率预训练(DINOv2 @518²): DINOv2 预训练最高 \(518^2\),受限于计算资源;S2 允许推理时扩展到 \(1008^2\)+ 而无需重新预训练
评分¶
- 新颖性: ⭐⭐⭐⭐ 多尺度特征本身不新,但作为通用缩放策略的系统研究和"大模型不必要"的论证很新颖
- 实验充分度: ⭐⭐⭐⭐⭐ 覆盖分类/分割/深度/MLLM/机器人 5 大任务,3 个预训练体系,含特征重建理论分析
- 写作质量: ⭐⭐⭐⭐⭐ 逻辑清晰,从实证到理论再到解决方案层层递进
- 价值: ⭐⭐⭐⭐⭐ 直接影响了后续 LLaVA-NeXT、InternVL 等高分辨率 MLLM 方案的设计,一行代码即可使用