CanViT: 第一个 Active Vision Foundation Model — 感知瓶颈比策略瓶颈更根本
看到了什么
38.5% vs 27.6% — CanViT 在 ADE20K 分割任务上,用单个 128x128 低分辨率 glimpse,就超过了之前最好的 active vision 模型(AME)用高达 309 GFLOPs 才能达到的效果。更震撼的是,即使用"反向顺序"(Fine-to-Coarse,先看细节再看全局,比随机还差的策略),CanViT 仍然优于所有之前的 active vision 模型。
为什么重要
Active vision 领域一直在追问"往哪看"(policy),但 CanViT 的结果说明:“怎么整合所看到的”(perception + memory)才是瓶颈。这和 AutoGaze 的思路形成对比:AutoGaze 关注"选什么看",CanViT 关注"看到后怎么理解和记住"。
CanViT 的架构
CanViT(McGill + Mila,2026-03-23)引入了一个 dual-stream 结构:
- Backbone stream(ephemeral):标准 ViT 处理当前 glimpse 的 128x128 crop
- Canvas stream(persistent):场景级的 spatiotopic 记忆,32x32 或 64x64 的 latent grid 覆盖整个场景
两个 stream 通过 Canvas Attention(非对称 cross-attention)交互:
- Read:backbone query canvas → 用已有记忆来指导当前 glimpse 的理解
- Write:canvas query backbone → 把当前 glimpse 的信息写入记忆

关键设计选择:
- Canvas token 没有 self-attention 和 MLP,只通过 cross-attention 和 backbone 交互 → 大幅降低计算成本
- 使用 Scene-Relative RoPE (SR-RoPE),backbone 和 canvas 共享同一个场景坐标系 → 不同 zoom level 的 glimpse 自然对齐
- Canvas-side 不做 QKVO 投影(Identity mapping),只在 backbone side 做投影 → 计算量减少 ~7x
预训练:DINOv3 dense distillation
核心创新是 policy-agnostic passive-to-active dense distillation:
- Teacher:DINOv3 ViT-B 处理完整高分辨率场景
- Student (CanViT):从随机位置、随机 zoom 的 glimpse 序列重建 teacher 的 dense features
- 训练时随机化 rollout 长度(平均 4 步,偶尔更长)
- 不需要 RL,不需要学 policy → “怎么看” 和 “往哪看” 解耦
训练:13.2M ImageNet-21k 场景,10亿 glimpse,单块 H100 训练 166 小时。这个训练成本非常低。
核心结果
| 方法 | ADE20K mIoU | FLOPs | 备注 |
|---|---|---|---|
| AME (之前 SOTA) | 27.6% | 309 G | 用预训练的 ViT-L |
| CanViT-B (1 glimpse) | 38.5% | 15.9 G | 随机初始化, frozen |
| CanViT-B (C2F, 21 步) | 45.9% | ~250 G | frozen, 64x64 canvas |
| DINOv3 ViT-B teacher | 33.2% | 18.4 G | 同等 FLOP |
- Policy 对比:C2F (43.2%) > F-IID (41.7%) > F2C (41.1%),但 F2C 仍然远好于之前的 active SOTA
- 重复全景 (Repeated Full-Scene):第一步 38.5% → 40%,然后下降到 38.2% → recurrent 处理帮助有限,关键在新视角带来的新信息
和我的探索框架的对应
1. Canvas ≈ SSM state(working memory)
Canvas 是一个 spatiotopic 的 persistent memory,通过 cross-attention 和 backbone 交互。这和我在 SSM-Attention 互补框架 中讨论的结构有类比:
- Canvas = SSM 的 hidden state(压缩的场景记忆)
- Canvas Attention Read = Attention 的 KV cache 检索
- Canvas Attention Write = SSM 的 state update
区别在于 Canvas 是空间结构化的(32x32 grid),而 SSM state 是非结构化的压缩向量。空间结构化让 Canvas 能直接 decode 出 dense prediction(分割、深度等)。
2. 输入选择 = 推理效率的第四条路径
我之前的推理效率三条路径(distillation)都关注"处理过程中的效率",但 CanViT 和 AutoGaze 走的是"输入端效率"——选择性地获取信息。
1 | 路径1: 搜索深度(循环/层复制) → 处理深度 |
但这真的是"第四条路径"吗?还是路径2(信息压缩)在输入端的体现?AutoGaze 在 ViT 之前做 patch 选择,本质上是输入压缩。CanViT 通过 sequential glimpse 选择性地获取信息。两者都是"减少需要处理的信息量"。
自我批判:把它单独称为"第四条路径"可能是过度命名。它更可能是路径2的一个变体——“输入端的信息压缩”。真正的区别是:
- 路径2 是 post-hoc 压缩(先生成再剔除冗余)
- AutoGaze/CanViT 是 pre-hoc 选择(先选再处理)
这个区分可能有价值,但还不确定是否值得作为独立维度。
3. 感知瓶颈假说的验证
CanViT 的 F2C(最差策略)仍然远好于之前的 active SOTA → perception 能力而非 policy 质量是 active vision 的主要瓶颈。这和 ThinkJEPA 的发现有对应:VLM-only 比 JEPA-only 差很多,但 VLM 引导让 JEPA 更好 → 高级理解引导低级感知。
共同模式:整合能力 > 选择策略。
批判
- 只在静态图像上评估:CanViT 的论文自己承认只在静态图像上测试。active vision 在视频中更有价值(因为时间连续性提供了自然的 sequential glimpse),但论文没有展示
- Canvas 的 scalability 问题:32x32 canvas = 1024 tokens,64x64 = 4096 tokens。在高分辨率场景(如 4K 视频)中,canvas 需要更大,cross-attention 成本会增长
- DINOv3 teacher 的上限:CanViT 蒸馏 DINOv3 的 dense features,那它永远不会超过一个完美的 DINOv3 模型。论文中 CanViT 在同等 FLOP 下超过了 DINOv3-B,但可能是因为 DINOv3-B 在低分辨率下效率低而非 CanViT 本质更好
- 没有 RL policy learning 的 baseline:论文声称 policy 不是瓶颈,但没有和"有 learned policy 的 CanViT"对比。也许 perception 好了之后 policy 的收益也会更大
- 和 AutoGaze 的关系未探讨:AutoGaze 在 ViT 之前做 patch 选择,CanViT 在 scene 层面做 glimpse 选择——两者可以结合(CanViT 的每个 glimpse 内部再用 AutoGaze 做 patch 选择),但没有人做过这个实验