贡献
人类在导航时通常是顺序决策,即规划出一条最可能到达目标的行动序列。现有 ObjectNav 方法(无论是端到端学习还是模块化方法)主要依赖于单步规划,这会忽视时间上的一致性,导致**短视(myopic)**的决策。
本文提出了轨迹扩散(trajectory diffusion)的方法,以学习轨迹序列的分布,使导航规划更具时序一致性。采用去噪扩散概率模型(DDPM, Denoising Diffusion Probabilistic Model),结合自动收集的最优轨迹数据来训练该模型。训练后的轨迹扩散模型可以根据当前观察到的环境,生成一个时间上连贯的未来轨迹序列,引导智能体更好地进行导航。
在Gibson 和 MP3D 数据集上的实验表明,生成的轨迹可以有效指导智能体,使导航更加准确和高效。
方法
一、概述
现有的 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 的实现方式
-
数据收集
-
在训练过程中,使用高精度地图收集最优轨迹数据。
-
具有语义地图模块的智能体按照这些轨迹行进,并在每个时间步记录语义地图和位姿信息。
-
收集的数据被整理成数据对),其中包含某一时刻的语义地图及其对应的未来轨迹片段。
-
-
训练轨迹扩散模型
基于收集的数据,采用去噪扩散概率模型进行训练。轨迹扩散模型基于Transformer 结构的扩散模型实现(擅长捕捉全局上下文信息,适用于序列数据),以噪声潜变量(noised latent)作为起始输入,并通过迭代优化精炼来生成轨迹序列。
-
智能体导航
一旦生成轨迹序列,智能体沿着预测的轨迹移动,直到找到目标。
实验结果
在 Gibson 和 MP3D 模拟器上进行了实验评估。实验表明,轨迹扩散模型显著优于基线方法。展示了生成轨迹对智能体导航的有效引导作用。
二、 ObjectNav 的初步设计
ObjectNav 任务要求智能体导航到指定物体(如“椅子”)的位置,环境是未知的。每轮任务开始时,智能体位于随机位置,并在每个时间步接收RGB-D图像、目标物体信息和位姿(包括空间坐标位置和朝向)。智能体可以执行以下动作:前进、左转、右转或停止。当智能体判断任务完成时,会执行停止动作。任务成功的标准是智能体在指定步数内停在目标物体附近,且物体在视野内。
端到端学习方法
端到端学习方法通过在每个时间步生成单步计划,通常使用强化学习(RL)或模仿学习(IL)来训练策略函数 π ( a t ∣ I t , o ) \pi(a_t | I_t, o) π(at∣It,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∑γt−1rt
- 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(π(atd∣Itd,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(τt∣mt,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:T∣x0)=τ=1∏Tq(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:T∈Rd。
- 通过重参数化技巧,可以直接对噪声数据进行采样: 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τ−1∣xτ)
这一过程称为去噪(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} ϵτ 之间的误差。
总之,先通过 前向过程 向数据逐步添加噪声。然后学习 去噪过程,训练神经网络 预测噪声 并去除。训练完成后,模型可以从纯噪声开始逐步去噪,生成高质量数据。
使用轨迹扩散进行导航
- 轨迹数据收集
为了训练轨迹扩散模型,研究人员收集了一系列数据对:
(
(
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}] ξt∈R2×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 组成。
为了高效获取轨迹和对应的语义地图,采用以下步骤:
-
随机初始化代理的位置。
-
使用 Fast Marching Method(FMM)计算最优路径,该方法基于训练房间的精确碰撞地图,从初始位置到目标对象 o o o 规划出最佳路径。这些精确地图在测试时不可用,因为测试环境是未知的。
-
在计算出的最优路径上,让代理运行并记录语义地图 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,最终构成完整的训练数据集。
- 轨迹扩散模型
文章采用 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 mt 由 ResNet18(无预训练)编码。
- 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 处理后,使用标准线性解码器 输出噪声预测。
- 基于生成的轨迹进行导航
语义映射模块
在每个时间步 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} mt∈R(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}} tT−diff 生成新轨迹。局部策略 在每个导航步执行确定性规划。