从论文到代码:3D Gaussian Splatting完整复现指南
引言: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错误,需确保:
- 已安装Visual Studio(带C++开发组件)
- CUDA SDK安装在Visual Studio之后
- 设置环境变量:
SET DISTUTILS_USE_SDK=1
查看器性能优化
- 禁用垂直同步(VSync)
- 在多GPU系统中确保OpenGL/Display GPU与CUDA GPU一致
- 关闭Top View功能(在菜单中)
项目结构与核心模块
主要代码文件
- train.py:模型训练主脚本
- render.py:渲染测试集图像
- metrics.py:计算评估指标
- full_eval.py:完整评估流程
核心模块
- gaussian_renderer:高斯渲染器实现
- scene:场景表示与相机处理
- utils:通用工具函数
- arguments:命令行参数解析
第三方依赖
- diff-gaussian-rasterization:微分高斯光栅化
- simple-knn:K近邻实现
- lpipsPyTorch:LPIPS损失计算
结论与扩展
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提供的计算资源支持。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00




