Hana's Blog
DreamVLA 论文精读:让机器人先“做梦”再行动Blur image
Arxiv ID 2507.04447
幻觉翻译 2507.04447
publication pending

DreamVLA 不再重建完整未来图像,而是预测动态区域、深度和语义等紧凑世界知识,再用结构化注意力和 Diffusion Transformer 将预测转成动作。

推荐指数:

1. 论文概述#

【Paper】 DreamVLA 的核心问题是:VLA 需要“向前看”,但直接生成未来 RGB 帧既昂贵又包含大量与动作无关的背景。论文把视觉-语言-动作推理改写成一个逆动力学问题:模型先从当前观测形成未来的 world embedding,再用该表示预测动作序列。

DreamVLA framework overview from paper Figure 2

一句话总结#

【Analysis】 DreamVLA 让策略先预测“下一步哪些区域会动、空间几何会怎样、哪些语义仍然重要”,再把这些抽象的未来知识交给动作扩散模型;它预测的是对控制有用的未来,而不是像素本身。

核心贡献#

【Paper】 论文贡献可以拆成四点:

  1. 用动态区域(dynamic region)、单目深度(depth)和 DINOv2/SAM 语义特征组成 comprehensive world knowledge forecasting。
  2. 将三类 <dream> query 分开,并使用 block-wise structured attention 阻止它们互相读取,减少跨模态信息泄漏。
  3. 用 denoising Diffusion Transformer(DiT)从 <action> query 的 latent 中生成多步连续动作,形成 perception–prediction–action loop。
  4. 在 CALVIN、LIBERO 和 Franka 真实机器人上验证,CALVIN ABC-D 平均完成长度为 4.44,真实任务成功率为 76.7%。

2. 背景与相关工作#

【Paper】 直接回归动作的 VLA 通常只学习当前观测到动作的映射,缺少显式的 look-ahead reasoning。另一类方法借助视频或图像生成器预测未来画面,但整帧预测有两个问题:背景像素带来冗余监督,生成结果未必包含“哪个物体将移动”这样的控制关键量。

【Analysis】 DreamVLA 处在两条路线之间:它保留统一 Transformer 的多模态融合,却把未来预测目标改成结构化知识;同时,DiT 不负责“想象画面”,只负责在 latent 条件下建模动作的条件分布。这样做把表示学习和控制解码的职责分开。

3. 问题定义#

【Paper】 在时间步 tt,输入包括语言指令 ll、当前 RGB 观测 oto_t 和本体状态 sts_t。统一模型 mathcalMmathcal{M} 通过 <dream> queries 生成未来世界表示:

wt+n=M(l,ot,st<dream>).\mathbf{w}_{t+n}=\mathcal{M}(l,o_t,s_t\mid\texttt{<dream>}).

随后预测未来知识 p^t+n=[f^t+n,d^t+n,c^t+n]\hat p_{t+n}=[\hat f_{t+n},\hat d_{t+n},\hat c_{t+n}],其中 ff 是动态区域,dd 是深度,cc 是语义特征;<action> query 则条件化 DiT 生成 nn 步动作 a^t:t+n1\hat a_{t:t+n-1}

【Code】 官方实现 models/dreamvla_model.py 的默认 action 维度为 7:6 维机械臂位姿增量加 1 维夹爪信号;action_pred_steps 决定动作 chunk 长度。模型还可选 RGB、depth、trajectory、DINO 和 SAM 预测头,训练参数通过 utils/arguments_utils.py 暴露。

要素DreamVLA 定义
ObservationRGB 图像、语言、6 维 arm state 与 2 维 gripper state
Vision encoder默认 MAE ViT;可切换 DINOv2 + SigLIP 特征
Multimodal fusionCLIP text projector、Perceiver Resampler、GPT-2 风格 Transformer
World knowledge动态区域、深度、DINOv2/SAM 语义特征
Action representation连续 7 维 action chunk
Action decoderMLP 或 DiT;论文主方法使用 Diffusion Transformer
Robot / datasetsCALVIN、LIBERO、DROID 预训练与 Franka 真实任务

4. 方法#

4.1 Overall Architecture#

【Paper】 三类输入先经过 modality-specific encoder,再与三组 <dream> query 和 <action> query 拼接到 GPT-2 风格的统一 Transformer。动态、深度、语义 query 分别产出对应的 world knowledge;action query 汇总当前与未来 latent,交给 DiT。

【Analysis】 数据流可以压缩成一句话:language + RGB + proprioception → world embedding → dynamic/depth/semantic prediction → action embedding → diffusion action chunk。完整训练和推理步骤分别放在 4.4 与 4.5,避免把同一条流水线重复描述。

4.2 核心模块#

(1) 多模态编码与 query#

【Paper】 语言由 CLIP text embedding 投影;视觉帧由 MAE 获得 patch 表示并经过 Perceiver Resampler 压缩;proprioception 由线性层编码。每个时间步附加可学习 query:dynamic、depth、semantic 三类 <dream> query,以及动作 query。

【Code】 DreamVLA.__init__num_resampler_query 默认是 9;不同知识头默认各自拥有两组 query(当前/未来 token),share_query=True 时才共享表示空间。代码同时定义 arm_state_encodergripper_state_encoder 与对应的 action projector,因此 proprioception 并非论文摘要中可忽略的附加输入。

(2) Dynamic-region forecasting#

【Paper】 CoTracker 从演示视频提取随末端执行器或可动物体移动的区域,目标是预测“哪里会变”,而不是回归完整 optical flow 或未来 RGB。动态区域重建损失采用 masked reconstruction / ELBO 形式。

Dynamic-region target from paper Figure 3

【Analysis】 二值区域比稠密 flow 更贴近控制接口:策略只需知道动作相关区域,不必拟合每个背景像素的精确速度。消融实验中移除 dynamic-region 信号造成的性能下降最大,也支持了这个取舍。

(3) Depth 与 semantic forecasting#

【Paper】 depth query 预测未来单目深度;有深度传感器时使用标注,没有时以 Depth-Anything 作为 teacher。semantic query 预测未来 DINOv2 和 SAM 特征,用对比学习保持目标区域的语义辨识度。

【Code】 对应实现是可选的 depth_decoderdino_feat_decodersam_feat_decoder。这些 decoder 都是两层 ViT Block 加线性预测层;推理时可只保留 latent,不必执行像素级 decoder,从而降低延迟。代码还提供 use_dpt_head,用 Depth Anything V2 的 DPT head 输出深度图。

(4) Block-wise structured attention#

Structured attention from paper Figure 4

【Paper】 每个 <dream> 子 query 可以读共享的图像、语言和状态 token,却不能直接读取另外两类 <dream> query;<action> query 也遵循时间因果约束。这样 dynamic 的高频运动细节不会污染 depth,semantic 也不会反向泄漏到 motion 表示。

【Code】 generate_attention_mask 构造显式的 -\infty mask。函数按时间步分块,禁止未来块被当前块读取,并将 observation/action prediction token 与上下文 token 的可见边界单独设置;这比普通 causal mask 更具体,是论文结构化注意力在实现中的直接落点。

(5) Diffusion Transformer action head#

【Paper】 action query 得到的 latent 与 world embedding 处于同一空间。论文认为简单 MLP 难以把共享 latent 中的感知预测信息转成多模态动作,因此使用 DiT 迭代去噪,将高斯噪声变成物理上连贯的动作序列。

【Code】 models/action_model/action_model.py 提供 DiT-S/B/L 三种规模;ActionModel.loss 随机采样扩散时间步,对动作 chunk 加噪并以噪声 MSE 训练。推理通过 create_ddim(ddim_step=10) 使用 DDIM 采样。仓库也保留 ActionModelFM 的 flow-matching 变体,但论文主实验描述的是 diffusion 版本。

4.3 关键公式#

世界知识预测#

p^t+n=P(wt+n)=[f^t+n,d^t+n,c^t+n].\hat p_{t+n}=\mathcal P(\mathbf w_{t+n})=[\hat f_{t+n},\hat d_{t+n},\hat c_{t+n}].

【Paper】 P\mathcal P 是三类轻量预测头的集合;f^\hat f 标记未来动态区域,d^\hat d 编码几何,c^\hat c 保存高层语义。这个分解把“未来”从像素空间改写成动作相关的结构化空间。

深度损失#

Ldepth=1HWi,j(d^(i,j)αd(i,j))2,α=i,jd^(i,j)d(i,j)i,j(d(i,j))2.\mathcal L_{depth}=\frac1{HW}\sum_{i,j}(\hat d^{(i,j)}-\alpha d^{(i,j)})^2, \quad \alpha=\frac{\sum_{i,j}\hat d^{(i,j)}d^{(i,j)}}{\sum_{i,j}(d^{(i,j)})^2}.

【Paper】 α\alpha 消除单目深度的全局尺度不确定性,因此监督重点是相对深度关系,而非绝对米制尺度。

语义 InfoNCE#

Lsem=logexp(c^t+nct+n/τ)kexp(c^t+nck/τ).\mathcal L_{sem}=-\log\frac{\exp(\hat c_{t+n}^{\top}c_{t+n}/\tau)}{\sum_k\exp(\hat c_{t+n}^{\top}c_k/\tau)}.

【Paper】 正样本是同一未来位置的特征,空间错位特征作为负样本,τ\tau 是温度系数。

DiT 去噪目标#

LDiT=Eτ,ϵϵϵθ(αˉτa+1αˉτϵ,τ,c)22.\mathcal L_{DiT}=\mathbb E_{\tau,\epsilon}\left\|\epsilon-\epsilon_\theta(\sqrt{\bar\alpha_\tau}a+\sqrt{1-\bar\alpha_\tau}\epsilon,\tau,\mathbf c)\right\|_2^2.

【Paper】 aa 是真实动作 chunk,c\mathbf c 是 action latent,ϵθ\epsilon_\theta 预测加入的噪声;反向扩散因此可以从随机样本恢复多种可行动作。

4.4 Training#

【Paper】 训练同时优化动态区域、深度、语义和动作损失。论文报告使用 AdamW、初始学习率 10310^{-3}、weight decay 10410^{-4}、5% warm-up、batch size 64,并在 8 张 A800 上训练 20 epochs;损失权重为 λdyn=0.1\lambda_{dyn}=0.1λdepth=0.001\lambda_{depth}=0.001λsem=0.1\lambda_{sem}=0.1λDiT=1\lambda_{DiT}=1

【Code】 仓库的命令行默认值并不完全等同于论文配置(例如 learning_rate 默认 10410^{-4}weight_decay 默认 0.1),实际复现实验需要使用项目提供的配置覆盖这些默认值。代码支持 CALVIN、DROID、LIBERO 预训练/微调和 real finetune 数据加载器。

Algorithm 1 DreamVLA 训练
输入:
语言 ll、观测 oto_t、状态 sts_t、动作 chunk 与动态/深度/语义目标
输出:
训练后的多模态 backbone、知识预测头与 DiT policy
  1. 编码语言、RGB 和 proprioception,并拼接分类型 <dream><action> query。
  2. 使用 block-wise mask 通过 GPT-2 风格 Transformer,得到各 query 的 latent。
  3. 用动态区域、depth、DINO/SAM decoder 计算未来知识损失。
  4. 对动作 chunk 加噪,令 DiT 预测噪声并计算 diffusion MSE。
  5. 按损失权重求和,反向传播更新可训练模块,周期性保存验证成功率最高的 checkpoint。

4.5 Inference#

【Paper】 推理时模型输入当前观测和语言,先获得 world embedding,再由 action query 条件化 DiT。未来知识 decoder 可以跳过,因为 action latent 已经承载了预测结果;DiT 从高斯噪声开始反向扩散,输出动作 chunk,并执行其中的当前步动作。

【Code】 eval_utils_calvin.pyeval_utils_libero.py 调用模型得到 arm/gripper action,再将夹爪值阈值化为环境需要的离散信号。LIBERO evaluator 维护 all_time_actions,用指数权重融合重叠 chunk;CALVIN evaluator 也保留可选的 action ensemble 开关。

Algorithm 2 DreamVLA 推理
输入:
当前 RGB、语言指令、proprioception 与已加载 checkpoint
输出:
执行一个控制动作并更新环境
  1. 编码当前输入,通过结构化 attention 得到 action latent。
  2. 从高斯噪声初始化动作序列,运行 DDIM 反向扩散。
  3. 读取动作 chunk 的当前步,分离 6 维 arm command 与 gripper command。
  4. 按环境接口执行动作;必要时用重叠 chunk 的加权 ensemble 平滑下一步。

4.6 代码实现对照#

论文概念官方代码位置对照结论
统一 VLAmodels/dreamvla_model.py::DreamVLA统一 backbone 同时产出知识与动作 latent
结构化 attentiongenerate_attention_mask显式 block mask,时间块之间保持因果性
DiT action headmodels/action_model/action_model.pyDiT-S/B/L,默认 action dim=7
扩散损失ActionModel.loss随机 timestep + q_sample + noise MSE
数据与训练train.py, utils/data_utils.py支持 CALVIN/DROID/LIBERO/real/OXE 路径
推理与评估utils/eval_utils_calvin.py, utils/eval_utils_libero.pychunk 执行与可选 ensemble

【Analysis】 论文把“推理时跳过 decoder”描述成设计优势,而代码中是否启用某个 decoder 由 obs_preddepth_preddino_feat_predsam_feat_pred 等 flag 决定。因此复现时不能只看论文图,还要检查运行配置。

5. 实验#

5.1 Experimental Setup#

【Paper】 仿真部分使用 CALVIN ABC-D 和 LIBERO 四个 suite;真实实验使用 Franka Panda、两台 RealSense D415(第三视角和腕部视角),覆盖 pick、place 与抽屉开关。真实任务每个任务收集 100 条 demonstration,并与 Diffusion Policy、Octo-Base、OpenVLA 比较。

Real-world experiment from paper Figure 6

5.2 Main Results#

【Paper】 CALVIN ABC-D 结果如下,指标为每个连续任务长度的成功率和平均完成长度:

方法12345Avg. Len.
OpenVLA91.377.862.052.143.53.27
UNIVLA95.585.875.466.956.53.80
Seer96.391.686.180.374.04.28
VPP95.791.286.381.075.04.29
DreamVLA98.294.689.583.478.14.44

【Paper】 LIBERO 的平均成功率为 92.6%,在 Spatial/Object/Goal/Long 四个 suite 上分别为 97.5/94.0/89.5/89.5;真实 Franka 任务总体成功率为 76.7%。

Simulation results from paper Figure 7

5.3 Ablation Study#

Ablation results from paper Figure 8

【Paper】 消融回答了几个关键问题:

  • 只预测 dynamic region 的收益最大;单独预测 depth、DINO 或 SAM 可能因辅助损失噪声而低于 vanilla VLA。
  • 同时预测五类知识后,移除 dynamic region 的下降最明显;移除 DINO 甚至可能略有提升,因此后续配置偏向 SAM 语义。
  • 用完整未来知识预测优于只重建当前 RGB/depth/semantic 的 auxiliary task。
  • 由 CoTracker 生成 mask 比直接预测 optical flow 更稳健。
  • structured attention 优于 vanilla causal attention;每种知识使用独立 query 优于共享 query。
  • 每种 modality 使用 9 个 query 的效果优于 4 或 16 个,后者分别受容量不足或冗余竞争影响。

5.4 Generalization#

【Analysis】 DreamVLA 的泛化证据来自三种变化:CALVIN 的长时序组合、LIBERO 的空间/物体/目标/长程 suite,以及 Franka 的真实相机与物体变化。共同点是动作必须依赖未来状态而非单帧外观;动态区域提供的控制相关归纳偏置因此更可能跨场景复用。

6. 方法分析#

6.1 为什么有效?#

【Analysis】 方法有效的关键不是“多加三个预测头”,而是把预测目标和动作因果链对齐。dynamic mask 直接告诉策略哪些像素将参与交互,depth 约束可达空间,semantic feature 保留目标身份;DiT 再把这些互补信号转成多模态、时间连贯的 action chunk。结构化 attention 则防止辅助任务通过共享 latent 互相污染。

6.2 核心创新#

  1. 预测对象的创新:从整帧未来图像转向 comprehensive yet compact world knowledge。
  2. 信息路由的创新:三类 dream query 独立建模,并以 block mask 保持表示干净。
  3. 控制头的创新:用 latent-conditioned DiT 做逆动力学,而不是让语言模型回归动作。
  4. 系统层面的统一:训练与推理都经过 perception–prediction–action loop,不依赖推理时额外调用视频生成模型。

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

【Analysis】 与直接 VLA 的区别是“先形成未来状态再动作”;与视频/子目标图像方法的区别是“预测动作相关知识而非像素”;与单独 world model 的区别是“world embedding 和 action latent 在同一端到端 Transformer 中联合优化”。

6.4 关键假设#

  • 由 CoTracker 提取的动态区域能够稳定代表动作相关区域。
  • Depth-Anything 的 teacher 误差不会把错误几何写入 policy。
  • DINO/SAM 特征的空间对比关系足以表达任务语义。
  • 各类知识可以通过 query 分离而不损失必要的跨模态交互。
  • DiT 的条件 latent 包含足够信息,使推理时省略显式 decoder 仍能保持控制质量。

7. 局限性#

7.1 作者明确提出的局限#

【Paper】 论文指出未来工作仍需降低推理成本、探索更丰富的世界知识和更大规模真实机器人数据;现有系统依赖预训练特征提取器和离线标注流程,尚未覆盖开放环境中的所有动态因素。

7.2 自己分析得到的局限#

【Analysis】 首先,动态 mask 是二值摘要,可能丢失速度、方向和接触力信息;当两个物体都在运动时,mask 也不表达哪一个运动由当前指令引起。其次,深度与 DINO/SAM 的未来监督来自 teacher 或预提取特征,teacher 的时空对齐误差会进入表示。最后,structured mask 是人为先验:若某任务需要 motion 与 semantics 的细粒度互相解释,完全切断 query-to-query edge 可能反而限制表达能力。代码层面还存在较多配置开关,论文默认设置与 argparse 默认值不一致,复现门槛并不低。

8. 启发与研究思考#

【Analysis】 DreamVLA 给出的更一般结论是:机器人 world model 不一定要生成“看起来真实”的未来,而应生成“能改变决策”的未来。对后续研究,我认为有三条路线值得继续:

  1. 把 dynamic mask 升级为带方向和不确定性的 object-centric motion token,同时保持紧凑性。
  2. 让结构化 attention 从固定 block mask 变成可学习路由,在需要时允许 semantic→motion 的受控通信。
  3. 将 DiT 的多样轨迹与安全约束、碰撞预测或视觉触觉反馈联合起来,测试 world embedding 在分布外接触任务中的可靠性。
DreamVLA 论文精读:让机器人先“做梦”再行动
https://agusexp25.top/en/blog/paper-deep-dive-dreamvla
Author 菊花花
Published at August 26, 2026