最近因为项目需要因此需要在《Multi-View Mesh Reconstruction With Neural Deferred Shading》(后文简称nds)文章中引入《Instant Neural Graphics Primitives with a Multiresolution Hash Encoding》(后文简称ngp),环境搭建的过程比较繁琐,因此写一篇文章以作记录。
1、ngp
ngp这里采用的是他的一个python实现。(但是这个项目其实只要用到tinycudann库),这里还是完整搭建ngp_pl库。
首先创建一个conda环境,python这里用的是3.8:
conda create -n 环境名称 python=3.8
然后激活该环境:
conda activate 环境名称
参考他的repo,先搭建pytorch,这里选择1.12.1版本的pytorch(Ubuntu),11.3的cuda,运行下列指令:
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
再搭建torch-scatter:
conda install pytorch-scatter -c pyg
再搭建tinycudann:
#先看看环境要求是否需要更新cuda等,满足则先运行如下指令
sudo apt-get install build-essential git
#再export cuda路径,注意将cuda版本改成自己的cuda版本(nvidia-smi的cuda版本)
export PATH="/usr/local/cuda-11.4/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH"
# 再将repo克隆到本地,然后依次运行如下指令
git clone --recursive https://github.com/nvlabs/tiny-cuda-nn
cd tiny-cuda-nn
cmake . -B build
cmake --build build --config RelWithDebInfo -j
cd bindings/torch
python setup.py install
python setup.py install如果出现如下报错:
Unable to install pytorch bindings - lcuda not found
则参考tinycudann官方github repo的issue的解决方法,我的做法是把下面一句指令加到home目录自己名字的文件夹下的.bashrc or .zshrc (depending on your shell)文件中然后重启终端软件的会话,再重复上述export到python setup.py的指令就提示我安装成功了。
export LIBRARY_PATH="/usr/local/cuda/lib64/stubs:$LIBRARY_PATH"
再搭建apex:
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
最后:
pip install -r requirements.txt
注意每次pull代码之前需要在主文件夹下运行如下指令(需要将pip更新到>= 22.1的版本),不然会报错没有’vren’:
pip install models/csrc/
2、nds
首先搭建nvdiffrast:
git clone https://github.com/NVlabs/nvdiffrast.git
cd nvdiffrast
python -m pip install .
再搭建pyremesh:
python -m pip install --no-index --find-links ./ext/pyremesh pyremesh
然后其他一些environment.yml中的库pip一下就可以。
3、问题
搭好以后报错:
/data/cjji/anaconda3/envs/ndsngp/lib/python3.8/site-packages/nvdiffrast/torch/../common/glutil.h:36:10: fatal error: EGL/egl.h: No such file or directory
36 | #include <EGL/egl.h>
| ^~~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.
运行以下指令:
apt-get install libegl1-mesa-dev
再次报错:
RuntimeError: OpenGL 4.4 or later is required
我目前得到的信息OenGL与nvidia驱动捆绑,因此可以直接更新nvidia来更新opengl的版本:
#查看合适的驱动
sudo ubuntu-drivers devices
#安装驱动
sudo apt install nvidia-driver-510 nvidia-dkms-510
#需要重启生效
sudo reboot
#检查是否安装完毕
nvidia-smi