

WARP-RM 论文精读:用时间扭曲学习相对进度奖励
精读 WARP-RM:通过 AR(1) 时间扭曲生成自监督进度标签,再用密集 signed progress 过滤和重加权行为克隆数据。
WARP-RM 用时间扭曲和回放反转生成无人工标注的 signed relative progress,再以动作 chunk 末帧的进度速度筛选并重加权行为克隆数据。
1. 论文概述#
【Paper】 《WARP-RM: A Warp-Augmented Relative Progress Reward Model for Data Curation》针对一个很实际的问题:人类遥操作数据越收集越多,却不可避免地混入停顿、犹豫、失败后恢复和局部重复修正。把这些片段全部等权交给 Behavior Cloning(BC),策略就会把“慢”和“卡住”也学进去;但按 episode 粗暴丢弃又会丢掉其中有价值的恢复动作。
WARP(Warp-Augmented Relative Progress)不要求人工标注子任务边界,而是把成功示教视频以连续变化的速度、随机方向和局部反转重新采样。模型学习的不是“当前帧位于任务的绝对百分之几”,而是一个局部的 signed progress velocity:正值表示向目标推进,接近零表示停滞,负值表示回退。随后 WARP-BC 把这个信号下沉到 action chunk 级别,用于过滤和重加权 BC 损失。
一句话总结#
【Analysis】 WARP-RM 的关键不是再训练一个更大的视觉模型,而是把“示教播放速度”变成自监督标签,从而获得比 episode 长度更细粒度的质量信号;WARP-BC 再把高进度片段变成更高的训练权重。
核心贡献#
【Paper】
- 提出 WARP 自监督算法:在成功示教上采样非均匀、带反转的时间轨迹,生成 signed relative progress 标签。
- 提出 WARP-RM:冻结 DINOv3 ViT-B/16,用双向 Transformer 预测每个窗口中每帧的累计相对进度。
- 提出 WARP-BC:把重叠窗口聚合成 dense frame-level velocity,并用 action chunk 末帧速度做门控与连续重加权。
- 在双臂 T-shirt folding、真实 bottle-in-bin 和 MuJoCo bottle-in-bin 上验证,显示在混合质量数据扩大时,WARP-BC 比 vanilla BC 更稳健。
论文报告的代表性结果是:T-shirt folding 的 D2 数据集上 WARP-BC 达到 19/20 成功,而 vanilla BC 只有 2/20;吞吐量从 1.5/h 提升到 27.4/h。这些数字来自论文 Table 1,不能外推成所有机器人或所有任务都能获得同样增益。
2. 背景与相关工作#
【Paper】 长时序模仿学习通常同时面对两个矛盾:
- 高质量片段稀缺,完全丢弃低质量 episode 会缩小数据覆盖并删除恢复行为;
- 低质量片段若不处理,BC 会模仿停顿和失败后的局部挣扎,导致 rollout 在训练分布的坏区域中循环。
已有数据筛选方法大致分三层:
| 粒度 | 典型做法 | 主要问题 |
|---|---|---|
| Dataset / episode | 用影响函数、互信息或 episode 长度保留整条轨迹 | 轨迹内好坏片段无法区分 |
| Frame / chunk | 学习 progress reward,再重加权 action chunk | 需要可靠的局部进度标签 |
| VLM / preference | 让视觉语言模型比较轨迹或判断语义里程碑 | 查询昂贵,时间分辨率通常较低 |
【Paper】 ReWiND、VIP、LIV 等工作大多把进度放在绝对时间轴上:归一化帧号或跨示教时间对齐可以作为简单监督,但长时序遥操作中,同一个归一化时间可能对应完全不同的状态。SARM、ARM 使用更细粒度的 reward model,却依赖人工标注的阶段边界或偏好数据。SCIZOR 也使用自监督的时间距离信号,但 WARP 进一步用 signed、局部、连续的相对速度给 action chunk 加权。
【Analysis】 WARP 的设计选择可以理解为把“任务进度”拆成两个更容易学习的因素:一是局部视觉变化是否沿着成功示教的方向发生,二是变化相对参考节奏有多快。它因此不需要先解决跨示教的全局时间对齐。
3. 问题定义#
【Paper】 一条成功示教由固定频率 RGB 观测序列组成:
给定一个长度为 的窗口,WARP 选择源帧索引 。索引可以递增、递减或在中间改变方向。模型输入是视觉特征 ,目标是窗口起点到每个位置的归一化累计位移:
任务不是直接输出机器人动作,而是为下游动作数据提供质量信号:
- Input / Observation:遥操作 RGB 视频;论文主实验使用单路视觉输入。
- Output:每帧 signed progress velocity ,以及由其积分得到的相对进度曲线。
- Action representation:下游策略使用约 1 秒 action chunks;WARP-RM 不改变动作维度。
- Robot / Embodiment:实体双臂 I2RT YAM;任务包括从随机皱缩状态折叠 T-shirt,以及将塑料瓶放入箱子。
- Dataset:成功示教用于训练 WARP-RM;政策数据按 episode 时长构造 D1/D2/D3 等质量 tier。
- Policy objective:带 WARP 权重的 flow-matching BC 损失。
这里的“reward”不是环境交互中由传感器得到的稀疏奖励,也不是带 value baseline 的严格 RL advantage。论文明确把 称为 advantage 的经验代理。
4. 方法#
4.1 Overall Architecture#

【Paper】 数据流可以压缩为一句话:32 帧 RGB 窗口 → 冻结 DINOv3 特征 → temporal-diff 拼接与线性投影 → 双向 Transformer → 每帧 30-bin relative-progress 分布 → 期望值、离散差分与重叠窗口平均得到 。
4.2 核心模块#
Time-Warp Sampler#

【Paper】 采样器首先在 log-space 生成平滑的速度序列。对每一步:
其中 控制相邻速度相关性,。令 ,再把它们缩放到从 到 的随机路径长度,得到非负的 forward displacement。
为产生回退信号,采样 个 reversal point,并在这些位置翻转后续速度符号;最后以 0.5 概率整体反转窗口。累积位移 后,索引为 。
为什么这样做? 独立地随机跳帧会产生不自然的速度抖动,模型可能学到采样伪影;AR(1) 让速度变化更像真实操作中的连续节奏。反向播放不是物理上严格的失败轨迹,却能提供负进度监督。
Frozen DINOv3 Vision Encoder#
【Paper】 每帧由冻结的 DINOv3 ViT-B/16 编码为 768 维特征 。冻结 backbone 将训练重点放在时序进度建模上,也避免在规模有限的机器人视频上更新大视觉模型。
Temporal-Diff Tokenizer#
【Paper】 第 个 token 为:
首帧差分置零。第一项描述当前外观,第二项显式提供局部变化方向;之后经线性层映射到 Transformer hidden dimension,并加入固定 sinusoidal positional embedding。
Bidirectional Transformer 与 Categorical Head#
【Paper】 Transformer 使用 12 层、8 heads 的双向 self-attention。每个位置输出 30 个相对进度 bin 的 logits,softmax 后用 bin center 的期望得到 。论文没有直接回归连续值,而采用 two-hot target:连续标签落在两个相邻 bin 之间时,按线性插值分配概率质量。
【Code】 当前仓库的 TransformerAggregator 保留上述 relative C51 head,同时还定义了可选的 absolute-progress head、三分类 sign head 和 completion head;这些辅助头是否参与训练由 ablation 配置决定。默认生产 recipe 是 no_abs,因此不能把代码中“定义了 absolute head”误读成“论文实验训练了 absolute head”。
Overlapping-Window Aggregation#
【Paper】 推理时用 canonical stride 的窗口滑过整段 episode。窗口内离散速度为:
一个源帧通常被多个窗口覆盖,所有覆盖该帧的预测取平均,得到 。正值对应 forward progress,零附近对应停滞,负值对应 regression。
4.3 关键公式#
Two-hot categorical loss#
设进度标签 落在相邻 bin center 之间,target 概率为:
【Analysis】 这相当于保留连续值信息,同时把优化变成分类问题。论文引用的动机是直接回归容易出现优化不稳定和容量利用不足;分类头还可以通过 bin 分布表达一定的不确定性。
WARP-BC weighting#
一个动作 chunk 的终点速度 被转成:
最终 BC 损失是:
其中 表示只保留高于参考专家节奏的 chunk;连续权重让速度更高的片段拥有更大梯度。 的 chunk 会在训练前被过滤,避免保留大量无效样本而只是把 batch 权重变成零。
4.4 Training#
【Paper】 WARP-RM 只在固定的高质量参考子集 上训练。T-shirt 实验中参考集是 1,950 条最短示教(≤59.8 s),用于定义 的 canonical pace。训练数据从成功 episode 中在线采样时间扭曲窗口;视觉 encoder 冻结,Transformer 和 progress head 更新。
论文主实验参数为 、源视频 30 Hz、窗口间 canonical stride s、、、、过滤阈值 。这些参数是论文实验设置,不应与代码后续 recipe 的所有默认值混用。
- for 从成功 episode 采样一条时间扭曲路径
- 用 AR(1) log-speed、随机路径长度和 Poisson reversals 生成
- 计算 ,并把连续标签编码为 two-hot bins
- 提取冻结 DINOv3 特征,拼接当前特征与 temporal difference
- 通过双向 Transformer 预测每个位置的 categorical distribution
- 最小化 relative-progress cross-entropy,更新 Transformer 与 head
- end for
- return WARP-RM checkpoint
4.5 Inference#
【Paper】 对一段未见过的 demonstration,模型在每个 source-frame offset 上建立重叠窗口;窗口内预测累计进度,作离散 temporal derivative,再把多窗口预测平均到每个 frame。动作 chunk 的末帧速度直接作为 WARP-BC 的 gate 与 weight。
- 按 canonical stride 构造覆盖 episode 的重叠窗口
- 对每个窗口预测 ,计算
- 对覆盖同一 source frame 的所有 求平均,得到 dense
- 对每个长度为 的 action chunk 读取终点速度
- 若 则丢弃,否则设置
- 使用 训练下游 policy
【Code】 当前仓库的 dense_inference_relative 会扫描每个 feature step,聚合窗口速度后 cumsum,并把累计曲线 min-max 归一化到 [0,1]。短 episode 若放不下完整 canonical window,会自动缩短 stride 并按比例 rescale velocity;这是工程上的稳健性处理,不是论文新增结论。
4.6 代码实现对照#
【Code】 官方仓库 uynitsuj/WARP-RM 提供训练、特征预计算、打分、可视化和 LeRobot parquet 注入脚本。核心对应关系如下:
| 论文概念 | 官方代码 | 实际行为 |
|---|---|---|
| 时间扭曲采样 | warp_rm/data/samplers.py | ARSampler 实现 AR(1) log-speed、path budget 和 reversals;仓库还提供 IID、ContinuousWarpSampler 等可插拔变体 |
| 相对累计标签 | warp_rm/data/labelers.py | RelativeCumulativeLabeler 输出窗口起点对齐的累计 displacement;另有 delta-velocity labeler |
| 视觉编码器 | warp_rm/models/backbones/dinov3.py | 通过 HuggingFace 加载冻结 facebook/dinov3-vitb16-pretrain-lvd1689m,输出 768 维 pooled feature |
| 时序模型 | warp_rm/models/aggregators/transformer.py | temporal diff → Linear → sinusoidal PE → bidirectional Transformer → C51 expectation |
| 训练损失 | warp_rm/core/loss.py | relative head 使用 soft-bin C51 CE;可选 absolute、sign、completion、smoothness auxiliary loss |
| 密集推理 | warp_rm/visualization/inference.py | 重叠窗口速度平均、积分、归一化;支持 relative 与 delta 两种标签模式 |
| 数据注入 | scripts/data/write_warp_rm_annotations.py | 写入 warp_rm_progress 与 warp_rm_signed_magnitude 到 LeRobot 数据副本 |
【Analysis】 论文把 WARP 描述成一个相对稳定的 AR(1) 采样器和 30-bin head,而当前公开代码已经演化成研究框架:sampler、labeler、融合方式、辅助头和数据布局都可替换。因此复现实验时必须锁定 commit、ablation、source_standard_stride、feature stride 和 retention threshold;直接运行仓库默认 recipe 不等于复现论文 Table 1。
5. 实验#
5.1 Experimental Setup#
【Paper】 论文包含三个设置:
- 真实 T-shirt folding:双臂 I2RT YAM,从随机皱缩的衣物开始,在 240 s 超时内完成抓取、铺平、折袖、对折两次并移到左上角;每个策略 20 次试验。
- 真实 bottle-in-bin:每次试验把 4 个塑料瓶放入箱子,20 次试验,共 80 个瓶子,单 trial 超时 90 s。
- 模拟 bottle-in-bin:MuJoCo-Warp 中每场景 6 个瓶子,128 个配对场景、60 s 超时,共 768 个瓶子;同一场景种子用于比较 vanilla BC 与 WARP-BC。
T-shirt 数据按 episode 时长分 tier:D1 ≤60 s(2,427 episodes,36.1 h)、D2 ≤90 s(4,124,71.3 h)、D3 ≤120 s(6,473,139.7 h)。更长 episode 被当作包含更多 hesitation、fumble 和 recovery 的混合质量数据。这里的长度只是实验用 proxy,不是 WARP-RM 的训练标签。
5.2 Main Results#
【Paper】 T-shirt folding 的跨 tier 结果:
| 方法 | 指标 | D1 | D2 | D3 |
|---|---|---|---|---|
| Vanilla BC | 成功 | 20/20 | 2/20 | 0/20 |
| Vanilla BC | 平均 TTC (s) | 113.8 | 199.0 | N/A |
| Vanilla BC | 吞吐 (/h) | 31.6 | 1.5 | 0.0 |
| WARP-BC | 成功 | 20/20 | 19/20 | 14/20 |
| WARP-BC | 平均 TTC (s) | 63.9 | 118.8 | 117.4 |
| WARP-BC | 吞吐 (/h) | 56.3 | 27.4 | 16.3 |
| WARP-BC | 保留 action chunks | 35.7% | 34.4% | 22.5% |

【Paper】 在加入人工标注数据的 matched comparison 中,D4 = D1 ∪ DA、D5 = D2 ∪ DA。D5 上 WARP-BC 仍为 19/20,而 SARM 和 SCIZOR 都降到 2/20;DemInf 达到 18/20,但吞吐只有 25.3/h,低于 WARP-BC 的 27.4/h。SARM 依赖人工阶段边界,不能被视为完全自监督基线。
真实 bottle-in-bin 结果为:
| 方法 | 放入瓶数 | 平均每瓶时间 (s) | 吞吐 (/h) | 保留 chunks |
|---|---|---|---|---|
| Vanilla BC | 59/80 | 15.9 | 147.8 | 100% |
| WARP-BC | 74/80 | 11.3 | 237.8 | 30.6% |

模拟 128 配对场景中,WARP-BC 放入 598/768 个瓶子,vanilla BC 为 509/768;每场景平均 4.67 对 3.98,平均每瓶时间 8.8 s 对 10.7 s,吞吐 301.3/h 对 243.0/h。论文报告配对检验均显著:瓶数 、时间 、吞吐 。

5.3 Ablation Study#
【Paper】 D2 上的关键消融:
| 组件 | 变体 | 成功 | 吞吐 (/h) | 保留 |
|---|---|---|---|---|
| Weighting | 3/20 | 2.3 | 97.0% | |
| Weighting | binary | 16/20 | 18.0 | 34.4% |
| Weighting | continuous | 19/20 | 27.4 | 34.4% |
| Aggregation | chunk mean | 15/20 | 17.4 | 34.0% |
| Aggregation | future-offset mean | 14/20 | 15.9 | 34.3% |
| Aggregation | terminal | 19/20 | 27.4 | 34.4% |
| Sampler | IID log-normal | 18/20 | 22.8 | 28.7% |
| Sampler | AR(1) | 19/20 | 27.4 | 34.4% |
【Analysis】 两个结果最能说明方法的实际创新:
- binary gate 与 continuous weight 保留相同数量 chunk,但连续权重明显更好,说明“保留哪些”之外,“保留片段之间如何分配梯度”同样重要。
- terminal velocity 优于 chunk mean。均值会让前半段短暂的高速进展掩盖后半段的回退;末帧 gate 更像在检查动作 chunk 的落点是否仍处于有效前沿。
5.4 Generalization#
【Paper】 从 T-shirt folding 到 bottle placement,WARP-BC 在真实和模拟环境都提升成功数量、执行速度与吞吐。模拟实验的配对设计和公开评估 artifact 让统计结论比 20 次实体试验更稳定。
【Code】 官方仓库进一步公开了 MuJoCo-Warp 的复现路径、n=128 scorer self-test 和 n=512 traces。README 中的 n=512 表格(4.533 vs 3.885 bottles/scene)与论文正文的 n=128 表格(4.67 vs 3.98)属于不同评估规模,不能混写成同一个实验结果。
6. 方法分析#
6.1 为什么有效?#
【Analysis】 WARP-BC 的收益可能来自三个互相配合的机制:
- 局部而非绝对监督:不要求不同示教在同一归一化时间走到同一子任务阶段,降低跨示教对齐噪声。
- 符号信息:正、零、负三种状态分别对应推进、停滞和回退,能识别“动作发生了但任务没有前进”的片段。
- 梯度预算重分配:把有限的 policy 更新集中到高进度 chunk,而不是平均拟合整个长尾数据集。
6.2 核心创新#
【Paper】 真正的新意是把 time warp 从视频表征学习中的 pretext task 变成 progress reward 的直接监督来源;再通过重叠窗口把窗口级预测变成 dense frame-level signal。
【Analysis】 WARP-BC 的另一处细节创新是终点速度门控。它不是寻找“整段 chunk 的平均质量”,而是优先保留能把策略状态推向更好区域的动作落点。
6.3 与已有方法的本质区别#
| 方法 | 监督形态 | 质量粒度 | 是否需要人工标注 |
|---|---|---|---|
| ReWiND | 绝对时间 / 语言引导 reward | frame | 否,但依赖绝对轴 |
| SARM / ARM | 阶段或 advantage reward | frame / chunk | 是或需要额外标注 |
| DemInf | episode 互信息 | episode | 否 |
| SCIZOR | 自监督时间距离 | frame / chunk | 否 |
| WARP | signed relative progress velocity | frame → chunk | 否 |
【Analysis】 WARP 不试图学习跨任务的语义 reward,也不直接估计 RL value。它牺牲了任务语义泛化,换取高频、低成本、对单一任务数据清晰的局部质量排序。
6.4 关键假设#
【Paper】 方法依赖以下假设:
- 成功示教中存在足够稳定的视觉进度线索;
- 变速重放与真实执行速度变化之间有可用的分布重叠;
- 最短示教可以作为 canonical pace 的近似参考;
- 选出的高进度 action chunk 仍覆盖策略需要的状态分布。
【Analysis】 最后一个假设尤其重要。若任务需要大量恢复动作才能覆盖危险状态,过强的 gate 可能把真正有价值的 recovery data 一起删掉。
7. 局限性#
7.1 作者明确提出的局限#
【Paper】 作者明确指出:
- WARP-BC 仍被限制在离线示教出现过的行为范围内,不能自动产生超出数据分布的新策略;未来可结合 DAgger、offline/online RL 和迭代式 self-improvement。
- 实验只覆盖两个真实操作任务、一个模拟任务和单一双臂 embodiment,跨机器人、跨任务泛化尚未验证。
- 负进度完全由反向播放近似得到。真实 regression 是沿正常因果时间向前发生的,而反向视频可能物理上不合理,存在 spatiotemporal distribution gap。
7.2 自己分析得到的局限#
【Analysis】
- 参考集选择会决定尺度:最短 episode 不一定是最有信息的 episode;如果最短数据存在过快操作或遗漏步骤, 的校准会偏移。
- 单目视觉可辨识性有限:遮挡、深度变化或接触力不足以由 RGB 判断时,模型可能把“画面变化”当作进度。
- 窗口与动作 chunk 的时间尺度耦合:论文用 1.5 s 窗口 stride 和约 1 s action chunk;换成不同控制频率或 action horizon, 不一定仍然合理。
- 过滤可能损害 recovery coverage:高进度片段更容易是专家的顺利路径,低进度片段中却可能包含策略部署时最需要的纠错动作。
- 实体试验样本量有限:20 次 trial 下 19/20 与 20/20 的差异可能仍处于二项抽样噪声,吞吐和 TTC 比单看 success 更有解释力。
- 工程实现持续演化:当前仓库加入了 delta label、连续 Beta-CDF sampler、多相机 fusion 和辅助 head;如果不锁定版本,复现实验数字会混入代码变化。
8. 启发与研究思考#
【Analysis】 WARP-RM 给数据中心机器人学习带来的启发,不是“所有数据都应该按 reward 加权”,而是:
- 先问标签是否真的可扩展:如果每增加一批示教就要人工标阶段,数据规模会被标注预算卡住;time warp 提供了一种把已有成功轨迹转换成 dense supervision 的路径。
- 局部信号可以比全局分数更实用:episode 总分适合排序数据集,action chunk 的末帧速度才直接对应策略训练的梯度入口。
- 质量模型要和下游目标一起评估:离线 reward correlation 更高,不保证 policy rollout 一定更好。官方复现实验也提醒,固定 retention budget、chunk 定义和 threshold 校准常常比孤立的 RM 指标更关键。
- 负样本的物理真实性值得继续研究:未来可以用真实失败 rollout、轻量级扰动或人类纠错片段替代纯 reverse playback,减少 synthetic negative 与真实 regression 的分布差异。
- WARP 可以成为更大系统的一个数据层:它不要求替换 π₀、Diffusion Policy 或 Flow Matching policy,只需在 LeRobot 数据中注入
warp_rm_signed_magnitude,就能把质量感知接到现有 BC pipeline。
如果把论文压缩成一个研究问题,就是:在不增加人工标注的前提下,能否把“示教中哪里真正推进了任务”变成可计算、可验证、可下游使用的训练信号? WARP-RM 给出的答案是肯定的,但它仍需要在更多 embodiment、更多失败模式和更长的在线闭环任务上接受检验。