Hana's Blog
LAPA 论文精读:从无动作标签视频学习 Vision-Language-Action 模型Blur image
Arxiv ID 2410.11758
幻觉翻译 2410.11758
publication pending

LAPA 先从无动作标签视频中学习离散 latent action,再让 VLM 预测 latent action,最后用少量机器人轨迹把它映射成真实动作;它在跨 embodiment 与真实机器人泛化上超过了动作标签预训练的强基线。

推荐指数:
Website

1. 论文概述#

【Paper】《Latent Action Pretraining from Videos》提出 LAPA(Latent Action Pretraining for general Action models)。它针对一个很现实的瓶颈:机器人视频往往只有昂贵的 teleoperation 才能得到 action label,而互联网上的大量人类操作视频只有图像和语言,没有机器人末端位姿、关节或力矩标签。

论文把“动作”拆成一个可从视频自监督学习的中间语言:先用两帧图像学习离散 latent action,再让 Vision-Language Model(VLM)根据当前图像和任务描述预测这个 latent action,最后只用少量带真实动作的机器人轨迹重新训练 action head,把 latent policy 迁移到可执行的机器人动作空间。

LAPA 从视频到机器人动作的三阶段问题设定(论文 Figure 1)

一句话总结#

【Paper】 LAPA 用 image delta → discrete latent action → robot action 的三级接口替代了“所有预训练视频都必须带机器人动作标签”,从而可以把机器人视频和人类操作视频放进同一个预训练框架。

核心贡献#

【Paper】

  1. 提出不依赖 ground-truth robot action 的 Latent Action Pretraining,并将训练拆成 Latent Action Quantization、Latent Pretraining 和 Action Finetuning 三个阶段。
  2. 用 VQ-VAE/NSVQ 从相邻帧的视觉变化中学习离散 codebook;latent action 不预先规定是 end-effector、joint 还是 torque,而是由视频中的观测变化决定粒度。
  3. 在 Language Table、SIMPLER 和 Franka 真实机器人上验证跨任务、跨环境、跨 embodiment 泛化;LAPA(Open-X)真实任务平均成功率达到 50.1%,高于 OpenVLA(Open-X)的 43.9%。
  4. 证明只用 Something-Something V2 人类操作视频也能带来正迁移:在真实机器人上平均成功率 34.0%,超过 OpenVLA(Bridge)的 30.8%。
  5. 【Paper】 LAPA(Open-X)预训练使用 8 张 H100、34 小时,作者估计相对 OpenVLA 约 30–40 倍更高效;这是训练效率的报告,不等同于总研究成本。

2. 背景与相关工作#

【Paper】 RT-1、RT-2、OpenVLA 等 VLA 通常把连续机器人动作离散成 token,然后用 next-token prediction 训练。这个范式在动作标签丰富时有效,但有两个规模限制:

  • teleoperation 产生动作标签的速度远低于互联网视频的增长速度;
  • 不同机器人、相机坐标系和控制频率有不同 action representation,直接混合标签会把 embodiment 差异带进策略输出空间。

已有的无标签视频路线大致分成三类:只预训练视觉表示、先生成未来视频再用 inverse dynamics model(IDM)恢复动作、或从人手姿态/轨迹中做 human-to-robot retargeting。【Paper】 LAPA 的区别是:它不把无标签视频只当作视觉预训练数据,也不要求先估计人手关键点,而是直接学习“当前观测到未来观测之间发生了什么”,再让 VLM 对这种变化做行为克隆。

【Analysis】 LAPA 的关键取舍是把动作监督从“物理坐标”后移到 fine-tuning 阶段。这样预训练阶段获得了更统一的接口,但 latent action 也可能混入相机运动、物体运动甚至视频剪辑造成的变化;因此它更像一个 environment-centric transition token,而不是天然等价于机器人控制量。

3. 问题定义#

【Paper】 给定视频中的当前帧 xtx_t、未来帧 xt+Hx_{t+H} 和语言任务描述 ll,LAPA 学习三种映射:

  1. Latent Action Quantization(LAQ)qϕ(xt,xt+H)ztq_\phi(x_t, x_{t+H}) \rightarrow z_t,把帧间变化编码成离散 latent action。
  2. Latent Policyπθ(xt,l)zt\pi_\theta(x_t,l) \rightarrow z_t,VLM 根据当前观察和任务描述预测 latent action。
  3. Action Finetuningπψ(xt,l)at\pi_\psi(x_t,l) \rightarrow a_t,用少量真实机器人动作标签训练新的 action head。

论文主实验的 latent code 默认是 s=4s=4 个 token、每个 token 来自大小为 C=8|C|=8 的 codebook,因此单个时间步的输出空间是 848^4;官方 README 也明确提醒,这个输出不是可以直接发送给机械臂的真实 action space。

【Paper】 主要 embodiment 与数据如下:

项目设置
语言与视觉输入当前 RGB 帧 + 视频/任务语言描述
真实动作fine-tuning 时为离散化的 delta end-effector action
仿真Language Table、SIMPLER
真实机器人7-DoF Franka Emika Panda
预训练来源Bridgev2、Open-X Embodiment、Something-Something V2
评测能力in-domain、cross-task、cross-environment、cross-embodiment、unseen object、unseen instruction

4. 方法#

4.1 Overall Architecture#

LAPA 三阶段总览:Latent Action Quantization、Latent Pretraining 和 Action Finetuning(论文 Figure 2)

【Paper】 整体数据流是:相邻视频帧先经过 LAQ encoder 得到离散 ztz_t;VLM 再以当前帧和语言描述为条件预测 ztz_t;fine-tuning 时替换 latent head,用带标签轨迹学习真实 action head。LAQ 的 decoder 还可以把 latent action 解码回下一帧,用于可视化和 neural closed-loop rollout。

4.2 核心模块#

Latent Action Quantization Model#

  • 输入:当前帧 xtx_t 与固定窗口 HH 后的帧 xt+Hx_{t+H}
  • 中间模块:两帧共享 patch embedding;encoder 先做 spatial Transformer,再做 temporal Transformer;差分表示进入 NSVQ codebook;decoder 用当前帧 token 通过 cross-attention 读取 latent action。
  • 输出:离散 latent token 序列 ztCsz_t \in C^s,以及重建帧 x^t+H\hat x_{t+H}
  • 为什么需要:直接把连续像素变化交给 VLM 难以生成;离散 codebook 把“动作词表”变成标准分类/next-token prediction 问题。

LAQ encoder-decoder 与 NSVQ codebook 的结构(论文 Figure 5)

【Paper】 论文对 GENIE 的改动包括:只使用当前帧和未来帧(不拼接更多历史帧),decoder 用 cross-attention 而不是简单相加 latent embedding,并采用只对两帧做输入的 C-ViViT 风格结构。【Code】 laq/laq_model/latent_action_quantization.py 中确实实现了 enc_spatial_transformerenc_temporal_transformer、带 context 的 dec_spatial_transformerNSVQlaq/laq_model/data.py 当前数据加载器按“每个轨迹目录包含多张帧图像”的 Something-Something V2 结构取随机起始帧和 offset 帧。

Latent Pretraining VLM#

  • 输入:当前图像、语言指令,以及 LAQ encoder 为视频帧生成的 latent token 标签。
  • 输出ss 个 codebook token。
  • 中间模块:以预训练 LWM-Chat-1M-Jax 7B 为 backbone,保留视觉 encoder,训练 language model,并接一个 vocab size 为 C|C| 的 latent action head。
  • 为什么需要:VLM 负责学习“任务语义 + 当前视觉状态 → 下一步视觉变化”,而不被某一种机器人坐标系绑定。

【Paper】 默认冻结 vision encoder、解冻 language model。【Code】 latent_pretraining/train.py--modality='vision,text,delta' 进入 latent 预训练分支,scripts/latent_pretrain_openx.sh 设置 delta_vocab_size=8n_tokens_per_delta=4、batch size 256、总步数 70,000。

Action Finetuning Head#

  • 输入:相同的图像与任务 prompt。
  • 输出:真实机器人 action token。
  • 做法:丢弃 latent action head,换成 action head;对连续 action 的每个维度做等频分箱(equal-frequency discretization),再用带动作标签的轨迹训练。
  • 关键取舍:作者尝试过保留 latent head、额外增加 latent-to-action decoder,但重新初始化 action head 的结果更好。【Analysis】 这说明 latent pretraining 主要把控制相关的视觉—语言表征写入 backbone,而不是要求 latent token 与最终物理动作一一对应。

4.3 关键公式#

VQ-VAE / NSVQ 量化#

设 encoder 产生连续差分表示 dtd_t,codebook 为 C={c1,,cC}C=\{c_1,\ldots,c_{|C|}\},量化结果为:

zt=argminckCdtck22z_t = \arg\min_{c_k\in C}\|d_t-c_k\|_2^2

其中 ztz_t 是被 VLM 预测的离散 token,ss 是 token 序列长度,C|C| 是每个位置可选的词表大小。【Paper】 NSVQ 用带归一化噪声的量化误差替换原始 VQ 误差,并在训练早期替换未使用 codebook,以降低 codebook collapse;decoder 的输入帧 patch embedding 使用 stop-gradient,避免表示塌缩。

重建目标#

LLAQ=Lrecon(xt+H,x^t+H)+LVQ/NSVQ\mathcal L_{LAQ}=\mathcal L_{recon}(x_{t+H},\hat x_{t+H})+\mathcal L_{VQ/NSVQ}

其中第一项要求 latent action 保留足以重建未来帧的视觉变化,第二项约束连续 embedding 与 codebook 的量化关系。论文没有把所有 NSVQ 实现项展开成一个统一闭式公式,具体权重以官方实现为准。

Latent Pretraining 交叉熵#

Llatent=i=1slogpθ(zt,ixt,l,zt,<i)\mathcal L_{latent}=-\sum_{i=1}^{s}\log p_\theta(z_{t,i}\mid x_t,l,z_{t,<i})

zt,iz_{t,i} 是第 ii 个 codebook token;pθp_\theta 来自 VLM 的 latent action head。这个目标本质上是 behavior cloning,只是监督信号从人工 action 换成 LAQ encoder 生成的 pseudo label。

Action Finetuning#

Laction=j=1Dlogpψ(at,jbinxt,l)\mathcal L_{action}=-\sum_{j=1}^{D}\log p_\psi(a_{t,j}^{bin}\mid x_t,l)

其中 DD 是机器人 action 维度,at,jbina_{t,j}^{bin} 是第 jj 维连续动作经过等频分箱后的类别。【Paper】 论文将动作离散化以匹配 OpenVLA/RT-1 风格的 action token 训练;真实值在部署时通过数据集统计量反量化。

4.4 Training#

【Paper】 训练是顺序进行的,而不是把真实 action 和 latent action 同时端到端学习:

  1. 在无动作标签视频上训练 LAQ,使其能从 xt,xt+Hx_t,x_{t+H} 产生稳定的离散 latent action。
  2. 用冻结的 LAQ encoder 给所有预训练帧打 latent label,训练 7B VLM 预测这些 token。
  3. 在小规模 action-labeled robot trajectories 上替换 latent head,训练真实 action head。

【Code】 官方命令把三个阶段分开:laq/train_sthv2.py 训练 LAQ;laq/inference_sthv2.py 生成 latent labels;scripts/latent_pretrain_openx.sh 以 LWM checkpoint 继续训练;scripts/finetune_real.shvision,action,delta modality 做机器人动作 fine-tuning。README 报告 Open-X latent pretraining 使用 8 张 H100、34 小时,batch size 256;真实 fine-tuning 脚本默认 4 张 GPU、2000 steps、batch size 128。

Algorithm 1 LAPA Training
输入:
无动作标签视频、少量带动作标签机器人轨迹、预训练 LWM-VLM
输出:
可预测 latent action 并能输出真实机器人动作的 LAPA VLA
  1. Stage 1

    从随机采样的 xt,xt+Hx_t,x_{t + H} 训练 LAQ,量化帧间差分并重建 xt+Hx_{t + H}

  2. Stage 2

    用训练好的 LAQ encoder 为预训练视频生成 ztz_t pseudo labels

  3. 输入 xtx_t 和语言指令 ll,用 VLM latent action head 预测 ztz_t,计算 token-level loss

  4. Stage 3

    丢弃 latent action head,在少量机器人轨迹上替换为真实 action head

  5. 对每个连续 action 维度等频分箱,计算 action token loss 并更新 backbone 与新 head

  6. return

    完成 latent pretraining 和 action finetuning 的 VLA checkpoint

4.5 Inference#

【Code】 官方 latent_pretraining/inference.py 的基础推理输入是一张 uint8 RGB 图像和自然语言指令,返回 latent action;README 明确指出该输出空间默认为 848^4,不能直接驱动机器人。完成 action fine-tuning 后,部署脚本再加载 action checkpoint 和数据集 action scale 文件,把 action token 反量化为真实 delta end-effector 动作。

【Paper】 论文还展示了一个不需要真实 action head 的 neural closed-loop:LAPA 预测 latent action,LAQ decoder 根据当前帧和该 latent action 生成下一帧,再把预测帧反馈给下一轮。这是世界模型式的定性验证,不是论文的真实机器人控制评测协议。

Algorithm 2 LAPA Inference
输入:
当前 RGB 帧 xtx_t、语言指令 ll、训练好的 LAPA checkpoint
输出:
真实机器人 action,或用于 rollout 的 latent action
  1. 将图像 resize/normalize,并按训练 prompt 模板拼接任务描述
  2. VLM 根据 xt,lx_t,l 自回归生成 ss 个 latent/action tokens
  3. 若是预训练模型,返回 ztz_t;若是 fine-tuned 模型,取 action head 的离散 action token

  4. 把 action token 按训练时的 q01/q99 或等频 bin 统计量反量化为连续动作

  5. 将当前动作交给机器人低层控制器;或把 xt,ztx_t,z_t 送入 LAQ decoder 生成下一帧并闭环迭代

  6. return 执行动作 / 神经 rollout 帧序列

4.6 代码实现对照#

【Code】

论文概念官方代码位置实际行为
LAQ encoder-decoderlaq/laq_model/latent_action_quantization.pyspatial + temporal Transformer 编码,NSVQ 量化,cross-attention decoder 重建未来帧
LAQ 数据laq/laq_model/data.py从轨迹目录中随机选帧,并按 offset 取未来帧;默认数据结构针对 Sthv2
Latent label 生成laq/inference_sthv2.py用训练好的量化模型为 jsonl 样本写入离散视觉/latent token
Latent VLM 训练latent_pretraining/train.pyvision,text,delta modality,delta vocab 默认 8
Robot action fine-tuningscripts/finetune_real.shvision,action,delta modality,action vocab 默认 256,读取预处理后的 jsonl
推理latent_pretraining/inference.py返回 latent action,不自动完成真实动作映射
部署latent_pretraining/deploy.py加载 fine-tuned checkpoint 与 action scale 文件,输出可执行动作

【Analysis】 代码和论文之间最容易误读的地方是“LAPA 是否已经是机器人 policy”:严格来说,latent-pretrained checkpoint 还是一个 latent policy;只有 action fine-tuning 后,输出才进入机器人的离散 action vocabulary。这个两阶段接口正是它能跨 embodiment 预训练的原因,也是部署时必须额外准备少量动作标签的原因。

5. 实验#

5.1 Experimental Setup#

LAPA 真实机器人实验的平均成功率对比(论文 Figure 4)

【Paper】 实验覆盖三类问题:

  • Language Table:2-DoF 推块仿真,测试 in-domain、cross-task 和 real-to-sim cross-environment。
  • SIMPLER:7-DoF WidowX 仿真,4 个任务;使用 100 条 fine-tuning trajectories,重点考察复杂动作空间下的迁移。
  • Real-world tabletop:7-DoF Franka,Pick <object> into SinkCover <object> with TowelKnock <object> Over 三类任务,每类 15 个物体、150 条轨迹;每个模型共 54 次 rollout,分别测试已见物体的新组合、未见物体、已见物体但未见指令。

比较方法包括只在下游训练的 Scratch、视频扩散 + IDM 的 UniPi、用 IDM 伪标签的 VPT、使用真实动作标签预训练的 ActionVLA,以及 OpenVLA。

5.2 Main Results#

【Paper】 Language Table 的平均成功率如下(%):

设置ScratchUniPiVPTLAPAActionVLA
In-domain / seen15.622.044.062.077.0
In-domain / unseen15.213.232.849.658.8
Cross-task / seen27.220.872.073.277.0
Cross-task / unseen22.416.060.854.858.8
Cross-env / seen15.613.618.033.664.8
Cross-env / unseen15.212.018.429.654.0

【Analysis】 LAPA 并非所有列都达到上限:在 cross-task unseen 上 VPT 更高,说明更准确的 IDM 伪标签仍然有价值。但 LAPA 在跨环境列的优势更明显,符合“latent action 不绑定某个具体 action coordinate system”的设计目标。

【Paper】 SIMPLER 的 Bridgev2 预训练平均成功率为:Scratch 34.4、UniPi 1.3、VPT 51.0、LAPA 57.3、ActionVLA 63.5、OpenVLA 36.4。LAPA 在没有使用 Bridgev2 action label 的前提下接近 ActionVLA,并显著超过其他无标签视频基线。

真实机器人结果的关键汇总:

预训练Seen object / unseen comboUnseen objectUnseen instruction平均
OpenVLA (Bridge)35.634.622.130.8
LAPA (Bridge)43.431.435.636.8
OpenVLA (Open-X)46.242.143.443.9
LAPA (Open-X)57.843.948.550.1
LAPA (Human Videos)36.537.428.134.0

【Paper】 LAPA(Open-X)在三种泛化设置都超过 OpenVLA(Open-X);但在 pick-and-place 的早期 grasping 上仍可能失败,OpenVLA 在该子任务更强。论文报告 LAPA 的 reaching performance 为 83.33%,高于 OpenVLA 的 66.67%。

5.3 Ablation Study#

LAPA 的模型规模、数据规模与 latent space scaling 消融(论文 Figure 7)

【Paper】 消融显示三类 scaling 都有收益:

  1. 增大 LAQ model 参数量,SIMPLER 成功率上升;
  2. 增加预训练数据比例,性能持续提升;
  3. 扩大 latent action 的 sequence length 或 vocabulary,通常能提高下游成绩。

但 latent space 的最佳形状取决于数据中的动作复杂度:Language Table 这类视觉简单、动作维度低的环境,扩大 vocabulary 比扩大 sequence length 更有效;对于更复杂的行为,增加 sequence length 才有更多表达空间。窗口 HH 过大时性能下降,因为 300M 规模的 LAQ 难以建模很大的视觉 delta。

5.4 Generalization#

不同离散 latent action 在视频重建中的语义对应关系(论文 Figure 8)

【Paper】 在 Language Table 中,不同 latent token 对应左/右、前/后等稳定移动方向;在 Something-Something V2 中,latent action 还会编码相机移动;在 Open-X 多 embodiment 数据上,相同 latent action 在不同机器人和环境中能诱导相似的视觉变化。

【Paper】 人类视频预训练并非只在仿真有效:LAPA(Sthv2)在 SIMPLER 平均成功率 52.1%,高于 UniPi 0.7%,也高于 VPT 45.8%;真实机器人平均 34.0%,说明“人类手部操作视频 → 机器人 manipulation prior”确实存在正迁移。

6. 方法分析#

6.1 为什么有效?#

【Analysis】 LAPA 的有效性可以拆成三个层面:

  1. 表示层:VQ codebook 把连续视觉变化压缩成可预测 token,让 VLM 能用成熟的 token prediction 学动作先验。
  2. 迁移层:latent action 主要描述“观测如何变化”,而不是 WidowX 或 Franka 的绝对关节坐标,因此跨 embodiment 时少了一层 action-space overfitting。
  3. 数据层:LAQ 只需要两帧,预训练数据从“有 action label 的机器人轨迹”扩展到任意带时间顺序的视频;视频规模和物体多样性直接转化为 policy 的先验。

6.2 核心创新#

【Paper】 真正的创新不是单独使用 VQ-VAE,也不是单独使用 VLM,而是把“从未来帧反推 latent action”和“根据任务预测 latent action”串成一个可 fine-tune 的接口。这个接口同时扮演 pseudo action label、跨 embodiment 中间表示和 world model control token 三个角色。

6.3 与已有方法的本质区别#

方法无标签视频如何变成监督是否绑定 embodiment预训练输出
UniPi生成未来视频,再用 IDM 解码动作IDM/动作解码器仍受数据集影响视频计划
VPT用动作标签训练 IDM,再给无标签视频打伪动作依赖 IDM 的 action space伪 action
ActionVLA直接使用真实 robot action label强绑定预训练 embodiment真实 action token
LAPALAQ 从帧间变化直接学习 codebooklatent space 更接近共享 transition spacelatent action token

6.4 关键假设#

【Analysis】 LAPA 至少依赖以下假设:

  • 相邻帧之间的视觉变化包含足够的任务相关动作信息;
  • 同一个 codebook 可以在不同 embodiment 中表示可迁移的 transition;
  • 少量 fine-tuning 数据足以把 latent policy 对齐到目标机器人的物理动作;
  • 视频中的语言描述与视觉变化大体对应,而不是完全由剪辑、相机运动或旁观者行为主导。

7. 局限性#

7.1 作者明确提出的局限#

【Paper】 作者明确指出:

  1. LAPA 在 fine-grained grasping 等精细运动上弱于直接 action pretraining,可能需要扩大 latent action generation space。
  2. 与其他 VLA 一样,真实机器人实时推理仍有 latency;作者建议未来采用更高频的小型 hierarchical action head。
  3. 虽然观察到 latent action 能表示相机运动,但论文尚未系统探索导航、自动驾驶或非 manipulation 场景。

7.2 自己分析得到的局限#

【Analysis】

  • LAQ 的监督是未来图像重建,因此一个 token 可能同时解释机械臂运动、物体运动、相机运动和遮挡变化,语义不一定是可执行 action。
  • 当前公开的 ImageVideoDataset 针对 Sthv2 目录结构,且随机采样轨迹目录而不是精确的 frame-level episode index;换数据集需要自行改 loader。
  • latent pretraining 与 action fine-tuning 是顺序训练,fine-tuning 会替换 latent head;如果目标机器人与预训练视频差异很大,少量标签可能不足以恢复接触动力学、抓取姿态和夹爪时序。
  • 论文的 real-world 结果使用 partial success criteria,平均分能够反映泛化趋势,但不能完全等价于端到端任务完成率。

8. 启发与研究思考#

【Analysis】 LAPA 给后续工作留下了三个清晰方向:

  1. 从 transition token 到 hierarchical action language:当前 848^4 latent space 对粗粒度移动有效,但抓取仍不够细。可以让高层 latent token 表示技能阶段,让低层 action decoder 负责接触和力控制。
  2. 把 camera-centric latent 与 robot-centric latent 分离:人类视频中的相机移动是有用信号,也可能是噪声。显式分解 object motion、camera motion 和 agent motion,可能让跨场景迁移更稳定。
  3. 利用 decoder 做 test-time planning:论文已经展示 latent policy + LAQ decoder 的 neural rollout。下一步可以采样多个 latent plan,用视觉目标判别器或语言评分器筛选,再执行最有希望的候选轨迹。
  4. 扩大到互联网视频前先解决数据质量:真正的 YouTube-scale 训练需要过滤剪辑、镜头切换、第三视角与手持相机运动,并构建语言描述与帧窗口的可靠对齐。

LAPA 最值得借鉴的并不是“把 action 离散成 8 个 codebook”,而是它重新定义了预训练的最小监督单位:只要视频能说明“状态发生了变化”,就可以先学习一个中间动作语言;物理可执行性则留到目标 embodiment 的小规模 fine-tuning 再解决。

LAPA 论文精读:从无动作标签视频学习 Vision-Language-Action 模型
https://agusexp25.top/en/blog/paper-deep-dive-lapa
Author 菊花花
Published at August 25, 2026