当前位置: 首页 > news >正文

VLN论文复现——VLFM(ICRA最佳论文)

VLN论文复现——VLFM(ICRA最佳论文)

从零开始复现 VLFM

VLFM论文依赖于habitat模拟器,通过 introduction(语言)和环境交互(Vision and Action)完成指定的导航任务。本文主要记录博主如何从零开始复现 VLFM模型。

一、habitat模拟器安装

Habitat 是一个具体人工智能研究平台,包括:

Habitat-Sim:一种灵活的高性能 3D 模拟器,具有可配置代理、多个传感器和通用 3D 数据集处理(内置对 MatterPort3D、 Gibson和其他数据集的支持)。
Habitat-Sim 通常与 Habitat-Lab一起使用,Habitat-Lab 是一个模块化高级库,用于嵌入式 AI 中的端到端实验 - 定义具身 AI 任务(例如导航、指令跟踪、问答)、训练代理(通过模仿或强化学习,或者像经典的 SensePlanAct 管道那样根本不学习),并使用标准指标对定义的任务的性能进行基准测试。

Habitat Lab:用于具身智能端到端开发的模块化高级库 - 定义嵌入式人工智能任务(例如导航、指令遵循、问答)、配置嵌入式代理(物理形式、传感器、功能)、训练这些代理(通过模仿或强化学习,或者像经典 SLAM 那样根本不学习),并使用标准指标在定义的任务上对他们的表现进行基准测试。

综上,我们需要下载这两样东西。

habitat-sim官方地址:https://github.com/facebookresearch/habitat-sim

habitat-lab官方地址:https://github.com/facebookresearch/habitat-lab

本人模拟器的安装都是根据官方给的README.md文件进行的,以及结合github上issues。

这里我们按照论文要求使用 habitat0.2.4 版本:

  1. 准备conda环境:

    假设您已经安装了conda,让我们准备一个 conda 环境:

    # We require python>=3.9 and cmake>=3.14
    conda create -n habitat python=3.9 cmake=3.14.0
    conda activate habitat
    

    我们按照官方给的进行就行。

  2. conda 安装habitat-sim:

    安装带物理引擎(withbullet)且无头(headless)的habitat-sim,这里本人我是在远程服务器且没有显示器的情况下安装的:

    conda install habitat-sim=0.2.4 withbullet -c conda-forge -c aihabitat
    

    别的情况请按照官方给的案例操作进行,我这里只针对远程服务器且没有显示的情况下。

  3. 下载habitat使用的3D场景数据集:

    3.1 下载(测试)3D场景

    python -m habitat_sim.utils.datasets_download --uids habitat_test_scenes --data-path /path/to/data/
    

    /path/to/data/ ==> 这里替换成你自己的路径。

    3.2 下载示例对象

    python -m habitat_sim.utils.datasets_download --uids habitat_example_objects --data-path /path/to/data/
    

    /path/to/data/ ==> 这里替换成你自己的路径。

    重点来了:到这里可能有人远程服务器上下载不了数据集,我这里给大家提供有效可行的方法:

    1. 首先,我们先win+r 输入cmd 启动windows终端,输入指令ipconfig查看我们的ipv4地址(这些操作都是在我们自己的电脑上进行的)

    在这里插入图片描述

    1. 使用clash,打开局域网连接,记住这里的clash端口号是7890(默认)

在这里插入图片描述

  1. 之后我们使用MobaXterm或者finalshell去连接我们的远程服务器,然后终端中输入以下的指令:
export https_proxy=http://你的ipv4地址:7890

之后你下载数据集服务器就可以访问外网了。

  1. 交互式测试

    这里我们按照官网进行测试的话,大家应该也会遇到这样的错误:

    #C++
    # ./build/viewer if compiling locally
    habitat-viewer /path/to/data/scene_datasets/habitat-test-scenes/skokloster-castle.glb#Python
    #NOTE: depending on your choice of installation, you may need to add '/path/to/habitat-sim' to your PYTHONPATH.
    #e.g. from 'habitat-sim/' directory run 'export PYTHONPATH=$(pwd)'
    python examples/viewer.py --scene /path/to/data/scene_datasets/habitat-test-scenes/skokloster-castle.glb
    

    如果选择的是没有headless进行安装的话:

    EGL: Failed to get EGL display: Success
    Platform::GlfwApplication::tryCreate(): cannot create a window with core OpenGL context, falling back to compatibility context
    EGL: Failed to get EGL display: Success
    Platform::GlfwApplication::tryCreate(): cannot create a window with OpenGL contextMay I ask how to solve this problem? Could you please tell me that this problem has been bothering me for a long time, thank you very much.
    

    如果选择的是有headless进行安装的话:

    when i run the command:
    python examples/viewer.py --scene /path/to/data/scene_datasets/habitat-test-scenes/skokloster-castle.glb
    there will be an error:
    Traceback (most recent call last):
    File "/data/nvme2/dky/lc/habitat-sim/examples/viewer.py", line 19, in
    from magnum import shaders, text
    ImportError: cannot import name 'text' from 'magnum' (/XX/miniconda3/envs/habitat/lib/python3.9/site-packages/magnum/init.py)
    

    如果遇到这两个问题直接选择忽视就行,因为我也没有解决。

    如果遇到缺包或者版本不对的情况,我建议直接把错误复制给deepseek或者chatgpt去解决,这里我不会细讲。其他的情况就具体去看habitat-sim官方github上的issues去查阅吧

  2. 上面安装的是habitat-sim环境,之后我们再安装habitat-lab环境

    在这之前我们先把habitat-sim和habitat-lab的官方代码复制到我们服务器上,这里我建议不git clone 直接去官方去下载,因为我们要下载对应版本的(0.2.4),找到0.2.4的版本下载。habitat-sim同理

在这里插入图片描述

之后运行下面的指令在服务器上:

cd habitat-lab
pip install -e habitat-lab  # install habitat_lab
pip install -e habitat-baselines # install habitat_baselines

之后你就pip list检查下 habitat-lab habitat-baselines habitat-sim 这三个包是不是0.2.4版本的

下载用于测试场景的点目标导航剧集:(为什么没有下载下载(测试)3D场景,因为上面我们已经下载了)

python -m habitat_sim.utils.datasets_download --uids habitat_test_pointnav_dataset --data-path data/
  1. 非交互式测试
python examples/example.py

打印输出有这个就行,就算安装成功:

Agent acting inside environment.
Episode finished after 200 steps.

综上,我们就实现了habitat-sim和habitat-lab的环境安装了。

大的来了!!!!

二、habitat模拟器安装

上面我们已经创建了一个habitat的conda环境,所以之后的操作我们都在这个环境下进行。

conda_env_name=vlfm  #  这些操作都不要
conda create -n $conda_env_name python=3.9 -y  #  这些操作都不要
conda activate $conda_env_name  #  这些操作都不要
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 -f https://download.pytorch.org/whl/torch_stable.html
pip install git+https://github.com/IDEA-Research/GroundingDINO.git@eeba084341aaa454ce13cb32fa7fd9282fc73a67 salesforce-lavis==1.0.2  # git的下载按照我上面clash的配置就能正常下载

在这里插入图片描述

安装完上面的依赖库之后我们pip list就能看到groundingdino这个版本号0.1.0

如果您正在使用habitat并正在进行模拟实验,请使用以下命令将此repo安装到您的环境中:

cd vlfm # 先进入到vlfm这个目录里
pip install -e . # 这个指令其实就是运行setup.py文件,去下载相对应的依赖

这里为什么我运行**pip install -e .**没有和官方的一样,因为我们前面已经安装好了habitat环境。

这个是pyproject.toml正确配置的:

在这里插入图片描述

注意在下载vlfm的环境依赖时也要实时开着clash,因为他也会下载一些git来的项目,做完上述操作,就执行下面:

git clone git@github.com:WongKinYiu/yolov7.git

在这里插入图片描述
在这里插入图片描述

有些你没有的文件是因为我这个是已经运行完成之后的配置了,你只需要关注有没有git clone yolov7这个项目下来到vlfm这个目录里。

下载HM3D数据集了

首先,安装时设置以下变量(不需要放入.bashrc中):

MATTERPORT_TOKEN_ID=<FILL IN FROM YOUR ACCOUNT INFO IN MATTERPORT> # 需要你去MATTERPORT官网去申请
MATTERPORT_TOKEN_SECRET=<FILL IN FROM YOUR ACCOUNT INFO IN MATTERPORT> # 需要你去MATTERPORT官网去申请
DATA_DIR=</path/to/vlfm/data> 你保存数据集的文件路径(这个只是过渡用的)# Link to the HM3D ObjectNav episodes dataset, listed here:
# https://github.com/facebookresearch/habitat-lab/blob/main/DATASETS.md#task-datasets
# From the above page, locate the link to the HM3D ObjectNav dataset.
# Verify that it is the same as the next two lines.
HM3D_OBJECTNAV=https://dl.fbaipublicfiles.com/habitat/data/datasets/objectnav/hm3d/v1/objectnav_hm3d_v1.zip

这里我直接把我自己给你们也行:MATTERPORT_TOKEN_ID= 77107088c97315a0

MATTERPORT_TOKEN_SECRET=caa9f0e19d6dac735b988215198d93c3

# Download HM3D 3D scans (scenes_dataset)
python -m habitat_sim.utils.datasets_download \--username $MATTERPORT_TOKEN_ID --password $MATTERPORT_TOKEN_SECRET \--uids hm3d_train_v0.2 \--data-path $DATA_DIR &&
python -m habitat_sim.utils.datasets_download \--username $MATTERPORT_TOKEN_ID --password $MATTERPORT_TOKEN_SECRET \--uids hm3d_val_v0.2 \--data-path $DATA_DIR &&# Download HM3D ObjectNav dataset episodes
wget $HM3D_OBJECTNAV &&
unzip objectnav_hm3d_v1.zip &&
mkdir -p $DATA_DIR/datasets/objectnav/hm3d  && # 注意更改自己文件目录 我的是保存到 vlfm/data下面
mv objectnav_hm3d_v1 $DATA_DIR/datasets/objectnav/hm3d/v1 && # 注意更改自己文件目录 我的是保存到 vlfm/data下面
rm objectnav_hm3d_v1.zip

在这里插入图片描述

MobileSAM、GroundingDINO 和 PointNav 的权重必须保存到此data/目录中。权重可从以下链接下载:

  • mobile_sam.pt: https://github.com/ChaoningZhang/MobileSAM
  • groundingdino_swint_ogc.pth:https://github.com/IDEA-Research/GroundingDINO
  • yolov7-e6e.pt:https://github.com/WongKinYiu/yolov7
  • pointnav_weights.pth:包含在数据子目录中

这个就自己下吧路径都对。最终结果和我上面的图片一致就行

上述就是完成了数据集的下载,正常不会遇到问题,至少我没有。

要运行评估,必须先在后台加载各种模型。只需运行以下命令即可完成一次:

./scripts/launch_vlm_servers.sh

(您可能需要chmod +x先运行此文件。)此命令将创建一个 tmux 会话,该会话将开始加载用于 VLFM 的各种模型并通过 提供服务flask。完成后,请务必终止 tmux 会话以释放您的 GPU。

你在运行这个指令后,也会下载很多外网的项目依赖,还是要挂着clash进行就可以。

注意这里可能会遇到这个问题:

在这里插入图片描述

系统中缺少 GLIBCXX_3.4.29 版本的 C++ 标准库 (libstdc++.so.6),导致无法加载 kiwisolver 模块(matplotlib 的依赖项)

# 先运行这个,查找你有没有 C++ 标准库
find /data/home/2024/zhanglongjia/anaconda3 -name libstdc++.so.6*
# 之后运行这个看你有没有GLIBCXX_3.4.29
strings /data/home/2024/zhanglongjia/anaconda3/envs/habitat/lib/libstdc++.so.6 | grep GLIBCXX

这里可以看到我的系统里是有的(至于你们系统有没有我就不知道了,我觉得系统本身就有,只是没有export出去),系统环境中没有
在这里插入图片描述

所以我们执行这个就行:

export LD_LIBRARY_PATH=/data/home/2024/zhanglongjia/anaconda3/envs/habitat/lib

之后运行./scripts/launch_vlm_servers.sh就能成功了。其余的问题都是下载的问题,你正确配置好clash就没问题。

运行以下命令在 HM3D 数据集上进行评估:

python -m vlfm.run \habitat_baselines.evaluate=True \habitat_baselines.eval.video_option="[disk]" 

运行这个指令就能在headless下保存运行结果的视频了,下面是我跑实验成功的截图(只是评估)

在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/574269.html

相关文章:

  • 如何快速判断Excel文档是否被修改过?Excel多版本比对解决方案
  • 睿是信息携手Arctera,深化服务中国市场,共筑数据管理新未来
  • css元素超过两行隐藏并显示省略号全网独一份
  • 2025年CSS最新高频面试题及核心解析
  • ADIOS2 介绍与使用指南
  • 后台发热、掉电严重?iOS 应用性能问题实战分析全过程
  • 【数据结构初阶】--顺序表(一)
  • 【go的测试】单测之gomock包与gomonkey包
  • 板凳-------Mysql cookbook学习 (十--9)
  • K8S: etcdserver: too many requests
  • Halcon ——— OCR字符提取与多类型识别技术详解
  • Java 程序设计试题​
  • 多智能体协同的力量:赋能AI安全报告系统的智能设计之道
  • Elasticsearch(ES)与 OpenSearch(OS)
  • 苹果芯片macOS安装版Homebrew(亲测)
  • LoHoVLA技术:让机器人像人类一样思考与行动的统一框架
  • AI 智能体架构设计3阶段演进和3大关键技术对比剖析
  • 硬件工程师笔试面试高频考点汇总——(2025版)
  • 最近小峰一直在忙国际化项目,确实有点分身乏术... [特殊字符] 不过! 我正紧锣密鼓准备一系列干货文章/深度解析
  • SpringBoot中使用表单数据有效性检验
  • Ollama 在LangChain中的应用 Python环境
  • RS485
  • Linux运维新人自用笔记(inode索引节点、删除文件原理、raid10、lvm逻辑卷)
  • Python基础(​​FAISS​和​​Chroma​)
  • 十四天机器学习入门——决策树与随机森林:从零构建智慧决策模型
  • 本地文件深度交互新玩法:Obsidian Copilot的深度开发
  • 从Java API调用者到架构思考:我的Elasticsearch认知升级之路
  • RealSense 相机 | 读取IMU | 解决权限问题 | 提供示例程序
  • 用于算法性能预测的 GNN 框架
  • python基于微信小程序的广西文化传承系统