0. 引言
2020年,NeRF的出现之际引起了轩然大波,出现了大量相关工作。3D gaussian算是新视角生成领域目前的SOTA,可以进行实时的渲染;最大训练速度上可以与Instant相当,且质量差不多;增加迭代次数后,可以显著提高重建质量,在训练时间51min的情况下,重建效果可以稍微超过Mip-NeRF(48h)。这种好东西谁不想学习下呢,所以我们先进行第一步:配置3D gaussian环境。
我当前的环境为ubuntu 20.04+Quadro RTX 5000。这个项目对显存要求比较高,官方说明需要24G的显存,如果显存不够,可以看github项目主页最下面的FAQ,有对低显存方案进行说明。除此以外Viewer的版本目前好像只支持windows、ubuntu20.04和22.04。
github主页中有一个在windows中安装的youtue教程,非常详细。
目前处于学习阶段,简单用已有数据集进行测试,验证环境可用后准备开始阅读源码。因此还没有安装colmap来处理自己的数据,之后会对colmap的配置进行补充。后边也会新开两篇来讲解论文和代码。
1. cuda安装步骤
1.1显卡驱动安装
禁用系统自带驱动
如果不禁用这个开源驱动,后边安装可能会出现冲突,通过lsmod | grep nouveau
来查看该驱动的情况,如果有输出说明该驱动正在工作,否则表示已经禁用。
禁用方法如下:
sudo gedit /etc/modprobe.d/blacklist.conf
在该文件末尾加上
blacklist nouveau
options nouveau modeset=0
在终端输入sudo update -initramfs -u
nvidia显卡驱动安装
显卡是硬件,想要显卡可以正常工作必须找到对应的驱动,否则会出现各种各样显示上的问题,比如显示器不亮,分辨率不正常
ubuntu-drivers devices
可以查询推荐安装的驱动版本
以我的输出为例
driver : nvidia-driver-495 - third-party non-free
driver : nvidia-driver-535 - third-party non-free recommended
driver : nvidia-driver-510 - third-party non-free
driver : nvidia-driver-465 - third-party non-free
可以看到535为当前显卡的适配驱动版本
然后打开Software&Updates进行对应版本的安装
重启电脑后,如果显示都正常,那就应该大功告成了。但我曾遇到过一个问题,就是已经用了推荐版本的显卡驱动,但无法点亮副屏,然后降了版本才解决的。总而言之显示出了问题,很大可能是显卡驱动的问题,多换几个版本试试。
在终端输入nvidia-smi
,如果没报错就ok了,在输出的信息中可以看到当前驱动的版本和支持的最高版本CUDA,后边安装CUDA的时候要注意版本不能超过这个。
1.2 CUDA安装
https://developer.nvidia.com/cuda-toolkit-archive
从这个链接中选择合适的CUDA版本,以我的为例
选择之后可以看到下边的安装指令,逐条执行即可。但我安装的时候出现了一个问题,有可能系统会自动帮你升级到最新的驱动,有的库需要特殊的CUDA版本,所以我们可以更改最后一行命令,来安装指定版本的CUDA,sudo apt-get -y install cuda-xxx
1.3 配置环境变量
终端输入nvcc -V
来检查CUDA是否安装成功,如果出现了命令找不到的问题,先别急,我们还需要配置一下CUDA的环境变量
终端执行sudo gedit ~/.bashrc
,在文件的最后加上(路径按自己的来)
export CUDA_HOME=/usr/local/cuda-11.8
if [[ ":$PATH:" != *":/usr/local/cuda-11.8/bin:"* ]]; then
export PATH=$PATH:/usr/local/cuda-11.8/bin
fi
if [[ ":$LD_LIBRARY_PATH:" != *":/usr/local/cuda-11.8/lib64:"* ]]; then
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/lib64
fi
再输入source ~/.bashrc
来使得更改生效,这次在执行nvcc -V
,有如下输出,代表安装成功。
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0
2. 3D gaussian安装
这个项目的安装没啥难度,问题基本都处在CUDA上边
这部分是对官网加成的梳理https://github.com/graphdeco-inria/gaussian-splatting
git clone git@github.com:graphdeco-inria/gaussian-splatting.git --recursive
最后的–recursive比较重要,不加的话有的东西装不上。- 进入clone下来的项目目录,在已经安装anaconda的情况下,执行如下命令
conda env create --file environment.yml
conda activate gaussian_splatting
安装两个子模块的时候,可能会报一些错误,这些错误藏在很长的文本中,并且有时候没有颜色标示,所以需要仔细地找出错误点,比如本地缺少一些库,CUDA环境变量没设置对一类的。
需要非常注意!!!!3dgs对CUDA版本有特殊的要求,安装到本地的完整版CUDA版本是11.8,而安装到conda环境中供pytorch使用的阉割版本是11.6(这个版本不包含nvcc,一些复杂功能也没有),官方的解释如下:
Hi,
there’s two different things. One is the full CUDA SDK, including the compiler (NVCC). We need it to build the PyTorch extensions that we wrote ourselves and that the optimizer uses. The other is the CUDA runtime that PyTorch is built against (the latest CUDA runtime that PyTorch 1.12 works with is 11.6). If you install PyTorch with CUDA with Conda, it installs a small subset of the full CUDA SDK that cannot do compilation. If you install the full 11.6 SDK and try to compile our extensions with it, it can fail because of a known issue with C++14 support in the 11.6 CUDA compilers.
训练代码python train.py -s <path to COLMAP or NeRF Synthetic dataset>
3. Viewer安装
按官方的说法,目前在windows\ ubuntu20.04和22.04上是可用的,其他版本不清楚。
sudo apt install -y libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev libavdevice-dev libavcodec-dev libeigen3-dev libxxf86vm-dev libembree-dev
# Project setup
cd SIBR_viewers
git checkout fossa_compatibility #如果是22.04就不需要加这行命令
cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release # add -G Ninja to build faster
cmake --build build -j24 --target install
用从官网下载的训练好的模型进行测试
./<SIBR install dir>/bin/SIBR_gaussianViewer_app -m <path to trained model>