摘要
机器人策略常把一帧图像压缩成 CLS token 或全局平均池化向量,虽然计算方便,却容易丢失插孔、边缘、接触点等精细空间信息;直接使用 patch token 的视觉语言动作模型又往往背负数十亿参数。论文《Patch Policy: Efficient Embodied Control via Dense Visual Representations》提出一个更轻量的中间方案:冻结预训练 Vision Transformer,保留每帧的 dense patch features,并用 block-causal attention 接入 VQ-BeT 或 Diffusion Policy。论文作者报告称,该方法在四个模拟环境和三个真实机器人任务的综合评估中,相比全局池化表示策略取得 40% 相对提升;相较 fine-tuned OpenVLA-OFT 高 18%,参数量约为其 0.7%。本文重点拆解它为什么能在不引入完整 VLM 的情况下保留空间细节,以及这些数字在工程上应该怎样理解。
论文 :Patch Policy: Efficient Embodied Control via Dense Visual Representations
项目页 :Patch Policy Project
一、问题背景:全局向量为什么不够用
视觉 Transformer(Vision Transformer, ViT)本来就把图像切分成一组局部 patch,并在网络中形成空间分布的 token。问题在于,许多机器人策略并不直接消费这组局部特征,而是把它们进一步压成一个全局向量:
- CLS token:用一个特殊 token 概括整幅图像;
- 全局平均池化:对全部 patch 做平均;
- 动力学全局表示:例如 DynaMo 一类方法,将视觉信息压成适合策略输入的单个表示。
这类压缩对分类任务通常合理,但对机器人闭环控制存在直接风险。机械臂要把 barrel jack 插入端口时,真正决定动作成败的可能是毫米级的相对位置、接触状态和局部边缘,而不是"画面里有一根电缆"这一全局语义。全局池化把空间位置混进平均值后,策略头很难再恢复这些关系。
另一条路线是使用大型 Vision-Language-Action(VLA)模型。OpenVLA-OFT 等方法也能处理 dense features,但它们通常继承大语言模型主干的计算和参数成本。Patch Policy 的目标不是再训练一个更大的视觉模型,而是把预训练视觉表示和轻量策略头重新接起来。
二、核心方法:让策略直接看到 patch token
2.1 整体数据流
论文的技术链路可以概括为:多视角观测进入冻结的视觉编码器,产生每帧的 patch features;多个时间帧的 patch token 被展平后送入策略 Transformer;最后由动作头输出一段 action chunk。

图 1:Patch Policy 的输入---处理---输出链路。重点看中间的"冻结 ViT + patch token"路径:它不把每帧压成一个向量,而是把局部视觉表示直接交给策略 Transformer。来源:重绘自 design skill,依据论文 Fig. 2。
设时间窗口包含 T T T 帧,每帧视觉编码器输出 P P P 个 patch token,则视觉输入可以写成:
F ∈ R T × P × D \mathbf{F} \in \mathbb{R}^{T \times P \times D} F∈RT×P×D
其中 D D D 是 patch feature 的通道维度。实现上再把它展平为长度为 T × P T \times P T×P 的序列,并加入可学习的一维位置嵌入。这里的表达式是对论文张量形状和处理流程的形式化整理,论文正文没有把它作为单独编号公式给出。
策略头并不限定为某一种损失函数。论文实验使用了两类策略:
- VQ-BeT(Vector-Quantized Behavior Transformer):采用离散动作建模与回归相结合的策略头;
- Diffusion Policy:通过去噪目标生成动作序列。
因此,Patch Policy 更像一个策略架构扩展,而不是一个新的视觉预训练模型。
2.2 Block-causal attention 的关键取舍
如果把所有 patch token 直接拼起来使用普通因果注意力,同一帧内排在后面的 patch 就无法看到前面的 patch;如果使用完全双向注意力,又会破坏时间序列策略的因果性。论文采用 block-causal attention mask,把两种需求分开处理:
- 同一帧内部:patch 之间允许双向注意,保留空间关系;
- 不同时间帧之间:当前帧只能访问历史帧和当前帧,不能访问未来观测。

图 2:block-causal mask 的结构化解释。重点看绿色区域和灰色区域:空间维度上允许完整交互,时间维度上仍保持因果遮罩。来源:重绘自 design skill,依据论文方法章节。
论文推理阶段的细粒度调用链可以进一步抽象为:
#mermaid-svg-ccPI8yz0Uv2puvLe{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ccPI8yz0Uv2puvLe .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ccPI8yz0Uv2puvLe .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ccPI8yz0Uv2puvLe .error-icon{fill:#552222;}#mermaid-svg-ccPI8yz0Uv2puvLe .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ccPI8yz0Uv2puvLe .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ccPI8yz0Uv2puvLe .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ccPI8yz0Uv2puvLe .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ccPI8yz0Uv2puvLe .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ccPI8yz0Uv2puvLe .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ccPI8yz0Uv2puvLe .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ccPI8yz0Uv2puvLe .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ccPI8yz0Uv2puvLe .marker.cross{stroke:#333333;}#mermaid-svg-ccPI8yz0Uv2puvLe svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ccPI8yz0Uv2puvLe p{margin:0;}#mermaid-svg-ccPI8yz0Uv2puvLe .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ccPI8yz0Uv2puvLe .cluster-label text{fill:#333;}#mermaid-svg-ccPI8yz0Uv2puvLe .cluster-label span{color:#333;}#mermaid-svg-ccPI8yz0Uv2puvLe .cluster-label span p{background-color:transparent;}#mermaid-svg-ccPI8yz0Uv2puvLe .label text,#mermaid-svg-ccPI8yz0Uv2puvLe span{fill:#333;color:#333;}#mermaid-svg-ccPI8yz0Uv2puvLe .node rect,#mermaid-svg-ccPI8yz0Uv2puvLe .node circle,#mermaid-svg-ccPI8yz0Uv2puvLe .node ellipse,#mermaid-svg-ccPI8yz0Uv2puvLe .node polygon,#mermaid-svg-ccPI8yz0Uv2puvLe .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ccPI8yz0Uv2puvLe .rough-node .label text,#mermaid-svg-ccPI8yz0Uv2puvLe .node .label text,#mermaid-svg-ccPI8yz0Uv2puvLe .image-shape .label,#mermaid-svg-ccPI8yz0Uv2puvLe .icon-shape .label{text-anchor:middle;}#mermaid-svg-ccPI8yz0Uv2puvLe .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ccPI8yz0Uv2puvLe .rough-node .label,#mermaid-svg-ccPI8yz0Uv2puvLe .node .label,#mermaid-svg-ccPI8yz0Uv2puvLe .image-shape .label,#mermaid-svg-ccPI8yz0Uv2puvLe .icon-shape .label{text-align:center;}#mermaid-svg-ccPI8yz0Uv2puvLe .node.clickable{cursor:pointer;}#mermaid-svg-ccPI8yz0Uv2puvLe .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ccPI8yz0Uv2puvLe .arrowheadPath{fill:#333333;}#mermaid-svg-ccPI8yz0Uv2puvLe .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ccPI8yz0Uv2puvLe .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ccPI8yz0Uv2puvLe .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ccPI8yz0Uv2puvLe .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ccPI8yz0Uv2puvLe .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ccPI8yz0Uv2puvLe .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ccPI8yz0Uv2puvLe .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ccPI8yz0Uv2puvLe .cluster text{fill:#333;}#mermaid-svg-ccPI8yz0Uv2puvLe .cluster span{color:#333;}#mermaid-svg-ccPI8yz0Uv2puvLe div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ccPI8yz0Uv2puvLe .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ccPI8yz0Uv2puvLe rect.text{fill:none;stroke-width:0;}#mermaid-svg-ccPI8yz0Uv2puvLe .icon-shape,#mermaid-svg-ccPI8yz0Uv2puvLe .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ccPI8yz0Uv2puvLe .icon-shape p,#mermaid-svg-ccPI8yz0Uv2puvLe .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ccPI8yz0Uv2puvLe .icon-shape .label rect,#mermaid-svg-ccPI8yz0Uv2puvLe .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ccPI8yz0Uv2puvLe .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ccPI8yz0Uv2puvLe .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ccPI8yz0Uv2puvLe :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 当前多视角观测
冻结 ViT 提取 patch features
追加到长度为 T 的滚动上下文
展平为 T × P token 序列
应用 block-causal mask
策略 Transformer
VQ-BeT 或 Diffusion Policy
输出 action chunk
机械臂执行并获得下一帧观测
这条链路中的闭环重点是最后两步:动作并非一次性规划完毕,而是随着新观测不断追加上下文并重新推理。
用序列位置表示,若第 t t t 帧的 query 访问第 s s s 帧的 key,则注意力可用如下逻辑描述:
M t , s = { 0 , s ≤ t − ∞ , s > t M_{t,s} = \begin{cases} 0, & s \leq t \\ -\infty, & s > t \end{cases} Mt,s={0,−∞,s≤ts>t
但这个式子只描述帧级因果关系;在同一帧的 P P P 个 patch 内,mask 不再进一步施加单向限制。换句话说,真正的 mask 是"帧间因果、帧内双向"的块矩阵,而不是普通 GPT 式的逐 token 下三角矩阵。
这一步解决的是一个很具体的工程矛盾:策略需要时间因果性来避免训练和部署时偷看未来,但机器人动作又需要同一时刻的局部空间信息。例如插孔任务中,端口和插头的相对位置必须在同一观测内建立联系。
2.3 为什么冻结视觉编码器仍然有效
论文将视觉表示学习和策略学习拆开。DINOv2、WebSSL 等编码器保持冻结,训练资源集中在较小的策略部分。这样做有三个直接好处:
- 视觉 backbone 不需要随每个机器人任务重新训练;
- 策略训练参数量明显小于完整 VLA 微调;
- 可以随着视觉表征研究进展,替换更强的预训练编码器。
论文在表示对比中评估了五类视觉表示,并指出 DINOv2 与 WebSSL 在其任务上表现较好。需要注意,冻结并不意味着视觉特征天然适合所有机器人任务;它依赖 patch 表示本身已经包含足够的局部语义和几何线索。
三、实验设置与指标
3.1 四个模拟环境
模拟实验覆盖四个环境:Push-T、LIBERO Goal、BlockPush 和 Cube,动作空间从 2D 到 7D 不等。论文表 1 使用的指标并不完全相同:
| 环境 | 主要指标 | 含义 |
|---|---|---|
| Push-T | 最终空间覆盖率 | 绿色 T 形块对目标 T 形区域的覆盖程度 |
| LIBERO Goal | 总体成功率 | 完成目标条件任务的比例 |
| BlockPush | 平均正确放置数量 | 正确推到目标位置的方块平均数量 |
| Cube | 平均到达数量 | 到达目标位置的方块平均数量 |
在 WebSSL patch 配置下,VQ-BeT 在 Push-T、LIBERO Goal、BlockPush、Cube 上的结果为 0.68、0.94、1.68、1.68 ;Diffusion Policy 对应为 0.80、0.98、1.65、1.73。这些数值必须结合各自任务指标理解,不能把四列简单当作同一种成功率。
论文表 1 还比较了相同策略头配合全局表示的结果。例如 WebSSL Avg Pool + Diffusion Policy 在四个环境上为 0.79、0.98、1.34、0.21 ,而 WebSSL Patch + Diffusion Policy 为 0.80、0.98、1.65、1.73。这组对比更能隔离 patch features 本身的作用。
3.2 三个真实机器人任务
真实实验使用 7-DoF Franka 机械臂和并联夹爪,任务分别是:
- Cable Insertion:把电源线插入端口,端口容差约为 2 mm;
- Pen Collection:收集笔并放入收纳架;
- Tool Hanging:将工具挂到目标位置。
论文表 2 报告的是按阶段累计的成功率,共 20 次 trial ,不是单一的最终成功率。以 Cable Insertion 为例,Patch VQ-BeT 的"拿起电缆、插入端口、完全插入"成功率分别是 1.00、0.85、0.70 ;DINOv2 CLS VQ-BeT 为 1.00、0.70、0.60 ;OpenVLA-OFT 为 1.00、0.55、0.30。
这个阶段化指标很有价值:几乎所有方法都能完成初始抓取,差异主要出现在接触和精确对齐阶段。也就是说,Patch Policy 的优势更接近"精细闭环控制",而不是"看懂任务名称"。
四、与 OpenVLA-OFT 的效率对比
论文表 3 在单张 NVIDIA H200 GPU 上测量单次前向延迟。这里的 latency 是原始模型 forward pass 时间,不包含 action chunking 带来的额外时间优化。
| 方法 | 总参数量 | 可训练参数量 | 推理延迟 |
|---|---|---|---|
| Ours - VQ-BeT(DINOv2) | 51.55M | 29.49M | 10.99 ms |
| Ours - VQ-BeT(WebSSL) | 334.00M | 30.34M | 21.43 ms |
| Ours - Diffusion Policy(DINOv2) | 40.43M | 9.19M | 445.85 ms |
| OpenVLA-OFT | 7.61B | 177.90M | 61.71 ms |
| ACT | 83.85M | 83.85M | 8.63 ms |
这里有一个容易被摘要数字掩盖的细节:Patch Policy 的速度优势主要体现在 VQ-BeT 版本。DINOv2 VQ-BeT 的总参数量为 51.55M、延迟约 10.99 ms;Diffusion Policy 虽然总参数量更小,但其去噪过程的测量延迟约 445.85 ms。因此,部署到高频控制回路时,不能只看参数量,还要看动作头的推理机制。
摘要中"相较 OpenVLA-OFT 使用约 0.7% 参数量"是论文作者的总体报告,不能理解为所有 Patch Policy 配置都严格等于 0.7%。同样,"40% relative improvement"是四个模拟环境和三个真实任务的综合表述,也不意味着每个任务、每个阶段都提升 40%。
五、对比方法说明
论文的对比设计分成两层。
第一层是为了隔离视觉表示的作用:在相同的 VQ-BeT 或 Diffusion Policy 策略头上,分别接入 DynaMo 全局表示、ViT CLS token 和全局平均池化。这样比较的核心问题是:策略头不变时,保留 patch 空间结构是否带来收益。
第二层是与已有 patch/VLA 方法比较:
- ACT:使用从头训练的 ResNet-18 patch 特征,并通过 action chunking 与 temporal ensembling 处理动作序列;
- OpenVLA-OFT:在 Llama-2 7B 主干上微调,融合 DINOv2 与 SigLIP 的 patch features,并采用并行动作解码和 L1 action regression。
这种分组比单纯罗列 SOTA 更有说服力。前一组回答"patch 相比 global pooling 是否有用",后一组回答"轻量 patch policy 能否与更重的 patch/VLA 方法竞争"。
六、工程落地判断
6.1 适合的场景
Patch Policy 最适合以下类型的任务:
- 局部几何关系决定成败:插孔、挂接、接触式装配;
- 需要高频反应:策略必须在较短延迟内根据最新观测更新动作;
- 视觉 backbone 已经可用:团队希望复用 DINOv2、WebSSL 等预训练特征,而不是重新训练大模型;
- 任务数量多但单任务数据有限:把大规模视觉学习和小规模策略学习解耦,可以减少每个任务的训练成本。
6.2 不能忽略的代价
保留 patch token 并不是免费午餐。序列长度从 T T T 增加到 T × P T \times P T×P,Transformer 注意力计算和显存压力都会上升。论文通过轻量策略头和冻结视觉编码器控制成本,但部署者仍需根据输入分辨率、patch 数量和历史窗口长度做预算。
另外,论文主要证明了密集空间特征对其任务组合有效,并没有证明"patch 越多越好"。文中还进行 patch compression 和 attention mask ablation,说明 token 数量、mask 设计和策略头规模之间存在权衡。实际工程中可以优先尝试:降低输入分辨率、压缩空间 patch、缩短历史窗口,再观察精细接触任务是否出现明显退化。
小结
Patch Policy 的价值不在于把机器人策略做得更大,而在于把视觉信息的压缩位置往后推了一步:先使用冻结的预训练 ViT 提取局部 patch 表示,再让轻量策略 Transformer 自己决定哪些空间 token 对动作有用。block-causal mask 则把"同帧空间交互"和"跨帧时间因果"放进同一个注意力结构中。
我的判断是,这篇工作的核心贡献更接近一个实用的接口设计:预训练视觉表示负责提供丰富的局部信息,策略头负责把这些信息转化为任务动作。它对精细操作尤其有吸引力,但不能把摘要里的 40% 或 0.7% 脱离表格和硬件条件单独解读。真正落地时,VQ-BeT 与 Diffusion Policy 的延迟差异、patch 数量带来的序列开销,以及真实相机和机械臂的同步延迟,都可能比模型参数量更快成为瓶颈。
论文当前公开页面显示为 arXiv v1 ,提交日期是 2026 年 7 月 20 日;本文将结果表述为论文作者报告,不把它写成已经完成独立复现的定论。
参考资料
- arXiv:2607.18236 --- Patch Policy: Efficient Embodied Control via Dense Visual Representations
- Patch Policy 项目页
图源说明:本文使用论文 HTML 中的 teaser、method、环境与实验图片作为本地化阅读素材;两张主架构图依据论文方法章节重新绘制。论文原始图仅用于学习和技术说明。