NerFStudio 3DGS 实现修改指南(涉及 gsplat 库)
环境准备
首先确保已经安装并配置好 Nerfstudio 环境,且已经激活了相应的 conda 环境:
conda activate nerfstudio
验证环境是否正常工作,确保能够成功运行 colmap 以及 nerfstudio 实现的 3DGS:
ns-train splatfacto --data "colmap结果的数据路径"
实现原理说明
NerFStudio 中的 3DGS 实现位置
官方 3DGS splatfacto 实现位于:
nerfstudio/nerfstudio/models/splatfacto.py
通过分析源代码可以发现,核心实现逻辑并不直接在此 Python 文件中,而是通过导入 gsplat 库实现:
from gsplat.strategy import DefaultStrategy, MCMCStrategy
try:
from gsplat.rendering import rasterization
except ImportError:
print("Please install gsplat>=1.0.0")
故本文需要考虑本地建立gsplat源代码库进行(需要说明的是我的gsplate库很老了,包括nerfstudio库也是如此,可以提前说明的是二者版本存在对应关系,如果太旧的gsplat是会在nerfstudio启动就报错的,去git看看对应更新的时间或者默认安装一个环境,配一个nerfstudio库可以看到对应的,当然去找git上对应版本的包要求文件也是很简单的,如果读者这些都看得懂,后面应该没必要看),一旦源代码库建立完毕就能轻松修改部分3dgs的策略,如此可以回避一些繁琐的去nerfstudio重写方法之类的问题。如果只是修改一些策略,如复制高斯啥的,直接改就可以。
gsplat 库源码获取与修改
1. 检查当前 gsplat 版本
首先查看当前 nerfstudio 环境中安装的 gsplat 版本:
pip show gsplat
2. 克隆对应版本源码
本文以 v0.1.11 版本为例,在新文件夹中克隆对应版本的 gsplat 源码:
git clone https://github.com/nerfstudio-project/gsplat.git
cd gsplat
git checkout v0.1.11
需要补充说明的是新版本的gsplat并不适配部分我自己版本的NeRFstudio,故需要检查安装版本的包gsplat版本。
3. 补充依赖库
gsplat 需要 glm 库作为第三方依赖,需要手动添加:
cd gsplat/cuda/csrc/third_party
git clone https://github.com/g-truc/glm.git
4. 编译安装
返回 gsplat 根目录,执行编译安装:
cd ../../.. # 回到 gsplat 根目录
pip install -e .
注意:编译过程可能需要 1-5 分钟,具体时间取决于服务器性能。
5. 验证安装
创建简单的验证脚本检查 gsplat 版本:
import gsplat
print(gsplat.__version__) # 应该显示 0.1.11 或对应版本号
测试修改效果
返回项目初始目录,测试训练是否正常:
ns-train splatfacto --data "colmap结果的数据路径"
重要注意事项
- 修改 Python 文件:如果只修改了
.py文件,无需重新编译 - 修改 C++/CUDA 代码:如果修改了 C++ 或 CUDA 相关文件,必须重新执行
pip install -e .进行编译
1810






