DUET 深度技术解读

Think Global, Act Local: Dual-scale Graph Transformer for Vision-and-Language Navigation
CVPR 2022 Oral · Shizhe Chen, Pierre-Louis Guhur, Makarand Tapaswi et al.
Inria + Meta AI
arXiv · GitHub
← 返回 VLN 技术站

0. 30 秒速览

DUET 是 VLN 领域的基础设施级工作。核心思想:在导航过程中动态构建拓扑图,然后用双尺度图 Transformer 同时做全局长程规划和局部细粒度理解。~180M 参数,单卡 3090 可训练,R2R/REVERIE/SOON 三榜 SOTA。后续几乎所有 VLN 工作都建立在 DUET 的拓扑图框架之上。

属性规格
参数量~180M
视觉编码Faster R-CNN 预提取 region 特征(36 张全景图 × 2048 维)
文本编码LXMERT BERT encoder
预训练LXMERT + PREVALENT + proxy tasks (MASK/SPC/MPC)
动作空间拓扑图节点选择(离散)
训练 GPU1× RTX 3090(~180M 模型)
评测R2R / REVERIE / SOON / R4R

1. 背景:为什么需要"双尺度"?

1.1 早期方法的致命缺陷

DUET 之前的 VLN 方法(Seq2Seq、RCM 等)是单尺度局部的——只能看到当前 viewpoint 周围 1-3 个相邻节点。这导致:

  1. 短视:无法规划跨房间的长程路径,容易在局部贪心中走偏
  2. 动作空间小:只有相邻节点可选,探索效率低
  3. 缺乏全局视野:不知道"远处的厨房"在哪里,只能一步步试

1.2 DUET 的核心创新

在线构建拓扑图:在导航过程中,把已探索的所有 viewpoint 组织成图结构。然后用两个尺度的图 Transformer 同时处理:

尺度关注范围解决的问题
Fine-scale(局部)当前 viewpoint 周围的候选节点"眼前这个门和指令中的'厨房'匹配吗?"
Coarse-scale(全局)拓扑图上所有已发现节点"5 步之外的那个节点最可能是目标吗?"

2. 拓扑图构建

Matterport3D 环境中,每个房间有多个预定义的 viewpoint(观测点),相邻 viewpoint 之间可以移动。VLN 不是在连续空间中导航,而是在这个 viewpoint 导航图上做节点选择。

1
初始状态 Agent 从起点 viewpoint 出发。当前位置可见的相邻 viewpoint 构成初始候选集。
2
视觉特征提取 每个 viewpoint 有 36 张全景图像(每 10° 一张)。Faster R-CNN 预提取每张图的 region 特征(通常 36 个 region × 2048 维)。
3
逐步扩展图 移动到新 viewpoint 后,将其加入拓扑图。新发现的 frontier 节点(边界)成为下一轮候选。图随导航不断增长。

关键:拓扑图是动态的

不是预先给定完整地图。Agent 每到一个新位置,才知道周围有哪些新节点可选。这就是为什么需要"探索"——你不知道拐角后面有什么,必须走过去才能看到。

3. Fine-scale 分支(局部推理)

局部分支处理当前 viewpoint 周围 ≤5 个邻接节点

3.1 Local Visual Embedding

每个候选节点的 36 张全景图,经过 Faster R-CNN 提取 region 特征。然后与节点位置编码拼接——表示"这个节点在当前 viewpoint 的哪个方向"。

3.2 Local Cross-Modal Encoding

使用 LXMERT-style co-attention(双向跨模态注意力):

# Co-attention 双向机制:
# 视觉 → 语言:每个视觉 region "查询"指令中相关的词
#   例如:看到冰箱 → 查询到指令中 "kitchen" 的关联
#
# 语言 → 视觉:每个指令词 "查询"视觉中相关的 region
#   例如:指令 "table" → 查询到视觉中的桌面区域
#
# 结果:每个候选节点获得一个与指令对齐后的融合 embedding

4. Coarse-scale 分支(全局规划)

全局分支处理拓扑图上所有已发现节点(可能数十个)。

4.1 Node Embedding

每个节点用一个聚合 embedding 表示(来自局部分支 + 节点在图中的拓扑位置编码)。

4.2 Graph Transformer

所有节点 embedding 在图结构上做 self-attention。与标准 Transformer 不同:

5. Dynamic Fusion(动态融合)

两个尺度的预测通过可学习门控融合:

# α 是动态门控,由当前状态决定:
α = sigmoid(W · [current_observation, instruction_embedding])

# 融合预测:
score(node) = α · score_local(node) + (1 - α) · score_global(node)

直觉理解

探索初期(图小,只有局部信息)→ α 大,局部分支主导(看眼前的细节)

探索后期(图大,有全局信息)→ α 小,全局分支主导(规划长程路径)

这是 "Think Global, Act Local" 名字的由来。

6. 预训练策略

6.1 LXMERT 初始化

DUET 使用 LXMERT(跨模态预训练模型)作为初始权重。LXMERT 在大量图文对上学习视觉-语言对齐,为 DUET 提供了良好的跨模态理解起点。

6.2 Proxy Tasks(辅助预训练任务)

在 PREVALENT 数据(600 万条增强导航数据)上训练时,DUET 添加了三个 VLN 专用 proxy task:

Task做法学到什么
MASK
Masked Region Prediction
遮挡部分视觉 region,预测其属性细粒度视觉理解
SPC
Single-hop Prediction
给定指令+当前位置,预测正确的下一步节点单步指令-动作映射
MPC
Multi-hop Prediction
预测多步之后的远端目标节点长程规划能力

7. 微调:Pseudo Interactive Demonstrator

DUET 使用 PID(Pseudo Interactive Demonstrator)来微调:

# PID 流程:
1. 运行当前策略预测下一步
2. 如果与标注路径一致 → 正常继续
3. 如果偏离 → 强制回到标注路径
   并将"偏离状态 + 正确动作"加入训练集
4. 迭代多轮

# 与 DAgger 思路一致:
# 解决训练/推理时的分布不匹配

8. Benchmark 表现

REVERIE(DUET 的主战场——目标导航)

方法SR↑SPL↑提升
Seq2Seq (2018)18.6316.56基线
WGTM (2021)28.3624.50+10% SR
DUET (2022)38.5133.87+10% SR

DUET 在 REVERIE 上 SR 从 28% 跃升到 38%(+10%),是里程碑式跨越。全局拓扑图推理对"找远处目标物体"任务至关重要。

R2R(逐步导航)

方法Test Unseen SR↑Test Unseen SPL↑
HAMT (2021)36.8133.69
DUET (2022)40.0536.71
ScaleVLN (2023)75.2467.48

ScaleVLN 在 DUET 基础上扩展,使用合成环境数据扩增。当前 R2R SOTA 约 72-75% SR。

9. 为什么 DUET 是"基础设施级"工作?

DUET 之后几乎所有主流 VLN 方法都建立在它的拓扑图框架上:

后续工作年份在 DUET 基础上的改进
ETPNav2022更高效的训练范式(SR 值回环 + teacher-student)
ScaleVLN2023用合成环境大规模扩增训练数据 → 当前 SOTA
HAMT2022引入完整历史观测建模
BEVBert2023用 Bird's-Eye-View 替代全景图

10. 工程权衡分析

✓ 优势

• 超轻量——~180M,单卡 3090 训练,是三者中最轻的

• 拓扑图推理天然支持长程规划——REVERIE 上的巨大提升

• 代码工程质量极高——GitHub 开箱即用

• 动态融合机制优雅,自动平衡局部与全局

• 社区基础设施——后续工作广泛复用

✗ 代价

• 离散动作空间——依赖 Matterport3D 预定义导航图

• 依赖预提取特征——需提前跑 Faster R-CNN,流程繁琐

• 无真机验证——纯仿真环境

• 无可解释性——不像 NavGPT-2 能输出推理

选型建议

如果你的目标是理解 VLN 技术基础,DUET 是必读论文。如果目标是快速搭建 VLN 原型,DUET 的 GitHub 仓库是最佳起点。几乎所有 2023+ 的 VLN 工作都建立在它的拓扑图 + 图 Transformer 框架上。