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 技术站

一句话概括

在拓扑图上做长程规划(全局),在当前观测上做细粒度理解(局部),用图 Transformer 动态融合两个尺度。~180M 参数,R2R/REVERIE/SOON 三榜 SOTA,ICCV 2021 Workshop 双料冠军。后续 HAMT、ETPNav、ScaleVLN 等方法都建立在 DUET 的拓扑图框架之上。

核心洞察:为什么需要"双尺度"?

早期 VLN 方法(Seq2Seq、RCM 等)是单尺度的——只能看到当前 viewpoint 的局部观测。这导致两个致命问题:

  1. 短视:无法规划跨房间的长程路径,容易在局部贪心中走偏
  2. 动作空间小:只能选相邻的 1-3 个 viewpoint,探索效率低

DUET 的解法:在线构建拓扑图,将已探索的所有 viewpoint 组织成图结构。全局分支在整个图上做注意力推理("哪个远端节点最可能是目标?"),局部分支只关注当前周围的候选节点("眼前的门和指令中的'厨房'匹配吗?"),两个尺度的预测通过动态融合机制合并。

架构详解

在线拓扑图构建

1
初始 viewpoint Agent 从起点开始,当前可见的所有可达 viewpoint 构成初始候选集
2
逐步扩展 每移动到新 viewpoint,将其加入拓扑图,并提取该位置的视觉特征
3
图更新 图随着导航过程不断增长——已访问节点被标记,新发现的 frontier 节点成为候选

关键:拓扑图不是预先给定的,而是在导航过程中动态构建的。每一步都需要在所有已发现节点中选择下一个目标(全局推理),同时理解当前位置的视觉细节(局部推理)。

Fine-scale 分支(局部)

局部分支处理当前 viewpoint 周围的候选节点(通常 ≤5 个邻接节点)。

Local Visual Embedding

每个候选节点有 36 张全景图。使用预训练的 ViT(视觉编码器)提取每张图的 region 特征(通常为 36×2048 维,来自 Faster R-CNN 或 DETR)。将这些 region 特征与节点位置编码拼接。

Local Cross-Modal Encoding

将候选节点的视觉特征与指令文本的词嵌入做跨模态注意力。这一步回答:"当前可见的这些节点中,哪个与指令描述最匹配?"使用 LXMERT-style 的 co-attention(视觉→语言 和 语言→视觉 双向注意力)。

Coarse-scale 分支(全局)

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

Node Embedding

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

Graph Transformer

所有节点的 embedding 在图结构上做自注意力。与标准 Transformer 不同,图 Transformer 的注意力 mask 基于拓扑图的邻接关系——距离当前节点远的节点通过多跳注意力间接参与推理。这使得模型可以:"虽然厨房在 5 步之外,但全局推理表明它最可能是目标。"

Dynamic Fusion(动态融合)

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

score(node) = α · score_local(node) + (1-α) · score_global(node)

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

直觉:探索初期(图小,只有局部信息),局部分支占主导;探索后期(图大,有全局信息),全局分支占主导。

预训练与微调

预训练:LXMERT + Proxy Tasks

DUET 使用 LXMERT(跨模态预训练模型)初始化,在大量图文对上预训练。然后增加两个 VLN 专用 proxy task:

Proxy Task目标效果
MASK (Masked Region Prediction)遮挡部分视觉 region,预测其类别和属性增强细粒度视觉理解
SPC (Single-hop Prediction)给定指令和当前节点,预测正确的下一步节点学习指令-动作映射
MPC (Multi-hop Prediction)预测多步之后的远端目标节点学习长程规划能力

预训练数据来自 PREVALENT——从 Matterport3D 生成的增强导航数据(超过 600 万条指令-路径对)。

微调:Pseudo Interactive Demonstrator

标准模仿学习在训练集上的表现受限于标注路径的覆盖度。DUET 引入伪交互示范(Pseudo Interactive Demonstrator, PID):

# PID 策略(简化):
1. 运行当前策略预测下一步
2. 如果与标注路径一致 → 正常继续
3. 如果偏离标注路径 → 强制回到标注路径
   并将"偏离状态"加入训练集
4. 最终训练集覆盖了策略可能遇到的真实分布

这与 NavGPT-2 的 DAgger 思路一致——核心都是解决训练/推理时的分布不匹配问题

Benchmark 表现

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

方法TL ↓NE ↓OSR ↑SR ↑SPL ↑
Seq2Seq (2018)9.797.0028.3618.6316.56
WGTM (2021)11.585.2144.3828.3624.50
DUET (2022)11.684.7056.3238.5133.87

DUET 在 REVERIE 上的提升幅度巨大——SR 从 28.36% 跃升到 38.51%(+10%),这是该 benchmark 上的里程碑式跨越。全局拓扑图推理对"找远处目标物体"任务至关重要。

R2R(逐步导航)

方法Val Unseen SR↑Val Unseen SPL↑Test Unseen SR↑Test Unseen SPL↑
VLN-BERT (2021)28.7625.28
HAMT (2021)36.8133.69
DUET (2022)54.2147.4640.0536.71
ScaleVLN (2023) *75.2467.48

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

SOON(场景描述导航)

DUET 也是 SOON benchmark 的 SOTA(ICCV 2021 Workshop 冠军),进一步验证了双尺度图 Transformer 在开放性导航任务上的泛化能力。

技术规格总览

属性规格
论文CVPR 2022 Oral
参数量~180M(含 LXMERT 初始化)
视觉编码器Faster R-CNN / ViT 预提取 region 特征(36×2048 维/viewpoint)
文本编码器BERT tokenizer + LXMERT 文本编码器
拓扑图构建在线动态构建,基于 Matterport3D 导航图
预训练LXMERT 初始化 + PREVALENT 数据 + proxy tasks (MASK/SPC/MPC)
微调策略Pseudo Interactive Demonstrator (PID)
动作空间拓扑图节点选择(离散)
评测数据集R2R / REVERIE / SOON / R4R
GPU 需求单卡 RTX 3090 即可微调(~180M 模型)
仿真器Matterport3D Simulator

工程权衡分析

DUET 的核心取舍

✓ 优势:

• 训练高效——~180M 参数,单卡 3090 可训,是三者中最轻量的

• 拓扑图推理天然支持长程规划——REVERIE 上的巨大提升证明了这一点

• 代码工程质量极高——GitHub 仓库开箱即用,后续工作广泛复用

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

✗ 代价:

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

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

• 无真机验证——纯仿真环境,Sim-to-Real 未探索

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

生态影响

DUET 是 VLN 领域的基础设施级工作。以下方法均建立在 DUET 的拓扑图框架之上:

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

选型建议

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