关于NerFStudio修改其3dgs实现问题(涉及gsplat)

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 . 进行编译
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值