首页
/ 从论文到代码:3D Gaussian Splatting完整复现指南

从论文到代码:3D Gaussian Splatting完整复现指南

2026-02-04 04:56:18作者:郁楠烈Hubert

引言:3D Gaussian Splatting技术概述

3D Gaussian Splatting(3D高斯溅射)是2023年提出的实时辐射场渲染技术,能够在保持高质量视觉效果的同时实现1080p分辨率下30fps以上的实时新视角合成。该方法通过将场景表示为3D高斯分布,结合各向异性协方差优化和快速可见性感知渲染算法,解决了传统辐射场方法训练成本高、渲染速度慢的问题。

项目的核心实现包含在train.py训练脚本和SIBR_viewers可视化工具中,通过PyTorch框架和CUDA加速实现高效优化与渲染。

环境准备与依赖项

硬件要求

  • CUDA兼容GPU(计算能力7.0+)
  • 建议24GB VRAM(用于论文级质量训练)
  • OpenGL 4.5兼容显卡(用于实时查看器)

软件要求

  • Conda包管理器
  • C++编译器(Windows推荐Visual Studio 2019)
  • CUDA SDK 11(推荐11.8版本,11.6存在已知问题)
  • CMake 3.24+

项目架构

快速开始:从克隆到运行

克隆代码库

git clone https://gitcode.com/gh_mirrors/ga/gaussian-splatting --recursive

创建并激活环境

# Windows系统额外需要
SET DISTUTILS_USE_SDK=1

# 创建conda环境
conda env create --file environment.yml
conda activate gaussian_splatting

如果Conda默认路径磁盘空间不足,可指定自定义路径:

conda config --add pkgs_dirs <Drive>/<pkg_path>
conda env create --file environment.yml --prefix <Drive>/<env_path>/gaussian_splatting
conda activate <Drive>/<env_path>/gaussian_splatting

数据准备与处理

数据集结构

COLMAP处理后的数据集应包含以下结构:

<数据集路径>
├── images
│   ├── image1.jpg
│   ├── image2.jpg
│   └── ...
└── sparse
    └── 0
        ├── cameras.bin
        ├── images.bin
        └── points3D.bin

官方数据集

可以使用论文作者提供的数据集进行测试:

  • Tanks&Temples和Deep Blending数据集:650MB
  • 预训练模型:14GB
  • 评估图像:7GB

模型训练流程

基本训练命令

python train.py -s <COLMAP或NeRF合成数据集路径>

关键参数说明

参数 描述 默认值
-s, --source_path 数据集路径 无(必填)
-m, --model_path 模型保存路径 output/<随机名称>
-r, --resolution 图像分辨率缩放因子 自动调整(超过1600像素宽时)
--eval 使用训练/测试集拆分进行评估 禁用
--white_background 使用白色背景而非黑色 禁用
--iterations 训练总迭代次数 30000

训练过程可视化

训练过程中可使用网络查看器实时监控:

# 在SIBR_viewers/build/install/bin目录下
./SIBR_remoteGaussian_app

默认情况下,查看器会连接本地6009端口的训练进程,可通过--ip--port参数指定远程连接。

查看器界面

模型评估与渲染

生成渲染结果

训练完成后,使用以下命令生成测试集渲染结果:

python render.py -m <训练好的模型路径>

计算评估指标

python metrics.py -m <模型路径>

该命令会计算L1损失、PSNR和SSIM等指标,结果保存在模型目录中。

完整评估脚本

项目提供了完整的评估脚本full_eval.py,可批量处理多个数据集:

python full_eval.py -m360 <mipnerf360数据集路径> -tat <Tanks&Temples数据集路径> -db <Deep Blending数据集路径>

实时查看器使用指南

查看器安装

Windows预编译版本

推荐使用官方提供的预编译Windows二进制文件,解压后即可使用。

从源码编译

# Ubuntu 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

# 编译
cd SIBR_viewers
cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release
cmake --build build -j24 --target install

运行实时查看器

# 在SIBR_viewers/build/install/bin目录下
./SIBR_gaussianViewer_app -m <训练好的模型路径>

查看器导航控制

  • FPS模式(默认):WASD键移动,IKJLUO键旋转
  • 轨迹球模式:可从浮动菜单选择
  • 快捷键
    • 空格键:暂停/继续渲染
    • C键:捕捉到最近相机视角
    • V键:切换视图模式

常见问题与解决方案

内存不足问题

  • 降低输入图像分辨率:使用-r 2(1/2分辨率)或-r 4(1/4分辨率)
  • 将图像数据放在CPU上:添加--data_device cpu参数
  • 减少高斯数量:调整--densify_grad_threshold参数

Windows编译问题

若出现cl.exe: File not found错误,需确保:

  1. 已安装Visual Studio(带C++开发组件)
  2. CUDA SDK安装在Visual Studio之后
  3. 设置环境变量:SET DISTUTILS_USE_SDK=1

查看器性能优化

  • 禁用垂直同步(VSync)
  • 在多GPU系统中确保OpenGL/Display GPU与CUDA GPU一致
  • 关闭Top View功能(在菜单中)

项目结构与核心模块

主要代码文件

核心模块

第三方依赖

结论与扩展

3D Gaussian Splatting通过创新的场景表示方法,在视觉质量和实时性能之间取得了优异的平衡。本指南详细介绍了从环境搭建、数据准备、模型训练到评估渲染的完整流程,帮助研究人员和开发者快速复现论文结果。

项目仍在持续更新中,最新特性可关注dev分支,包括深度正则化、抗锯齿和曝光补偿等功能。未来工作可探索在低显存设备上的优化、动态场景支持以及与VR/AR的集成应用。

引用格式

如果使用本项目进行研究,请引用原论文:

@Article{kerbl3Dgaussians,
      author       = {Kerbl, Bernhard and Kopanas, Georgios and Leimk{\"u}hler, Thomas and Drettakis, George},
      title        = {3D Gaussian Splatting for Real-Time Radiance Field Rendering},
      journal      = {ACM Transactions on Graphics},
      number       = {4},
      volume       = {42},
      month        = {July},
      year         = {2023},
      url          = {https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/}
}

致谢

本项目由INRIA、MPI和UCA联合开发,得到ERC Advanced grant FUNGRAPH No 788065资助。感谢Adobe的捐赠以及OPAL和GENCI–IDRIS提供的计算资源支持。

机构Logo 机构Logo 机构Logo

登录后查看全文
热门项目推荐
相关项目推荐