Hana's Blog
InternVLA-M1 论文精读:用空间先验连接 VLM 推理与机器人动作Blur image
Arxiv ID 2510.13778
幻觉翻译 2510.13778
publication pending

InternVLA-M1 把空间 grounding 作为 instructions 与动作之间的中间语言:先用 230 万条 box、point、trajectory 数据训练 Qwen2.5-VL,再用空间提示和 DiT Action Expert 联合学习,从而提升未见物体、布局、指令和长时程任务的泛化。

推荐指数:

1. 论文概述#

【Paper】 InternVLA-M1 的问题意识很直接:机器人要执行“把红色玩具放进盒子”时,VLM 需要知道的不只是“是什么”,还包括“在哪里”和“怎样移动”。论文把空间 grounding 设为 instruction 与 embodiment-specific action 之间的桥梁,提出一个双系统(dual-system)VLA:慢而可靠的 VLM Planner 负责空间推理,快而专门化的 DiT Actor 负责连续控制。

InternVLA-M1 teaser from paper Figure 1

一句话总结#

【Analysis】 这篇论文真正训练的不是“更大的动作头”,而是一种可迁移的空间中间表示:先让模型学会把语言落到 box、point 和 trajectory,再让动作专家读取这些空间先验,生成某个机器人能执行的 action chunk。

核心贡献#

【Paper】

  1. 提出空间引导的两阶段 recipe:spatial grounding pre-training 训练 VLM Planner,spatially guided action post-training 训练 VLA。
  2. 构建超过 3M 的多模态数据,其中超过 2.3M 条是 box、point、trajectory 等空间 reasoning 数据;另用 InternData-M1 生成 244K 个可验证的 pick-and-place episode。
  3. spatial prompting 显式激活 VLM 的空间能力,并用 co-training 同时优化语言理解与机器人动作。
  4. 在 SimplerEnv、LIBERO、大规模 200-task 仿真和真实 Franka/ARX LIFT2 任务上验证未见物体、未见布局、未见指令和长时程重规划能力。

【Code】 官方仓库同时发布 Qwen2.5-VL-3B、DiT Action Header、DINOv2、多视角推理、SimplerEnv/LIBERO/真实机器人接口,以及 Hugging Face checkpoint。

2. 背景与相关工作#

【Paper】 直接把 VLM 当作 Policy 通常有两个瓶颈。第一,文本 token 并不是连续控制的自然表示,离散化动作会损失精度;第二,机器人数据规模远小于互联网图文数据,模型容易学到局部 motor pattern,却没有学会绝对位置、相对关系、affordance 和轨迹等可迁移先验。

已有层级系统会用检测器、分割器或手工 planner 显式处理空间信息,但 rule-based 分解难以覆盖开放世界指令。另一类 VLA(如 OpenVLA、π0\pi_0、GR00T)直接从视觉和语言预测动作,端到端更简洁,却没有把空间推理作为独立训练目标。InternVLA-M1 的折中是:保持端到端联合优化,但在模型内部保留一个明确的 spatial prior 训练通道。

【Analysis】 因此它与普通“VLM + action head”的差别不在于多了一个 projector,而在于改变了监督信号的组织方式:grounding 数据不再只是预训练背景,而是和 action loss 一起约束共享的 Planner。

3. 问题定义#

【Paper】 给定多视角 RGB 观测 oto_t 与自然语言指令 ll,模型输出长度为 H=16H=16 的连续动作块:

π(ot,l)=(at,at+1,,at+H1),aiR7.\pi(o_t,l) = (a_t,a_{t+1},\ldots,a_{t+H-1}),\qquad a_i\in\mathbb{R}^{7}.

在主要设置中,7 维动作是末端执行器的平移增量、旋转增量和夹爪状态;具体控制空间会随 benchmark 使用 delta end-effector 或 delta joint space。论文使用单目/双目 RGB 输入,代码的公开 action demo 默认接收两个视角。

【Paper】 空间 grounding 任务则把图像和指令映射到 box、point、trajectory 或 QA 文本。点坐标归一化为绝对坐标,box 常以 [x1,y1,x2,y2] 的 JSON/XML 形式输出。

项目InternVLA-M1 设置
PlannerQwen2.5-VL-3B-Instruct
Action Expert86M Diffusion Policy/DiT(公开配置为 DiT-B)
额外视觉编码器DINOv2 ViT-S/14,约 21M 参数
总参数量约 4.1B
Action chunk16 步(当前动作 + 15 个 future actions)
主要数据3M+ 多模态数据、244K InternData-M1 仿真 episode
部署单张 RTX 4090,约 12GB;论文报告 VLM 约 10 FPS

【Code】 internvla_cotrain_oxe.yamlaction_dim 设为 7、future_action_window_size 设为 15、action_model_type 设为 DiT-B,并把 VLA 输入图像调整为 224×224。

4. 方法#

4.1 Overall Architecture#

InternVLA-M1 overall framework from paper Figure 2

【Paper】 Stage 1 只训练 VLM Planner,使其获得 embodiment-agnostic spatial prior;Stage 2 以 spatial prompt 激活这些先验,并把 Planner 的 latent planning tokens 交给 DiT Actor,联合学习“where to act”和“how to act”。

4.2 核心模块#

VLM Planner:空间先验的载体#

  • 输入:RGB 图像、任务指令,以及训练时附加的空间提示。
  • 输出:语言 head 的 grounding/QA 输出,以及供动作专家使用的 latent condition。
  • 作用:通过 Qwen2.5-VL 的视觉-语言融合,把“目标物、容器、相对位置、轨迹约束”编码成可迁移特征。

【Paper】 论文把 Planner 解释为 System 2:它不直接输出关节动作,而是先形成可靠的空间计划。空间提示的例子是“Identify all relevant toys and their spatial relationships to the container.”,模型不必把这段辅助思考显式回答出来,但它会改变条件特征。

DINOv2 视觉分支#

  • 输入:每个视角的 224×224 RGB 图像。
  • 输出:密集视觉 token,经线性层投影到 Qwen hidden size。
  • 为什么需要:Qwen2.5-VL 提供开放语义,DINOv2 补充对物体局部形状和空间细节更稳定的视觉表征。

【Code】 InternVLA/model/framework/M1.py 调用 prepare_dino_input 后把多视角 token reshape 成 [B, views×tokens, D],再经过 dino_pro 投影。这个显式 DINO 分支是代码实现中的关键细节,不能简化成“只用 Qwen 图像 token”。

Layerwise Q-Former:把 Planner 变成固定长度条件#

  • 输入:Qwen 最后若干层 hidden states 与 DINO token。
  • 中间模块:每一层用 cross-attention 更新 64 个 learnable query tokens。
  • 输出:固定长度的 action condition,维度与 DiT hidden size 对齐。
  • 为什么需要:VLM token 长度会随图像和文本变化,动作专家则更适合接收固定大小的条件序列。

【Code】 LayerwiseQFormer 先把 hidden states 投影到 768 维,再逐层 cross-attend;公开 OXE 配置只选 Qwen 的第 36 层(start_layer=36, end_layer=37),所以配置中的“layerwise”当前实际上是单层聚合。代码还定义了 scale_hook,但 forward 没有调用它,意味着配置里的 grad_scale: 0.5 在当前公开路径中不一定真正生效;这是论文叙述与仓库实现需要区分的地方。

DiT Action Expert:连续动作生成器#

  • 输入:带噪的 16×7 action sequence、diffusion timestep、Q-Former condition。
  • 输出:噪声预测 ϵ^\hat\epsilon,经反向扩散得到 normalized action chunk。
  • 作用:用 temporal self-attention 建模动作相关性,用 diffusion 表达同一场景下多个可行轨迹。

公开代码提供三种规模:

变体深度hidden/token sizeheads论文参数量
DiT-S6384413M
DiT-B127681289M
DiT-L24102416308M

【Analysis】 这里的“动作专家”不是把空间坐标直接硬编码到控制器,而是让 DiT 学会把空间条件转换为某个 embodiment 的连续运动分布;因此同一个 Planner 可以在下游换用不同 action dataset 和控制空间。

4.3 关键公式#

扩散动作目标#

前向过程把真实动作 a0a_0 加噪为:

at=αˉta0+1αˉtϵ,ϵN(0,I).a_t = \sqrt{\bar\alpha_t}a_0 + \sqrt{1-\bar\alpha_t}\epsilon, \qquad \epsilon\sim\mathcal{N}(0,I).

DiT 接收 (at,t,z)(a_t,t,z),其中 zz 是 Q-Former 输出的空间条件,并预测噪声:

Lact=Ea0,t,ϵ[ϵϵθ(at,t,z)22].\mathcal{L}_{\text{act}} = \mathbb{E}_{a_0,t,\epsilon} \left[\|\epsilon-\epsilon_\theta(a_t,t,z)\|_2^2\right].

【Code】 ActionModel.forward 随机采样 timestep 和 Gaussian noise,调用 q_sample 生成 ata_t,再由 DiT 预测噪声;loss() 就是逐元素 MSE,没有额外的 VLB 项。

双监督目标#

L=Lact+λvlmLvlm,\mathcal{L}=\mathcal{L}_{\text{act}}+\lambda_{\text{vlm}}\mathcal{L}_{\text{vlm}},

其中 Lvlm\mathcal{L}_{\text{vlm}} 是 grounding/QA 的 next-token prediction,λvlm\lambda_{\text{vlm}} 控制空间监督的相对权重。论文强调两个梯度在同一更新中聚合,以避免 Planner 和 Action Expert 完全割裂。

【Code】 train_internvla_cotrain.py 先对 VLA batch 调用 model.forward,再对 VLM batch 调用 qwen_vl_interface,分别 backward;OXE 配置中 vlm loss scale 为 0.1,并统一执行 gradient clipping 和 AdamW 更新。

4.4 Training#

【Paper】 训练分成两阶段:

  1. Spatial grounding pre-training:使用 General QA(约 637K)、Box QA(约 879K)、Trajectory QA(约 684K)和 Point QA(约 832K),合计超过 3M 样本,其中空间数据超过 2.3M。
  2. Spatially guided action post-training:在机器人 demonstration 上训练 DiT,并交替/联合采样 spatial grounding batch;空间提示把 instruction 改写为带有“定位关键物体/关系”的输入。

【Paper】 InternData-M1 的仿真引擎使用 14K 标注物体、211 张桌面、1.6K 纹理和 87 个 dome lights。规划、物理验证和渲染解耦:只有通过闭环执行和 scene-graph validator 的 episode 才会进入数据集。

Algorithm 1 Spatially guided co-training
输入:
空间 grounding batch、机器人轨迹 batch、预训练 Qwen2.5-VL 和 DiT Action Expert
输出:
联合优化后的 InternVLA-M1 policy
  1. 从 grounding dataloader 取图像-问题-答案样本,从 VLA dataloader 取多视角图像、指令和 16 步动作。
  2. 给 VLA 指令附加 spatial prompt;用 Qwen2.5-VL 与 DINOv2 提取多层/多视角特征。
  3. Layerwise Q-Former 将可变长度特征压缩成固定长度 condition,DiT 对动作加噪并预测噪声。
  4. 计算 Lact\mathcal{L}_{\text{act}},同时对 grounding batch 计算 Lvlm\mathcal{L}_{\text{vlm}},聚合梯度并更新 AdamW。

4.5 Inference#

【Code】 predict_action 将 instruction 转为小写,按训练分辨率处理每个视角,然后重复训练时的 Qwen+DINO+Q-Former 特征提取。动作从 Gaussian noise 开始,默认支持 DDIM;开启 cfg_scale > 1 时,代码把有条件与 null condition 拼接做 classifier-free guidance。README 的示例使用 cfg_scale=1.5、DDIM 10 steps。

真实机器人接口随后读取第一个 action,做 unnormalization,并可用 AdaptiveEnsembler 融合历史预测。代码中的 ensemble 是 cosine-similarity 加权,而不是简单的时间平均;LIBERO 接口则按 action chunk 逐步消费预测序列。

Algorithm 2 Spatially conditioned action inference
输入:
多视角 RGB、自然语言 instruction、已训练的 Planner/DiT
输出:
当前时刻应执行的 7D action
  1. 把图像和 instruction 编码为 Qwen hidden states,并用 DINOv2 提取密集视觉 token。
  2. 用 Q-Former 得到固定长度 spatial condition;从 Gaussian noise 初始化 16 步 action chunk。
  3. 运行 DDIM 反向扩散(可选 CFG)得到 normalized actions。
  4. 按 checkpoint 中的统计量反归一化,执行当前 action;将未消费的预测留给下一时刻的 chunking/ensemble。

4.6 代码实现对照#

论文描述官方代码对应需要注意的差异
Qwen2.5-VL PlannerInternVLA/model/modules/vlm/QWen2_5.py使用 Qwen2.5-VL-3B-Instruct 配置
空间 latent adaptormodel/modules/projector/QFormer.py公开配置只聚合第 36 层,并拼接 DINO token
DiT Actormodel/modules/action_model/DiTActionHeader.py默认 DiT-B,7D、16-step action chunk
双监督training/train_internvla_cotrain.pyaction 与 VLM batch 分开 forward/backward 后同一 optimizer step
空间提示config/training/*.yamlCoT_prompt默认 prompt 要求输出目标物 bounding box
梯度衰减配置有 grad_scale: 0.5scale_hook 当前未在 Q-Former forward 中调用,不能直接视为已生效
推理部署examples/real_robot/controller_dual.py支持 action unnormalization、chunking、ensemble 和 Franka 控制

5. 实验#

5.1 Experimental Setup#

【Paper】 实验覆盖四类场景:SimplerEnv 的 Google Robot/WidowX、LIBERO Franka、包含 200 个任务和 3K+ 物体的 Isaac Sim,以及真实 Franka Research 3 和 ARX LIFT2。SimplerEnv 主要测试视觉匹配、颜色/纹理变化和跨机器人泛化;LIBERO 测试 Spatial、Object、Goal 和 Long 四种语言条件任务。

InternVLA-M1 simulated instruction-following setup from paper

5.2 Main Results#

【Paper】 相对同一 Qwen2.5-VL-3B + DiT 的 Vanilla VLA,空间引导训练在 SimplerEnv 上带来明显提升:

BenchmarkVanilla VLAInternVLA-M1提升
Google Robot Visual Matching66.180.7+14.6
Google Robot Variant Aggregation63.576.0+12.5
WidowX Visual Matching54.771.7+17.0
LIBERO 平均91.695.9+4.3

论文还报告 InternVLA-M1 超过 GR00T N1.5 和 π0\pi_0 的公开结果;在 LIBERO-Spatial、Object、Goal、Long 上分别为 98.0%、99.0%、93.8% 和 92.6%。这些数字支持的不是“所有任务都更强”,而是空间变化和长时程任务的优势更明显。

5.3 Ablation Study#

InternVLA-M1 ablation on spatial grounding, manipulation and gradient similarity

【Paper】 去掉 spatial data 和 spatial prompt 后,RefCOCO-g grounding 很快退化,SimplerEnv-WidowX 收敛也更慢;加入 spatially guided action post-training 后,两条曲线同时改善。论文用 Projection-space Similarity 衡量两个任务的梯度子空间:普通 co-training 约为 0.25,空间引导方案约为 0.42。

【Analysis】 这项 ablation 说明空间提示不是推理时的装饰词,而是一个优化接口:它让 action loss 更容易沿着与 grounding loss 相容的表示方向更新。

5.4 Generalization#

InternVLA-M1 simulated and real-world generalization results

【Paper】 在 200-task 仿真中,加入 244K InternData-M1 mid-training 后平均提升 6.2%,并在 unseen objects、new backgrounds 和 paraphrased instructions 上稳定优于 π0\pi_0 与 GR00T N1.5。真实 clustered pick-and-place 中,sim-to-real co-training 对未见物体与新位置尤其有效,论文摘要报告未见物体/新配置最高提升 20.6%。

InternVLA-M1 real-world long-horizon results

长时程任务包括桌面分类、抽屉整理、三明治制作、数学按钮选择和按价格购物。【Paper】 Ours-3B 的 planner scheduling 成功率为 90/91/91/93/92,超过 GPT-5、Gemini-2.5 Pro、GPT-4o 和 Qwen2.5-VL-72B;在物理干扰和中途新增指令时,性能下降也更小。

6. 方法分析#

6.1 为什么有效?#

【Analysis】 有三个互补原因:

  1. Grounding 数据把“目标是什么、在哪里、与什么有关系”变成了显式监督,弥补机器人 demonstration 的稀疏性。
  2. Spatial prompt 把同一空间能力重新激活到 action context,避免 VLM 预训练知识在 post-training 中被动作梯度冲掉。
  3. DiT 在连续 action sequence 上建模分布,而不是让 VLM 逐 token 生成精细控制;这更适合多模态轨迹和时间相关性。

6.2 核心创新#

【Paper】 最有价值的创新是训练 recipe,而不是单个网络层:spatial prior → spatial prompt → action expert 形成了一条从 embodiment-agnostic 语义到 embodiment-aware 控制的路径。仿真引擎则把这条路径扩展到更丰富的物体、纹理和布局。

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

【Analysis】 普通 VLA 把视觉语言和动作看作同一个 prediction head 的不同输出;InternVLA-M1 把它们看作“共享空间表征 + 专门动作解码”的两个时间尺度。System 2 规划 latent condition,System 1 以 action chunk 高频执行;这比外挂一个完全独立的 task planner 更容易端到端训练,也比单一 policy 更容易保留通用视觉语言能力。

6.4 关键假设#

  • 【Paper】 空间 grounding 能跨 robot embodiment 迁移,动作专家只需学习平台相关的控制细节。
  • 【Analysis】 Q-Former condition 足以压缩 Planner 的空间状态;如果任务依赖长历史、接触力或精确 proprioception,这个瓶颈可能不成立。
  • 【Analysis】 仿真器的物体资产、相机标定和物理验证足够接近真实分布,否则 244K synthetic episodes 可能只是扩大了错误的先验。

7. 局限性#

7.1 作者明确提出的局限#

【Paper】 论文主要展示桌面抓取、放置、抽屉、三明治和按钮等任务;对移动机器人、双臂协同、力控和长时间持续任务没有系统评估。论文也没有给出完整的 failure taxonomy 或不同空间数据源的独立贡献分解。

7.2 自己分析得到的局限#

【Analysis】

  1. 论文声称的 gradient decay 与仓库实现存在不确定性:配置有 grad_scale,但公开 Q-Former forward 没有调用 scale_hook,复现实验者需要自行确认 checkpoint 的实际训练路径。
  2. 训练与评测大量依赖 224×224 图像和 16-step chunk;更高分辨率、小物体、遮挡和快速接触动作可能暴露感知或控制瓶颈。
  3. 公开代码把 action normalization statistics 保存在 checkpoint 中,跨数据集切换控制空间时必须正确加载对应 key;否则模型看似能输出动作,实际尺度会错误。
  4. 长时程实验展示了很强的结果,但每个任务的 teleoperation 数据和 subtask 标注成本仍然不低,距离完全自动化的数据闭环还有差距。

8. 启发与研究思考#

【Analysis】 InternVLA-M1 给出的启发是,VLA 的规模化不一定首先来自更大的 backbone,也可以来自更好的“中间监督”。值得继续验证的方向包括:

  • 用统一的 3D point/trajectory token 替代部分 2D box QA,让空间先验直接对齐深度和可达性。
  • 让 Q-Former 动态选择不同 VLM 层,而不是当前 OXE 配置固定只取第 36 层。
  • 将 gradient routing 从实验配置变成显式、可测试的模块,并报告不同衰减系数的 Pareto 曲线。
  • 用在线场景图和不确定性估计触发 re-planning,使 System 2 不只在长时程任务开始时工作。
  • 研究一个 Planner 迁移到多种 action expert、控制频率和 embodiment 的真正 zero-shot 边界。
InternVLA-M1 论文精读:用空间先验连接 VLM 推理与机器人动作
https://agusexp25.top/blog/paper-deep-dive-internvla-m1
Author 菊花花
Published at August 25, 2026