论文分享:【2024 NeurIPS】Trajectory Diffusion for ObjectGoal Navigation

贡献

人类在导航时通常是顺序决策,即规划出一条最可能到达目标的行动序列。现有 ObjectNav 方法(无论是端到端学习还是模块化方法)主要依赖于单步规划,这会忽视时间上的一致性,导致**短视(myopic)**的决策。

本文提出了轨迹扩散(trajectory diffusion)的方法,以学习轨迹序列的分布,使导航规划更具时序一致性。采用去噪扩散概率模型(DDPM, Denoising Diffusion Probabilistic Model),结合自动收集的最优轨迹数据来训练该模型。训练后的轨迹扩散模型可以根据当前观察到的环境,生成一个时间上连贯的未来轨迹序列,引导智能体更好地进行导航。

GibsonMP3D 数据集上的实验表明,生成的轨迹可以有效指导智能体,使导航更加准确和高效。

方法

一、概述

现有的 ObjectNav 方法通常采用单步规划(single-step planning),而不是顺序规划(sequential planning),导致导航缺乏时间一致性。

  • 端到端学习方法:一些方法将规划器设计为端到端网络,并通过强化学习(RL)模仿学习(IL)训练。这些方法在每个时间步进行单步规划,仅根据当前的自我视角(egocentric view)输出一个动作,缺乏时间上的一致性和可解释性。此外,它们会隐式地编码所有过去的观察信息,导致几何空间信息丢失,从而限制了在复杂环境中的泛化能力。
  • 模块化方法(Modular Methods):一些方法尝试通过构建语义地图(自顶向下的几何地图)来存储导航过程中的历史观测数据,以减少重复搜索。然而,它们的决策仍然是单步的,通常使用监督学习训练路径点预测器,以基于当前语义地图和目标生成下一个子目标。

为了实现顺序规划(sequential planning),本文提出了一种轨迹扩散模型(trajectory diffusion, T-diff),该方法建模了轨迹序列的条件分布,即学习基于当前的语义地图目标来规划未来的轨迹序列。

然而,由于语义地图和轨迹序列都是高维数据,使得直接学习此条件分布具有极高的特征空间和计算复杂度。近年来,扩散模型(diffusion models) 在表达复杂分布和生成高质量图像方面取得了巨大成功:

  • 扩散过程(Diffusion Process):逐步向数据添加噪声,将复杂数据分布转换为简单分布(如高斯分布)。

  • 去噪过程(Denoising Process):逐步预测并移除噪声,从简单随机分布生成复杂数据分布。

优势:这种迭代优化学习方式提高了高维数据分布学习的稳定性和可控性。

因此,本文利用扩散模型来学习轨迹序列的条件分布,并提出轨迹扩散(T-diff) 作为导航规划器,使其执行序列规划并为智能体生成未来的轨迹序列。

即:

  • 现有端到端方法:单步规划 + 隐式记忆

  • 现有模块化方法:单步规划 + 几何记忆

  • T-diff:序列规划 + 几何记忆,结合两者优势。

T-diff 的实现方式

  1. 数据收集

    • 在训练过程中,使用高精度地图收集最优轨迹数据。

    • 具有语义地图模块的智能体按照这些轨迹行进,并在每个时间步记录语义地图和位姿信息。

    • 收集的数据被整理成数据对),其中包含某一时刻的语义地图及其对应的未来轨迹片段。

  2. 训练轨迹扩散模型

    基于收集的数据,采用去噪扩散概率模型进行训练。轨迹扩散模型基于Transformer 结构的扩散模型实现(擅长捕捉全局上下文信息,适用于序列数据),以噪声潜变量(noised latent)作为起始输入,并通过迭代优化精炼来生成轨迹序列。

  3. 智能体导航

    一旦生成轨迹序列,智能体沿着预测的轨迹移动,直到找到目标。

实验结果

GibsonMP3D 模拟器上进行了实验评估。实验表明,轨迹扩散模型显著优于基线方法。展示了生成轨迹对智能体导航的有效引导作用。

二、 ObjectNav 的初步设计

ObjectNav 任务要求智能体导航到指定物体(如“椅子”)的位置,环境是未知的。每轮任务开始时,智能体位于随机位置,并在每个时间步接收RGB-D图像目标物体信息位姿(包括空间坐标位置和朝向)。智能体可以执行以下动作:前进、左转、右转或停止。当智能体判断任务完成时,会执行停止动作。任务成功的标准是智能体在指定步数内停在目标物体附近,且物体在视野内。

在这里插入图片描述

端到端学习方法

端到端学习方法通过在每个时间步生成单步计划,通常使用强化学习(RL)或模仿学习(IL)来训练策略函数 π ( a t ∣ I t , o ) \pi(a_t | I_t, o) π(atIt,o),其中: a t a_t at 代表在时间步 t t t 采取的动作, I t I_t It o o o 代表输入信息。

强化学习的目标是 最大化折扣回报的期望值:
arg ⁡ max ⁡ π E χ ∼ π [ R χ ] \arg\max_{\pi} \mathbb{E}_{\chi \sim \pi} [R_{\chi}] argπmaxEχπ[Rχ]
其中,
R χ = ∑ t = 1 γ t − 1 r t R_{\chi} = \sum_{t=1} \gamma^{t-1} r_t Rχ=t=1γt1rt

  • R χ R_{\chi} Rχ 是总回报
  • γ \gamma γ 是折扣因子
  • r t r_t rt 是时间步 t t t 的奖励函数

强化学习通常采用 稀疏成功奖励,即只有成功完成任务才会得到奖励。稠密奖励虽然能引导训练,但会抑制智能体的探索,导致泛化能力下降。而稀疏奖励导致大多数轨迹很难获得正奖励,使得学习变得困难。由于策略参数不断更新,以前采样的轨迹可能会变得过时,需要不断收集新数据。

模仿学习 训练目标是 最小化策略输出与人类演示的差异(即行为克隆,Behavior Cloning):
arg ⁡ min ⁡ π E ( I t d , a t d ) ∼ D [ − log ⁡ ( π ( a t d ∣ I t d , o ) ) ] \arg\min_{\pi} \mathbb{E}_{(I_t^d, a_t^d) \sim \mathcal{D}} [- \log(\pi(a_t^d | I_t^d, o))] argπminE(Itd,atd)D[log(π(atdItd,o))]

  • D \mathcal{D} D 是人类演示数据集
  • I t d I_t^d Itd a t d a_t^d atd 分别是人类演示的输入和动作

然而,收集人类演示数据的成本极高,使得模仿学习(IL)的训练代价昂贵。此外,端到端学习方法会隐式地编码历史观测信息,这导致缺乏几何记忆能力,从而限制了这些方法的泛化能力。

模块化方法

模块化方法通常构建局部语义地图,用于存储历史观测信息,避免智能体进行冗余探索。

导航规划器(Navigation Planner) 采用如下公式进行建模:
f ( Ω ∣ m t , o ) f(\Omega | m_t, o) f(Ω∣mt,o)
其中, Ω \Omega Ω 是候选点的集合,例如可以定义为当前地图 m t m_t mt 的前沿点或未知区域。

采用监督学习进行训练,目标是最小化损失函数:
∑ Ω L ( V ( Ω ) , f ( Ω ∣ m t , o ) ) \sum_{\Omega} \mathcal{L} \left( V(\Omega), f(\Omega | m_t, o) \right) ΩL(V(Ω),f(Ω∣mt,o))

  • V ( Ω ) V(\Omega) V(Ω) 代表真实值,其值由目标的实际位置决定(即 Ω \Omega Ω 越接近目标,其值越高)。
  • 通过 f f f 预测的结果,智能体选择具有最优值的点作为子目标来进行导航。

由于当前仿真器中的房间多样性有限,这导致训练出的规划器 f f f 容易过拟合到训练房间的布局。

轨迹扩散模型
p ( τ t ∣ m t , o ) p(\tau_t | m_t, o) p(τtmt,o)

  • τ t \tau_t τt 代表计划的未来序列轨迹。

这种方法确保时间一致性和决策的可解释性。几何记忆确保高效探索。

三、轨迹扩散

扩散模型

扩散模型的前向过程(即噪声添加过程)通过一个**马尔可夫链(Markov chain)**进行建模,该过程逐步向真实数据 x 0 x_0 x0 添加高斯噪声,使其转变为一个噪声分布:
q ( x 1 : T ∣ x 0 ) = ∏ τ = 1 T q ( x τ ∣ x τ − 1 ) q(x_{1:T} | x_0) = \prod_{\tau=1}^{T} q(x_{\tau} | x_{\tau-1}) q(x1:Tx0)=τ=1Tq(xτxτ1)
其中,单步转移过程定义为:
q ( x τ ∣ x τ − 1 ) = N ( x τ ; α ˉ τ , ( 1 − α ˉ τ ) I ) (1) q(x_{\tau} | x_{\tau-1}) = \mathcal{N} \left( x_{\tau} ; \sqrt{\bar{\alpha}_{\tau}} , (1 - \bar{\alpha}_{\tau}) \mathbf{I} \right) \tag{1} q(xτxτ1)=N(xτ;αˉτ ,(1αˉτ)I)(1)

  • 其中, α ˉ τ \bar{\alpha}_{\tau} αˉτ 是超参数。
  • x 0 x_0 x0 是原始数据,而 x 1 , . . . , x T x_1, ..., x_T x1,...,xT 是加噪后的数据。
  • 数据的维度保持不变,即 x 0 : T ∈ R d x_{0:T} \in \mathbb{R}^d x0:TRd
  • 通过重参数化技巧,可以直接对噪声数据进行采样: x τ = α ˉ τ x 0 + 1 − α ˉ τ ϵ τ , ϵ τ ∼ N ( 0 , I ) x_{\tau} = \sqrt{\bar{\alpha}_{\tau}} x_0 + \sqrt{1 - \bar{\alpha}_{\tau}} \epsilon_{\tau}, \quad \epsilon_{\tau} \sim \mathcal{N}(0, \mathbf{I}) xτ=αˉτ x0+1αˉτ ϵτ,ϵτN(0,I) 这表示 x τ x_{\tau} xτ真实数据的加权部分高斯噪声组成。

扩散模型的核心目标是学习逆向扩散过程,即通过一个神经网络 θ \theta θ 预测噪声,并逐步去噪,恢复原始数据:
p ( x τ − 1 ∣ x τ ) p(x_{\tau-1} | x_{\tau}) p(xτ1xτ)
这一过程称为去噪(denoising),其目标是预测并去除噪声

由于理论上可以将去噪过程简化为预测加入的噪声,扩散模型的训练目标就是让神经网络 θ \theta θ最小化预测噪声与真实噪声之间的均方误差(MSE):
L θ = E x , c , ϵ , τ [ ∥ ϵ τ − ϵ θ ( x τ , c , τ ) ∥ 2 2 ] (2) \mathcal{L}_{\theta} = \mathbb{E}_{x,c,\epsilon,\tau} \left[ \| \epsilon_{\tau} - \epsilon_{\theta} (x_{\tau}, c, \tau) \|_2^2 \right] \tag{2} Lθ=Ex,c,ϵ,τ[ϵτϵθ(xτ,c,τ)22](2)

  • c c c 代表输入条件的嵌入(比如文本或图像)。
  • 训练目标是最小化预测的噪声 ϵ θ \epsilon_{\theta} ϵθ 与真实噪声 ϵ τ \epsilon_{\tau} ϵτ 之间的误差。

总之,先通过 前向过程 向数据逐步添加噪声。然后学习 去噪过程,训练神经网络 预测噪声 并去除。训练完成后,模型可以从纯噪声开始逐步去噪,生成高质量数据。

使用轨迹扩散进行导航

在这里插入图片描述

  1. 轨迹数据收集

在这里插入图片描述

为了训练轨迹扩散模型,研究人员收集了一系列数据对:
( ( m t , o ) , ξ t ) ((m_t, o), \xi_t) ((mt,o),ξt)
其中:

  • m t m_t mt 是时间 t t t 的语义地图
  • o o o 是目标对象
  • ξ t \xi_t ξt 是轨迹段(trajectory segment),定义为: ξ t ∈ R 2 × k = [ p t + 1 , … , p t + k ] \xi_t \in \mathbb{R}^{2 \times k} = [p_{t+1}, \dots, p_{t+k}] ξtR2×k=[pt+1,,pt+k] 其中 p t p_t pt 代表智能体在时间 t t t 的位置,以二维坐标表示。轨迹段的长度为 k k k,由 p t + 1 p_{t+1} pt+1 p t + k p_{t+k} pt+k 组成。

为了高效获取轨迹和对应的语义地图,采用以下步骤:

  1. 随机初始化代理的位置。

  2. 使用 Fast Marching Method(FMM)计算最优路径,该方法基于训练房间的精确碰撞地图,从初始位置到目标对象 o o o 规划出最佳路径。这些精确地图在测试时不可用,因为测试环境是未知的。

  3. 在计算出的最优路径上,让代理运行并记录语义地图 m t m_t mt,形成数据集。

采样多个数据对 ( ( m t , o ) , ξ t ) ((m_t, o), \xi_t) ((mt,o),ξt) 来训练轨迹扩散模型。轨迹 ξ t \xi_t ξt分割成子轨迹,每个子轨迹长度为 k k k。结合语义地图 m t m_t mt 和目标对象 o o o,最终构成完整的训练数据集。

  1. 轨迹扩散模型

在这里插入图片描述

文章采用 DDPM 来训练轨迹扩散模型,扩散过程是:
ξ t τ = α ˉ τ ξ t 0 + 1 − α ˉ τ ϵ τ \xi_t^{\tau} = \sqrt{\bar{\alpha}_{\tau}} \xi_t^0 + \sqrt{1 - \bar{\alpha}_{\tau}} \epsilon_{\tau} ξtτ=αˉτ ξt0+1αˉτ ϵτ
其中:

  • ξ t 0 \xi_t^0 ξt0真实轨迹 ξ t \xi_t ξt(从数据集中获得)。
  • ϵ τ ∼ N ( 0 , I ) \epsilon_{\tau} \sim \mathcal{N}(0, I) ϵτN(0,I)高斯噪声
  • α ˉ τ \bar{\alpha}_{\tau} αˉτ τ \tau τ 是超参数,控制方差调度

这里涉及两个时间步:

  • t t t:代表导航的某个时刻。
  • τ \tau τ:代表扩散过程中的噪声调度时间步

训练目标是预测加入的噪声,损失函数如下:
L θ = E ξ , s , ϵ , τ , t [ ∥ ϵ τ − ϵ θ ( ξ t τ , s t , τ ) ∥ 2 2 ] \mathcal{L}_{\theta} = \mathbb{E}_{\xi, s, \epsilon, \tau, t} \left[ \| \epsilon_{\tau} - \epsilon_{\theta} (\xi_t^{\tau}, s_t, \tau) \|_2^2 \right] Lθ=Eξ,s,ϵ,τ,t[ϵτϵθ(ξtτ,st,τ)22]
其中:

  • θ \theta θ 是轨迹扩散模型的参数。
  • s t s_t st 代表当前导航状态,用于条件控制扩散过程。 s t s_t st由语义地图 m t m_t mt 的嵌入和目标对象 o o o 组成:
    • m t m_t mtResNet18(无预训练)编码。
    • o o o 通过线性投影编码。

由于导航轨迹 ξ t \xi_t ξt 是一个包含 k k k 个 token 的序列,每个 token 维度为 m m m,因此:轨迹扩散模型采用 DiT(Diffusion Transformer) 架构。噪声轨迹 ξ t τ \xi_t^{\tau} ξtτ 通过线性投影进行编码,并加上位置编码。经过多层 Transformer 块 处理。额外输入扩散时间步 τ \tau τ 和导航状态 s t s_t st,通过多头交叉注意力层进行交互。通过 N 层 Transformer 处理后,使用标准线性解码器 输出噪声预测。

  1. 基于生成的轨迹进行导航

在这里插入图片描述

语义映射模块

在每个时间步 t t t,代理接收:当前 RGB-D 视图 I t I_t It、传感器位姿 p t p_t pt、目标对象 o o o

  • RGB-D 图像分割:使用预训练的分割模型进行分割,提取语义类别

  • 深度信息投影:

    • 将像素点及其语义标签投影到 3D 空间。

    • 在一定高度范围内的点(相对代理高度)被视为障碍物

    • 点云转换为体素占用网格(voxel occupancy grid)。

  • 构建全局地图

    • 自我中心坐标系转换为全局坐标系,并与全局地图融合。

    • 语义地图 m t m_t mt的格式为:
      m t ∈ R ( 4 + n ) × h × w m_t \in \mathbb{R}^{(4+n) \times h \times w} mtR(4+n)×h×w
      其中:

      • n n n 是语义类别数。
      • h , w h, w h,w 是地图尺寸。
      • 通道 1 和 2 表示障碍物信息
      • 通道 3 和 4 代表代理的当前位置及其探索区域

轨迹扩散生成导航轨迹

语义地图 m t m_t mt 和目标对象 o o o 经过嵌入后拼接,形成导航状态 s t s_t st

轨迹扩散模型 ϵ θ \epsilon_{\theta} ϵθ 的训练过程:

  • 以高斯噪声初始化 ξ t τ max ⁡ \xi_t^{\tau_{\max}} ξtτmax
  • 通过轨迹扩散模型 预测噪声: ϵ θ ( ξ t τ , s t , τ ) \epsilon_{\theta} (\xi_t^{\tau}, s_t, \tau) ϵθ(ξtτ,st,τ)
  • 进行去噪: ξ t τ − 1 = ξ t τ − ϵ θ ( ξ t τ , s t , τ ) \xi_t^{\tau-1} = \xi_t^{\tau} - \epsilon_{\theta} (\xi_t^{\tau}, s_t, \tau) ξtτ1=ξtτϵθ(ξtτ,st,τ)
  • 迭代去噪 τ max ⁡ \tau_{\max} τmax 次,最终得到生成轨迹: ξ t 0 \xi_t^0 ξt0

局部策略(Local Policy)

一旦生成轨迹 ξ t 0 \xi_t^0 ξt0(即 ξ t \xi_t ξt),局部策略负责驱动代理沿该轨迹移动。为了避免代理进入不可达区域(障碍物),选择 k g k_g kg 个航点作为导航目标。( k g k_g kg 是超参数)

局部策略将导航目标转换为低级动作,使用FFM 方法计算无碰撞路径,基于语义地图 m t m_t mt 的障碍物通道。确定代理的步进距离,沿着目标 k g k_g kg 航点导航。

轨迹扩散 以周期 t T − diff t_{T-\text{diff}} tTdiff 生成新轨迹。局部策略 在每个导航步执行确定性规划。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值