3D高斯溅射
复现 github 项目时踩了很多的坑,大概耗时 2 天时间完成了工具的运行。
本次试验使用了 76 张照片使用 16GB 的 4060TI 训练大概需要 1 个小时左右
一、准备工作
1、基本环境
- FFMpeg ImageMagick – Mastering Digital Image Alchemy
- ImagesMagic ImageMagick – Mastering Digital Image Alchemy
- Colmap GitHub - colmap/colmap: COLMAP - Structure-from-Motion and Multi-View Stereo
VS2019 及 msvcVC++ 2019 环境 Thank You for Downloading Visual Studio Community Edition
这个要注意截止最新的 github 版本仍然需要使用 vs2019 附加的 msvc,如果是 vs2022 附加的同版本环境编译会报错
- CondaDownload Now | Anaconda
- CUDA 11.8 CUDA Toolkit 11.8 Downloads | NVIDIA Developer
2、克隆 3D Gaussian Splatting 库和用到的Module的库
根据官方库的文档,需要使用 --recursive
命令克隆引用的其他库,实际使用下来发现实际引用的版本不正确,需要手工下载正确的版本
官方库地址:
引用库地址:
diff-gaussian-rasterization 需要克隆此版本:
引用的 GLM 库版本(用最新版 无法安装编译):
GitHub - g-truc/glm at 5c46b9c07008ae65cb81ab79cd677ecc1934b903
fused-ssim 这个库直接使用官方的版本即可
GitHub - rahul-goel/fused-ssim at 1272e21a282342e89537159e4bad508b19b34157
simple-knn 这个库官方 github 引用的版本不存在了,使用这个版本可以完成训练
将官方库和需要引用的模块库分别下载后,将引用的库复制到官方库的 submodules
文件夹下,然后将 glm 库复制到 diff-gaussian-rasterization 的 third_party
目录下
至此所需要的所有环境都下载完成
二、环境的创建
1、各个工具的安装
conda 直接安装最新版本即可
Anaconda 安装后需要注意要添加环境变量,如果不乐意终端一直显示一个(base)在每行开头的话可以选择使用 Anaconda Compos 的命令行进行
其中 Colmap、FFMpeg 直接是编译好的文件解压到任意位置将 bin 目录添加到环境变量
通过
colmap
及ffmpeg
命令验证环境变量是否正常ImageMagic 是一个安装程序,安装后执行:
magick logo: logo.gif magick identify logo.gif
正常回显则安装成功
CUDA 按照官方指引安装 11.8 版本(官方有说明在 12.X 环境下也可以运行),如果已经安装了高版本无法运行的话可以尝试并行安装 11.8 版本修改环境变量为 11.8
通过
nvcc -V
查看 conda 版本VS2019 及 MSVC 的安装(这一步很重要)
安装好 VS2019(安装 VS2019 生产工具亦可,主要是需要 2019 环境下的 MSVC2019 版本)后,在 Visual Studio Installer 中点击修改
然后安装 MSVC V142 版本
安装好后将路劲添加到环境变量 C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64
在 cmd 执行 cl
命令有回显表示环境正常
至此环境部分配置完成
2、创建 Conda 虚拟环境
# Win平台需要执行这行命令
SET DISTUTILS_USE_SDK=1
# 根据配置文件创建虚拟环境
conda env create --file environment.yml
# 执行完成后激活环境
conda activate gaussian_splatting
如果在创建环境步骤没有任何报错的情况下可以执行 第三步
三、训练和推理
1、训练图片集
准备图片集,将图片集放到示意的位置
图片集需要连续,最好是能够覆盖扫描物体全部的连续命名的照片
数据结构为(win11 下):
|---Gaussian Splatting
|---data |---input |---<image 0> |---<image 1> |---...
图像栅格化处理
python convert.py -s <location> [--resize] #If not resizing, ImageMagick is not needed
其中
为我们图片数据的位置,即 data
文件夹--resize 是调整图片大小
即运行
python convert.py -s data
即可其他参数可自行探索
训练
python train.py -s <path to COLMAP or NeRF Synthetic dataset>
<path to COLMAP or NeRF Synthetic dataset>
为栅格化后的图片地址,我们仍然填data
执行
python train.py -s data
即可开始训练
训练完成后会产生一个output
文件夹,如果训练时没有指定output的模型名称则为随机的字符在output
目录
2、通过官方提供的 WindowsViewer 推理和查看训练好的模型
根据官方文档,有一个针对win平台的编译好的二进制版本 viewers ⬅️点这里可以下载
将下载好的viewer解压后,进入bin
目录在此打开终端,执行.\SIBR_gaussianViewer_app.exe -m D:\3D\gaussian-splatting-main\output\2a4756d3-7
后边的地址为训练好的模型地址
然后就可以看到训练好的模型了!!
结尾
坑:
个人跑下来主要的坑有2个
Visual Studio版本的问题
- 必须使用VS2019版本及对应的MVCC环境,用VS2022的与VS2019相同版本MVCC环境同样会报错
- 安装好后报错cl.exe未找到等问题 需要添加环境变量
submodules
文件夹下的三个module的问题- 个人部署时,其中simple-knn已经不存在了,从github上找到该库完成的build
- diff-gaussian-rasterization库与其使用的GLM库的版本问题
还有几个比较容易解决的问题是
- CV2不存在,此问题可以尝试安装 opencv库解决
引用
高斯溅射流程_哔哩哔哩_bilibili 这位UP讲的非常详细,但还是踩了不少坑
记录:3DGS中submodules/diff-gaussian-rasterization安装和训练报错问题-CSDN博客