gsplat 上手笔记:三条安装路径、PyTorch 2.7+ 门槛与 HiGS 推理渲染
项目信息
gsplat 是用 CUDA 加速的高斯光栅化库,带 Python 绑定,思路来自 SIGGRAPH 的 3D Gaussian Splatting for Real-Time Rendering of Radiance Fields,在速度、显存和功能集上做了扩展。
- 官网:
- 仓库:
- 文档:
- Wheel 索引:
- 3DGUT 集成指南:docs/3dgut.md
- HiGS 项目页:
- NVIDIA 3DGUT 页面:
- 白皮书:
当前 main(v1.5.3 之后,未发到 PyPI)的主要变化包括:球谐算子拆分与反向内核优化、稀疏 3DGS 光栅化(active-tile 渲染,支持前向/反向,以及每像素 Gaussian ID、计数、top-contributor 查询)、dense 路径的多 GPU 分布式渲染、PPISP 同时支持 default 与 MCMC 两种密化策略、3DGUT 正交相机、融合的 SE(3) 位姿组合与轨迹插值、更可配置的 MCMC 扰动/重定位、以及 G-SHARP 动态手术场景重建。构建侧要求 PyTorch 2.7+,改进了 CUDA 12.8 与 13.2 的兼容性。
安装:三条路径怎么选
先装 PyTorch,再装 gsplat。
PyPI(JIT):最省事,CUDA 代码在首次运行时编译。
pip install gsplat
源码:CUDA 代码在安装时编译,适合跟进 main 上的新算子(稀疏光栅化、Gaussian ID、HiGS 等目前都还没进 PyPI)。
pip install git+https://github.com/nerfstudio-project/gsplat.git
预编译 wheel:Linux 与 Windows 都有,但只覆盖部分 python-torch-CUDA 组合,且需要手动装依赖。例如 PyTorch 2.0 + CUDA 11.8:
pip install ninja numpy jaxtyping rich
pip install gsplat --index-url https://docs.gsplat.studio/whl/pt20cu118
选择上:临时试一下用 PyPI;需要新特性、要改内核或用 MCMC/3DGUT 的新参数,走源码;环境固定、批量部署、不想在现场编译,用 wheel。Windows 上从源码构建按 docs/INSTALL_WIN.md 操作。
版本门槛与构建坑
PyTorch 2.7+ 是硬门槛。CUDA 12.8 与 13.2 的构建兼容性在 v1.6.0 里做过改进,CUDA 13 与 NumPy 2 也在支持范围内。JIT 路径最容易踩的坑是首次运行时长和编译缓存:环境里的 nvcc 版本必须和目标 CUDA 匹配,否则报错会出现在第一次调用算子时,而不是 pip install 阶段。wheel 路径则要自己补齐 ninja numpy jaxtyping rich 这些依赖,装完发现 import 失败基本都是这个原因。包布局已简化为全部位于 gsplat 命名空间下。
训练与评测
仓库自带独立脚本,复现官方 Gaussian Splatting,在 PSNR、SSIM、LPIPS 和收敛后的高斯数量上性能一致。借助 CUDA 实现,训练最多省 4x 显存,完成时间最多少 15%。
python -m pip install -e .
cd examples
python -m pip install -r requirements.txt
# download mipnerf_360 benchmark data
python datasets/download_dataset.py
# run batch evaluation
bash benchmarks/basic.sh
examples 下还有几个上手入口:在 COLMAP 采集上训练 3DGS、用 3D 高斯拟合 2D 图像、大场景实时渲染、以及在 NCore v4 采集上训练。从 2025 年 5 月起支持任意 batching(跨多场景、多视角)。
密化策略:default 与 MCMC
两条密化路线并存。PPISP 后处理现在对 default 和 MCMC 都生效,不用再为了补偿训练视角而切换策略。
MCMC 侧近期改动集中在操作性上:扰动(perturbation)和重定位(relocation)变得更可配置;原生的 CUDA MCMC perturb(inject_noise)专门加速噪声注入这一步;NVIDIA 3DGUT 的 MCMC 路径在 A100 上约有 30% 的性能提升。密化策略相关的算子在持续优化,切换策略前建议先确认所用版本是否包含上述改动。
HiGS 推理渲染
HiGS(Hierarchically Tiled Gaussian Splatting)是一条仅推理的渲染路径,放在独立的 experimental 包里,面向不需要训练梯度的预训练高斯场景,做低延迟渲染。它把场景数据打包成紧凑的 fp16 布局,用 macro-tile 融合光栅化做单相机快速渲染。
from gsplat.experimental import render_scene, GaussianInferenceScene
simple_viewer.py 通过 --use_gaussian_render_inference_scene 开关启用这条路径。与默认 rasterization() 的对比基准在 examples/benchmarks/gaussian_render_inference_scene/ 下,从仓库根目录运行 gaussian_render_inference_scene_bench.py。
LiDAR 与传感器模型
传感器库现已覆盖 pinhole、FTheta、fisheye 和 LiDAR。LiDAR 光栅化支持旋转式激光雷达相机模型、eval3d 渲染、depth / hit-distance 模式及配套工具,SciPy 为可选依赖:
pip install "gsplat[lidar]"
3DGUT 侧扩展了外部畸变(如挡风玻璃式安装)、可选的带梯度逐射线输入、可选的射线法线输出,并重构了渲染模式与额外信号;相机模型与畸变除了 Python callable,也能通过 PyTorch 自定义算子和自定义类调用,便于 TorchScript 部署。AccuTile 在 3DGS 路径上加入了保守的椭圆 tile-Gaussian 相交测试,在光栅化前收紧工作调度。
上手建议
先用 pip install gsplat 跑通 examples 里的单场景流程,确认 CUDA 编译链路正常;再对照评测脚本 benchmarks/basic.sh 校验 PSNR / SSIM / LPIPS 与高斯收敛数量。需要稀疏光栅化、Gaussian ID、多 GPU dense 渲染或 HiGS 推理时,从源码安装以拿到 main 上的实现,并留意 PyTorch 2.7+ 与 CUDA 12.8 / 13.2 的版本匹配。生产环境冻结依赖时优先用 wheel 索引,把编译环节留在构建阶段解决。项目由 UC Berkeley、NVIDIA、上海科技大学、Amazon、Meta、IIIT、LumaAI、SpectacularAI、Aalto University、CMU 的贡献者共同开发。
@article{ye2025gsplat,
title={gsplat: An open-source library for Gaussian splatting},
author={Ye, Vickie and Li, Ruilong and Kerr, Justin and Turkulainen, Matias and Yi, Brent and Pan, Zhuoyang and Seiskari, Otto and Ye, Jianbo and Hu, Jeffrey and Tancik, Matthew and Angjoo Kanazawa},
journal={Journal of Machine Learning Research},
volume={26},
number={34},
pages={1--17},
year={2025}
}