【具身智能】目标导航实验复现详细教程

在这里插入图片描述

文章目录

  • 【具身智能】目标导航实验复现详细教程
    • 1. 源码测试
    • 2. 训练
    • 3. 验证
    • (附) 问题
      • <1> Pytorch与CUDA版本问题
      • <2> 项目文件引用问题
      • <3> 循环引用问题
      • <4> libstdc++库文件旧
      • <5> 显存爆炸问题

【具身智能】目标导航实验复现详细教程

参考论文Object Goal Navigation using Goal-Oriented Semantic Exploration

1. 源码测试

git clone https://github.com/devendrachaplot/Object-Goal-Navigation/
cd Object-Goal-Navigation/;
pip install -r requirements.txt

数据集地址https://github.com/StanfordVL/GibsonEnv/blob/master/gibson/data/README.md
下载地址
https://docs.google.com/forms/d/e/1FAIpQLScWlx5Z1DM1M-wTSXaa6zV8lTFkPmTHW1LqMsoCBDWsTDjBkQ/viewform?pli=1
【具身智能】目标导航实验复现详细教程_第1张图片
在这里需要向斯坦福填写一份签名协议提交表单即可下载

【具身智能】目标导航实验复现详细教程_第2张图片
下载episode数据集

wget --no-check-certificate 'https://drive.google.com/uc?export=download&id=1tslnZAkH8m3V5nP8pbtBmaR2XEfr8Rau' -O objectnav_gibson_v1.1.zip
unzip objectnav_gibson_v1.1.zip

解压后按照下列组织整合文件
data/
├── datasets
│ └── objectnav
│ └── gibson
│ └── v1.1
│ ├── train
│ │ ├── content
│ │ │ ├── Allensville.glb.json.gz
│ │ │ ├── Beechwood.glb.json.gz
│ │ │ ├── Benevolence.glb.json.gz
│ │ │ ├── Coffeen.glb.json.gz
│ │ │ ├── Cosmos.glb.json.gz
│ │ │ ├── Forkland.glb.json.gz
│ │ │ ├── Hanson.glb.json.gz
│ │ │ ├── Hiteman.glb.json.gz
│ │ │ ├── Klickitat.glb.json.gz
│ │ │ ├── Lakeville.glb.json.gz
│ │ │ ├── Leonardo.glb.json.gz
│ │ │ ├── Lindenwood.glb.json.gz
│ │ │ ├── Marstons.glb.json.gz
│ │ │ ├── Merom.glb.json.gz
│ │ │ ├── Mifflinburg.glb.json.gz
│ │ │ ├── Newfields.glb.json.gz
│ │ │ ├── Onaga.glb.json.gz
│ │ │ ├── Pinesdale.glb.json.gz
│ │ │ ├── Pomaria.glb.json.gz
│ │ │ ├── Ranchester.glb.json.gz
│ │ │ ├── Shelbyville.glb.json.gz
│ │ │ ├── Stockman.glb.json.gz
│ │ │ ├── Tolstoy.glb.json.gz
│ │ │ ├── Wainscott.glb.json.gz
│ │ │ └── Woodbine.glb.json.gz
│ │ ├── train_info.pbz2
│ │ └── train.json.gz
│ └── val
│ ├── content
│ │ ├── Collierville_episodes.json.gz
│ │ ├── Collierville.glb.json.gz
│ │ ├── Corozal_episodes.json.gz
│ │ ├── Corozal.glb.json.gz
│ │ ├── Darden_episodes.json.gz
│ │ ├── Darden.glb.json.gz
│ │ ├── Markleeville_episodes.json.gz
│ │ ├── Markleeville.glb.json.gz
│ │ ├── Wiconisco_episodes.json.gz
│ │ └── Wiconisco.glb.json.gz
│ ├── val_info.pbz2
│ └── val.json.gz
└── scene_datasets
└── gibson_semantic -> …/…/gibson_habitat_trainval/gibson

python test.py --agent random -n1 --num_eval_episodes 1 --auto_gpu_config 0
【具身智能】目标导航实验复现详细教程_第3张图片

2. 训练

如果要看到可视化的效果,添加参数-v 1
记得要在habitat的虚拟环境下

mkdir pretrained_models;
# 下载预训练权重文件
wget --no-check-certificate 'https://drive.google.com/uc?export=download&id=171ZA7XNu5vi3XLpuKs8DuGGZrYyuSjL0' -O pretrained_models/sem_exp.pth
python main.py --auto_gpu_config 0 -n 1 -v 1

【具身智能】目标导航实验复现详细教程_第4张图片
【具身智能】目标导航实验复现详细教程_第5张图片

可视化效果

【具身智能】目标导航实验复现详细教程_第6张图片

由于文件大小的限制,动图效果不佳,实际执行比较丝滑

3. 验证

验证仍然可以可视化可以加-v参数

python main.py --split val --eval 1 --load pretrained_models/sem_exp.pth --auto_gpu_config 0 -n 1 -v 1

【具身智能】目标导航实验复现详细教程_第7张图片

(附) 问题

<1> Pytorch与CUDA版本问题

python test.py --agent random -n1 --num_eval_episodes 1 --auto_gpu_config 0

ImportError: /usr/local/anaconda3/envs/habitat/lib/python3.9/site-packages/torch/lib/…/…/nvidia/cusparse/lib/libcusparse.so.12: undefined symbol: __nvJitLinkAddData_12_1, version libnvJitLink.so.12

解决方法:降级pytorch

conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.2

<2> 项目文件引用问题

ModuleNotFoundError: No module named ‘habitat.config.default’
【具身智能】目标导航实验复现详细教程_第8张图片
源码中是有的
所以跨项目引用指定一下路径

import sys
sys.path.append('/home/moresweet/Projects/gitCloneZone/habitat-lab')

【具身智能】目标导航实验复现详细教程_第9张图片

<3> 循环引用问题

ImportError: cannot import name ‘Sem_Exp_Env_Agent’ from partially initialized module ‘agents.sem_exp’ (most likely due to a circular import)
循环引用
【具身智能】目标导航实验复现详细教程_第10张图片
路径中去掉原生的引用

【具身智能】目标导航实验复现详细教程_第11张图片error: [Errno 2] No such file or directory: ‘:/usr/local/cuda/bin/nvcc’
echo $CUDA_HOME会发现多个冒号
bashrc中可能是这么添加的

# cuda12.0 start
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
# cuda12.0 end

然而$CUDA_HOME实际上是空,所以echo $CUDA_HOME输出为:/usr/local/cuda
解决办法:
export CUDA_HOME=/usr/local/cuda
然后再echo $CUDA_HOME
/usr/local/cuda
输出正常

<4> libstdc++库文件旧

OSError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29’ not found (required by /usr/local/anaconda3/envs/habitat/lib/python3.9/site-packages/llvmlite/binding/…/…/…/…/libLLVM-14.so)

strings /usr/local/anaconda3/envs/habitat/lib/libstdc++.so.6 | grep GLIBCXX
【具身智能】目标导航实验复现详细教程_第12张图片

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
【具身智能】目标导航实验复现详细教程_第13张图片
在这里插入图片描述
因此,重新创建链接

sudo ln -f -s /usr/local/anaconda3/envs/habitat/lib/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

<5> 显存爆炸问题

BrokenPipeError: [Errno 32] Broken pipe
【具身智能】目标导航实验复现详细教程_第14张图片
显存在程序启动的瞬间爆掉【具身智能】目标导航实验复现详细教程_第15张图片
添加参数
-n 1
使得并行处理数量变得自己的资源可以承受
【具身智能】目标导航实验复现详细教程_第16张图片解决

【具身智能】目标导航实验复现详细教程_第17张图片

你可能感兴趣的:(EmboiedAI,机器人,强化学习,视觉导航,人工智能,计算机视觉)