3d gaussian splatting(3dgs)的出现是三维重建和图形渲染的里程碑。这里主要是关于把3dgs代码跑起来,以及viewer相关问题的记录。
论文:
代码:https://github.com/graphdeco-inria/gaussian-splatting
参考链接:
https://blog.csdn.net/xiao_ku02/article/details/126598279
一、环境
1.1 VS2019或VS2022环境
安装VS,将VS编译器目录添加到环境变量
添加环境变量(需要根据VS版本设置):
PATH~
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64
添加win sdk目录(需要根据winsdk设置):
INCLUDE
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include
LIB
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x64
环境配置好的标志是在命令行中试用cl命令可以编译cpp源码文件
1.2 CUDA环境
这里cuda需要安装 dev环境,如果以前只安装了runtime,也需要重新补充dev环境,只有runtime是不够的
CUDA_PATH、PATH这两个环境变量都需要设置
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8
环境配置好的标志是在命令行中试用nvcc命令可以编译cu源码文件
1.3 Python/Conda环境
提前安装必要的package,如果不在意磁盘空间可以试用conda,这里我们试用pip把环境安装好
需要注意,除了常用的torch这些算法调用的模块,我们也需要安装cmake来帮助程序编译submodules,pip install cmake即可
1.4 其它(ffmpeg,colmap,magick,viewer,数据等,可选)
ffmpeg需要配置到环境变量
从代码readme最前会有一些数据和软件下载,
viewer可以配置到环境变量。
colmap:https://github.com/colmap/colmap/releases
二、编译安装
1.1 代码拉取
这里需要加 –recursive命令以拉取所有submodule
1.2 子模块编译
git clone xxx --recursive
cd gaussian_splatting
pip install submodules/simple-knn
pip install submodules/diff-gaussian-rasterization
这里pip install submodules/xxx 容易出现问题,这时我们需要进行检查,这里列举几类问题
- 关注setuptools版本,如果在import setuptools阶段出现错误,需要改变pip、setuptools版本
- 关注cmake、wheels是否安装
- 关注cl、nvcc (cpp和cuda)编译环境是否正常
- 出现link obj找不到文件,则可能是ninja编译出错,需要关闭ninja(在setup.py中修改use_ninja=False)
cmdclass={
'build_ext': BuildExtension
'build_ext': BuildExtension.with_options(use_ninja=False)
}
三、运行
3.1 运行例子
我们下载下来的数据
python train.py -s D:\dataset\tandt_db\tandt\train
训练结束后输出目录有如下文件
3.2 viewer查看
可以用remoteviewer,边训练边观察训练过程中3dgs更新过程,直接在训练开始前或训练开始后输入如下命令启动:
cd viewer/bin
.\SIBR_remoteGaussian_app.exe
训练结束之后,输入以下命令,用-m指定模型输出目录即可启动模型渲染
cd viewer/bin
.\SIBR_gaussianViewer_app.exe -m D:\code\gaussian-splatting\output\cf1520c9-1
3.3 运行自己的数据
首先处理一段视频,使用ffmpeg抽帧放到input目录
ffmpeg 抽帧命令可以参考:
ffmpeg -i E:\gaussian-splatting\data\cupk\cupk.mp4 -qscale:v 1 -qmin 1 -vf fps=3 %04d.jpg
然后COLMAP and ImageMagick,使用convert.py 脚本创建数据集
python convert.py -s data/cupk
然后开始train即可,也是用 -s 指定数据集目录即可
四、代码解读
Python部分应该都比较熟,对cuda不熟悉可以参考:https://blog.csdn.net/qaqwqaqwq/article/details/136886008