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) |
| 动作空间 | 拓扑图节点选择(离散) |
| 训练 GPU | 1× RTX 3090(~180M 模型) |
| 评测 | R2R / REVERIE / SOON / R4R |
DUET 之前的 VLN 方法(Seq2Seq、RCM 等)是单尺度局部的——只能看到当前 viewpoint 周围 1-3 个相邻节点。这导致:
在线构建拓扑图:在导航过程中,把已探索的所有 viewpoint 组织成图结构。然后用两个尺度的图 Transformer 同时处理:
| 尺度 | 关注范围 | 解决的问题 |
|---|---|---|
| Fine-scale(局部) | 当前 viewpoint 周围的候选节点 | "眼前这个门和指令中的'厨房'匹配吗?" |
| Coarse-scale(全局) | 拓扑图上所有已发现节点 | "5 步之外的那个节点最可能是目标吗?" |
Matterport3D 环境中,每个房间有多个预定义的 viewpoint(观测点),相邻 viewpoint 之间可以移动。VLN 不是在连续空间中导航,而是在这个 viewpoint 导航图上做节点选择。
关键:拓扑图是动态的
不是预先给定完整地图。Agent 每到一个新位置,才知道周围有哪些新节点可选。这就是为什么需要"探索"——你不知道拐角后面有什么,必须走过去才能看到。
局部分支处理当前 viewpoint 周围 ≤5 个邻接节点:
每个候选节点的 36 张全景图,经过 Faster R-CNN 提取 region 特征。然后与节点位置编码拼接——表示"这个节点在当前 viewpoint 的哪个方向"。
使用 LXMERT-style co-attention(双向跨模态注意力):
# Co-attention 双向机制:
# 视觉 → 语言:每个视觉 region "查询"指令中相关的词
# 例如:看到冰箱 → 查询到指令中 "kitchen" 的关联
#
# 语言 → 视觉:每个指令词 "查询"视觉中相关的 region
# 例如:指令 "table" → 查询到视觉中的桌面区域
#
# 结果:每个候选节点获得一个与指令对齐后的融合 embedding
全局分支处理拓扑图上所有已发现节点(可能数十个)。
每个节点用一个聚合 embedding 表示(来自局部分支 + 节点在图中的拓扑位置编码)。
所有节点 embedding 在图结构上做 self-attention。与标准 Transformer 不同:
两个尺度的预测通过可学习门控融合:
# α 是动态门控,由当前状态决定:
α = sigmoid(W · [current_observation, instruction_embedding])
# 融合预测:
score(node) = α · score_local(node) + (1 - α) · score_global(node)
直觉理解
探索初期(图小,只有局部信息)→ α 大,局部分支主导(看眼前的细节)
探索后期(图大,有全局信息)→ α 小,全局分支主导(规划长程路径)
这是 "Think Global, Act Local" 名字的由来。
DUET 使用 LXMERT(跨模态预训练模型)作为初始权重。LXMERT 在大量图文对上学习视觉-语言对齐,为 DUET 提供了良好的跨模态理解起点。
在 PREVALENT 数据(600 万条增强导航数据)上训练时,DUET 添加了三个 VLN 专用 proxy task:
| Task | 做法 | 学到什么 |
|---|---|---|
| MASK Masked Region Prediction | 遮挡部分视觉 region,预测其属性 | 细粒度视觉理解 |
| SPC Single-hop Prediction | 给定指令+当前位置,预测正确的下一步节点 | 单步指令-动作映射 |
| MPC Multi-hop Prediction | 预测多步之后的远端目标节点 | 长程规划能力 |
DUET 使用 PID(Pseudo Interactive Demonstrator)来微调:
# PID 流程:
1. 运行当前策略预测下一步
2. 如果与标注路径一致 → 正常继续
3. 如果偏离 → 强制回到标注路径
并将"偏离状态 + 正确动作"加入训练集
4. 迭代多轮
# 与 DAgger 思路一致:
# 解决训练/推理时的分布不匹配
| 方法 | SR↑ | SPL↑ | 提升 |
|---|---|---|---|
| Seq2Seq (2018) | 18.63 | 16.56 | 基线 |
| WGTM (2021) | 28.36 | 24.50 | +10% SR |
| DUET (2022) | 38.51 | 33.87 | +10% SR |
DUET 在 REVERIE 上 SR 从 28% 跃升到 38%(+10%),是里程碑式跨越。全局拓扑图推理对"找远处目标物体"任务至关重要。
| 方法 | Test Unseen SR↑ | Test Unseen SPL↑ |
|---|---|---|
| HAMT (2021) | 36.81 | 33.69 |
| DUET (2022) | 40.05 | 36.71 |
| ScaleVLN (2023) | 75.24 | 67.48 |
ScaleVLN 在 DUET 基础上扩展,使用合成环境数据扩增。当前 R2R SOTA 约 72-75% SR。
DUET 之后几乎所有主流 VLN 方法都建立在它的拓扑图框架上:
| 后续工作 | 年份 | 在 DUET 基础上的改进 |
|---|---|---|
| ETPNav | 2022 | 更高效的训练范式(SR 值回环 + teacher-student) |
| ScaleVLN | 2023 | 用合成环境大规模扩增训练数据 → 当前 SOTA |
| HAMT | 2022 | 引入完整历史观测建模 |
| BEVBert | 2023 | 用 Bird's-Eye-View 替代全景图 |
✓ 优势
• 超轻量——~180M,单卡 3090 训练,是三者中最轻的
• 拓扑图推理天然支持长程规划——REVERIE 上的巨大提升
• 代码工程质量极高——GitHub 开箱即用
• 动态融合机制优雅,自动平衡局部与全局
• 社区基础设施——后续工作广泛复用
✗ 代价
• 离散动作空间——依赖 Matterport3D 预定义导航图
• 依赖预提取特征——需提前跑 Faster R-CNN,流程繁琐
• 无真机验证——纯仿真环境
• 无可解释性——不像 NavGPT-2 能输出推理
选型建议
如果你的目标是理解 VLN 技术基础,DUET 是必读论文。如果目标是快速搭建 VLN 原型,DUET 的 GitHub 仓库是最佳起点。几乎所有 2023+ 的 VLN 工作都建立在它的拓扑图 + 图 Transformer 框架上。