一句话定位

NoMaD 用一个「带目标掩码(goal masking)的扩散策略」把两件过去要靠两套模型完成的事——给定目标图像的定向导航无目标的自主探索——合并进同一个 19M 参数的视觉导航模型:ViNT Transformer 编码观测(可选目标图)成上下文向量,一个二值掩码决定是否让策略「看见」目标 token,再由条件扩散头对未来动作序列去噪。在未见环境的探索任务上比当时 SOTA(ViNT + 图像扩散子目标,335M)成功率高 25% 且碰撞更少,模型却小 15×、能直接跑在 Jetson Orin 上(ICRA 2024 最佳论文奖)。

背景与定位

论文攻击的是移动机器人导航里一个长期被拆成两半的问题:任务导向导航(robot 已知道目标在哪,走过去)和任务无关探索(在陌生环境里四处搜寻,直到找到目标)。传统做法用两套机制:高层规划 / 层级强化学习 / 生成式子目标提议模型各管一段,工程复杂且需要任务专用机制。NoMaD 的立意是——能不能用一个高表达力的策略同时表示「有目标」和「无目标」两种行为,把无目标行为当探索、遇到目标再切换到定向行为?

方法建立在作者团队自己的一条导航模型谱系上:GNM(2022,跨本体通用导航策略)→ ViNT(2023,视觉导航基础模型,用 EfficientNet + Transformer 做目标条件策略)→ NoMaD(本文,给 ViNT 加掩码 + 扩散头)。最直接的对照是 ViNT 系统:ViNT 本身只能做目标条件导航,探索时要外挂一个 300M 的图像扩散子目标提议模型(先生成候选子目标图,再用目标策略去追)。NoMaD 换了个用法——不去生成高维子目标图像,而是直接用扩散建模动作分布,因此参数少 15×、可上边缘算力。

动作建模上,NoMaD 直接继承 Diffusion Policy(Chi 2023)的「以观测为条件、对整段未来动作去噪」范式,并首次把它扩展成同时支持目标条件和无目标两种模式的策略;扩散骨架来自 DDPM(Ho 2020),噪声调度沿用 iDDPM 的平方余弦调度。相比之下,用离散化动作做自回归(如 BeT 类)或隐式策略 IBC 建多模态动作分布,作者在实验里证明它们要么坍缩成单峰、要么部署时抖动。长时程探索的高层框架沿用 ViKiNG:把学到的短时程策略配一张在线构建的拓扑图(topological graph) episodic memory,用 frontier-based exploration 在图上向未探索区域推进。这套「策略是新的、高层拓扑图 + frontier 规划照搬 ViKiNG」的组合,是理解 NoMaD 系统边界的关键。

范式命名:作者称之为 Navigation with Goal Masked Diffusion(NoMaD)——「首个成功的目标条件动作扩散模型」,也是「首个把任务无关与任务导向行为统一、并部署到真实机器人上」的模型。

模型架构

总体数据流:策略 π 取机器人当前+过去的 RGB 观测 o_t := o_{t-P:t},输出未来动作分布 a_t := a_{t:t+H};可选地接收一张目标图 o_g。二值掩码 m 决定是否条件于目标 → 上下文向量 c_t → 扩散头对动作序列去噪。

ViNT 观测编码骨干(backbone)

  • EfficientNet-B0 编码器 ψ 独立编码每一帧观测图 o_i;另有一个目标融合编码器 ϕ(o_t, o_g)(把当前观测和目标图一起编)来产生目标 token。二者都 tokenize 成 256 维 嵌入。
  • 观测配置:过去 5 个时间步 + 当前帧、每帧 96×96×3 RGB,加上目标 token,合计 7 个 token
  • Token 经 4 层、4 头 的 Transformer 解码器(多头注意力)f 处理,输出上下文向量序列拼成最终上下文 c_t。这部分 Transformer 约 5M 参数
  • 除动作外,还有一个时序距离预测头 f_d 预测观测与目标的 temporal distance d(o_t, o_g)——拓扑图判定两节点间是否可达就靠它。

Goal Masking(核心机制):引入二值「目标掩码」m,使 c_t = f(ψ(o_i), ϕ(o_t,o_g), m)。

  • m = 1:掩掉目标 token,下游注意力不 attend 目标 → 阻断目标条件通路 → 无目标探索模式。
  • m = 0:目标 token 与观测 token 一起参与 → 目标条件导航模式。
  • 训练时 m 从伯努利分布采样,固定 p_m = 0.5(探索样本与目标样本各半);测试时按需要设定 m。作者强调这个「简单掩码」策略出奇有效。
  • 消融(Table III)表明:注意力式掩码 + ViNT 编码器远胜 CNN 早/晚融合的 dropout 式条件与 ViT 编码器。

Diffusion Policy 动作头(action head)

  • 对条件分布 p(a_t | c_t) 用扩散模型建模——只对动作扩散、把上下文 c_t 当条件而非联合数据,因此无需推断未来观测,可实时控制、可端到端训练视觉编码器与扩散过程。
  • 从高斯噪声采样 a_t^K,做 K=10 步去噪得到 a_t^0;去噪式 a_t^{k-1} = α·(a_t^k − γ·ε_θ(c_t, a_t^k, k) + 𝒩(0,σ²I)),其中 α、γ、σ 由噪声调度决定。
  • 噪声预测网络 ε_θ = 1D 条件 U-Net,15 个卷积层(沿用 Janner/Chi 的时序 U-Net),条件于上下文 c_t(是否含目标信息由 m 决定)。
  • 动作输出:8 步未来动作(H=8)。
  • 定性上(Fig.3):无目标时 NoMaD 在路口预测双峰的无碰撞动作分布(可左可右);一旦给目标图,分布收窄到指向该目标的单一模式。

总参数量:NoMaD 完整模型 19M 参数(Table I/II),对比 ViNT 图像扩散子目标系统 335M → 小 15×、可跑在 NVIDIA Jetson Orin 板载算力上。

数据

  • 训练集:GNM 数据集 + SACSoN/HuRoN 数据集的组合——跨多种地面机器人、涵盖行人密集环境在内的大规模异构真实轨迹,合计超过 100 小时真实世界数据。
  • 数据来源(README 公开列表):RECON、TartanDrive、SCAND、GoStanford2(改版)、SACSoN/HuRoN,外加若干未公开数据集(需联系原作者)。
  • 跨本体(cross-embodiment):数据来自多个地面机器人平台;GNM/ViNT 谱系的核心卖点就是用异构机器人数据训一个能零样本驱动多种机器人的策略。
  • 动作标注:每条轨迹处理成一串时间标注的前视 RGB 帧 + traj_data.pkl 里的里程计(position [T,2] 的 xy 坐标 + yaw [T,]);动作从相对位姿导出。
  • 仿真 vs 真实:全部为真实世界数据,作者明确指出在仿真里训的探索策略迁移到真实环境很差,这是他们坚持用真实数据的动因。
  • 目标采样:训练时按 goals_per_obs 从同一轨迹后续帧采目标图,配 ViNG 式 negative mining;p_m=0.5 使一半样本走无目标分支(目标被掩掉)。
  • 训练/评测数据配比的更细颗粒度(各子数据集小时数/占比)论文未逐项披露。

训练方法

  • 端到端监督学习,单一损失(式 2): L_NoMaD = MSE(ε^k, ε_θ(c_t, a_t^0 + ε^k, k)) + λ · MSE(d(o_t,o_g), f_d(c_t)) 即「扩散噪声预测 MSE」+ λ 加权的「时序距离回归 MSE」,λ = 1e-4
  • 训练时对真值动作序列加噪,均匀采样去噪步 k 及对应方差的噪声 ε^k,让 ε_θ 预测该噪声。
  • 扩散调度:Square Cosine Noise Scheduler,K = 10 去噪步。
  • 优化器/超参AdamW,学习率 1e-4,30 个 epoch,batch size 256,配 cosine scheduling + warmup 稳定训练,其余超参沿用 ViNT。
  • 无 RL:纯模仿 / 监督,没有强化学习环节(探索能力来自无目标分支学到的多模态先验 + 高层 frontier 规划,而非 RL 奖励)。
  • 公平对照:所有 baseline 都在 GNM+SACSoN 组合上训 20 epoch、做最小超参调优以保证稳定训练。

Infra(训练 / 推理工程)

  • 训练算力:致谢中列出 Google TPU Research Cloud、NSF CloudBank、Berkeley Research Computing;具体 GPU/TPU 数量、GPU-hours、并行策略、精度均未披露
  • 推理 / 边缘部署:模型可完全在边缘运行——部署平台为开源 LoCoBot(TurtleBot2 底盘)+ NVIDIA Jetson Orin(Orin Nano),配宽角 RGB 鱼眼相机,ROS Noetic。相比 335M 的子目标扩散系统「小 15× / 算力省 15×」正是为了塞进这类板载算力。
  • 控制栈navigate.py/usb_cam/image_raw 观测 + 拓扑图 → 模型出 waypoint 发到 /waypointpd_controller.py 把 waypoint 转成底盘速度。探索用 explore.py(仅 NoMaD 支持探索模式)。
  • 具体推理 FPS / 控制频率 / 端到端延迟:论文与 README 只称「real-time control」「runs entirely on-the-edge」,未给出具体 Hz/延迟数字
  • 代码已开源(robodhruv/visualnav-transformer,同仓库含 GNM/ViNT/NoMaD),预训练权重放 Google Drive;训练依赖 real-stanford/diffusion_policy 包。

评测 benchmark

在 6 个(论文正文 Table I 标注 5–6 个)真实室内外环境评测,回答三问:与 SOTA 比?统一策略 vs 专用策略?编码器与掩码的重要性?所有数值来自论文一手表格。

Table I — 与 6 个 baseline 对比(探索 + 已知环境导航,配拓扑图)

方法参数探索成功率探索碰撞数导航成功率
Masked ViNT ᵐ15M50%1.030%
VIB6M30%4.015%
Autoregressive ᵐ19M90%2.060%
Random Subgoals30M70%2.790%
Subgoal Diffusion(ViNT 系统,先前 SOTA)335M77%1.790%
NoMaD19M98%0.290%

(ᵐ 表示该 baseline 用了 goal masking。)NoMaD 在探索上以 98% 成功率、0.2 碰撞超过最佳已发表 baseline(Subgoal Diffusion 77%/1.7)约 25%,且模型小 15×;在已知环境导航上追平最佳 baseline(90%),同样以小 15× 的模型、完全边缘运行实现。

Table II — 统一策略 vs 专用策略

方法参数无目标探索目标条件导航
Diffusion Policy(专做探索)15M98%
ViNT Policy(专做导航)16M92%
NoMaD(统一)19M98%92%

结论:容量相当时,统一策略同时追平两个各自领域最强的专用策略,说明两种行为共享表示与 affordance、可由一个策略兼得。

Table III — 视觉编码器 / 掩码消融

视觉编码器成功率碰撞数
Late Fusion CNN52%3.2
Early Fusion CNN68%1.5
ViT32%2.5
NoMaD(ViNT 编码器 + 注意力掩码)98%0.2

编码器与掩码方式对训扩散策略至关重要:ViNT 编码器 + 注意力式 goal masking 显著胜过 CNN 早/晚融合的 dropout 条件;ViT 尽管容量高却因与扩散端到端训练的优化困难表现最差。

定性(Fig.5):自回归策略虽理论上能表多模态,实测预测近乎单峰(学成平均动作);Subgoal Diffusion 能表多模态但不鲁棒;只有 NoMaD 稳定捕捉多模态无目标分布、同时对目标图给出准确的定向预测。

创新点与影响

贡献

  1. Goal Masking——一个二值掩码 + 注意力屏蔽,让同一个策略在「目标条件」和「无目标探索」间无缝切换,训练时 p_m=0.5 各半采样。这是把两类过去要拆成两套系统的导航行为统一进单模型的关键机制。
  2. 首个目标条件动作扩散策略,也是首个把任务无关探索 + 任务导向导航统一、并部署到真实机器人的模型——用扩散直接建模动作而非生成高维子目标图,因而小 15×、可上边缘。
  3. 实证:统一策略不但不牺牲、反而在未见环境探索上超过用 15× 大模型的 SOTA 25%,碰撞更少。

影响:延续并收束了 GNM→ViNT→NoMaD 的通用视觉导航谱系,把 Diffusion Policy 的「动作去噪」范式带入移动机器人导航与探索;「掩码切换条件/无条件通路」的思路对后续需要在单模型内统一多种任务模式的策略有借鉴意义。获 ICRA 2024 最佳论文奖(并入围最佳学生论文、认知机器人最佳论文),2023 年在 NeurIPS / CoRL workshop 做 oral。

作者自陈局限

  • 任务只能用目标图像指定——虽通用,但对用户不总是最自然的模态;扩展到语言、空间坐标等多模态目标会更实用。
  • 高层探索用的是标准 frontier-based 策略;更聪明地选择「探哪片区域」(基于语义/先验知识)还有提升空间。
  • (系统边界)长时程能力依赖外挂的拓扑图 + ViKiNG 式高层规划,短时程策略本身不做长程推理。

原始链接

一手源存档(sources/)