先记住一句话

DualVLN 真正有价值的不是贴上双系统标签,而是同时设计了 spatial intermediate、latent bandwidth、progressive training 和 stale-plan-aware asynchronous execution。

slow VLM 读全局 context显式 pixel goal+latent plantimestamped shared statefast policy 高频执行progress 触发重规划
System 2image + instruction
Dual interfacepixel goal + latent
async
System 1observation + plan
Controlhigh-rate actions
progress
显式 goal 可验证,latent 提供额外语义带宽;异步执行必须处理 plan age 与 reference pose。

1. 完整数据流

instruction + RGB history + current RGB
    ↓ System 2: Qwen2.5-VL 7B, ~2 Hz
view-adjust action OR pixel goal text + 4 learnable <TRAJ> latents
    ↓
System 1: current/high-frequency RGB + old reference RGB + latent goal
    ↓ DiT / flow matching, ~30 Hz
32 smooth local waypoints → tracker / MPC → robot

2. System 2 为什么先“看”再“指”

若未来路线不在当前 FOV,模型先输出 Turn Left/Right 或 Look Up/Down 15°;看见后输出最远可见 trajectory point 的 2D 坐标;任务完成输出 STOP。训练 label 由 3D path、depth occlusion test 和图像投影自动构造。

3. Pixel goal 的显式价值

坐标为 VLM 提供可监督的 spatial bottleneck,能直观看 planner 指向哪里,也让 stage-1 先学会稳定的 navigation grounding。论文发现直接把两系统一阶段 joint train、取消显式中间目标,会令 diffusion 收敛慢并损害 VLM generalization。

4. 为什么还要 latent goal

坐标只给 2D 位置,不携带“为什么去那里”、landmark、进度或绕障偏好。模型在 pixel-goal 文本后插入 4 个 learnable <TRAJ> embeddings;冻结 VLM,只有 queries 通过 prompt tuning 学习从 instruction、历史、view-adjust 和坐标 context 中抽取 task-relevant hidden information。

5. System 1 如何接收 language

它不重新 tokenize 原始 instruction,而通过 latent goals 间接接收 System 2 压缩后的 vision-language context。低频 latents 与高频 RGB features 一起 condition DiT;后者使用 old S2 reference frame 和当前 frame 的 self-attention,再经 Q-Former 压成 32 tokens,帮助估计旧计划已执行到哪里。

6. Asynchronous training

训练刻意让 System 2 看延迟 observation,而 System 1 看最新 observation(InternVLA-N1 报告中随机 temporal offset),让 policy 学会在 planner 迟到时补偿。系统层面还需保存 reference frame/timestamp;否则只凭 latent 无法区分“尚未执行”和“已走过一半”。

7. 两阶段训练

  1. Stage 1:全量 fine-tune QwenVL,预测 turn/look、pixel coordinates、STOP;
  2. Stage 2:冻结 QwenVL,只训练 4 个 latent queries 和 DiT,用 flow-matching trajectory loss;
  3. 部署:两系统异步,local trajectory 持续刷新。

这种 progressive recipe 保住高层 grounding,同时把低层数据需求和 compute 隔离。

8. 论文报告的主要数字

设置R2R CE SR / SPLRxR CE SR / SPL
StreamVLN,single RGB56.9 / 51.952.9 / 46.0
DualVLN,single RGB64.3 / 58.561.4 / 51.8

这是论文同表 val-unseen 数字。VLN-PE unseen 的 zero-shot transfer 报 SR 51.60、SPL 42.49;真实部署报告 S2 KV-cache 后约 0.7 s,TensorRT S1 并行生成 32 trajectories 约 0.03 s。它们展示系统可行性,但 remote RTX 4090 与 benchmark 条件不能外推到所有 onboard robot。

9. 最重要的负面结果

Social-VLN 加入动态 humanoids 后,DualVLN SR 从 64.3 降到 37.2,HCR 35.4;StreamVLN 从 56.9 降到 31.4。双系统仍领先,但两者都大幅退化。这比静态 SOTA 更说明 open-world safety 尚未解决。

10. 局限与可复现问题

  • System 2 的 7B full fine-tuning 和大规模额外数据成本高;
  • pixel goal 仍有 depth ambiguity,错误方向/语义时 local policy 无法救;
  • learned latent 的含义和 failure certificate 不透明;
  • 远程 inference、odometry、MPC 是完整系统的一部分;
  • fixed 2 Hz 未必是每个环境的最优 trigger。

11. 四个 dual-interface 计算

例 1:slow/fast rate

Slow module 2 Hz、fast policy 30 Hz,一份 goal 平均服务 15 个 control actions。若 slow latency 400 ms,fast loop 期间还会先执行约 12 拍旧 plan。

例 2:pixel-goal geometry

640 px 宽图像,goal u=480、cx=320、fx=400,bearing=atan((480−320)/400)=21.8°。它可被几何检查,而 256D latent 单独无法直接说明朝向。

例 3:latent payload

256D BF16 latent 每次 512 bytes,在 2 Hz 下仅 1 KiB/s;但 controller 30 Hz 重复读取同一 buffer 15 次,所以必须原子更新 version/timestamp,避免读到半写状态。

例 4:stale reference correction

Planner 在 pose x=1.0 m 时给 local goal +2.0 m;返回时 robot 已到 x=1.4 m。若 goal 表示 world x=3.0,则剩余 1.6 m;若错误当新 local +2.0,会多走 0.4 m。

可迁移设计:

不要照搬 2 Hz/30 Hz,而要复用其原则:显式可验证 goal、隐式补充通道、reference timestamp、executor progress estimation 和 graceful fallback。

自测

1. latent queries 为什么优于直接拿 pixel token hidden state?

queries 可由 trajectory loss 主动学习从完整 context 中提取对 executor 有用的信息,而不是被动消费固定的最后层表示。

2. 为什么同时输入 old reference 和 current RGB?

System 1 需要推断低频计划生成后环境/机器人已经变化多少,补偿 asynchronous staleness。

3. Social-VLN 结果提醒什么?

静态 benchmark 的高 SR 不代表动态人群中的安全与恢复;dual-system 仍需 uncertainty、预测和更强闭环评测。

一手资料

核心依据为 ICLR 2026 DualVLN 全文;开源模型/数据与 earlier recipe 见 InternVLA-N1 项目页。文中数字均按原文 split 和传感器条件列出。