Patch Policy: Efficient Embodied Control via Dense Visual Representations¶
论文阅读笔记 — 用于后续讨论的概览
Figure 1:左/中两图的 Success Rate 轴是「四个仿真任务归一化后取平均」(我按 BlockPush/2、Cube/2 复算,精确对上了每一个点)。左图 "Small & Effective"、中图 "Fast & Effective" 的箭头都指向 Ours-VQ-BeT;但注意精度最高的 Ours-DP 在中图躺在延迟轴最右端(~446 ms ≈ 2.2 Hz),比 OpenVLA-OFT 还慢 7 倍——「又快又准」在这张图里其实是两个不同的点。右侧柱状图是 encoder 排名:WebSSL > DINOv2 ≈ V-JEPA2 > DINOv3 > SigLIP2,灰色虚线是 WebSSL CLS 基线。
1. 基础信息¶
- 题目: Patch Policy: Efficient Embodied Control via Dense Visual Representations
- 作者: Gaoyue Zhou¹*, Zichen Jeff Cui¹*, Ada Langford¹, Bowen Tan¹, Yann LeCun¹,³, Lerrel Pinto¹,²
- ¹ Courant Institute, New York University ² Meta-FAIR ³ AMI Labs
- * Equal contribution;通讯
gz2123@nyu.edu - arXiv 编号: 2607.18236 (submitted 2026-07);LaTeX 用
corl_2026.sty的[preprint]选项 → 目标 venue 是 CoRL 2026 - 项目页: https://patch-policy.github.io
- 关键词: Imitation Learning, Visual Representation, Dense Patch Features, Frozen ViT, Block-causal Attention, VQ-BeT, Diffusion Policy, VLA Efficiency
2. 文章介绍¶
2.1 解决的领域和问题¶
视觉模仿学习 (visual behavioral cloning) 里的 视觉表征接口问题:预训练 ViT 输出的是 P × D 的 dense patch feature,但绝大多数 continuous-control policy backbone(VQ-BeT、Diffusion Policy、BeT、IBC 这一系)在设计上假设「每个 timestep = 一个 token」,于是实践中所有人都做同一件事——把 16×16=256 个 patch 压成一个 CLS token 或 avg-pool 向量再喂给 policy。
作者的诊断是:这一步 pooling 就是精细操作性能的瓶颈。而目前唯一在大规模使用 dense patch 的路线是 VLA(OpenVLA、π0 系列),代价是要背着一个 7B 的 VLM。所以领域被劈成两半:要么便宜但信息被压扁,要么信息完整但又大又慢。
2.2 Motivation¶
一句话概括作者的立论:"VLA 之所以在精细操作上强,靠的不是 language grounding,也不是 7B 参数量,而是它碰得到 dense patch feature。"
如果这个假设成立,那么 dense feature 是可以从 VLA 里剥离出来单独享用的——Internet-scale 预训练 ViT 是现成的、免费的、冻结的,只要 policy 架构肯直接吃 T × P 长度的序列就行。这样就能拿到 VLA 的表征红利,而不用付 VLA 的训练/推理账单。
问题变成了纯粹的架构工程:怎么让一个标准 transformer policy 在保持时序因果性的前提下吃下每帧几百个 token。
2.3 之前工作的问题¶
| 类别 | 代表工作 | 缺陷 |
|---|---|---|
| In-domain SSL + 全局特征 | DynaMo, MoCo, BYOL, R3M | 表征本身弱于 Internet-scale 预训练;且输出仍是 pooled 全局向量,空间细节丢失 |
冻结 ViT 的 CLS / avg-pool |
各类 VQ-BeT / DP 实现的标准做法 | CLS 偏语义、丢几何;avg-pool 直接抹掉空间分辨率。本文 Table 1 里 Cube 任务上只有 0.21–0.28 / 2.0,基本等于做不了 |
| 从头训 encoder 的 patch policy | ACT (ResNet-18 from scratch), RT-1, Octo, RVT, PerAct | 用了 patch token 但没用上大规模视觉预训练;小数据集上从头训视觉 backbone 是浪费 |
| VLA | OpenVLA, OpenVLA-OFT, RT-2, π0/π0.5/π0.6 | dense feature 有了,但绑定 7B LLM backbone:7.61B 参数、61.7 ms 前向、16 GPU-hours 微调 |
| 世界模型侧的 dense feature 用法 | DINO-WM, V-JEPA 2 | 证明了冻结 patch feature 对 dynamics modeling 有效,但没有系统迁移到 policy learning |
2.4 论文解决方案(一句话)¶
把冻结的预训练 ViT 的全部 patch token 直接展平成
T × P序列喂给标准 transformer policy,用一个 block-causal attention mask(帧内双向、帧间因果)同时保住空间完整性和时序因果性,policy head(VQ-BeT / Diffusion Policy)原封不动。
2.5 与前序工作的关系¶
这篇的血统非常清楚,几乎全是 NYU Lerrel Pinto 组的自我延续:
- DINO-WM (Zhou, Pan, LeCun, Pinto):一作和末作完全相同。DINO-WM 就是「冻结 DINOv2 patch feature + frame-wise causal attention」做世界模型。本文 §3.2 明确写 block-causal mask "similar to [dinowm]"——架构 trunk 是直接搬过来的,换成了 BC 任务。
- DynaMo (Cui, ..., Pinto):二作的前作,在本文里作为 global-pooled baseline 被比。
- CAP / Contact-Anchored Policies (Cui et al.):二作的另一篇前作,本文附录的 zero-shot 实验(EgoGym + Real Franka Pickup)用的是 CAP 的数据集、benchmark 和 checkpoint。
- VQ-BeT (Lee, ..., Pinto):policy head 之一,也是同组的。
- WebSSL (Fan, ..., LeCun, Xie):主力 encoder,Meta/NYU,LeCun 也在作者列。
现成复用的模型/数据:DINOv2 (ViT-S/14)、DINOv3 (ViT-S/16+)、WebSSL (ViT-L)、V-JEPA 2、SigLIP 2 全部冻结且预计算特征;数据集用 Diffusion Policy 的 Push-T、LIBERO Goal、BlockPush (IBC)、OGBench Cube。
3. 方法介绍¶
3.1 形式化¶
给定图像观测 \(o_t \in \mathbb{R}^{C\times H\times W}\),冻结的 ViT encoder 切 patch 并输出 dense feature,形状 \(P \times D\)(patch 数 × embedding 维度)。不做任何 pooling,全部保留。
对长度为 \(T\) 的观测上下文窗口,得到张量 \(T \times P \times D\)。
一个关键的设计好处:令 \(P=1\) 就退化为传统的 global feature / state-based policy。这让论文里所有 baseline 对比都跑在同一份代码、同一个 trunk、同一个 head 上,唯一变量是 token 数——这是一个设计得相当干净的 controlled experiment。
Goal conditioning(两种模式,都不增加序列长度): - Goal image:用同一个 encoder 编码,沿特征维拼接 → \(T \times P \times 2D\) - Goal vector \(g \in \mathbb{R}^G\):拼到每个 observation token 上 → \(T \times P \times (D+G)\)
Multi-view:多视角的 patch token 沿序列维拼进同一帧的 block(见 method 图,\(z_t\) 中蓝色块=view₀、橙色块=view₁)。
Figure 2:左边 Observation Trunk —— 每个视角各自过同一个冻结 ViT,patch token 沿序列维拼成 \(z_t\)(图中蓝=view₀、橙=view₁);goal image 走同一 encoder 后沿特征维拼接(灰色列),goal vector 则过一个 Linear 后拼到每个 token 上——两种 goal 都不增加序列长度。右边 Policy —— 黄色块状矩阵就是 block-causal mask:对角块内部全通(帧内双向,右侧放大图),块与块之间下三角(帧间因果)。Action head 从每帧读出一个 action chunk,对全部 \(\hat a_{t..t+k}\) 算 BC loss。注意这个 mask 结构意味着过去帧的 K/V 永远不会被后续 token 改写,天然适合 KV cache——见 §5.3。
3.2 Block-Causal Attention(核心组件)¶
把 \(T \times P \times D\) 展平成长度 \(T\cdot P\) 的序列,加一维 learned positional embedding(按展平后的绝对位置索引),然后施加 block-causal mask:
- 帧内 (intra-frame):所有 patch 之间全双向注意力 → 模型可以自由整合一帧内的空间信息
- 帧间 (inter-frame):严格因果 → 第 \(t\) 帧的 patch 只能看到 \(\le t\) 的帧
Action 从每帧最后一个 patch token 读出,输出一个 action chunk。
论文对三种 mask 做了 ablation(§3.x 有数字): - Full attention:训练时能看到未来帧的 patch,破坏任务结构 → 轻微掉点 - Token-causal(把每个 patch 当成独立 timestep 的朴素做法):因果性保住了,但帧内也被切开。作者的诊断很锋利——影响取决于 loss 打在哪里: - VQ-BeT 在每帧最后一个 patch 读出 → 它本来就看得到整帧,所以 token-causal ≈ block-causal - Diffusion Policy 的 denoising loss 打在每一个 decoder position → 靠前的 position 只看到第一帧的一小部分 patch,Cube 上直接崩到 0.11
3.3 Policy Head(可插拔)¶
架构对 action head 完全不可知,论文验证了两种: - VQ-BeT:hybrid classification-regression,VQ-VAE latent dim 512 / codebook 16 / 2 groups - Diffusion Policy:denoising objective
推理时:提取当前帧 patch feature → append 到长度 \(T\) 的 rolling context → 预测 action chunk → receding horizon control 执行。
3.4 Implementation Details¶
视觉 encoder(224×224 输入)
| Encoder | Backbone | Patch grid × dim | 备注 |
|---|---|---|---|
| DINOv2 | ViT-S/14 | 16×16×384 (=256 tokens) | 真机实验用的就是它,~22M 冻结参数 |
| DINOv3 | ViT-S/16+ | 14×14×384 | |
| WebSSL | ViT-L | 16×16×1024 | 仿真主结果用它,~303M 冻结参数 |
| V-JEPA 2 | — | 14×14×1024 | |
| SigLIP 2 | — | 14×14×768 |
超参(VQ-BeT,仿真):8 层 / 8 头 / 512 dim(LIBERO 例外:6/6/120);window size 3–10;action window 1–5;lr 5e-5 ~ 3e-4;batch 8–256。
超参(VQ-BeT,真机):8 层 / 8 头 / 384 dim;window size = 2;action window = 10 (Cable) / 5 (Pen, Tool);lr 3e-4;wd 1e-4;batch 128。
超参(Diffusion Policy):8 层 / 4–8 头 / 256–512 dim;obs horizon 2–3;action horizon 1–5;lr 5e-5 ~ 1e-4;batch 256。
计算开销(H200,单次前向,不含 action chunking 带来的时间摊薄)
| Method | Total Params | Trainable | Latency |
|---|---|---|---|
| VQ-BeT (ResNet-18) | 39.95 M | 28.77 M | 5.79 ms |
| Ours – VQ-BeT (DINOv2) | 51.55 M | 29.49 M | 10.99 ms |
| Ours – VQ-BeT (WebSSL) | 334.00 M | 30.34 M | 21.43 ms |
| DP (ResNet-18) | 29.35 M | 9.09 M | 421.89 ms |
| Ours – DP (DINOv2) | 40.43 M | 9.19 M | 445.85 ms |
| Ours – DP (WebSSL) | 303.66 M | 9.35 M | 451.68 ms |
| OpenVLA-OFT | 7.61 B | 177.90 M | 61.71 ms |
| ACT | 83.85 M | 83.85 M | 8.63 ms |
训练开销:Ours (DINOv2) 6.5 h × 1×L40S = 6.5 GPU-hours;OpenVLA-OFT 4 h × 4×L40S = 16 GPU-h;ACT 12 h × 2×L40S = 24 GPU-h。冻结 encoder 使得特征可以预计算,这是训练便宜的主因。
环境与数据
Figure 3:四个仿真环境(Push-T / LIBERO Goal / BlockPush / Cube)+ 三个真机任务(Cable Insertion / Pen Collection / Tool Hanging)。
| 环境 | 动作维度 | 数据量 | 视角 | 指标(上限) |
|---|---|---|---|---|
| Push-T | 2D | 206 demos | 1 (top-down) | coverage (1.0) |
| LIBERO Goal | 7-DoF Franka, 10 tasks | 500 demos | 2 (3rd + wrist) | success (1.0) |
| BlockPush | 2D | 1000 demos | 2 (3rd) | 放对的块数 (2.0) |
| Cube (OGBench) | 6-DoF UR5e | 550 demos | 1 (3rd) | 放对的块数 (2.0) |
| Cable Insertion | 7-DoF Franka | 101 eps ≈ 37 min | wrist + side | 3 阶段成功率,~2 mm 容差 |
| Pen Collection | 7-DoF Franka | 52 eps ≈ 45 min | 2 wrist | 3 阶段(3 支笔) |
| Tool Hanging | 7-DoF Franka | 50 eps ≈ 18 min | 2 wrist | 3 阶段 |
| CAP EgoGym | — | 14606 / 3690 / 2069 demos | — | 5000 episodes 评测 |
| CAP Real Franka Pickup | FR3 | 同上 | wrist + 3D contact point | 100 trials,10 个未见物体 |
注意:所有 policy 只接收视觉输入,没有 proprioception。 仿真每个环境 100 rollouts × 3 seeds,真机 20 trials。
4. 结果对比¶
4.1 仿真主表(Table 1,WebSSL patch features)¶
| Visual Representation | Policy | Push-T | LIBERO Goal | BlockPush (/2) | Cube (/2) | 归一化均值 |
|---|---|---|---|---|---|---|
| 全局 pooled 特征 | ||||||
| DynaMo | VQ-BeT | 0.66 | 0.93 | 0.65 | 0.28 | 51.4 % |
WebSSL Avg Pool |
VQ-BeT | 0.54 | 0.97 | 0.84 | 0.25 | 51.4 % |
WebSSL CLS |
VQ-BeT | 0.59 | 0.95 | 0.77 | 0.23 | 51.0 % |
| DynaMo | DP | 0.73 | 0.68 | 1.06 | 0.27 | 51.9 % |
WebSSL Avg Pool |
DP | 0.79 | 0.98 | 1.34 | 0.21 | 63.6 % |
WebSSL CLS |
DP | 0.68 | 0.99 | 0.99 | 0.21 | 56.8 % |
| Patch Policy | ||||||
| WebSSL Patch | VQ-BeT (Ours) | 0.68 | 0.94 | 1.68 | 1.68 | 82.5 % |
| WebSSL Patch | DP (Ours) | 0.80 | 0.98 | 1.65 | 1.73 | 86.8 % |
| 其他 patch-based baseline | ||||||
| ResNet-18 Patch | ACT | 0.64 | 0.93 | 0.15 | 0.69 | 49.8 % |
| DINOv2 + SigLIP Patch | OpenVLA-OFT | 0.59 | 0.95 | 1.43 | 1.50 | 75.1 % |
「归一化均值」是我按 BlockPush/2、Cube/2 再取四任务平均算的,精确复现了 teaser 图里的 Success Rate 轴(82.5 / 86.8 / 75.1 / 51.0 / 51.4 / 51.9 / 49.8),所以这就是论文的聚合口径。
由此可算:Ours-DP vs OpenVLA-OFT = +15.5% 相对(摘要写 18%);Ours 均值 vs WebSSL
CLS均值 = +57.1%(摘要写 40%,应该是掺进了增益更小的真机套件后拉下来的)。
关键观察:增益高度集中在 BlockPush 和 Cube。Push-T 只有 +0.09(VQ-BeT)、LIBERO 甚至 −0.01。而 Cube 上是 0.23 → 1.68,7.3 倍。也就是说 global feature 在多物体精确摆放任务上是彻底失效(2 个块里只放对 0.2 个),而不是「差一点」。
4.2 真机三任务(Table 2,DINOv2 ViT-S,20 trials)¶
| Representation | Policy | 阶段 1 | 阶段 2 | 阶段 3 |
|---|---|---|---|---|
| Cable Insertion | 抓起线缆 | 插入端口 | 完全插入 | |
| DINOv2 Patch | VQ-BeT (Ours) | 1.00 | 0.85 | 0.70 |
DINOv2 CLS |
VQ-BeT | 1.00 | 0.70 | 0.60 |
| ResNet-18 Patch | ACT | 1.00 | 0.40 | 0.35 |
| DINOv2+SigLIP Patch | OpenVLA-OFT | 1.00 | 0.55 | 0.30 |
| Pen Collection | 第 1 支 | 第 2 支 | 第 3 支 | |
| DINOv2 Patch | VQ-BeT (Ours) | 1.00 | 1.00 | 0.85 |
DINOv2 CLS |
VQ-BeT | 1.00 | 0.95 | 0.65 |
| ResNet-18 Patch | ACT | 1.00 | 0.85 | 0.65 |
| DINOv2+SigLIP Patch | OpenVLA-OFT | 1.00 | 0.85 | 0.60 |
| Tool Hanging | 抓起 | 到达挂钩 | 挂上 | |
| DINOv2 Patch | VQ-BeT (Ours) | 1.00 | 0.90 | 0.90 |
DINOv2 CLS |
VQ-BeT | 1.00 | 0.75 | 0.70 |
| ResNet-18 Patch | ACT | 1.00 | 0.85 | 0.85 |
| DINOv2+SigLIP Patch | OpenVLA-OFT | 0.95 | 0.90 | 0.65 |
作者的定性诊断值得记:Cable Insertion 里 OpenVLA-OFT 经常「卡在插座附近」,说明失败是接触后的精细闭环控制,不是任务级语义理解——这正好是他们想论证的点。
Figure 4:三个真机任务的 rollout 关键帧。Cable Insertion 的容差约 2 mm,是三个任务里增益最显著也最有说服力的一个(对 ACT 0.70 vs 0.35、对 OpenVLA-OFT 0.70 vs 0.30)。
4.3 Encoder benchmark(3 seeds)¶
Figure 5:五个预训练 encoder 在四个任务上的对比(3 seeds,BlockPush/Cube 已归一化到 [0,1])。值得注意的不是绝对高低,而是同一任务下 encoder 的相对排名在 VQ-BeT 和 DP 两个 head 之间高度一致——这暗示视觉表征质量仍是主要瓶颈,且与下游 action head 解耦。
Ours – VQ-BeT
| Encoder | Push-T | LIBERO Goal | BlockPush | Cube |
|---|---|---|---|---|
| DINOv2 | 0.69 | 0.96 | 1.20 | 1.35 |
| DINOv3 | 0.65 | 0.95 | 0.96 | 0.96 |
| WebSSL | 0.68 | 0.94 | 1.68 | 1.68 |
| V-JEPA 2 | 0.65 | 0.86 | 1.46 | 1.36 |
| SigLIP 2 | 0.51 | 0.83 | 0.99 | 1.17 |
Ours – Diffusion Policy
| Encoder | Push-T | LIBERO Goal | BlockPush | Cube |
|---|---|---|---|---|
| DINOv2 | 0.81 | 0.98 | 1.25 | 1.24 |
| DINOv3 | 0.73 | 0.94 | 1.22 | 1.17 |
| WebSSL | 0.80 | 0.98 | 1.65 | 1.73 |
| V-JEPA 2 | 0.72 | 0.91 | 1.60 | 1.30 |
| SigLIP 2 | 0.64 | 0.83 | 1.43 | 1.23 |
结论:WebSSL ≳ DINOv2 > V-JEPA 2 > DINOv3 > SigLIP 2。作者对 SigLIP 2 垫底的解释是「语义-语言对齐牺牲了几何 dense feature」。一个有价值的 meta-observation:同一任务下 encoder 的相对排名在两个 action head 之间高度一致,说明视觉表征质量仍是主要瓶颈,与下游 head 解耦。
4.4 关键消融¶
Attention mask(Table 7)
| Mask | VQ-BeT Push-T | VQ-BeT Cube | DP Push-T | DP Cube |
|---|---|---|---|---|
| Full | 0.64 | 1.09 | 0.83 | 1.10 |
| Token-causal | 0.73 | 1.36 | 0.70 | 0.11 |
| Block-causal (ours) | 0.70 | 1.38 | 0.83 | 1.24 |
Patch 压缩(Table 6,Push-T,conv 压缩器与 policy 联合训练)
| Resolution | Push-T |
|---|---|
| 256 patches | 0.69 |
| 64 patches | 0.52 |
| 16 patches | 0.53 |
| 4 patches | 0.51 |
| 1 patch | 0.48 |
模型规模(Push-T,DINOv2 ViT-S)
| Method | \(N\) | heads | \(d_{emb}\) | Size | Coverage |
|---|---|---|---|---|---|
| VQ-BeT | 4 | 4 | 64 | 25.62 M | 0.50 |
| VQ-BeT | 6 | 6 | 120 | 26.64 M | 0.57 |
| VQ-BeT | 8 | 8 | 512 | 51.55 M | 0.69 |
| DP | 4 | 4 | 64 | 22.77 M | 0.07 |
| DP | 6 | 6 | 120 | 25.30 M | 0.56 |
| DP | 8 | 4 | 256 | 40.43 M | 0.83 |
Zero-shot 泛化(附录,基于 CAP)
| Method | EgoGym Pickup | EgoGym Open | EgoGym Close | Real Franka Pickup |
|---|---|---|---|---|
| CAP | 75.78 % | 67.88 % | 86.50 % | 79 % |
| Ours | 79.50 % | 71.40 % | 92.44 % | 87 % |
5. 引申问题 / 讨论¶
5.1 做得好的地方¶
-
\(P=1\) 的向后兼容性让 baseline 对比真正干净。 这是全文最值得称道的实验设计:global-pooled baseline 和 Patch Policy 跑的是同一个 trunk、同一个 head、同一份超参搜索,唯一变量就是每帧 token 数是 1 还是 256。绝大多数「新表征 + 新架构」的论文做不到这一点,本文的 Table 1 上半部分因此是可信的。
-
对 token-causal 为什么坑 DP 的诊断非常锋利。 "loss 打在每个 decoder position → 靠前 position 只看到第一帧的部分 patch" —— 这解释了为什么同一个 mask 在 VQ-BeT 上几乎无差别(0.73 vs 0.70)而在 DP/Cube 上是 0.11 vs 1.24 的天壤之别。这种「差异来自 loss 落点而非 mask 本身」的分析,比单纯报个数字有用得多。
-
冻结 + 预计算是整套方案便宜的真正原因,而且被诚实地讲清楚了。 6.5 GPU-hours vs OpenVLA-OFT 的 16 GPU-hours,同时 trainable 参数只有 9–30 M。这不是「架构更高效」,而是「把 backbone 的成本一次性摊销掉了」——论文没有把这个功劳错记到架构头上。
-
Goal conditioning 沿特征维拼接而不是加 token。 Goal image 编码后拼成 \(2D\) 而不是再多 \(P\) 个 token,multi-view 才走序列维。在一个序列长度已经是 \(T\times P\times \text{views}\) 的架构里,这个选择直接决定了 goal-conditioned 设定下 attention 不会再翻倍。
-
Encoder benchmark 本身是给社区的公共品。 5 个 encoder × 4 任务 × 2 个 head × 3 seeds,而且给出了「排名跨 head 稳定」这个非平凡结论。这比论文声称的架构贡献更有长期价值——它把「选哪个 backbone」从玄学变成了有参照的工程决策。
-
报了一个负面结果(压缩会掉点),并且给了失败模式分析。 Table 6 和 Cable Insertion 里对 OpenVLA-OFT「卡在插座附近」的观察,都是那种能让读者判断「这个方法什么时候不 work」的信息。
5.2 做得不够好的地方 / 值得质疑的地方¶
-
摘要的 40% / 18% 无法从表里复现,聚合口径也没写。 我按 teaser 图的口径(BlockPush、Cube 除以 2 后四任务平均)精确复现了图里每一个点,得到 Ours-DP vs OpenVLA-OFT = +15.5%(摘要说 18%),Ours vs WebSSL
CLS= +57.1%(摘要说 40%)。40% 大概是把增益小得多的真机套件掺进来平均了,但论文从头到尾没有说明这些 headline 数字是怎么算的——不同指标(coverage / success rate / 放对的块数)跨套件平均本身就需要交代。 -
「40% 提升」几乎完全由两个任务撑起来。 Push-T 上 VQ-BeT 只有 0.59→0.68,LIBERO 上还掉了 0.01(0.95→0.94)。真正的差距在 Cube(0.23→1.68,7.3×)和 BlockPush(0.77→1.68)。准确的说法应该是「global feature 在多物体精确摆放任务上完全失效,patch feature 救活了它」,而不是「patch feature 普遍好 40%」。论文正文其实承认了这点("competitive elsewhere"),但摘要和 teaser 的聚合框架把它讲成了普适增益。
-
真机结果在统计上区分不出主 baseline。 20 trials 的两比例 z 检验:Cable Insertion 0.70 vs 0.60 → p ≈ 0.51;Pen Collection 0.85 vs 0.65 → p ≈ 0.14;Tool Hanging 0.90 vs 0.70 → p ≈ 0.11。三个真机任务没有一个能在常规显著性水平上把 Patch 和
CLS分开。真正显著的只有对 ACT / OpenVLA-OFT 的差距(Cable Insertion 0.70 vs 0.35 / 0.30)。真机部分没有多 seed、没有置信区间,而这恰恰是论文用来支撑「real-world precise manipulation」这一条 contribution 的证据。附录的 Real Franka Pickup(87% vs 79%,n=100)同样只有 p ≈ 0.13。相比之下 EgoGym 的 5000 episodes 是真的显著——可惜那是 sim。 -
"We select the best-performing checkpoint for each run" = 用评测分布做模型选择。 这是 oracle checkpoint selection,会系统性抬高所有方法的数字并放大 seed 间方差。就算对所有方法一视同仁,它也让 std(±0.01 这种量级)失去意义——那是「最优 checkpoint 的方差」,不是「训练结果的方差」。
-
两个 patch-based baseline 都被改造过,而且都被改弱了。 ACT 被拿掉了 CVAE encoder 的 proprioception,又被加装了原本没有的 channel-stack goal conditioning,结果 BlockPush 上只有 0.15 / 2.0——远低于 ACT 正常水平,这个数字本身就该触发怀疑。OpenVLA-OFT 被放到无语言、无 proprio 的 goal-image 设定里跑,而它整个设计(parallel decoding + L1 regression + Llama-2 backbone)是为语言条件任务做的。更成问题的是:LIBERO Goal 那一格的 0.95 是直接抄原论文的,而原论文的设定是带 proprio 带语言的——同一张表里既有「按本文设定重跑」的格子又有「按原论文设定抄来」的格子,口径不一致。
-
全程没有 proprioception,这对一个 2 mm 容差的插入任务是很反常的选择。 "All policies receive only visual inputs" 意味着视觉特征必须同时充当机器人的本体感受器。这确实让对比更「纯粹」,但也让结论的适用范围打了折扣:真实部署几乎不会这么做,而加上 proprio 之后 global feature 的劣势可能收窄(关节角本来就编码了末端位置这个
CLStoken 最容易丢的量)。论文没有讨论这个交互。 -
冻结 + 预计算特征 = 无法做图像增广,而这个 confound 完全没被提及。 Diffusion Policy 的标准配方里 random crop 是重要的正则项,ResNet-18 baseline 正常是带增广训的。特征一旦预计算,random crop / color jitter 就都做不了了。这既可能是本文方法被低估(没增广还这么好),也可能是 baseline 的 recipe 被破坏,但论文一个字没提。这是我最想问作者的一个问题。
-
被写进摘要当「核心」的 block-causal mask,实证支撑其实很薄。 Ablation 只有 2 个任务、没有 seed、没有误差棒,而且结果并不一边倒:Push-T 上 token-causal 反而赢 VQ-BeT(0.73 vs 0.70),full attention 在 DP 上打平(0.83 vs 0.83)。唯一决定性的格子是 DP/Cube 的 0.11 vs 1.24,而作者自己的解释表明那源于 DP 把 denoising loss 打在每个 position 这个实现细节——换句话说,那更像是「token-causal 会破坏 DP 的特定 loss 布局」,而不是「block-causal 是一个普遍正确的架构原则」。摘要里 "At its core is a block-causal attention mask" 的分量,超出了 Table 7 能承担的。
-
架构新颖性基本是继承来的,但框架写成了架构贡献。 DINO-WM(同一作、同末作)已经在用「冻结 DINOv2 patch + frame-wise causal attention」,论文自己写了 "similar to [dinowm]"。往前还有 RT-1 / Octo / PerAct / RVT / ACT 一大票吃 patch token 的 policy。这篇真正的贡献是系统的对照实验和 encoder benchmark——这很有价值,但摘要把它包装成 "a minimal architectural extension",反而低估了自己实证工作的分量、高估了架构部分。
-
参数量对比是苹果对橘子,而且换了个口径。 「0.7% 参数量」是 51.55 M(总) / 7.61 B(总);但按 trainable 算是 29.49 M / 177.90 M = 17%,差了 24 倍。更根本的是,OpenVLA-OFT 那 7.6 B 里绝大部分买的是语言 grounding 和跨 embodiment 预训练,而 Patch Policy 对这两样完全没有对应物——它是每个任务从头训一个 policy。「用 0.7% 的参数打赢 VLA」在 in-domain 单任务 BC 上成立,但不能读成「VLA 的参数是浪费的」。论文正文里其实说清楚了("disentangles ... from general language grounding"),是摘要的表述滑了过去。
-
「高频反应式控制」只对 VQ-BeT 变体成立,而 DP 变体才是精度最高的那个。 Ours-DP 的 445–452 ms ≈ 2.2 Hz,比 OpenVLA-OFT 的 61.7 ms 慢 7 倍。teaser 那个 "Fast & Effective" 箭头指着 Ours-VQ-BeT,但同一张图里精度最高的 Ours-DP 躺在延迟轴最右端。摘要"without sacrificing ... inference speed required for high-frequency, reactive control" 只覆盖了一半的结果。另外所有延迟都测在 H200 上——真机部署常见的是 Jetson 或单张消费卡,11 ms 在那上面会是另一个数量级。
-
压缩 ablation 的曲线形状很可疑,结论可能被过度解读。 256 → 0.69,然后 64 / 16 / 4 / 1 分别是 0.52 / 0.53 / 0.51 / 0.48 —— 64 到 1 之间几乎是平的,只有从 256 掉下来时有一个断崖。如果真是「空间分辨率决定性能」,应该看到单调渐变而不是一个台阶加一条平线。更像是那个联合训练的 conv 压缩器本身在起破坏作用(新引入的可训练模块在小数据上没训好),而不是分辨率本身。而且只有 Push-T 一个任务、单 seed。要支撑 "spatial compression degrades control performance" 这条 contribution,至少应该换一种非学习式的降采样(如 attention pooling / token pruning)做对照。
-
推荐的 encoder 和实际部署的 encoder 不是同一个。 仿真主结论说「用 WebSSL 或 DINOv2」,WebSSL 在 BlockPush/Cube 上明显更强(1.68 vs 1.20/1.35),但所有真机实验用的是 DINOv2 ViT-S。理由写的是「compact yet top-performing」,可以理解(ViT-L 在真机回路里太慢),但这意味着论文最强的仿真数字和最强的真机数字来自不同 backbone,两者不能连起来读。另外 DINOv3 < DINOv2 这个反直觉的结果完全没有解释。
-
完全没有语言条件,这限制了「可以替代 VLA」这一层叙事。 LIBERO Goal 的 10 个任务是靠 goal image 区分的。VLA 的卖点恰恰是语言指令 + 通才行为 + 跨 embodiment 迁移,这三样本文一样都没测。所以准确的结论是「在 in-domain 单任务 BC 上,冻结 patch feature + 轻量 policy 打得过微调后的 VLA」,而不是 VLA 这条路线不划算。
-
Zero-shot 那组实验是在自己的前作上比自己。 CAP 是二作的论文,数据集、benchmark、被比的 checkpoint 全是 CAP 的。这不是问题(本来就该和自己最强的前作比),但值得注意的是这组增益是全文最小的:EgoGym +3.7 / +3.5 / +5.9 个点,真机 pickup +8 个点(p ≈ 0.13)。也就是说,一旦离开「小数据 in-domain 精确操作」这个甜区、进入大规模数据 + 泛化的场景,patch feature 的优势就明显收窄了——这可能是全文最重要但最被淡化的一个信号。
5.3 值得继续探讨的方向¶
-
KV cache + block-causal 的天然契合。 block-causal 意味着过去帧的 K/V 永远不会被后续 token 改变,所以推理时完全可以缓存复用,每步只算当前帧的 \(P\) 个 token。论文的 Limitations 只提了 FlashAttention,但 KV cache 才是这个 mask 结构送上门的免费午餐——理论上能把 VQ-BeT 变体的 10.99 ms 再砍掉接近 \((T-1)/T\)。
-
位置编码换成 2D + view + 时间的分解式。 现在是一条展平后的 1D learned PE,要同时编码(帧序号,视角编号,patch 的 2D 位置)三层结构。换成 factorized(2D RoPE for 空间 + learned temporal + learned view embedding)应该能提升样本效率,更重要的是能支持推理时改变视角数和输入分辨率——这对真机迭代(临时加一个相机)是刚需。
-
把 Table 6 的问题问对:到底是分辨率还是压缩器? 用非学习式降采样(average pooling over patch grid)、attention pooling、以及 token pruning(按 attention 分数选 top-k patch)三条路重做压缩 ablation。如果 top-k pruning 能在 64 token 下保住 0.65+,那结论就从「不能压」变成「不能用 conv 压」,工程含义完全不同。
-
加 proprio / F-T token 进同一个 block。 每帧的 block 里除了 patch token 再塞 1–2 个本体感受 token(关节角、夹爪开合、力矩),block-causal mask 不用改。这几乎是零成本的,而且能直接检验第 6 条批评——加了 proprio 之后
CLSbaseline 会不会追上来。 -
DP 的精度 + VQ-BeT 的延迟。 现在最好的两个点分居 Pareto 前沿两端(86.8% @ 446 ms vs 82.5% @ 11 ms)。用 flow matching / consistency distillation 把 DP head 蒸成 1–2 步,理论上能拿到 ~86% @ ~20 ms。这大概是这条线上最直接的下一篇。
-
Patch 数 vs 性能的 scaling law。 固定 compute 预算下,是「多帧少 patch」还是「少帧多 patch」更划算?现在的超参表里 window size 从 2 到 10 不等,但没有在固定 token 预算下做过这个权衡。对真机部署这是最实际的一个旋钮。
-
解冻最后几层 / LoRA。 论文自己列为 limitation。值得关注的具体问题是:一旦解冻,预计算特征的加速就没了,训练成本会从 6.5 GPU-hours 涨到什么量级?如果涨到 16 GPU-hours 以上,那「比 OpenVLA-OFT 便宜」的论证就同时失效了。
-
把语言注入同一个 block。 在每帧 block 里拼一段 frozen text encoder 的 token,就能做语言条件版本,然后在 LIBERO 全套(Spatial / Object / Goal / Long)上和 OpenVLA-OFT 正面比。这是把「我们不需要 VLA」这个 claim 真正证实或证伪的唯一办法。
-
增广的消融。 直接把「冻结预计算(无增广)」vs「冻结但在线编码(可增广)」跑一组对照,回答第 7 条。如果增广还能再涨几个点,那预计算这个加速就是有代价的,需要明码标价。
-
Cube 上到底发生了什么。 global feature 0.23 / 2.0 vs patch 1.73 / 2.0 是全文最极端的差距,值得单独做一次可视化分析(attention map、探针分类 block 位置)。搞清楚
CLStoken 到底丢了什么,比再刷一个 benchmark 更有价值。
参考资源¶
- 论文 PDF: paper.pdf
- LaTeX 源码: source/
- 项目页 / 视频: https://patch-policy.github.io
- 关键 baseline / 相关论文:
- DINO-WM — Zhou, Pan, LeCun, Pinto, DINO World Model(本文 block-causal trunk 的直接来源,同一作/末作)
- DynaMo — Cui, Pan, Iyer, Haldar, Pinto, In-Domain Dynamics Pretraining for Visuo-Motor Control, arXiv:2409.12192
- CAP — Cui et al., Contact-Anchored Policies: Contact Conditioning Creates Strong Robot Utility Models(附录 zero-shot 实验的数据与 baseline)
- VQ-BeT — Lee, Wang, Etukuru, Kim, Shafiullah, Pinto, Behavior Generation with Latent Actions, arXiv:2403.03181
- Diffusion Policy — Chi et al.
- ACT — Zhao et al., Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware
- OpenVLA-OFT — Kim, Finn, Liang, Fine-Tuning Vision-Language-Action Models: Optimizing Speed and Success, arXiv:2502.19645
- WebSSL — Fan et al., Scaling Language-Free Visual Representation Learning, arXiv:2504.01017
- OGBench — Park, Frans, Eysenbach, Levine, arXiv:2410.20092
- Dense Policy — Su et al., ICCV 2025(另一条 dense action 表征路线,本文引了但没比)