VLN 入门学习计划 —— 基于 InternNav

VLN 入门学习计划 ------ 基于 InternNav

环境信息

项目 配置
GPU NVIDIA RTX 5090 32GB
CPU Intel i9-14900KF (32 threads)
RAM 128 GB
磁盘 1.8TB NVMe
框架 InternNav 0.3.1 + Habitat-Sim 0.3.3 + PyTorch 2.7.1+cu128

第一阶段:理解 VLN 基础概念(第 1-2 周)

目标

建立对 Vision-and-Language Navigation (VLN) 领域的整体认知。

1.1 核心概念

  • VLN 任务定义:给定一段自然语言导航指令,智能体在 3D 环境中根据视觉观察执行动作,到达目标位置
  • 离散 vs 连续动作空间
    • 离散(VLN-CE):stop, move_forward, turn_left, turn_right, look_up, look_down
    • 连续(VLN-PE):直接输出位移/转角轨迹
  • 评测指标
    • NE (Navigation Error):终点到目标的距离 ↓
    • SR (Success Rate):成功率(终点距目标 < 3m)↑
    • SPL (Success weighted by Path Length):考虑路径效率的成功率 ↑
    • OS (Oracle Success):路径上任一点距目标 < 3m 的比率 ↑
    • nDTW (normalized Dynamic Time Warping):路径与参考路径的相似度 ↑

1.2 必读论文(按顺序)

  1. R2R: Vision-and-Language Navigation --- VLN 开山之作,定义了 Room-to-Room 任务
  2. VLN-CE --- 从离散图导航推广到连续环境
  3. Matterport3D --- 理解 VLN 使用的 3D 室内场景数据集
  4. Habitat 平台论文 --- 仿真平台基础

1.3 动手任务

  • 阅读 InternNav 官方文档
  • 浏览 internnav/ 目录结构,理解 agent / model / dataset / evaluator / trainer 的分工
  • 跑通 scripts/notebooks/inference_only_demo.ipynb,观察模型输入输出
  • 修改 demo 中的 instruction 文本,观察模型行为变化

第二阶段:熟悉 InternNav 代码架构(第 3-4 周)

目标

理解 InternNav 的模块化设计,能独立配置和运行实验。

2.1 核心模块阅读

复制代码
internnav/
├── agent/          # 智能体:将模型输出转化为环境动作
│   ├── base.py                     # Agent 基类
│   ├── seq2seq_agent.py            # Seq2Seq 基线 agent
│   ├── cma_agent.py                # CMA agent
│   ├── rdp_agent.py                # RDP agent
│   └── internvla_n1_agent.py       # InternVLA-N1 agent(重点)
├── model/          # 模型定义
├── dataset/        # 数据加载(LMDB 格式 + LeRobot 格式)
├── evaluator/      # 评测框架
│   ├── base.py                     # 评测基类
│   ├── default_evaluator.py        # 默认评测器
│   └── vln_distributed_evaluator.py # 分布式评测
├── trainer/        # 训练框架
│   ├── base.py                     # 训练基类
│   └── internvla_n1_trainer.py     # InternVLA-N1 训练器
├── configs/        # 配置(Pydantic 模型)
└── env/            # 环境封装(Habitat / Isaac Sim / 真机)

2.2 配置系统理解

  • 评测配置:scripts/eval/configs/ 下的 Python 文件(如 habitat_s2_cfg.py
  • Habitat 环境配置:scripts/eval/configs/*.yaml(传感器、动作空间、度量标准)
  • 训练配置:scripts/train/ 下的配置文件

2.3 动手任务

  • 阅读 internnav/agent/base.pyinternnav/agent/seq2seq_agent.py,理解 Agent 接口
  • 阅读 scripts/eval/eval.pyscripts/eval/start_server.py,理解评测流程
  • 阅读 scripts/eval/configs/habitat_s2_cfg.py,理解一个完整的评测配置
  • 阅读 scripts/eval/configs/vln_r2r.yaml,理解 Habitat 仿真参数

第三阶段:运行基线模型(第 5-7 周)

目标

训练和评测经典 VLN 基线,建立对模型性能的直觉。

3.1 Seq2Seq 基线(最简单)

Encoder-Decoder 架构:视觉编码器 + 语言编码器 → 动作解码器

bash 复制代码
# 训练
./scripts/train/base_train/start_train.sh --name seq2seq_train --model seq2seq

# 评测(需要 Scene-N1 数据下载完成)
python scripts/eval/eval.py --config scripts/eval/configs/habitat_seq2seq_cfg.py

预期 R2R val_unseen 性能:SR ~15%, SPL ~10%

3.2 CMA (Cross-Modal Attention)

引入视觉-语言跨模态注意力机制

bash 复制代码
./scripts/train/base_train/start_train.sh --name cma_train --model cma

预期性能:SR ~24%, SPL ~18%

3.3 RDP

更先进的基线方法

bash 复制代码
./scripts/train/base_train/start_train.sh --name rdp_train --model rdp

预期性能:SR ~25%, SPL ~18%

3.4 动手任务

  • 训练 Seq2Seq 模型,在 R2R val_unseen 上评测
  • 训练 CMA 模型,对比 Seq2Seq 的性能提升
  • 分析不同模型的失败案例(在哪些场景/指令上表现差)
  • 阅读 internnav/dataset/cma_lerobot_dataset.py,理解数据格式

第四阶段:深入理解 InternVLA-N1(第 8-10 周)

目标

理解 InternVLA-N1 的双系统架构,复现论文结果。

4.1 论文阅读

  1. DualVLN --- InternVLA-N1 的核心论文(ICLR 2026)
  2. InternVLA-N1 技术报告 --- 完整技术细节
  3. NavDP --- System1 的扩散策略导航

4.2 双系统架构

复制代码
InternVLA-N1 = System1 (低层导航) + System2 (高层规划)

System2 (基于 Qwen2.5-VL):
  输入: RGB图像 + 语言指令 + 历史帧
  输出: 离散动作 (stop/forward/turn) + 像素目标点

System1 (NavDP, 基于扩散策略):
  输入: RGB-D图像 + 像素目标点
  输出: 连续轨迹 (x, y 坐标序列)

DualVLN 模式: System2 给 System1 下达像素级目标,System1 规划连续路径

4.3 评测 InternVLA-N1

bash 复制代码
# System2 单独评测(离散动作 + ShortestPathFollower)
python scripts/eval/eval.py --config scripts/eval/configs/habitat_s2_cfg.py

# 双系统评测(DualVLN)
python scripts/eval/eval.py --config scripts/eval/configs/habitat_dual_cfg.py

预期 R2R val_unseen 性能:SR ~64%, SPL ~58%(远超基线)

4.4 代码阅读重点

  • internnav/agent/internvla_n1_agent.py --- 双系统 Agent 逻辑
  • internnav/agent/internvla_n1_agent_realworld.py --- 异步推理实现
  • internnav/model/ --- 模型架构定义
  • internnav/trainer/internvla_n1_trainer.py --- 训练流程

4.5 训练 InternVLA-N1

bash 复制代码
# Step 1: 训练 System2
sbatch ./scripts/train/qwenvl_train/train_system2.sh

# Step 2: 联合训练双系统
sbatch ./scripts/train/qwenvl_train/train_dual_system.sh

4.6 动手任务

  • 用预训练权重在 VLN-CE R2R val_unseen 上评测 InternVLA-N1
  • 对比 System2-only vs DualVLN 的性能差异
  • 可视化模型的 pixel goal 预测和轨迹输出
  • 尝试在 RxR 数据集上评测(多语言指令)

第五阶段:进阶探索(第 11 周+)

方向 A:数据与评测

  • 学习 InternData-N1 的 LeRobot 数据格式
  • 使用 scripts/dataset_converters/vlnce2lerobot.py 转换数据
  • 配置 Isaac Sim 环境,运行 VLN-PE 物理评测
  • 对比 Flash Controller vs Physical Controller 的性能差距

方向 B:模型改进

  • 替换 System2 的 VLM backbone(如不同大小的 Qwen-VL)
  • 调整推理参数(num_history, plan_step_gap, max_new_tokens)
  • 实验不同的训练策略(DAgger, curriculum learning)
  • 尝试 StreamVLN 等新模型

方向 C:真机部署

方向 D:竞赛与社区


关键资源汇总

论文

论文 说明 链接
R2R (2018) VLN 开山之作 arXiv
Matterport3D (2017) 3D 室内场景数据 arXiv
Habitat (2019) 仿真平台 arXiv
VLN-CE (2020) 连续环境 VLN arXiv
VLN-PE (2025) 物理环境评测 arXiv
NavDP (2026) System1 扩散策略 arXiv
DualVLN (2026) InternVLA-N1 核心论文 arXiv
InternVLA-N1 报告 完整技术细节 PDF

代码与文档

资源 链接
InternNav GitHub https://github.com/InternRobotics/InternNav
InternNav 文档 https://internrobotics.github.io/user_guide/internnav/index.html
InternVLA-N1 主页 https://internrobotics.github.io/internvla-n1.github.io/
NavDP GitHub https://github.com/InternRobotics/NavDP

模型权重 (HuggingFace)

模型 链接
InternVLA-N1-DualVLN https://huggingface.co/InternRobotics/InternVLA-N1-DualVLN
InternVLA-N1-System2 https://huggingface.co/InternRobotics/InternVLA-N1-System2
InternVLA-N1-w-NavDP https://huggingface.co/InternRobotics/InternVLA-N1-w-NavDP
VLN-PE 基线模型 https://huggingface.co/InternRobotics/VLN-PE

你的环境状态

已完成:

  • Miniconda + conda 环境 (habitat, Python 3.9)
  • Habitat-Sim 0.3.3 + Habitat-Lab
  • PyTorch 2.7.1+cu128 (RTX 5090 Blackwell 原生支持)
  • flash_attn 2.7.4 + InternNav 0.3.1
  • InternVLA-N1-DualVLN 模型 (16GB)
  • DepthAnything v2 深度模型 (95MB)
  • Inference demo 验证通过 (0.1-0.2s/帧)

进行中:

  • Scene-N1 场景数据(下载中)
  • InternData-N1 导航数据(下载中)

数据下载完成后即可开始第三阶段的完整训练和评测。

相关推荐
red_redemption4 小时前
自由学习记录(175)
学习
nashane4 小时前
HarmonyOS 6学习:画中画(PiP)状态同步与场景化实战指南
学习·pip·harmonyos·harmonyos 5
_李小白5 小时前
【android opencv学习笔记】Day 8: remap(像素位置重映射)
android·opencv·学习
勤劳的进取家5 小时前
数据链路层基础
网络·学习·算法
d111111111d5 小时前
直流电机位置式 PID 控制 和 舵机的区别
笔记·stm32·单片机·嵌入式硬件·学习
y = xⁿ6 小时前
Redis八股学习日记:布隆过滤器
数据库·redis·学习
d111111111d8 小时前
了解Modbus
网络·笔记·stm32·单片机·嵌入式硬件·学习
charlie1145141918 小时前
通用GUI编程技术——图形渲染实战(三十八)——顶点缓冲与输入布局:GPU的第一个三角形
开发语言·c++·学习·图形渲染·win32
我想我不够好。8 小时前
监控学习 4.29 1.5hour
学习