【VLN 从导航图走向真实运动 里程碑】ECCV 2020 Beyond the Nav-Graph 论文阅读|VLN-CE 数据集 + 跨模态注意力 + DAgger
一句话总结:这篇论文将传统依赖导航图的 VLN 任务迁移到连续三维环境,让智能体必须通过前进、转向、停止等底层动作完成语言导航。它证明:过去 VLN 模型的高性能,在相当程度上依赖已知拓扑、可靠的节点跳转和精确定位等隐含前提。
0. 论文基本信息
- 论文名称:Beyond the Nav-Graph: Vision-and-Language Navigation in Continuous Environments
- 作者:Jacob Krantz、Erik Wijmans、Arjun Majumdar、Dhruv Batra、Stefan Lee
- 发表会议:ECCV 2020
- 研究方向:Vision-and-Language Navigation(VLN)、Embodied AI、连续环境视觉导航
- 论文类型:任务设定与数据集转换、基线模型、系统性对比实验
- 核心关键词:VLN-CE、R2R、Matterport3D、Habitat、RGB-D、Cross-Modal Attention、DAgger
- 阅读目的:弄清楚 VLN 导航图究竟简化了哪些现实难题;理解 RGB-D、语言注意力与历史动作怎样共同决定底层动作;判断该方向与 SLAM、自主导航的联系。
- 论文 PDF:https://www.ecva.net/papers/eccv_2020/papers_ECCV/papers/123730103.pdf
- 项目主页及代码入口:https://jacobkrantz.github.io/vlnce/
1. 文献核心信息:What—Why—How—Experiments—Conclusion
1.1 What——本文做了什么?
本文提出了 VLN-CE(Vision-and-Language Navigation in Continuous Environments)任务。 机器人不再在预先连接的全景图节点间“瞬移”,而是在连续的 3D 场景中,通过局部 RGB-D 感知执行低层动作、逐步到达自然语言描述的目标。
主要贡献有三点:
- 任务与环境:把 R2R 中依赖导航图的指令和轨迹迁移到 Habitat 的 Matterport3D 连续三维网格中,取消已知拓扑、节点间理想导航、精确定位等隐含便利条件。
- 模型与基线:提供 Seq2Seq 和 Cross-Modal Attention 两套模型,并通过移除 RGB、深度、语言等输入做消融实验。
- 训练与分析:验证 DAgger、Progress Monitor 和合成指令增强等技术在长动作序列中的效果,并对比导航图场景与连续场景的性能落差。
直白理解: VLN 更像“地图上的地点选择题”, VLN-CE 更像“机器人自己走过去”。但依旧使用离散动作原语,并非直接输出连续速度控制量。

图 1:左边依赖导航图与预设可通行边;右边在连续环境中逐步执行底层动作。
1.2 Why——为什么需要 VLN-CE?
传统 VLN 使用导航图:
G=(V,E) \mathcal{G}=(V,E) G=(V,E)
其中,VVV 表示预先拍摄的全景视点,EEE 表示人为构造或确认的可通行连接。导航智能体通常选择相邻节点,而不必解决节点之间真实的移动过程。
论文指出了三个关键隐含假设:
- Known Topology(已知拓扑):即使测试场景没见过,算法也能使用该场景现成的导航图结构。
- Oracle Navigation(理想短程导航):选中相邻节点,系统就自动抵达,绕障、碰撞和控制误差都被抽象掉了。
- Perfect Localization(完美定位):系统能获得精确位置与朝向,现实中却需要靠定位/里程计等模块估计。
这导致传统 VLN 在一定程度上变成了视觉引导的图搜索,而不是完整的具身移动系统。论文的问题是:如果取消这些额外便利,之前的模型还有效吗?

表 1:VLN-CE 同时采用真实场景扫描、人工自然语言指令和不受导航图固定节点约束的移动方式。
1.3 How——具体方法
A. 连续环境、观测与动作设计
论文沿用 Matterport3D 的真实建筑扫描与重建网格,在 Habitat Simulator 中部署机器人。
| 设置 | VLN-CE 具体内容 |
|---|---|
| 环境 | Matterport3D 重建的室内三维场景 |
| 机器人形态 | 类似零转弯半径地面移动机器人的模拟智能体 |
| 视觉观测 | 第一人称 RGB + Depth,图像分辨率 256×256256\times256256×256 |
| 水平视场角 | 90∘90^\circ90∘ |
| 前进动作 | Forward:前进 0.25 m0.25\,\mathrm{m}0.25m |
| 左/右转 | Turn Left / Right:每次 15∘15^\circ15∘ |
| 结束动作 | Stop:主动宣布抵达目标 |
| 智能体额外输入 | 不直接提供精确位置与朝向 |
动作空间可以表示为:
A={Forward,Left,Right,Stop} \mathcal A=\{\text{Forward},\text{Left},\text{Right},\text{Stop}\} A={Forward,Left,Right,Stop}
要点:这里的“continuous environments”指位置可在三维可通行区域内连续变化;动作集合依然是四种离散选择。这与直接学习 v,ωv,\omegav,ω 速度指令不是同一件事。
B. R2R 轨迹如何迁移为 VLN-CE 数据集?
传统 R2R 的一条轨迹是导航图中的节点序列:
τ=[v1,v2,…,vT] \tau=[v_1,v_2,\ldots,v_T] τ=[v1,v2,…,vT]
论文先将全景节点映射为连续重建网格中的可到达位置,再检查能否通过路径规划依次到达相邻路点,最后生成以底层动作表示的路径。
转换流程:
- 节点投影:从原始全景视点向下投射射线,寻找适合地面机器人的可通行网格位置;必要时做小范围人工修正。
- 可达性检查:用 A* 路径搜索验证相邻路点 wi→wi+1w_i\to w_{i+1}wi→wi+1 是否可达,判定标准为到达下一路点 0.5 m0.5\,\mathrm{m}0.5m 范围内。
- 生成细粒度轨迹:由连续三维场景中的路线生成逐步移动和转向的动作序列。

图 2:左侧是视点水平位移分布;中间展示重建中的缺口、物体位置变化等问题;右侧显示低层动作使轨迹步数显著增加。
核心数据如下:
| 指标 | 论文结果 |
|---|---|
| 成功映射的全景节点比例 | 98.3% |
| 需要水平调整的视点比例 | 3%,平均调整约 0.19 m |
| 可在连续场景中通行的 R2R 轨迹比例 | 77% |
| VLN-CE 数据集规模 | 4,475 条转换后的训练与验证轨迹 |
| 一条轨迹的平均动作数 | 55.88 次(传统 R2R 约 4–6 次节点跳转) |
为什么不是 100% 可迁移? 真实场景重建的网格可能存在缺口;全景拍摄与网格重建时家具摆放不一致,也可能导致原来的节点连接实际上不可达。
C. Seq2Seq 基线模型

图 3:左侧是 Seq2Seq 基线,右侧是本文采用的跨模态注意力模型。
输入及编码:
- 语言:词先经 GloVe 表示,再经 LSTM 编码。
- RGB:用 ImageNet 预训练 ResNet-50 提取语义视觉特征。
- Depth:用点目标导航任务预训练的修改版 ResNet-50 提取几何特征。
- 决策:把视觉、深度、整句语言表示送入 GRU,预测下一步动作。
对应论文公式 (1):
vˉt=MeanPool(Vt),dˉt=[d1,…,dwh],s=LSTM(w1,…,wT) \bar{\mathbf v}_t=\operatorname{MeanPool}(\mathcal V_t),\qquad \bar{\mathbf d}_t=[\mathbf d_1,\ldots,\mathbf d_{wh}],\qquad \mathbf s=\operatorname{LSTM}(\mathbf w_1,\ldots,\mathbf w_T) vˉt=MeanPool(Vt),dˉt=[d1,…,dwh],s=LSTM(w1,…,wT)
公式 (2):
ht(a)=GRU([vˉt;dˉt;s],ht−1(a)) \mathbf h_t^{(a)}=\operatorname{GRU}\left( [\bar{\mathbf v}_t;\bar{\mathbf d}_t;\mathbf s],\mathbf h_{t-1}^{(a)}\right) ht(a)=GRU([vˉt;dˉt;s],ht−1(a))
at=argmaxa softmax(Waht(a)+ba)a a_t=\underset{a}{\operatorname{argmax}}\ \operatorname{softmax}\left(W_a\mathbf h_t^{(a)}+\mathbf b_a\right)_a at=aargmax softmax(Waht(a)+ba)a
其中,[⋅;⋅][\cdot;\cdot][⋅;⋅] 是特征拼接,s\mathbf ss 是句子级固定语言向量,ht(a)\mathbf h_t^{(a)}ht(a) 是随时间更新的动作决策隐状态。
问题:整条导航指令被压缩成固定向量 s\mathbf ss,无法显式区分“当前应该关注上楼梯”还是“下一步应该找沙发”。
D. Cross-Modal Attention 跨模态注意力模型
这是全文最需要精读的模型部分,见 Fig. 3(b) 和第 9 页公式 (3)–(7)。
它把决策分成两段:先更新历史状态和当前语言重点,再用该语言重点从 RGB、Depth 中提取相关信息,最后输出动作。
第一步:利用视觉、深度和历史动作更新导航状态(公式 3)
ht(attn)=GRU([vˉt;dˉt;at−1],ht−1(attn)) \mathbf h_t^{(attn)}=\operatorname{GRU}\left( [\bar{\mathbf v}_t;\bar{\mathbf d}_t;\mathbf a_{t-1}],\mathbf h_{t-1}^{(attn)}\right) ht(attn)=GRU([vˉt;dˉt;at−1],ht−1(attn))
这里 at−1\mathbf a_{t-1}at−1 是上一动作的学习式嵌入,原文使用 323232 维动作嵌入。
第二步:编码整条指令的每个 token(公式 4)
S={s1,…,sT}=BiLSTM(w1,…,wT) \mathcal S=\{\mathbf s_1,\ldots,\mathbf s_T\}=\operatorname{BiLSTM}(\mathbf w_1,\ldots,\mathbf w_T) S={s1,…,sT}=BiLSTM(w1,…,wT)
与基础模型只用最终句向量不同,这里保留所有词/位置的隐藏表示,为动态语言注意力做准备。
第三步:语言注意力引导视觉和深度注意力(公式 5)
s^t=Attn(S,ht(attn)) \hat{\mathbf s}_t=\operatorname{Attn}(\mathcal S,\mathbf h_t^{(attn)}) s^t=Attn(S,ht(attn))
v^t=Attn(Vt,s^t),d^t=Attn(Dt,s^t) \hat{\mathbf v}_t=\operatorname{Attn}(\mathcal V_t,\hat{\mathbf s}_t),\qquad \hat{\mathbf d}_t=\operatorname{Attn}(\mathcal D_t,\hat{\mathbf s}_t) v^t=Attn(Vt,s^t),d^t=Attn(Dt,s^t)
文中注意力的核心是缩放点积加权求和:
αi=softmaxi ((WKxi)⊤qdq),x^=∑iαixi \alpha_i=\operatorname{softmax}_i\!\left( \frac{(W_K\mathbf x_i)^\top\mathbf q}{\sqrt{d_q}}\right), \qquad \hat{\mathbf x}=\sum_i\alpha_i\mathbf x_i αi=softmaxi(dq(WKxi)⊤q),x^=i∑αixi
直白理解:当指令是“经过厨房,再在沙发旁停下”,模型在当前时刻先选中相关的语言片段,再让视觉模块重点关注对应的场景区域。这里的视觉注意力是在特征空间的不同位置分配权重,并不等于模型已经可靠识别出了具体物体。
第四步:融合后生成下一动作(公式 6–7)
ht(a)=GRU([s^t;v^t;d^t;at−1;ht(attn)],ht−1(a)) \mathbf h_t^{(a)}=\operatorname{GRU}\left( [\hat{\mathbf s}_t;\hat{\mathbf v}_t;\hat{\mathbf d}_t;\mathbf a_{t-1};\mathbf h_t^{(attn)}],\mathbf h_{t-1}^{(a)}\right) ht(a)=GRU([s^t;v^t;d^t;at−1;ht(attn)],ht−1(a))
at=argmaxa softmax(Waht(a)+ba)a a_t=\underset{a}{\operatorname{argmax}}\ \operatorname{softmax}\left(W_a\mathbf h_t^{(a)}+\mathbf b_a\right)_a at=aargmax softmax(Waht(a)+ba)a
整条信息流:RGB/Depth + 上一步动作 → 第一个 GRU → 关注当前语言片段 → 用语言筛选 RGB 与 Depth 空间特征 → 第二个 GRU → Forward / Left / Right / Stop。
E. 训练策略:为什么要 DAgger?
作者采用模仿学习,并在基础训练中使用 Inflection Weighting(动作转折加权):对“前进变成转弯”等相对少见的动作切换时刻赋更高权重,避免长序列大量重复 Forward 主导损失。论文实验中的加权系数是 3.2。
同时比较三种策略:
| 策略 | 解决的问题 | 实现思路 |
|---|---|---|
| DAgger(DA) | 训练看到正确状态、测试却会走偏的暴露偏差 | 让当前策略参与采样,向专家查询相应状态下的正确动作,并聚合历次数据再训练 |
| Data Augmentation(Aug) | 指令–轨迹配对太少 | 借助 Speaker 模型生成指令,迁移约 15 万条合成轨迹 |
| Progress Monitor(PM) | 模型不知道走到哪、何时停 | 加辅助监督,预测当前沿参考轨迹已经完成的比例 |
论文 DAgger 采样阶段中,选用专家动作的概率按下式衰减(nnn 为迭代轮次):
βn=0.75n \beta_n=0.75^n βn=0.75n
区分概念:DAgger 不是简单“再加一份数据”,而是专门让策略接触自己犯错后会到达的状态,再让专家给这些状态标注纠正动作。
1.4 Experiments——实验设计和结果
A. 评价指标
论文报告六种 VLN / 导航指标:
- TL(Trajectory Length):实际执行路径的长度,越小不一定越好,要结合是否成功。
- NE(Navigation Error):终点到目标点的导航距离,越小越好。
- OS(Oracle Success):若轨迹上某处曾足够接近目标,则按理想停止时机评估成功率;与实际 Stop 是否正确有区别。
- SR(Success Rate):智能体实际结束时是否到达目标邻域的成功比例。
- SPL(Success weighted by Path Length):既要成功,也要路径高效。常用定义为:
SPL=1N∑i=1NSiℓimax(pi,ℓi) \operatorname{SPL}=\frac1N\sum_{i=1}^{N}S_i\frac{\ell_i}{\max(p_i,\ell_i)} SPL=N1i=1∑NSimax(pi,ℓi)ℓi
这里 Si∈{0,1}S_i\in\{0,1\}Si∈{0,1} 表示是否成功,ℓi\ell_iℓi 是最短路径长度,pip_ipi 是实际路径长度。该式是指标的标准写法,用来辅助理解;本文正文仅列出了指标名称,没有重写这条公式。
- nDTW:归一化动态时间规整指标,不仅关注终点,还测量执行轨迹与参考路径的相似度,越高越好。
B. 模态消融:深度信息为什么重要?

表 2:特别关注右半边 Val-Unseen(未见环境)数据。
| 模型(Val-Unseen) | SR ↑ | SPL ↑ |
|---|---|---|
| Random | 0.03 | 0.02 |
| Seq2Seq(RGB + Depth + Instruction) | 0.20 | 0.18 |
| No Image(无 RGB,保留 Depth) | 0.17 | 0.15 |
| No Depth(无深度,保留 RGB) | 0.04 | 0.04 |
| No Vision(无 RGB、无 Depth) | 0.00 | 0.00 |
| No Instruction(无指令) | 0.17 | 0.16 |
三个结论:
- Depth 对低层可通行导航十分重要:移除深度后 SR 从 20% 降为 4%,模型很难通过仅有 RGB 的输入学会有效移动与避障。
- RGB 对地标语义有价值:仅保留深度仍有 17% SR,但识别“厨房、沙发、窗户”等语言指代更困难。
- 不读指令也能达到 17% SR:数据集中确实存在可被学习的路径先验与偏差,因此必须报告 No Instruction 基线,不能把所有成功都解释为“听懂了语言”。
C. 模型与训练策略的综合对比

表 3:PM=Progress Monitor;DA=DAgger;Aug=合成数据增强;星号表示微调。
| 模型及训练方式(Val-Unseen) | SR ↑ | SPL ↑ |
|---|---|---|
| Seq2Seq,基础模仿学习 | 0.20 | 0.18 |
| Cross-Modal Attention,基础模仿学习 | 0.23 | 0.22 |
| Seq2Seq + DAgger | 0.26 | 0.23 |
| Cross-Modal Attention + DAgger | 0.27 | 0.25 |
| Cross-Modal + PM + Aug 预训练,再用 DAgger 微调 | 0.32 | 0.30 |
关键观察:
- 跨模态注意力有效:不使用训练增强时,SPL 从 0.18 增至 0.22。
- DAgger 有稳定收益:Cross-Modal 的 SPL 从 0.22 增至 0.25,说明长序列中的分布偏移值得处理。
- PM 与 Aug 单独使用不一定提升性能:作者认为 PM 可能在有限训练数据上过拟合;它与数据增强、DAgger 按特定顺序联合训练后,才能得到最优结果。
- 最佳性能仍然有限:新环境中的 SR 只有 32%,表明真实感更强的低层导航任务还有很大提升空间。
D. 失败案例:为什么模型看到目标附近也可能停错?

图 4:代理未能正确遵循“经过厨房”等语言顺序,在错误的视觉参照附近停止。
论文案例中,一条原 VLN 轨迹只需 4 次节点跳转,转成连续执行则涉及 37 次动作。由于视场角只有 90°,机器人不仅需要理解指令,还必须主动转向、发现相关地标;若关键地标没进入镜头,单靠注意力无法凭空获取它。
E. 与传统 VLN 的跨设定比较

表 4:把连续模型产生的轨迹重新映射到传统 VLN 导航图后,比较 VLN 测试集的结果。
- 传统使用导航图的 RCM:Test SPL = 0.38。
- 本文连续环境训练模型映射回导航图后:Test SPL = 0.21。
- 原文还指出:约 20% 的 VLN 轨迹在 VLN-CE 中不可通行,且连续路径映射回稀疏导航图本身也会损失性能,因此不能把这个差值全部归因为模型架构优劣。
1.5 Conclusion——论文结论
这项工作真正证明的是:VLN 的评测环境设计会显著影响算法表现。 如果直接给导航图、可靠节点跳转和精确定位,模型省略了许多真实机器人必须解决的步骤。迁移到连续三维场景后,深度感知、历史信息、轨迹纠偏与主动观察就变得格外重要。
2. 读后四问
2.1 这篇论文有什么局限性?
- 仍在仿真中:没有完成完整的真实机器人部署,实际视觉噪声、传感器误差和控制漂移仍待验证。
- 动作还是离散原语:虽然环境连续,但没有直接学习平滑的速度指令、动态避障行为。
- 视场角有限:只有前向 90∘90^\circ90∘ 视觉;如果关键地标不在视野内,模型可能根本找不到。
- 缺少显式持久空间地图:主要依靠 GRU 历史隐状态进行序列决策,长程空间记忆与回退能力有限。
- 数据覆盖有限:迁移时只有 77% 的原 R2R 轨迹可在重建场景中通过。
- 训练仍用专家:模仿学习和 DAgger 训练所需的参考路径/专家动作不是实机部署时天然可用的资源。
2.2 有什么值得学习的地方?
- 先检查任务的隐含先验:benchmark 分数高不代表系统真的解决了定位、避障和低层控制。
- 用相同指令比较不同设定:把 R2R 迁移到连续世界,使“任务难度来自哪里”能被实验研究。
- 多模态消融很关键:不光看完整模型,还要分别去掉 RGB、Depth 和语言,防止模型利用数据捷径。
- 训练策略同样重要:DAgger 对长时序模仿学习的改进可能比仅更换一个编码器更稳定。
- 分析实际失败轨迹:论文不仅看终点 SR,还分析为何未观察到地标、为何停错位置。
2.3 有什么没搞懂、需要继续追问?
- 两个 GRU 各自存储什么信息?为何第一层 GRU 不直接输出动作?
- s^t\hat{\mathbf s}_ts^t 如何依赖当前视觉变化而动态调整?
- Depth 预训练于 PointNav,是否为迁移提供了额外的导航先验?它与原始深度图直接输入相比有什么区别?
- DAgger 使用的专家动作如何生成?如果没有可用的高质量专家规划器怎么办?
- 如果为 Agent 添加主动转头扫描、地图记忆、局部避障规划,性能瓶颈可能转移到哪里?
- 如何对比没有导航图的基线,才能尽量避免评价协议不一致造成的偏差?
2.4 这篇论文与我的研究有什么关系?
- VLN + SLAM/VO:论文明确讨论“不能假定完美定位”,可以研究从视觉里程计/SLAM 得到的不确定状态怎样影响语言导航决策。
- 语言导航 + 局部规划:把高层模型输出的语义路点交给可靠的局部规划和控制模块,避免语言模型直接承担所有避障责任。
- 主动视觉感知:地标不在视野内时,主动旋转、搜索、重观察,比只调整视觉 Attention 更贴近根本问题。
- 动态环境鲁棒性:已有实验主要是静态室内重建;可以进一步探索人员移动、场景变化导致的视觉指代失效与避障问题。
- 地图不确定性与决策融合:将地图置信度、障碍物通行置信度融入语义导航,可能比盲目套用更多注意力层更有针对性。
3. 个人小结
这篇 ECCV 2020 论文在 VLN 发展史上值得读,原因是它把研究重心从“导航图上选下一个点”推进到“在可通行三维空间内真正执行动作”。其主线非常清晰:指出旧设定的三大先验 → 构建 VLN-CE → 对比 Seq2Seq 与跨模态注意力 → 用多模态消融和 DAgger 验证方法 → 解释连续导航为何更难。
我认为最值得记住的是三个结论:1)深度信息承担基础几何通行能力;2)跨模态注意力帮助根据当前任务动态提取视觉线索;3)DAgger 缓解长路径上一次走错导致后续持续偏离的问题。
参考资料
- Krantz et al., Beyond the Nav-Graph: Vision-and-Language Navigation in Continuous Environments, ECCV 2020. https://www.ecva.net/papers/eccv_2020/papers_ECCV/papers/123730103.pdf
- 项目主页与代码:https://jacobkrantz.github.io/vlnce/
- 前置论文:Anderson et al., Vision-and-Language Navigation: Interpreting Visually-Grounded Navigation Instructions in Real Environments, CVPR 2018
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)