参考论文Object Goal Navigation using Goal-Oriented Semantic Exploration
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
在这里需要向斯坦福填写一份签名协议提交表单即可下载
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
如果要看到可视化的效果,添加参数-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
可视化效果
由于文件大小的限制,动图效果不佳,实际执行比较丝滑
验证仍然可以可视化可以加-v
参数
python main.py --split val --eval 1 --load pretrained_models/sem_exp.pth --auto_gpu_config 0 -n 1 -v 1
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
ModuleNotFoundError: No module named ‘habitat.config.default’
源码中是有的
所以跨项目引用指定一下路径
import sys
sys.path.append('/home/moresweet/Projects/gitCloneZone/habitat-lab')
ImportError: cannot import name ‘Sem_Exp_Env_Agent’ from partially initialized module ‘agents.sem_exp’ (most likely due to a circular import)
循环引用
路径中去掉原生的引用
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
输出正常
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
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
因此,重新创建链接
sudo ln -f -s /usr/local/anaconda3/envs/habitat/lib/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
BrokenPipeError: [Errno 32] Broken pipe
显存在程序启动的瞬间爆掉
添加参数
-n 1
使得并行处理数量变得自己的资源可以承受
解决