【VLN环境配置】Matterport3DSimulator——用于视觉语言导航的虚拟仿真引擎环境配置
【VLN入门介绍】
一文搞懂视觉语言导航,从任务介绍到基本算法讲解:https://blog.csdn.net/qq_50001789/article/details/144676313
【VLN算法笔记】
DUET(CVPR2022),首篇使用Transformer来建模全局图节点相关性的工作:https://blog.csdn.net/qq_50001789/article/details/144632851
AZHP(CVPR2023),使用自适应区域分层规划器来实现层次化导航的目的:https://blog.csdn.net/qq_50001789/article/details/144635128
GridMM(ICCV2023),使用网格记忆图来表征历史轨迹中的场景空间关系:https://blog.csdn.net/qq_50001789/article/details/144652403
【VLN辅助任务】
MLM、SAP、SAR、SPREL——预训练、微调中常用的提点策略:https://blog.csdn.net/qq_50001789/article/details/144633984
【VLN环境配置】
Matterport3DSimulator——用于视觉语言导航算法研发的仿真环境配置:https://blog.csdn.net/qq_50001789/article/details/142621259
github官方教程:https://github.com/peteanderson80/Matterport3DSimulator
前提准备
- 下载Matterport3D Dataset数据集
- 下载
docker
:https://blog.csdn.net/zzh516451964zzh/article/details/126019663,步骤:添加官方密钥→更新apt→在线安装,docker介绍:https://www.bilibili.com/video/BV1ai421S7zj、https://ruanyifeng.com/blog/2018/02/docker-tutorial.html - 安装
nvidia-docker
,可以参考:https://blog.csdn.net/BigData_Mining/article/details/99681168,如果docker
版本大于19,则可以不用安装nvidia-docker
,具体原因可见后文;
注:
- 如果因为网络问题,无法下载密钥,则可以下载到本地,之后在本地添加,教程:https://blog.csdn.net/qq_50001789/article/details/142622153
- 如果在安装
docker-ce
过程报错Package ‘docker-ce‘ has no installation candidate,则说明apt的源设置的不对,需要换源(可以换阿里,参考:https://blog.csdn.net/gmaaa123/article/details/139682260
构建基于docker的环境
1、先克隆Matterport3DSimulator仓库
# Make sure to clone with --recursive
git clone --recursive https://github.com/peteanderson80/Matterport3DSimulator.git
如果你没有使用——recursive
克隆,那么你需要从根目录中手动克隆pybind子模块:
git submodule update --init --recursive
2、构建docker
cd Matterport3DSimulator
docker build -t mattersim:9.2-devel-ubuntu18.04 .
指令解释:该命令用于构建一个基于Dockerfile的Docker镜像,并将其命名为 mattersim:9.2-devel-ubuntu18.04
-
docker build
:这是 Docker 构建命令,用于根据当前目录中的Dockerfile
构建一个 Docker 镜像。Dockerfile
定义了镜像的构建步骤和内容; -
-t mattersim:9.2-devel-ubuntu18.04
:-t
是--tag
的缩写,表示为生成的 Docker 镜像打标签;mattersim:9.2-devel-ubuntu18.04
是镜像的名称和标签(其中mattersim
是镜像的名称;9.2-devel-ubuntu18.04
是该镜像的标签(tag),用于标识这个镜像的具体版本,通常标签会指示这个镜像的用途或基础环境,例如CUDA 9.2
和 `Ubuntu 18.04); -
.
:这个点 (.
) 指的是当前目录,表示 Docker 应该在当前目录中查找Dockerfile
来构建镜像。当前目录包含了构建 Docker 镜像所需的文件、代码、依赖等。
可能的报错:
- 在创建镜像过程中,如果报错“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”,则需要添加守护进程,参考https://zhuanlan.zhihu.com/p/659684412
- connect: connection refused:无法获取docker,常见的方法是切换镜像源(例如阿里、网易),方法可以参考https://cloud.tencent.com/developer/article/2429585,如果换了国内常见的镜像源还是不行,则可以参考https://www.cnblogs.com/lxzcloud/p/18354640
检查构建结果:
- 可以使用docker images指令来查看docker是否构建成功,正常来说会输出如下内容,
mattersim
就是所构建的docker
REPOSITORY TAG IMAGE ID CREATED SIZE
mattersim 9.2-devel-ubuntu18.04 c4e3d9dfa099 19 hours ago 6.61GB
3、准备数据集
下载解压所下载的数据集,并且设置一个环境变量,用于表示数据集的位置(后续启动docker的时候需要用到这个变量,这里要填绝对路径)
sudo vim ~/.bashrc
添加如下内容
export MATTERPORT_DATA_DIR=<PATH>
之后激活环境
source ~./bashrc
4、启动docker
在启动之前,要保证命令行所在的路径是刚才克隆的Matterport3DSimulator
仓库目录,之后,执行该指令进入docker容器
nvidia-docker run -it --mount type=bind,source=$MATTERPORT_DATA_DIR,target=/root/mount/Matterport3DSimulator/data/v1/scans --volume `pwd`:/root/mount/Matterport3DSimulator mattersim:9.2-devel-ubuntu18.04
如果docker的安装版本超过19,则可以通过如下指令来进入docker容器
docker run -it --gpus all --mount type=bind,source=$MATTERPORT_DATA_DIR,target=/root/mount/Matterport3DSimulator/data/v1/scans --volume `pwd`:/root/mount/Matterport3DSimulator mattersim:9.2-devel-ubuntu18.04
解释:我们使用nvidia-docker
指令启动docker的目的就是为了可以在docker中直接使用本机的GPU资源,而在docker19.03中,增加了--gpus
选项,在启动过程中如果使用了该选项,则可以在docker中直接调用GPU,不必再使用nvidia-docker
相关的指令了,其中--gpus all
表示使用本机上的所有GPU资源。在启动的docker里面输入nvidia-smi
指令,如果可以正常输出显卡参数,则说明该docker可以调用本机上的GPU资源。参考链接:https://www.jianshu.com/p/32ad4f448fe5
5、编译环境
在docker中进入Matterport3DSimulator目录(步骤4中进入Matterport3DSimulator目录是启动前进入,这里进入是docker启动后进入)
cd /root/mount/Matterport3DSimulator
mkdir build && cd build
cmake -DEGL_RENDERING=ON ..
make
这一步是为了安装MatterSim
库,安装到系统默认的python环境下面。这里也可以利用conda
新建一个环境,之后在新建的环境内部编译安装MatterSim
库,需要执行如下指令进行环境编译:
cmake -D PYTHON_EXECUTABLE=[python解释器的路径] -DEGL_RENDERING=ON ..
# 例如:cmake -D PYTHON_EXECUTABLE=/root/miniconda3/envs/mattersim/bin/python -DEGL_RENDERING=ON ..
make
6、测试API
- 在docker中进入python3环境,使用
python
指令会默认进入python2环境
python3
- 测试
MatterSim
库,如果不报错,说明环境配置成功
import MatterSim
如果提示找不到,则可以将build文件中的MatterSim.cpython-39m-x86_64-linux-gnu.so
(名字跟Python版本号有关)和libMatterSim.so
文件复制到自己Python的site-packages
路径下面,查看当前解释器的site-packages
路径,路径一般为anaconda3/envs/[环境名]/lib/[python解释器版本]/site-packages
# 查看site-packages路径
python3 # 进入python环境
import site
site.getsitepackages()
复制过去
cp MatterSim.cpython-39-x86_64-linux-gnu.so [site-packages路径]
cp libMatterSim.so [site-packages路径]
如果引用MatterSim
不报错,则说明环境配置成功。