贡献
本文提出一个名为FloNa
的新的任务,即给定带有目标红点的平面图,代理通过RGB视觉观察导航到对应目标位置的任务。(这也是第一篇结合平面图的具身视觉导航任务)
该任务的主要挑战是:1)如何处理平面图和实际场景布局的空间不一致问题(只要是家具的放置),从而实现无碰撞导航。2)将平面图和观察到的图像对齐,即根据当前观测结果将代理定位到平面图中。
提出FloDiff
方法,一个结合定位模块的扩散策略框架用于当前观察和平面图的对齐。此外作者还在iGibson
仿真器中在117个场景中收集了20k个导航回合支持训练和评估。
方法
一、概述
方法
FloDiff
,这是本文提出的一种新颖的扩散策略框架,利用其动作分布建模能力,能够通过大量的示范隐式地学习处理空间不一致性。FloDiff
还集成了一个显式的定位模块,以对齐观测与平面图,从而产生了两种变体,具体取决于当前智能体姿势的推导方式。
Naive-FloDiff
,学习在训练过程中预测姿势Loc-FloDiff
,直接使用真实姿势或来自预训练模型的预测姿势
这两种变体都采用 Transformer 主干网络来融合平面图和当前观测,然后将融合后的信息传递给策略网络,后者学习去噪动作序列。
基准测试
作者们收集了一个数据集,包含大约2万个导航回合,涵盖117个不同的场景,使用iGibson模拟器。该数据集包括大约330万张图像,这些图像是以45度视场角拍摄的。作者将场景分为67个用于训练,50个用于测试,以评估模型在未见过的环境中的泛化能力。每个场景包含一个平面图、一个可通行性地图和足够的导航回合。每个回合包含一个由A*算法生成的轨迹,并配有相应的RGB观测图像。
实验
与基准方法相比,该方法在成功率(Success Rate, SR)和效率(以路径长度加权的成功率,Success Weighted by Path Length, SPL)上都表现得更好。
图2为一些轨迹示例。此外,全面分析了FloDiff的不同能力,包括定位、避障、具有多种目标的规划以及鲁棒性。
在没有微调的情况下将其部署到自动引导车(AGV)上,进一步突出了其鲁棒性和泛化能力,证明了其在实际环境中有效处理未知场景的潜力。
二、任务设置
智能体需在3D环境中从初始位置导航到特定目标位置。导航过程中,智能体仅能获取以自身视角拍摄的RGB图像、环境的平面图,以及标记目标位置的图像(红色点 g g g表示)。
在每个时间步 t t t,智能体观察当前图像 o t o_t ot,并采取动作 a t a_t at 接近目标点 g g g。每个导航任务形成一系列数据 { x 0 , a 1 , x 1 , … , a T , x T } \{x_0, a_1, x_1, \dots, a_T, x_T\} {x0,a1,x1,…,aT,xT},其中 x i x_i xi 表示智能体的位置 p i p_i pi 和朝向 r i r_i ri。导航任务成功的条件为:最终位置 p T p_T pT 与目标位置的距离在指定阈值 τ d \tau_d τd 内,且整个过程中与场景的碰撞次数未超过阈值 τ c \tau_c τc。
实验基于iGibson
仿真器,使用Locobot
作为具身智能体。智能体的高度为0.85米,底座半径为0.18米,配备一个512×512分辨率的RGB摄像头。动作
a
t
a_t
at 被定义为智能体当前位置
p
t
p_t
pt 与上一时刻位置
p
t
−
1
p_{t-1}
pt−1 之间的差值,是二维平面上的连续运动向量。
三、数据集的设计
图2为一些轨迹示例。
作者构建了一个大规模数据集,其中包含来自Gibson环境(117个室内场景)的20,214个导航片段。总共收集了3,312,480张具有45度视野(field of view)的RGB图像。这些场景使用Matterport设备重建,因此保留了真实环境的纹理,减少了仿真到现实的差距。数据集被划分为训练集和测试集,其中训练集包含67个场景,测试集包含50个场景。
每个场景都配有平面图(floor plan)和可导航地图(navigable map)。平面图采用已有的手动标注结果。可导航地图通过先粗略生成再手动精细调整而成,以修复扫描重建中存在的问题(如物体重建不精确造成的导航误区)。
根据场景的大小,设置不同的导航片段数量,小场景每个150段,中等场景每个180段,大场景每个200段。在生成导航任务之前,随机选择两个至少相距3米的起点和目标点。使用A*算法搜索从起点到终点的无碰撞导航路径。在此过程中,记录轨迹位置并渲染观察图像。生成的导航轨迹长度范围为4.53米至42.03米之间。
四、先验知识
扩散模型(Diffusion Model)
扩散模型是一种用于生成任务的概率框架,核心思想是逐步去除(去噪)高斯噪声,从而迭代地产生理想的数据(如图像或姿态)。
具体过程:
-
初始时,从随机高斯噪声 x K x^K xK 出发;
-
通过 K K K 步的去噪操作,逐步生成一系列中间状态 x K − 1 , … , x 0 x^{K-1}, \dots, x^0 xK−1,…,x0;
-
每一步的迭代公式为:
x K − 1 = α ( x K − γ ϵ θ ( x K , K ) + σ z ) , x^{K-1} = \alpha(x^K - \gamma \epsilon_\theta(x^K, K) + \sigma z), xK−1=α(xK−γϵθ(xK,K)+σz),
- α , γ , σ \alpha, \gamma, \sigma α,γ,σ 用来控制每一步去噪过程的参数(噪声调节函数),控制着去噪时的幅度或速度
- ϵ θ ( x K , K ) ϵ_θ(x^K,K) ϵθ(xK,K) 是一个特殊的神经网络(也叫做「噪声预测网络」),它的工作是预测当前图像里噪音长什么样子(也就是估计噪声的部分)
- $ z \sim \mathcal{N}(0, I)$ 是一个随机的小噪音,目的是每一步都能稍微调整一下结果,让去噪的过程更加稳定或更有多样性。
整个过程像是从一幅模糊的图逐渐清晰化(去噪),每一步通过神经网络预测出噪音的位置和形态,再把预测的噪音减去一点点。
扩散策略(Diffusion Policy)
扩散策略将扩散模型的思想从生成任务拓展到策略学习领域,使智能体可以基于学习到的概率分布做出决策。扩散策略通常使用编码器(encoder)将观测数据转换为低维特征,并以此特征为条件执行去噪过程。
具体扩展后的迭代公式为:
A
t
K
−
1
=
α
(
A
t
K
−
γ
ϵ
θ
(
A
t
K
,
O
t
,
K
)
+
σ
z
)
,
A_t^{K-1} = \alpha(A_t^K - \gamma \epsilon_\theta(A_t^K, O_t, K) + \sigma z),
AtK−1=α(AtK−γϵθ(AtK,Ot,K)+σz),
其中:
- A t A_t At 表示智能体在时间步 t t t 时的动作(action)。
- O t O_t Ot 表示智能体在时间步 t t t 时的观察(observation)。
- ϵ θ ( A t K , O t , K ) ϵ_θ(A_t^K,O_t,K) ϵθ(AtK,Ot,K) 表示预测网络根据当前观察到的环境和它打算执行的动作,预测这个动作中不合理或有噪音的部分,简单理解就是告诉智能体「你现在这个动作哪里做得不够准确」
- 其他参数同上扩散模型中的作用
扩散策略将动作和观察信息同时纳入去噪过程中,进而指导智能体的行动。
五、具体方法
基于扩散策略,提出了一个新的端到端框架,即FloDiff,来解决FloNa。整体架构如图3所示。
Framework Overview
FloDiff是一个使用Transformer结构的模型。它将视觉观察信息(智能体看到的图像)和环境的平面图信息融合在一起,使用一个扩散策略模型学习如何在拥挤的环境中导航,并且能够避免碰撞。FloDiff主要解决两个问题:
- 如何避免碰撞,顺利到达目标。
- 如何确保视觉图像和环境的平面图对齐。
第一个问题由扩散策略本身解决(从大量示范数据学习到合适的导航路径)。
第二个问题则需要专门的模型预测智能体自身的位置(姿态),以实现观察图像与环境平面图的有效融合。
Observation Context
在导航过程中,智能体观察到一系列图像 O t O_t Ot(过去一段时间到现在的图像),以及对应的环境平面图。为了处理这些信息:
-
对每一张观察到的图像,使用EfficientNet-B0网络(记作 ψ ψ ψ)提取图像特征。
-
对平面图,也使用另一个EfficientNet-B0网络(记作 ϕ ϕ ϕ)提取平面图特征。
-
最后,利用Transformer的多头注意力机制将上述两个网络提取到的特征融合起来,形成观察的上下文特征 c t c_t ct。
Goal Position
目标位置由平面图上标记的目标点 g g g 转换成真实世界坐标系中的坐标。转换时需要考虑平面图的分辨率(每个像素代表的实际长度)以及偏移量(地图与现实坐标之间的对齐误差)。
Policy
FloDiff提出了两种策略方案:
-
Naive-FloDiff(图中下方)
使用融合的特征 c t c_t ct 来预测智能体自身位置(位置+朝向),记作 x ^ t \hat{x}_t x^t。同时增加一个预测网络,用于预测智能体当前位置到目标位置之间的最短距离。这有助于避免智能体选择偏离目标的动作。最终,将上述特征组合起来,使用扩散策略生成智能体下一步的动作序列。
-
Loc-FloDiff(图中上方)
不再自行预测智能体的位置,而是直接使用真实的位置(ground truth)或已有的预训练位置预测模型。由于智能体位置更加准确,因此简化了策略学习过程,降低了预测位置不准确带来的误差。
Training
模型在67个室内场景组成的训练集上进行训练,共约11575个导航片段,合计约26小时的数据。训练过程中随机抽取不同长度的导航片段,以增加训练的多样性和难度。目标点随机选择,包括已经走过轨迹的末端,以及轨迹后面一点的位置,以鼓励模型学习更通用的导航能力。
训练采用两种损失函数:
- Naive-FloDiff训练损失函数:动作预测损失、距离预测损失、智能体位置预测损失
- Loc-FloDiff训练损失函数:动作预测损失、距离预测损失