Windows Docker环境下neuralRecon环境配置手把手教学

最近在尝试跑通NeralRecon的demo,由于git中推荐的是在Ubuntu环境中运行的,于是决定使用Docker作为环境进行演示。参考了CSDN的一篇文章Windows配置NeuralRecon问题记录,只不过他使用的WSL2,而我使用的Docker运行的。

1. NeuralRecon介绍

参考这几篇文章:
https://zju3dv.github.io/neuralrecon/
https://zju3dv.github.io/neuralrecon/files/NeuralRecon-suppmat.pdf
https://github.com/zju3dv/NeuralRecon/
https://arxiv.org/pdf/2104.00681.pdf
https://blog.csdn.net/AITIME_HY/article/details/116811373

2. 环境配置

2.1 docker环境配置

Docker镜像我选择的是https://github.com/cnstark/pytorch-docker 这个仓库提供的镜像,也可以直接谷歌搜索关键词如“docker pytorch”来获取官方镜像。
由于NeuralRecon使用的是Ubuntu18.04,pytorch 1.6.0,python3.7.9,因此我这在这个仓库选择了近似的版本。

docker pull cnstark/pytorch:1.6.0-py3.8.13-cuda10.2-devel-ubuntu18.04

Docker镜像下载下来之后需要创建容器,这里有几点需要注意,如果你的NeuralRecon项目放在Windows的文件夹中,需要创建映射,其次是shm-size参数也需要配置,否则默认参数使用64M共享内存,很容易发生内存不够的错误。
可以参考我这里的代码:

docker run -it --name torch_gpu --gpus=all -p 50022:22 -v /c/NeuralRecon/:/workspace/ --shm-size 8g  image_name

创建成功后进入容器,先执行sudo apt-get update, 否则apt install无法找到各个包的地址。

2.2 Anaconda环境安装

由于这个Docker镜像没有conda命令,而NeuralRecon的文档中需要创建neucon环境,因此我安装了Anaconda的linux环境的包,当然可以不创建环境,在默认的python环境中执行。

2.3 安装NeuralRecon所需环境

接着就按照NeuralRecon的github的README.MD写的教程执行语句。

# Ubuntu 18.04 and above is recommended.
sudo apt install libsparsehash-dev  # you can try to install sparsehash with conda if you don't have sudo privileges.
conda env create -f environment.yaml
conda activate neucon

这里要注意的是,执行完conda env create -f environment.yaml后可能会报错,有一部分包没有安装成功,这个时候需要再执行一遍安装,即:

conda activate neucon
sudo apt-get install git
pip install -r requirement.txt
MAX_JOBS=2 pip install -v git+https://gitclone.com/github.com/mit-han-lab/torchsparse.git

然后继续跟着NeuralRecon文档下载安装必要的文件,就可以尝试执行下demo.py了,看看报错的信息。

这里贴上我遇到的一些报错信息以及解决办法,注意以下错误是按顺序发生的,即解决了上一步错误之后发生的新的错误。
(1) linux ImportError: (‘Unable to load OpenGL library’, ‘GL: cannot open shared object file: No such file or directory’, ‘GL’, None)
解决办法:Docker pyopengl 离屏渲染

(2) ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory
解决办法:【BUG解决】ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory

(3) FileNotFoundError: [Errno 2] No such file or directory: ‘/home/sunjiaming/Repositories/NeuralFusion/data/neucon_tianren_demo/tianren_zihao/images’
解决办法:修改./config/demo.yaml文件下的PATH

(4) RuntimeError: DataLoader worker (pid 109) is killed by signal: Bus error. It is possible that dataloader’s workers are out of shared memory. Please try to raise your shared memory limit.
解决办法:https://www.cnblogs.com/answerThe/p/15612761.html

(5) RuntimeError: Integer division of tensors using div or / is no longer supported, and in a future release div will perform true division as in Python 3. Use true_divide or floor_divide (// in Python) instead.
解决办法:根据提示报错的信息修改对应的代码, /root/anaconda3/envs/neucon/lib/python3.7/site-packages/torchsparse/nn/functional/downsample.py 替换对应位置处的div为true_divide

(6) pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to “None”
解决办法:安装MobaXterm和VcXsrv,可以参考Docker容器使用MobaXterm连接配置ssh通过MobaXterm访问docker,然后参考Windows配置NeuralRecon问题记录的3.2的[链接]

apt-get install libsoil-dev libglm-dev libassimp-dev libglew-dev libglfw3-dev libxinerama-dev libxcursor-dev libxi-dev
ldconfig -p | grep GL
glxinfo | grep "OpenGL version"
export MESA_GL_VERSION_OVERRIDE=3.3
unset LIBGL_ALWAYS_INDIRECT

接着需要配置VcXsrc,可以根据这几个链接去配置:

  • pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to “None” only happens in VSCode terminal
  • WSL Error: Can‘t open display
  • 执行下glxgears可能会报错:Error: couldn’t open display :0.0 的错误信息,可以根据这个链接解决 qt.qpa.xcb: could not connect to display 问题

到这一步就解决的差不多了,可以根据NeuralRecon的文档指引执行下demo.py测试下了~

其他链接:
安装踩坑
https://blog.csdn.net/weixin_42574049/article/details/125601369
https://blog.csdn.net/weixin_42574049/article/details/125449427?spm=1001.2014.3001.5502

拓展知识
cs231A
https://web.stanford.edu/class/cs231a/
https://blog.csdn.net/hhaowang/article/details/111434106

你可能感兴趣的:(windows,docker,深度学习)