长时视觉语言导航的突破:NavGen 数据平台与 LH-VLN 模型解析
论文链接:https://arxiv.org/abs/2412.09082
1. 引言
现有的视觉语言导航(VLN)基准和方法主要侧重于单阶段或短期任务,这些任务涉及简单的目标和有限的动作序列,适用于受控环境,但在现实应用中却显得不足【21,22,29】(见图1)。在现实场景中,智能体必须处理复杂的、长时指令,这些指令跨越多个子任务,需要持续决策、动态重规划和长时间跨度的推理【7,20,27,31,40】。这些能力对于自主助手或服务机器人等应用至关重要,因为在这些应用中,长时间跨度的连贯导航至关重要。为了弥补这一差距,我们首次提出了一种名为长时视觉语言导航(LH-VLN)的新任务,以评估和增强智能体处理多阶段、上下文丰富的导航任务的能力,这些任务更准确地反映了现实世界的复杂性。
LH-VLN 任务旨在推动智能体超越简单、短期的导航,要求它们深入理解复杂的任务指令,保持持续的导航,并在动态环境中无缝处理顺序子任务。 实现这一目标涉及三个关键组成部分:
- 自动化数据生成平台:构建具有复杂任务结构的基准,并提高数据效用。
- 高质量基准:捕捉长时、多阶段任务的复杂性,并使用合理的指标准确评估智能体的任务执行和详细子任务表现。
- 专用方法:为智能体配备适应复杂导航的适应性记忆。
在本文中,我们提供了一个全面的解决方案,解决了这三个方面,为在现实世界中实现稳健的 LH-VLN 奠定了基础。
2. 平台:NavGen
2.1 现有平台局限性
现有的 VLN 数据生成平台【14,30,36,37,43】缺乏足够的通用性,依赖于特定的模拟平台和资产,导致生成的数据相对有限【5】。
2.2 NavGen 的创新性
为了克服这些局限性,我们引入了 NavGen,这是一个新颖的数据生成平台,可以自动构建复杂的多阶段数据集。NavGen 通过双向、多粒度的方法生成数据:
- 前向数据生成:专注于创建复杂的 LH-VLN 任务。
- 后向数据生成:将多阶段导航子任务分解为细粒度的、可操作步骤。

图 2. NavGen 数据生成平台。 前向生成通过提示 GPT-4 并使用采样资产来生成 LH-VLN 复杂任务及其相应的子任务。采样的资产被部署在模拟器上以构建模拟环境。基于导航模型或专家决策,生成相应的轨迹数据。在后向生成中,轨迹分割算法根据轨迹类型将每个子任务的轨迹分割为动作-标签对,然后将这些对输入到 GPT-4 中以生成逐步任务。
前向数据生成:
- 利用 GPT-4 通过合成场景资产和机器人配置来创建任务指令(见图 2(a))。
- 场景资产来自 HM3D 数据集【42】,该数据集提供了 216 个场景的丰富 3D 全景场景集合,并在语义上进行注释,为任务创建提供了广泛的基础。
- 机器人配置针对不同的机器人平台(如波士顿动力公司的 Spot 和 Hello Robot 的 Stretch)进行了精心定制,每个平台都有独特的摄像头高度、任务空间和传感器参数,以适应各种任务。
- 使用自定义设计的提示作为 GPT-4 的输入,该提示结合了场景细节 SSS、机器人配置 RRR 和任务目标 GGG。
- GPT-4 输出指令列表 Dins=G(S,R,G,prompt1)D_{ins} = \mathcal{G}(S,R,G,\mathrm{{prompt}_{1})}Dins=G(S,R,G,prompt1),其中包括子任务和多阶段指令,G\mathcal{G}G 表示 GPT-4。
- 该列表被导入到 Habitat3 模拟器 Sim 中,其中专家模型或训练有素的导航模型指导智能体 AAA 完成任务。专家模型是 Habitat【8,16】构建的导航网格模型和贪婪路径查找算法。
- 模拟器自动生成轨迹 DtrajD_{traj}Dtraj,这是后续分割为任务段的基础数据,如下所示:
Dtraj=Sim(Dins,S,A,OR(M,E)) D_{traj} = Sim(D_{ins},S,A,\mathbf{OR}(M,E)) Dtraj=Sim(Dins,S,A,OR(M,E))
其中 OR 表示可以使用 MMM 或 EEE。
后向数据生成:
- 在获得复杂任务的轨迹后,我们将其分解,并为每个轨迹段创建逐步的 VLN 任务。
- 轨迹分解算法(更多细节见补充材料)将复杂任务轨迹分割成多个单阶段导航任务轨迹。
- 在单阶段导航目标轨迹中,该算法将轨迹划分为代表“向前移动”、“向左转”、“向右转”和“向前绕过”的片段。
- 通过使用动态滑动窗口,该算法在轨迹中持续搜索所有最长的连续动作片段。这些连续的动作片段作为逐步导航任务中动作指令的基本单元。
- 对于每个片段,RAM 图像注释模型【46】提供高置信度的视觉注释。
- 这些注释与动作指令一起作为提示输入到 GPT-4 中,以生成逐步指导的 VLN 任务,从而创建一组细化的分解单阶段导航任务。
3. 基准:LHPR-VLN
我们的 LHPR-VLN 基准定义了一个包含多个单阶段子任务 的复杂任务。对于 LHPR-VLN 任务,基本格式为:“在某个地方找到某物,然后将其带到某个地方的某物,然后……”。每个复杂任务都涉及在指定的初始位置定位一个对象,并将其运送到指定的目标位置,可能包括两到四个顺序的导航子任务。具身智能体需要按顺序完成这些单阶段导航任务,最终完成指令。对于每个单阶段导航任务,智能体必须接近目标对象 1 米的测地距离,确保对象位于 60 度水平视野内,以保持任务保真度。
在整个导航过程中,智能体从三个视角 (+60∘, 0∘, −60∘)(+60^{\circ},\,0^{\circ},\,-60^{\circ})(+60∘,0∘,−60∘) 获取观测数据,并被允许执行基本动作:向左转、向前移动、向右转和停止。当智能体选择“停止”动作时,当前任务(或子任务)被视为完成,任务成功与否是根据智能体相对于目标的最终位置状态来评估的。表 1 展示了代表性 VLN 基准与我们的 LHPR-VLN 之间的比较,LHPR-VLN 是第一个 LH-VLN 基准,包含来自 216 个复杂场景的 3,260 个多阶段和逐步 VLN 任务,平均每个任务有 150 个动作步骤和 18.17 个指令长度。
4. 指标
为了严格评估 LH-VLN 任务中的模型性能,我们引入了专门的指标,补充了标准评估指标(成功率 (SR)、Oracle 成功率 (OSR)、路径长度加权的成功率 (SPL) 和导航误差 (NE))。这些新指标包括独立成功率 (ISR)、条件成功率 (CSR) 和基于真实值的 CSR (CGT)。ISR 量化了每个子任务的单独成功率,提供了对独立子任务完成率的洞察。CSR 评估整体复杂任务的成功,因为每个子任务的结果都会影响后续任务,从而封装了任务序列中的相互依赖性。

图 3. LHPR-VLN 基准统计数据概述。 (a) 机器人分布。 (b) 任务长度分布。 © 任务指令和步骤长度的分布。我们将 2、3、4 个子任务分别视为短任务、中任务和长任务。
ISR=∑j=0M∑i=0Nsj,iM⋅N I S R=\sum_{j=0}^{M}\sum_{i=0}^{N}\frac{s_{j,i}}{M\cdot N} ISR=j=0∑Mi=0∑NM⋅Nsj,i
其中 MMM 是任务的数量,NNN 是 KaTeX parse error: Undefined control sequence: \itj at position 15: \mathrm{Task_{\̲i̲t̲j̲}} 中的子任务数量。CSR 指标的计算方法如下:
CSR=∑i=0Nsi(1+(N−1)si−1)N2 C S R=\sum_{i=0}^{N}\frac{s_{i}(1+(N-1)s_{i-1})}{N^{2}} CSR=i=0∑NN2si(1+(N−1)si−1)
其中 sis_{i}si 表示第 iii 个子任务的成功。
CGT 通过结合真实值加权进一步细化了 CSR,以解释路径难度的偏差。CGT 的计算方法为:
CGT=∑i=0NPiP⋅si(1+(N−1)si−1)N C G T=\sum_{i=0}^{N}{\frac{P_{i}}{P}}\cdot{\frac{s_{i}(1+(N-1)s_{i-1})}{N}} CGT=i=0∑NPPi⋅Nsi(1+(N−1)si−1)
此外,NavGen 平台生成的多粒度任务指令允许我们测试模型在同一轨迹内对各种指令类型的响应。这种测试方法不仅有助于分析智能体在导航过程中的关注点,还可以通过这些新指标对复杂场景中的任务理解和执行进行稳健的评估。
因此,这些新指标提供了对 LH-VLN 任务中模型性能的全面评估。
5. 多粒度动态记忆模型 (MGDM)
为了实现稳健的 LH-VLN,我们提出的多粒度动态记忆 (MGDM) 模型遵循标准的 VLN 流程,并包含三个关键组件:基础模型、思维链 (CoT) 反馈模块和自适应记忆集成和更新 (AMIU)(见图 4)。这些组件使模型能够在 LH-VLN 中表现出稳健的性能,解决了与空间感知、指令理解和长时序列任务连续性相关的挑战。
5.1 基础模型
基础框架旨在与 VLN 模型的标准结构保持一致。对于场景观测,模型使用预训练的视觉编码器 vit 对多方向视觉信息进行编码。每个观测图像 IiI_{i}Ii 被处理成视觉特征 viv_{i}vi。为了整合多个方向上的场景信息,使用 Transformer 编码器对多视图特征进行融合。方向图像特征 {vi}i=1n\{v_{i}\}_{i=1}^{n}{vi}i=1n 通过 Transformer 编码器进行处理,得到上下文丰富的表示 {oi}i=1n\{o_{i}\}_{i=1}^{n}{oi}i=1n,这些表示捕捉了视图之间的相互关系。
每个方向视图通过嵌入方向标记(“左”、“前”、“右”)来区分,以构建一个全面的场景表示 SSS:
S=[E(∗left∗),oleft,...,E(∗right∗),oright] S=[\mathcal{E}(^{*}\mathrm{left}^{*}),o_{\mathrm{left}},...,\mathcal{E}(^{*}\mathrm{right}^{*}),o_{\mathrm{right}}] S=[E(∗left∗),oleft,...,E(∗right∗),oright]
其中 E\mathcal{E}E 表示嵌入层。对于历史观测 HiH_{i}Hi,每个之前的场景以类似的方式进行编码,并添加逐步嵌入以捕捉时间关系,在观测历史中建立顺序:
Hn+1=[E(1),h1,...,E(n),hn] \begin{array}{r}{H_{n+1}=[\mathcal{E}(1),h_{1},...,\mathcal{E}(n),h_{n}]}\end{array} Hn+1=[E(1),h1,...,E(n),hn]
然后将场景和历史表示组合成一个统一的提示,并将其输入到大型语言模型 (LLM) G\mathcal{G}G 中以选择下一个动作:
an+1=G(E(prompt3),S,Hn) a_{n+1}=\mathcal{G}(\mathcal{E}(\mathrm{prompt_{3}}),S,H_{n}) an+1=G(E(prompt3),S,Hn)
5.2 使用 CoT 和记忆进行导航
为了解决基于 LLM 的 VLN 模型中存在的解释性有限和对“幻觉”【35】的敏感性(智能体在没有真正理解的情况下完成任务),我们引入了思维链 (CoT)【39】反馈模块,该模块接收任务指令,并根据相应记忆的历史观测生成思维链并构建语言提示。该模块旨在通过迭代地完善其任务理解和行动规划来增强智能体的推理能力。
CoT 反馈。 在每个子任务开始时以及导航过程中定期地,CoT 反馈模块接收任务指令、当前观测和记忆中的历史视觉观测,连同提示一起输入到 GPT-4 中以生成思维链 CoT =\mathrm{CoT}\,=CoT= GPT-4(Obs, Hist, Instruction, Prompt)。GPT-4 使用过去的观测和任务指令来建立当前任务上下文,这暗示了对任务的全面理解。然后根据这种理解对任务进行分解,指导智能体的即时行动。这个反思过程使智能体能够调整和完善其解释,从而提高任务理解和执行能力。
自适应记忆集成和更新。 以前的 VLN 研究通常使用过去观测的视觉编码作为记忆,这通常很有效。然而,在 LH-VLN 任务中,任务持续时间长会导致记忆过度积累,使得这种方法不切实际。此外,现有方法通常会丢弃最旧的记忆以保持固定长度的记忆序列,或者只是丢弃模型认为不合适的某些记忆【2】,这无意中删除了关键信息。为了缓解这些局限性,我们设计了一个自适应记忆集成和更新 (AMIU) 模块,该模块结合了短期记忆、长期记忆以及记忆模糊和遗忘过程。
短期记忆 MstM_{st}Mst 是由历史观测编码构建的,它捕捉了智能体在环境中移动时的有序观测:
Mst={hi}i=0n M_{st}=\{h_{i}\}_{i=0}^{n} Mst={hi}i=0n
当记忆长度 nnn 达到设定的最大值 NNN 时,触发动态遗忘。每个记忆元素 hih_{i}hi 都有一个相关的置信度得分 ci=G(⋅)ic_{i}=\mathcal{G}(\cdot)_{i}ci=G(⋅)i,表示模型对动作 iii 的置信度。因此,记忆序列 MstM_{st}Mst 有一个相关的置信度向量 C={ci}i=onC=\{c_{i}\}_{i=o}^{n}C={ci}i=on。
遗忘模块采用我们定义的“池化函数” P\mathcal{P}P。P(C)i\mathcal{P}(C)_{i}P(C)i 表示对 CCC 中第 iii 个元素及其相邻元素应用窗口大小为 2 的池化操作:
P(C)i={c1,...,AvgPool(cc−1,cc,cc+1),...,cn}=Ci \mathcal{P}(C)_{i}=\{c_{1},...,\mathrm{AvgPool}(c_{c-1},c_{c},c_{c+1}),...,c_{n}\}=C_{i} P(C)i={c1,...,AvgPool(cc−1,cc,cc+1),...,cn}=Ci
其中 Ci∈Rn−1C_{i}\in\mathbb{R}^{n-1}Ci∈Rn−1。我们分别对 CCC 中的每个元素应用池化操作,得到 {Ci}i=0n={P(C)i}i=0n\{C_{i}\}_{i=0}^{n}=\{\mathcal{P}(C)_{i}\}_{i=0}^{n}{Ci}i=0n={P(C)i}i=0n。然后我们计算每个 CiC_{i}Ci 的熵,并确定熵最小的池化索引:
argmini(−∑j=1n−1sjlogsj),sj=Ci,j∑j=0n−1Ci,j \arg\operatorname*{min}_{i}(-\sum_{j=1}^{n-1}s_{j}\log s_{j}),s_{j}=\frac{C_{i,j}}{\sum_{j=0}^{n-1}C_{i,j}} argimin(−j=1∑n−1sjlogsj),sj=∑j=0n−1Ci,jCi,j
对 MstM_{st}Mst 中与池化索引对应的元素应用相同的池化操作,并添加新的短期记忆以保持记忆序列。
Mst=P(Mst)i+hn∗ M_{st}=\mathcal{P}(M_{st})_{i}+h_{n}^{*} Mst=P(Mst)i+hn∗
长期记忆 MltM_{lt}Mlt 充当强化机制。当智能体导航时,长期记忆从数据集中检索相关的观测和动作,将其与智能体的当前上下文匹配以提供指导。检索过程选择前 nknknk 个匹配的观测-动作对,并对其进行加权以通知当前决策向量。这种记忆源自 LHPR-VLN 数据集,强化了先前的学习:
Mlt=Dataset(ok)={obsj,actj}j=1m M_{lt}=\mathrm{Dataset}(o_{k})=\{obs_{j},act_{j}\}_{j=1}^{m} Mlt=Dataset(ok)={obsj,actj}j=1m
因此,最终实例可以表述为:
Ink=argsortt=0nk(Mlt⋅v∑j=1mMlt,j2⋅∑i=1nvi2) I_{nk}=\operatorname{argsort}_{t=0}^{nk}(\frac{M_{lt}\cdot v}{\sqrt{\sum_{j=1}^{m}M_{lt,j}^{2}}\cdot\sqrt{\sum_{i=1}^{n}v_{i}^{2}}}) Ink=argsortt=0nk(∑j=1mMlt,j2⋅∑i=1nvi2Mlt⋅v)
动作决策 aaa 是通过平均检索到的动作来计算的:
a=a⋅arg({at}t=0nk) a=a\cdot\arg(\{a_{t}\}_{t=0}^{nk}) a=a⋅arg({at}t=0nk)
其中 aaa 是当前决策向量。最终的交叉熵损失在模型的决策 aaa 和当前动作的专家决策 eee 之间计算:
argminΘL(a,e)=argminΘ(−∑i=0nailog(ei)) \arg\operatorname*{min}_{\Theta}\mathcal{L}(a,e)=\arg\operatorname*{min}_{\Theta}(-\sum_{i=0}^{n}a_{i}\log(e_{i})) argΘminL(a,e)=argΘmin(−i=0∑nailog(ei))
6. 实验
6.1 实验设置
模拟器: 我们在 Habitat3【8,16】中进行实验,它提供了一个用于 VLN 的连续 3D 场景平台。此外,我们还在 Isaac Sim 中进行实验,它具有高质量的场景渲染和物理交互。
传感器: 对于每个动作步骤,智能体从前方、左方 (+60∘)(+60^{\circ})(+60∘) 和右方 (−60∘)(-60^{\circ})(−60∘) 接收 RGB 观测。也可以自定义这三个方向的深度图像。
动作: 我们为智能体提供原子动作,包括“向前移动” (+0.25)_{(+0.25)}(+0.25)、“向左转” (+30∘)(+30^{\circ})(+30∘)、“向右转” (−30∘)(-30^{\circ})(−30∘) 和“停止”。当智能体执行停止动作时,当前任务(或子任务)被视为完成。我们还提供基于坐标的移动选项。
场景资产: 我们的场景资产主要来自 HM3D【42】,其中包括 216 个带有语义注释的大型室内 3D 重建场景。此外,我们使用 HSSD【12】,其中包括 211 个高质量的室内场景,以测试使用 NavGen 进行数据生成。
机器人配置: 机器人包括 Hello Robot 的 Stretch 机器人和波士顿动力公司的 Spot 机器人。Stretch 有一个轮式底座和一个带有结构框架的机械臂,而 Spot 是一只四足机器狗,能够在其背上安装机械臂。
训练设置: 我们交替使用模仿学习和基于轨迹的监督学习进行训练。LLM 是 Vicuna 7B v0【4】,视觉编码器是 EVA-CLIP-02-Large【33】的 ViT 模型。在训练过程中,视觉编码器保持冻结状态。在整个训练阶段,我们使用 Adam 优化器,学习率为 3e-5。
指标: 除了 LH-VLN 指标 ISR、CSR 和 CGT 外,我们还根据导航任务的基准指标【3】进行了测试,包括 SR(成功率)、SPL(路径长度加权的成功率)、OSR(Oracle 成功率)和 NE(导航误差)。对于 SR、OSR 和 SPL,只有当 LH-VLN 任务中的所有子任务都按照指令的逻辑顺序正确完成时,任务才被视为成功。对于 NE,只有当智能体执行“停止”动作时,NE 才计数。
6.1.1 基线模型
- ETPNav【2】: ETPNav 是一种基于图的导航模型,其中智能体的当前和历史观测被建模为图节点。
- GLM-4v prompt【6】: GLM-4v 是最先进的视觉语言模型。为了评估视觉语言模型在 LH-VLN 任务中的性能,我们使用提示工程来指导 GLM-4v 产生合理的输出,并测试其实际性能。
- NaviLLM【47】: NaviLLM 是离散环境中导航的最先进模型。我们将该方法适应于连续环境,并对其在 LH-VLN 数据集上的表现进行了微调。
- GPT-4 + NaviLLM: 为了评估传统单阶段模型在 LH-VLN 中的表现,并借助 LLM 分解复杂任务,我们将 GPT-4 与 NaviLLM 相结合。GPT-4 首先将复杂任务分解成几个子任务,然后 NaviLLM 按顺序执行每个子任务。
6.2 结果分析
我们使用 LHPR-VLN 基准对基线模型进行 LH-VLN 任务及其相应的逐步轨迹测试。通过这些测试,我们旨在回答以下问题:
Q1: 现有模型能否在信息有限的情况下理解并完成多阶段复杂任务?
Q2: 如何理解多阶段复杂任务与单阶段简单任务之间的关系?
Q3: 在多阶段复杂任务中,记忆的意义是什么?
RQ1: 对于 ETPNav,由于其路径点预测器的固有局限性,即使只有三个视角 RGBD 设置,该模型仍然无法有效地预测可导航点,尽管它被设计用于处理无效导航点和死锁状态。表 2 显示了每个模型在 LH-VLN 任务中的表现。可以看出,所有模型的表现都很差。在具有 2-3 个子任务的相对较短的 LH-VLN 任务中,所有模型的 SR、ISR、CSR 和 CGT 均为 0。这表明这些模型甚至无法完成单个子任务。在具有 3-4 个子任务的较长 LH-VLN 任务中,只有微调的 NaviLLM、GPT-4 + NaviLLM 和我们的 MGDM 可以完成一些子任务。这表明现有模型无法在信息有限的情况下有效地理解和完成多阶段复杂任务。
RQ2: 为了探索多阶段复杂任务与单阶段简单任务之间的关系,我们测试了单阶段导航模型 NaviLLM 与 GPT-4 任务分解的组合。通过使用 GPT-4 分解复杂任务,NaviLLM 可以按顺序执行几个单对象导航任务。在表 2 中可以看出,与预训练的 NaviLLM 和微调的 NaviLLM 相比,GPT-4 + NaviLLM 的性能有所提高,尤其是在 ISR 方面,它比微调的 NaviLLM 提高了 23%。这表明在单个子任务上的性能有显著提高,突出了其单阶段导航能力。
然而,GPT-4 + NaviLLM 方法的性能仍然略低于我们专门为复杂任务设计的 MGDM,尤其是在 CGT 方面。事实上,GPT-4 + NaviLLM 的 CGT 指标甚至低于微调的 NaviLLM。由于 CGT 是基于真实值长度加权的,因此这个结果表明我们的 MGDM 更擅长完成更长、更困难的子任务。原因可能是我们的 MGDM 直接执行复杂任务可以保持更连贯、更完整的记忆,这有助于它完成更复杂的任务。此外,在 CSR 方面的优势进一步表明 MGDM 对多阶段 LH-VLN 任务有更好的综合理解。
实际上,将任务分解用于复杂任务与单阶段导航模型相结合,可以在一定程度上提高单阶段模型在复杂任务上的性能。然而,这种方法也导致了对复杂任务的整体理解不足,以及记忆的不完整和碎片化。
RQ3: 此外,所有模型在具有 3-4 个子任务的 LH-VLN 任务中的 ISR、CSR 和 CGT 方面的表现优于具有 2-3 个子任务的 LH-VLN 任务。这可能是因为虽然较长和多阶段的任务可能更难,但前几个阶段的记忆积累可以帮助 VLN 模型完成后续阶段的子任务。这可能表明开发用于多阶段复杂任务的 VLN 模型的重要性。
值得注意的是,我们的 MGDM 的 NE 相对较低。当任务太难导致模型表现不佳时,NE 反映了模型性能与成功之间的差距。这表明我们的 MGDM 可能具有更大的 LH-VLN 潜力。此外,在表 3 所示的逐步任务中,尽管我们的 MGDM 具有较高的 OSR 和较低的 NE,但其 SR 和 SPL 指标均为 0。这表明我们的 MGDM 目前面临的挑战是有效确定目标是否已实现。
7. 消融研究
我们对多粒度动态记忆模块和思维链 (CoT) 反馈模块进行了消融研究,结果见表 4。可以看出,无论消融 CoT 反馈模块还是多粒度动态记忆模块,模型性能都会受到显著影响。这表明思维链生成和记忆在模型解决 LH-VLN 任务的能力中起着至关重要的作用。从 NE 的角度来看,尤其是多粒度动态记忆模块,它对模型性能有显著影响。这在成功的长时导航示例的可视化分析中也得到了体现(见图 5)。智能体的动作在开始时(1-3 步)非常混乱。只有当记忆序列达到一定长度后,它才开始有效行动。这进一步强调了记忆模块设计对于 LH-VLN 任务的重要性。
8. 结论
我们从平台、基准和方法三个方面解决了长时视觉语言导航 (LH-VLN) 的挑战。具体来说,我们开发了一个自动化数据生成平台 NavGen,它构建了具有复杂任务结构的数据集并提高了数据效用。我们还构建了 LHPR-VLN 基准,它提供了三个新的指标,用于详细的子任务级评估。此外,我们介绍了 MGDM 模型,该模型旨在通过结合短期和长期记忆机制来增强模型在动态环境中的适应性,在 LH-VLN 任务中取得了出色的性能。
补充材料
9. 符号表
| 符号 | 解释 |
|---|---|
| IiI_{i}Ii | 从视图 iii 观测到的图像 |
| UiU_{i}Ui | 视图 iii 的视觉特征 |
| OiO_{i}Oi | 视图 iii 融合后的视觉特征 |
| SSS | 当前观测的场景表示 |
| E\mathcal{E}E | Tokenizer |
| hih_{i}hi | 第 iii 步的历史表示 |
| Hn+1H_{n+1}Hn+1 | 在第 n+1n+1n+1 步获得的之前 nnn 步的记忆集 |
| G\mathcal{G}G | 大型语言模型 |
| ana_{n}an | 模型在第 nnn 步的决策动作 |
| ene_{n}en | 专家在第 nnn 步的决策动作 |
| MstM_{st}Mst | 短期记忆 |
| MltM_{lt}Mlt | 长期记忆 |
| CCC | 由 G\mathcal{G}G 生成的置信度向量 |
| P\mathcal{P}P | 池化函数 |
10. 基准
10.1 轨迹分割算法
我们为 NavGen 设计了轨迹分割算法 1,以从导航轨迹后向生成逐步导航任务。
10.2 数据集统计
我们基于 LH-VLN 数据集的复杂任务训练集进行了统计分析,结果如图 6 所示。
10.3 案例研究
在图 7 中,我们展示了两个案例进行分析。
案例 A: 智能体很快找到了客厅,并在观测 3 中确定桌子上的物品为目标。然而,在观测 4 中,它确定它不是“包”,这促使它改变策略并进一步探索场景(观测 5-12)。在完成场景探索后,智能体重新开始搜索目标。
案例 B: 智能体最初无法确定当前场景,并决定原地旋转(观测 1-4)。然后它试探性地搜索客厅。当意识到当前方向没有通往客厅时,它转过身来(观测 6-7)并向客厅区域移动(观测 8-10)。由于它没有在客厅找到“设备”,智能体选择探索另一个方向(观测 11-12)。
11. 额外实验
11.1 使用提示
我们展示了 NavGen 前向任务生成提示 (prompt1 9)、后向任务生成提示 (prompt2 10) 和 MGDM 模型提示 (prompt3 11)。提示3 是参考【47】设计的。

图 6. 基于任务长度和机器人配置对 LH-VLN 数据集分布的统计。 我们将 2、3、4 个子任务分别视为短任务、中任务和长任务。

图 7. 两个任务的轨迹部分。
11.2 数据生成
我们在 Habitat 和 Isaac Sim 中使用 NavGen 进行数据生成实验。基于 NavGen,我们使用 HM3D 场景资产和 Habitat3 内置的贪婪路径查找算法在 Habitat3 中生成任务和轨迹,并使用 HSSD 场景资产和基于 D∗\mathbf{D}^{*}D∗ Lite【13】的路径规划算法在 Isaac Sim 中生成轨迹和任务。任务和轨迹如图 8 所示。

图 8. 使用 NavGen 在 Habitat 和 Isaac Sim 中生成的任务和轨迹。
11.3 实验设置的更多细节
具体来说,我们设计了两种训练方法。一种方法是在训练主部分时在监督学习和模仿学习之间交替。另一种是两阶段【47】训练方法:第一阶段使用监督学习进行预训练,然后使用强化学习进行进一步训练。
对于监督学习,我们对 LH-VLN 数据集中的轨迹数据集进行训练。智能体从数据集中获取观测、位置信息和动作标签,而不直接部署在模拟器中。在模仿学习中,智能体被部署在模拟器中,在模拟环境中根据任务指令行动。专家动作由 Habitat 3 的贪婪路径查找算法提供,智能体学习模仿这些专家动作。
对于额外实验,我们测试了最先进的零样本模型 InstructNav【23】。InstructNav 使用 GPT-4 将指令分解为动态链式导航。基于 DCoN,InstructNav 从各个角度优化导航策略,并最终生成动作决策。与其他模型相比,InstructNav 利用了包括当前视角的深度图、场景的俯视图以及部分使用 Habitat 3 的贪婪路径查找界面在内的额外信息。
此外,我们替换了 MGDM 中的大型语言模型,以测试其与不同大型模型的兼容性以及这些模型对测试结果的影响,按照两阶段训练方法。用于替换测试的模型是 Llama 3.1 8B Instruct【25】。由于 GPU 内存限制,我们冻结了模型的语言层的第 1-5 层。
11.4 更多实验结果
首先,我们补充了不同机器人配置(Spot、Stretch)的测试结果(表 6)。
基于随机结果,执行 Spot 和 Stretch 机器人任务的难度不同。Spot 的 NE(导航误差)大于 Stretch,表明在涉及 Spot 机器人的任务中,平均而言,智能体距离物体更远。在这一前提下,表 6 中的数据表明,除了零样本模型 InstructNav 和 GLM-4v 提示外,其他模型通常在 Spot 机器人任务上的表现优于 Stretch 机器人任务。鉴于 LH-VLN 训练集对这两种类型的任务有相对平衡的分布,而 NaviLLM 预训练模型(未在 LH-VLN 数据集上进行训练)表现出相同的趋势,我们认为性能差异可能源于 Spot 机器人较低的视角。这种配置排除了较小物体的干扰,使智能体更容易接近目标区域。
此外,在 Spot 机器人配置的任务中,MGDM 的性能略低于 NaviLLM + GPT-4。值得注意的是,对于涉及 NaviLLM 相关模型的测试,它们的性能在 Spot 机器人配置下具有显著优势。这表明 NaviLLM 模型更适合 Spot 相关任务。这种优势可能源于 NaviLLM 的预训练数据与 Spot 机器人配置更接近,使其在这方面具有一定优势。相比之下,MGDM,由于其记忆模块的设计,更有可能“记住”场景中的小物体。这可能会缩小 Spot 和 Stretch 机器人配置之间的性能差距,从而在两种设置中产生更平衡的结果。
此外,我们包括了额外实验中的 InstructNav,以及采用不同大型语言模型和训练策略的 MGDM 模型进行比较。如表 7 所示,由于其动态链式导航模块能够理解和分解复杂任务,InstructNav 在零样本模型中表现异常出色。然而,InstructNav 的一些配置,例如避免历史路径的轨迹值图,不适合多阶段复杂任务。
替换 Llama 3 的影响有限,这可能归因于 Vicuna 1.5 和 Llama 3 之间的性能差异,以及训练配置对模型的影响。使用两阶段设置训练的 MGDM 在 ISR、CSR 和 CGT 指标上取得了更好的性能,但在 NE 指标上表现相对较差。这表明不同的训练设置并没有有效地解决模型难以确定目标是否成功到达的问题。
12. 系统:
你擅长规划和设计。你需要根据场景(包含大量物体)和机器人特性设计一个实用的任务。
规则:
输入有两个部分:场景和机器人。场景包括场景中不同区域的物体。这些物体是生成任务的基石,你的任务必须基于场景。而输入的机器人包括机器人的特性,这是你在生成任务时需要考虑的因素。你生成的任务应包含以下三个子任务:
- Move to(“object region id”): 走到一个区域的物体旁。注意,“object region id” 应该由物体和输入场景中对应区域的 ID 组成。
- Grab(“object”): 当机器人走到一个物体旁时,它可能需要抓取它。要执行此操作,机器人首先需要走到物体旁,并确保机械臂为空。“object” 应该对应于要抓取的物体。注意,“object” 应该在输入场景中。
- Release(“object”): 当机器人走到一个地方并且手中有一个物体时,它可以将手中的物体释放到那个地方。要执行此操作,机器人首先需要走到那个地方,并确保机械臂不为空。“object” 应该对应于要释放的物体。注意,“object” 应该在输入场景中。
有以下几点需要注意:
- 避免在指令中使用“抓取”和“释放”这样的词语。
- 注意你的任务中的物体应该限制在 1 到 2 个区域,并且你应该在指令中提到这些区域。所有这些区域都应该在输入场景中。
- 你生成的任务应该类似于“将一个区域的物体带到某个区域的某个地方,然后从那个地方检索一个物体”的指令。
- 你要拿/抓的物体应该是便携式的。
- 你需要生成一个包含 4 到 6 个子任务的任务。
- 子任务“Move to”中的区域 ID 应该与指令中的区域相对应。
你的输出应该是一个 Python 字典,它有两个键:
- dictionary[“Task instruction”]: 描述任务的对话式任务指令。
- dictionary[“Subtask list”]: 构成任务的子任务列表。确保任务指令足够对话式,并且任务合理。
示例:
以下是输入和输出示例:
输入:
场景: “区域 0: 卧室”: [“书架”, “玩具”, “台灯”, “白板”, “床”, “床头柜”, “挂着的衣服”, “画”, “地毯”, “包”, “五斗柜”, “一篮子东西”, “盒子”, “衣架”, “鞋子”], “区域 3: 浴室”: [“门”, “厕所”, “垃圾箱”, “马桶刷”, “画”, “肥皂分配器”, “卫生纸”, “水槽”, “水槽柜”], “区域 4: 办公室”: [“画”, “文具”, “雕像”, “装饰品”, “盒子”, “文件夹”, “打印机”, “凳子”, “垃圾箱”, “植物”, “电脑”, “鼠标”, “键盘”, “遥控器”, “椅子”, “饮水机”, “靠垫”, “桌子”, “灯具”]
机器人: “Spot 在模拟器中是一只能干的四足机器人。动作: Spot 支持三种动作:向前移动、向左转和向右转。传感器: Spot 在前方、左方和右方配备了三个高度为 0.5 米的 RGB 摄像头,以获取这三个方向的具身图像。移动性: Spot 的四足设计使其能够导航具有挑战性的地形,包括楼梯、岩石表面和杂乱的环境。使用: 由于 Spot 的形状像狗,它可以为人类在家庭场景中做一些工作。它有一个简单的机械臂,但位置较低(0.5 米),可以执行一些简单的抓取。”
输出:
{
"Task instruction": "Take the bag in bedroom to the desk in office",
"Subtask list": [
"Move to('bag 0')",
"Grab('bag')",
"Move to('desk 4')",
"Release('bag')"
]
}
系统:
你擅长引导道路。现在你需要根据一些信息生成逐步导航指令。
规则:
输入是一个字典,格式如下:
{
"target": 导航的目标,
"step 1": 包含此步骤的动作和与此步骤的环境相关的场景标记的字典,
"step n": 包含此步骤的动作和与此步骤的环境相关的场景标记的字典
}
你需要结合每个步骤的动作和相应的环境描述场景标记,最终得到一个完整、易于理解且准确的导航指令。请注意以下要求:
- 只需为每个步骤选择最合适的场景标记,以形成流畅且逻辑合理的导航指令。
- 对应于“向前移动”动作的步骤应优先选择场景标记中的特定场景。
- 对应于“向左转”和“向右转”动作的步骤应优先选择场景标记中的特定物体。
- 最终指令中每个动作的顺序应与输入中步骤的顺序相同,指令中的总步骤数应与输入中的步骤数相同,并且涉及的场景相关信息应位于相应动作的场景标记中。
- 指令的最后一步应包含导航目标,即输入中的目标。
- 你的输出应该只是指令。指令不应包含“步骤”这样的词语。
示例:
以下是示例:
输入:
{
'target': 'guitar case',
'step 0': {'action': 'move forward', 'tags': ['store', 'retail', 'shopper', 'mall', 'fill']},
'step 1': {'action': 'make a left turn', 'tags': ['equipment', 'room', 'store', 'fill', 'retail']},
'step 2': {'action': 'move forward', 'tags': ['beam', 'retail', 'store', 'warehouse', 'room']},
'step 3': {'action': 'turn right', 'tags': ['retail', 'room', 'store', 'warehouse', 'fill']},
'step 4': {'action': 'move forward', 'tags': ['room', 'store', 'fill', 'shelf', 'retail']},
'step 5': {'action': 'turn left', 'tags': ['electronic', 'equipment', 'fill', 'room', 'store']},
'step 6': {'action': 'move forward', 'tags': ['retail', 'shelf', 'store', 'fill', 'room']
输出:
Move forward through the store and make a left turn at the equipment, go ahead through the store, turn right at the retail shelf, move forward and turn left by the electronic equipment, finally go straight to the guitar case.
请根据上述提示和以下输入生成输出。逐步思考。
输入:
{
"target": "coffee machine",
"step 1": {"action": "move forward", "tags": ["hallway", "doorway", "kitchen", "living room", "stairs"]},
"step 2": {"action": "turn right", "tags": ["kitchen", "living room", "doorway", "hallway", "coffee machine"]},
"step 3": {"action": "move forward", "tags": ["kitchen", "coffee machine", "sink", "stove", "oven"]},
"step 4": {"action": "turn left", "tags": ["coffee machine", "sink", "stove", "oven", "kitchen"]},
"step 5": {"action": "move forward", "tags": ["coffee machine", "sink", "stove", "oven", "kitchen"]},
"step 6": {"action": "stop", "tags": ["coffee machine", "sink", "stove", "oven", "kitchen"]}
}
输出:
Move forward through the hallway and turn right at the kitchen, go ahead through the kitchen and turn left by the coffee machine, then go straight to the coffee machine.
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)