为 Ubuntu 24 与新 CUDA SDK 版本构建高斯溅射训练器

https://github.com/graphdeco-inria/gaussian-splatting
前言
简介
3D 高斯溅射是时下最新的一项计算机视觉/计算机图形学/深度学习技术,它是“神经渲染”领域的最新成果。它引入了三项关键技术,使得在保证画质的同时,也能实现实用的训练时间,并能在 1080p 分辨率下达到实时渲染。
基础理论
技术核心
NeRF
- 传统 NeRF 把场景表示为一个连续函数 ,输入 3D 空间点 和视角方向 。
- 但 NeRF 渲染需要体积积分,训练和推理都很慢。
SfM
- 并没有直接在稠密体素上优化,而是先通过 COLMAP/SfM 得到稀疏点云。
- 每个点都变成一个“高斯球体”来近似场景。
Gaussian Splatting
- 每个场景点被建模为一个 3D 高斯椭球,它们带有协方差矩阵 。
- 渲染时并未逐点绘制,而是把这些椭球投射到 2D 图像上,得到平滑的 Splat。
Differentiable Rasterization
- 渲染可微,使得通过反向传播来优化位置、形状、颜色、透明度等参数。
- 用的是类似 OpenGL 的快速 Rasterizer。
基础数学模型
- 单个高斯定义
一个高斯分布中心在 ,协方差矩阵 :
这里:
- :高斯的中心(3D 点的位置)
- :协方差矩阵,控制形状(球形/椭球)
:某点在该高斯下的“贡献”
投影到 2D 图像平面
通过相机投影矩阵 ,将 和 映射到图像平面:
其中 是投影的雅可比矩阵。
这使得 3D 高斯在屏幕上变成一个 2D 高斯斑点(一个模糊的小椭圆)。
- 颜色与透明度合成
每个高斯还带颜色 和透明度 。
图像上的最终像素值是多个高斯 splat 的加权混合:
其中 表示前面高斯的透射率(类似体积渲染公式)。
- 优化目标
与真实照片对比,最小化差异(MSE、SSIM、LPIPS 等损失)。
通过反向传播,更新 等参数,使得渲染结果与真实图像一致。
构建步骤
设备与系统准备
关于 CUDA 版本
- 使用 CUDA 版本 == 12.8
Ubuntu 24 系统默认的 CUDA 版本是 12.9,最新版本是 13。
然而,使用更新版本的 CUDA Toolkit 和 PyTorch 可能会引发各种问题,例如需要更高的 Python 版本,而高斯溅射并不支持。
安装
开始之前,请先查看 Environment.yml,因为它包含了使用所需的所有模块。
如果您使用的是位于中国境内的服务器或计算机,请提前配置网络代理或设置下载镜像,以避免下载失败。
在执行命令之前,请确保您的系统已安装 Git。
第一步:Git 克隆
git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
注意:必须包含 --recursive,因为项目包含子模块。
第二步:创建 Conda 环境
conda create -n gaussian_splatting python=3.9 ipython
conda activate gaussian_splatting
第三步:安装 CUDA Toolkit
请检查您的 CUDA Toolkit 版本是否为 12.8。如果是,请直接执行“第三步”中的最后一条命令。
nvcc --version
注意:nvidia-smi 命令显示的 CUDA 版本指的是驱动版本,而不是 CUDA Toolkit 版本。
如果不是,您需要卸载当前版本并重新安装。本指南将跳过卸载步骤,仅专注于 12.8 版本的安装过程。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-8
conda install -c nvidia cuda-toolkit=12.4
Conda 将安装 CUDA Toolkit 12.4,它仍然与 CUDA 12.8 指令向后兼容。
第四步:安装 C++ 编译环境
sudo apt-get update
sudo apt install build-essential ninja-build
第五步:安装其他依赖
conda install -c conda-forge plyfile
conda install tqdm
以及重要步骤:
pip install torch==2.7.1 torchvision==0.22.1 torchaudio==2.7.1 --index-url https://download.pytorch.org/whl/cu128
如果您的 Python 版本不是 3.9,安装将中止。
pip install opencv-python joblib
最后,确保 numpy==1.22。如果不是,请使用 pip 卸载当前的 numpy,并重新安装 1.22 版本。
第六步:修改模块
首先,导航并进入您的项目目录。例如,我的目录是 ~/Code/gaussian-splatting。
cd ~/Code/gaussian-splatting
并编辑文件以包含 float.h:#include <float.h>
vim submodules/simple-knn/simple-knn.cu
第七步:编译模块
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn
pip install submodules/fused-ssim
最后一步
保存数据集后,您可以执行命令开始训练。
python train.py -s ./xxx