1. 环境准备:Ubuntu20.04基础配置
在开始3D Gaussian Splatting的部署之前,我们需要确保系统环境满足基本要求。Ubuntu20.04作为长期支持版本,其稳定性和兼容性都非常适合这类图形计算任务。我建议先执行系统更新,这能避免很多后期可能遇到的依赖冲突问题:
sudo apt update && sudo apt upgrade -y接下来是显卡驱动的安装。如果你使用的是NVIDIA显卡,务必确认驱动版本与CUDA的兼容性。我在实际项目中遇到过驱动版本不匹配导致CUDA无法正常工作的情况,可以通过以下命令检查当前驱动版本:
nvidia-smi重要提示:建议通过系统自带的"软件和更新"工具安装推荐版本的驱动,这种方式最不容易出错。手动安装驱动虽然可行,但容易引发图形界面崩溃等问题,特别是对Linux新手来说风险较大。
2. CUDA与编译工具链安装
2.1 CUDA 11.8安装详解
官方明确建议使用CUDA 11.8版本,低于此版本可能会遇到兼容性问题。安装过程需要注意几个关键点:
- 下载.run格式的本地安装包,网络安装方式经常因为网络问题中断
- 安装时记得取消勾选驱动安装选项(除非你确定需要更新驱动)
- 安装完成后必须正确配置环境变量
具体安装命令如下:
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run sudo sh cuda_11.8.0_520.61.05_linux.run环境变量配置是很多人容易忽略的一步。我习惯在~/.bashrc中添加以下内容:
export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}2.2 编译工具升级
3DGS对gcc和cmake版本有较高要求。Ubuntu20.04默认的gcc-9可以满足需求,但cmake需要手动升级到3.24以上版本。这里分享一个实用技巧:使用预编译的cmake包可以省去编译时间:
wget https://cmake.org/files/v3.25/cmake-3.25.0-linux-x86_64.tar.gz tar -zxvf cmake-3.25.0-linux-x86_64.tar.gz sudo mv cmake-3.25.0-linux-x86_64 /opt/cmake-3.25.0 sudo ln -sf /opt/cmake-3.25.0/bin/* /usr/bin/3. 3DGS源码获取与环境配置
3.1 源码克隆注意事项
官方仓库包含多个子模块,克隆时必须加上--recursive参数,否则后续编译会失败:
git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive我在第一次尝试时漏掉了这个参数,结果在编译可视化工具时各种报错,不得不重新克隆仓库。这个小细节可以节省你至少半小时的排错时间。
3.2 Conda环境创建
项目提供的environment.yml文件已经包含了所有必要的Python依赖。创建环境时建议先检查conda的版本,过旧的conda可能无法正确解析环境文件:
conda env create --file environment.yml conda activate gaussian_splatting如果遇到依赖冲突,可以尝试先创建一个基础Python环境,再手动安装requirements.txt中的包。这种方法虽然麻烦些,但能更灵活地解决版本冲突问题。
4. 关键依赖项安装指南
4.1 Eigen3的特殊处理
Eigen库的版本管理是个头疼的问题。3DGS需要较新的Eigen3.4.0,但系统中其他组件可能依赖旧版本。我的经验是:先尝试不升级Eigen,如果编译报错再单独安装新版本到自定义路径:
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip unzip eigen-3.4.0 cd eigen-3.4.0 && mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/eigen-3.4.0 make && sudo make install这样安装不会覆盖系统默认的Eigen,需要时可以通过CMake参数指定Eigen路径。
4.2 OpenCV编译优化
OpenCV编译是个耗时的工作,合理设置参数可以显著加快速度:
cmake -D WITH_CUDA=ON \ -D WITH_CUDNN=ON \ -D OPENCV_DNN_CUDA=ON \ -D CUDA_ARCH_BIN=8.6 \ -D WITH_TBB=ON \ -D WITH_EIGEN=ON \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \ -D OPENCV_ENABLE_NONFREE=ON ..关键参数说明:
- CUDA_ARCH_BIN需要根据你的显卡计算能力设置
- 使用-j参数并行编译可以大幅缩短时间(如make -j$(nproc))
- 安装完成后务必配置pkg-config路径
5. 模型训练与可视化实战
5.1 数据集准备与训练技巧
官方提供的示例数据集已经过预处理,可以直接用于训练。建议先从小数据集开始验证环境是否正确配置:
python train.py -s data/truck/ -m data/truck/output训练过程中有几个关键指标需要关注:
- PSNR值:反映重建质量,通常随着训练轮数增加而提升
- 迭代时间:正常情况下应该在毫秒级别
- 显存占用:如果爆显存需要调小batch size
5.2 可视化工具部署
SIBR_viewers的编译需要注意Ubuntu版本差异。对于20.04用户,必须切换分支:
cd SIBR_viewers git checkout fossa_compatibility编译时遇到问题大多是依赖缺失导致的。建议先安装以下常用依赖:
sudo apt install -y libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev编译成功后,可以通过以下命令启动可视化界面:
./SIBR_gaussianViewer_app -m /path/to/output6. 常见问题排查手册
在实际部署过程中,我遇到过各种奇怪的问题。这里分享几个典型问题的解决方案:
问题1:CUDA error: no kernel image is available for execution
- 原因:CUDA架构不匹配
- 解决:检查CUDA_ARCH_BIN参数是否与显卡计算能力匹配
问题2:Eigen版本冲突
- 现象:编译时报错提示Eigen版本不兼容
- 解决:通过设置CMAKE_PREFIX_PATH指定正确的Eigen路径
问题3:可视化界面闪退
- 可能原因:OpenGL驱动问题
- 排查步骤:
- 检查glxinfo | grep OpenGL输出是否正常
- 尝试使用MESA_GL_VERSION_OVERRIDE环境变量
问题4:训练过程中显存不足
- 解决方案:
- 减小batch size
- 使用--resolution参数降低输入分辨率
- 尝试--num_iterations减少迭代次数
7. 性能优化建议
经过多次实践,我总结出几个提升3DGS运行效率的技巧:
- 编译器优化:在CMake配置中添加-DCMAKE_BUILD_TYPE=Release和适当的-march=native参数
- 并行编译:使用make -j$(nproc)充分利用多核CPU
- 数据预处理:将数据集放在SSD上可以显著加快加载速度
- CUDA配置:适当调整CUDA的block和grid大小可以获得更好的并行效果
- 内存管理:定期监控nvidia-smi的输出,及时发现内存泄漏问题
对于需要长期训练的场景,建议使用tmux或screen保持会话,避免网络中断导致训练失败。另外,训练过程中定期保存checkpoint也是个好习惯,可以防止意外中断导致前功尽弃。