一、代码复现流程

以下部分将详细介绍3D Gaussian splatting的代码复现流程(在ubuntu18.04上训练模型,在windows10上使用SIBR_viewers查看)

1、首先在GitHub - graphdeco-inria/gaussian-splatting: Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering"上下载3D Gaussian Spaltting代码。

其中两个子模块分别位于GitHub - graphdeco-inria/diff-gaussian-rasterization at 59f5f77e3ddbac3ed9db93ec2cfe99ed6c5d121dKERBL Bernhard / simple-knn · GitLab,第一个子模块是一个使用CUDA的微分高斯光栅化模块,第二个模块是一个knn模块。

2、3D Gaussian Splatting要求使用11版本的CUDA,经过测试,12版本的CUDA在运行程序时会出现版本问题的报错,因此我们下载了CUDA11.6,并在ubuntu18.04上重新配置了CUDA环境,即在.bashrc文件中将CUDA环境配置的代码改为以下代码:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.6/lib64
export PATH=$PATH:/usr/local/cuda-11.6/bin:/usr/bin
export CUDA_HOME=/usr/local/cuda-11.6

3、接下来在clone下来的gaussian splatting的文件夹中打开终端,使用conda env create --file environment.yml命令创建虚拟环境gaussian_splatting,接下来直接使用命令conda activate gaussian_splatting激活环境。注意环境要求torch版本为1.12.1+cu116、torchvision 版本为 0.13.1+cu116、torchaudio版本要求为0.12.1+cu116,请使用conda list指令和pip list指令分别查看conda与pip内是否存在这三个制定版本的库,如果不存在,可以到pytorch官网上下载这三个库。

接下来使用sudo apt-get install g++指令安装g++编译器,之后使用pip install submodules\diff-gaussian-rasterization与pip install submodules\simple-knn这两个指令分别编译安装diff-gaussian-rasterization与simple-knn这两个库到pip中。

4、在终端中输入指令python train.py -s <path to COLMAP or NeRF Synthetic dataset>开始执行训练程序,程序会保存训练7000轮与30000轮时的模型到output文件夹中。这里我们使用3D Gaussian Splatting官网3D Gaussian Splatting for Real-Time Radiance Field Rendering上提供的Scene文件中的数据集进行训练。

5、接下来将output中生成的模型文件迁移到windows10系统下使用SIBR_viewers进行可视化查看,在windows10系统下下载README文件中提供的SIBR_viewers,然后在终端中输入

./<SIBR install dir>/bin/SIBR_gaussianViewer_app -m <path to trained model>

接下来即可视化查看模型。

二:论文及代码结构解读

3D Gaussian Splatting展示了一种新的3维重建方法。通过使用多张图片与COLMAP采用特征点匹配法与BA优化预先得到的各个图片的观察矩阵与稀疏点云作为初始训练数据,将每一个点初始化为一个使用3维高斯分布描述的3D高斯点云,结合相机外参与spaltting及快速可微光栅化方法进行渲染得到图像,将渲染后的图像与原始图像计算光度误差与结构误差,通过梯度反向传播方法优化3D高斯点云参数与3D高斯点云数量。下面是论文中展现的流程图:

下面是论文代码的一个简单流程图:

PS.补充一张详细的代码结构图

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐