Ubuntu16.04安装matterport3D simulator的方法

22 篇文章 0 订阅
18 篇文章 1 订阅

Ubuntu16.04安装matterport3D simulator的方法

Matterport3D是一个非常好的3D的RGB-D数据集,可以用在很多相关领域。Vision-and-Language Navigation问题使用的R2R数据集就是依托于matterport3D制作的。本文主要记录一下博主如何使用Ubuntu16.04来安装这个模拟器和数据集的。

首先放Matterport3D的github地址:https://github.com/peteanderson80/Matterport3DSimulator

官方提供了两种安装模拟器的方式:使用docker安装,或者不使用docker安装。

1. 向开源项目组要求数据集

这里首先要签署一份agreement,然后发到指定的邮箱,过一两个小时就可以收到回复。回复中会附有一个py程序,就可以使用这个py程序来下载数据集了。

详情请见网址:https://niessner.github.io/Matterport/ 中的”Dataset Download“部分。

数据集下载指令:

因为完整的Matterport3D数据集有1.3T大小,我电脑内存没这么大,如果只是想让这个模拟器跑起来,可以只下载**matterport_skybox_images**,具体指令如下:

python download_mp.py -o [你的下载路径] --type matterport_skybox_images

这里就会默认把90个建筑的数据都下载下来,大小一共是20G左右。

如果要下载深度数据,则指令如下:

python download_mp.py -o /home/w61/VLN/dataset --type undistorted_depth_images undistorted_camera_parameters

注意:这里python要用python2.7版本来运行。

2.用docker安装simulator

用docker来安装确实很方便,而且环境是隔离开的,不用担心会把现有的环境弄乱掉。但是如果之前没接触过docker,建议先去b站看看具体的docker教学哦,这样再来操作就很清楚明了了!

首先是几点要提前达到的要求:

  • Nvidia GPU with driver >= 396.37
  • 安装docker,安装教程地址:https://docs.docker.com/engine/install/ubuntu/
  • 安装nvidia-docker2.0,安装教程地址:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker
  • 注意:CUDA/CuDNN不需要安装,因为这些会在docker image中提供

满足以上条件后,就可以用以下命令行进行安装:

(1) clone git仓库:

# Make sure to clone with --recursive
git clone --recursive https://github.com/peteanderson80/Matterport3DSimulator.git
cd Matterport3DSimulator

(2) 使用Docker进行编译:

docker build -t mattersim:9.2-devel-ubuntu18.04 .

这里如果报错,可以使用以下命令行(保证命令行所在路径中包含dockerfile.txt这个文件):

docker build -t mattersim:9.2-devel-ubuntu18.04 . -f dockerfile.txt

这时候会自动把镜像从远程pull过来,并且顺便把pytorch等安装好,等待一段时间后,显示successfully应该就已经把远程容器拉下来了。可以用docker images来查看目前docker包括那些容器,出现mattersim就说明成功了。

我们定义一下下载下来的MatterPort3D的数据集所在位置:

sudo gedit ~/.bashrc

打开bashrc,添加以下内容:

export MATTERPORT_DATA_DIR=/home/w61/VLN/dataset/v1/scans

注意:这里的路径要写绝对路径哦!这是我自己的下载路径,各位替换成自己的路径就可以啦。

然后就可以运行这个容器了:

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

成功进入容器,保证自己的命令行所在路径是Matterport3DSimulator目录,执行以下命令:

cd /root/mount/Matterport3DSimulator
mkdir build && cd build
cmake -DEGL_RENDERING=ON ..
make
cd ../

按理说make完后我们的matterport3D simulator的容器和环境就已经都安装好啦。我们现在开始试试代码能不能正常跑把~

3. 用自己的环境编译安装simulator

虽然说之前已经用docker安装好了,但是运行python3 tasks/R2R/train.py的时候居然报了CUDNN版本的错误,真是麻了,我还以为docker会解决这些烦人的版本问题,算了,我直接在自己环境里配置好吧,省的麻烦…

  • 先决条件:

    • Ubuntu >= 14.04
    • Nvidia-driver with CUDA installed
    • C++ compiler with C++11 support
    • CMake >= 3.10
    • OpenCV >= 2.4 including 3.x
    • OpenGL
    • GLM
    • Numpy
  • 按照上面的要求,一个个安装好。

  • 在MatterPort3DSimulator/build里cmake的时候,报错说找不到OPENGL,

    -- Found OpenMP_CXX: -fopenmp  
    -- Found OpenMP: TRUE   
    CMake Error at /opt/cmake/share/cmake-3.12/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
      Could NOT find OpenGL (missing: OPENGL_opengl_LIBRARY)
    Call Stack (most recent call first):
      /opt/cmake/share/cmake-3.12/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
      /opt/cmake/share/cmake-3.12/Modules/FindOpenGL.cmake:395 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
      CMakeLists.txt:29 (find_package)
    
    -- Configuring incomplete, errors occurred!
    See also "/home/w61/VLN/Matterport3DSimulator/build/CMakeFiles/CMakeOutput.log".
    
  • 可是我的OPENGL肯定是已经装好了,就是cmake找不到OPENGL的问题。解决方法是先删除原来装好的相关库,sudo apt-get remove libgl1-mesa-dev libegl1-mesa-dev ,然后重新安装:sudo apt-get install libgl1-mesa-dev libegl1-mesa-dev libglew-dev

  • /usr/lib中寻找opengl.so,找到它的路径:/usr/lib/x86_64-linux-gnu/libGL.so

  • 然后如果cmake的时候希望他通过conda环境进行编译,则记得也要去找一下conda对应环境python所在的路径,例如:/home/w61/anaconda3/envs/pytorch/bin/python3

  • 最后的cmake指令:cmake -D OPENGL_opengl_LIBRARY=/usr/lib/x86_64-linux-gnu/libGL.so -D PYTHON_EXECUTABLE=/home/w61/anaconda3/envs/pytorch/bin/python3 -D -DEGL_RENDERING=ON ..

  • 如果报错:No package 'jsoncpp' found,则终端运行:sudo apt-get install libjsoncpp-dev.

  • 终于不出意外的话预编译成功了,接着make就可以了。

  • 如果报错:Matterport3DSimulator/include/NavGraph.hpp:27:10: fatal error: glm/glm.hpp: No such file or directory,则终端运行:sudo apt-get install libglm-dev

  • 完成make后,记得把编译生成的MatterPort3DSimulator/build/MatterSim.cpython-36m-x86_64-linux-gnu.so文件复制到conda对应环境的库里/home/w61/anaconda3/envs/pytorch/lib/python3.6/site-packages

  • 到此,python3运行代码,可以正常import MatterSim啦,完结撒花~。

4. 运行代码

(1)预处理数据集

在容器内,执行以下命令:

python3 ./scripts/downsize_skybox.py

这里我是报错了:

ModuleNotFoundError: No module named 'MatterSim'

就是说python找不到MatterSim这个库在哪。。哎,几经折腾,终于找到解决方法

  • 先找到MatterSim.cpython-36m-x86_64-linux-gnu.so这个文件的路径:~/mount/Matterport3DSimulator/VLN/Matterport3DSimulator/build/MatterSim.cpython-36m-x86_64-linux-gnu.so(这是我个人的路径,各位自行在Materport3DSimulator目录下查找一下)

  • 然后查一下自己python的site-packages的路径:

    python3 # 进入python环境
    import site
    site.getsitepageages
    

    我这里输出了以下内容:

    ['/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages']
    

    ok,然后我们把刚才查到的.so文件copy到python的dist-packages里去:

    cp ~/mount/Matterport3DSimulator/build/MatterSim.cpython-36m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/
    

    大功告成,现在可以用python3 去运行downsize_skybox.py啦。

    UPDATE!

    后来发现,出现这个原因是我在创建容器的时候路径不在Matterport3DSimulator目录下。否则就不需要这一步,容器里的python能够直接找到MatterSim!

  • 各种路径报错,说找不到dataset里的文件,这里我把下载下来的数据集中所有的zip文件都解压了,顺便把解压前的zip移到了windows里面(当初给ubuntu留的空间不够大)。

  • ok,都解压完了,downsize_skybox.py这个程序也跑完了,那就可以愉快的进行测试啦:

    ./build/tests ~Timing
    

    我这里测试完报了一个关于EGL的错。。哎,心累,先不管了。

(2)开启交互界面

关闭刚才的docker,回到主机,终端输入:

xhost +

然后输入:

nvidia-docker run -it -e DISPLAY -e="QT_X11_NO_MITSHM=1" -v /tmp/.X11-unix:/tmp/.X11-unix --mount type=bind,source=$MATTERPORT_DATA_DIR,target=/root/mount/Matterport3DSimulator/data/v1/scans,readonly --volume `pwd`:/root/mount/Matterport3DSimulator mattersim:9.2-devel-ubuntu18.04

注意,这里和github提供的有点不同,要加上-e=“QT_X11_NO_MITSHM=1”,否则之后会报错。

这样就又新建了一个docker容器,接着输入以下命令:

cd /root/mount/Matterport3DSimulator
python3 src/driver/driver.py

OK,到这里为止我的交互界面就出来啦!(depth是黑的是因为我没下载depth数据,内存不够啊)
matterport3D 交互界面

评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值