服务器上复现3D Gaussian Splatting
由于我的电脑是集成显卡,只能用云服务器,是在VS code进行编译
一、环境配置与准备
1.下载Gaussian Splatting的源码
新建一个3DGS文件夹,把克隆的文件都可以放在这个文件夹里面
git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
2.安装CUDA
先用以下代码检查你服务器cuda版本
nvidia-smi

我这里的CUDA版本是13.0,官方使用的是11.8版本的,所以需要确保你的CUDA版本高于11.8。我用的是服务器,一般是没下载CUDA的,也可以用下面的代码检查是否安装了CUDA
nvcc --version
我这里下载的是11.8版本
下载
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
安装
sh cuda_11.8.0_520.61.05_linux.run --silent --toolkit --toolkitpath=/home/featurize/work/cuda-11.8
3.使用conda安装依赖库,并创建虚拟环境
conda env create -n 自定义名称 -f environment.yml
虚拟环境可以自己定义名字,environment.yml是从第一步从GitHub克隆的,里面有要安装环境所对应的版本。
等待安装完毕后,如果想激活创建的conda虚拟环境:
conda activate 虚拟环境名字
退出虚拟环境
conda deactivate
4.安装FFmpeg
因为是在服务器安装,FFmpeg相当于就是一个软件,可以按照在系统级别,也可以安装在conda里面,安装在系统级别的话,像我这样租云服务器,退出服务器,这样的软件就会被清空了。下面演示在系统级别安装
// 删除所有安装的 ffmpeg
sudo apt-get remove ffmpeg
sudo apt-get purge ffmpeg
// 删除 Anaconda ffmpeg 模块
conda remove ffmpeg
重新安装
sudo apt-get install ffmpeg
5.安装colmap
colmap和FFmpeg是一样的,相当于是个软件
# 在 3DGS_venv 环境中
conda install colmap -c conda-forge
6.安装viewers
这个不需要在终端上运行了,可以在本地电脑上下载
Windows安装包下载地址:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/binaries/viewers.zip
二、开始训练
1.导入视频数据
首先进入3DGS/Gaussian Splatting源码的路径下,然后创建一个data文件夹,并把准备的MP4格式的视频放到data文件夹下,我这里视频的名字为input.MP4。

2.图片分帧
使用FFmpeg截取视频帧为图片,在data目录下创建input目录,使用下面的代码可以截取视频帧并把图片放到input目录下:
ffmpeg -i gaussian-splatting/data/input.mp4 -vf "setpts=0.2*PTS" input/input_%4d.jpg
这里需要强调以下,运行这样的代码时候,一定要看清楚现在你处于什么级别的位置,文件级别位置不对,运行会报错。
3.data结果展示
进入到源码的目录下,使用源码中的 convert.py 文件生成点云,其中就是调用colmap生成点云,所以需要先安装好colmap,运行后的data文件夹中目录结构如下:

4.train训练
python gaussian-splatting/train.py -s gaussian-splatting/data -m gaussian-splatting/data/output
我一开始运行着代码时,遇到了下面的一些情况
问题1
ModuleNotFoundError: No module named 'diff_gaussian_rasterization'
这是因为submodules文件下面的diff_gaussian_rasterization使用C++编译的,不能被python识别,所以在guassian_renderer文件下面_init_.py里面的from diff_gaussian_rasterization import GaussianRasterizationSettings, GaussianRasterizer给识别
需要进行下面操作,从而在 Python 里正常导入。
# 进入 diff-gaussian-rasterization 目录
cd /home/featurize/work/3DGS/gaussian-splatting/submodules/diff-gaussian-rasterization
# 在虚拟环境下安装
pip install -e .
类似的,还会遇到submodules文件下的其他模块不能用,用上面相同的方式即可。
问题2
可能还会遇到Python 版本与 CUDA 版本不兼容,因为官网上下载的3.7,这里需要把python升级一下就好了
conda install python=3.9
问题3
可能还会缺少cv,缺什么就安装什么
conda install opencv -c conda-forge
以上问题都是我遇到的,解决好之后,代码就可以正常跑了,下面是训练过程的图片

5.最终结果展示
这里是在Windows下使用的官方提供的Viewer工具,下载链接放在上面了,下载完后只要解压就行了。解压后是一个名字是viewers的文件夹,进入这个文件夹,然后把训练结果的output文件夹放在下面,在该文件夹下打开cmd,使用下面的命令运行:
.inSIBR_gaussianViewer_app -m output
集成显卡的电脑会运行不出来,电脑需要有GPU才可以,不过独显电脑可能会出现下面情况,找不到找不到cudart64_12.ddl文件,这是电脑没有安装cuda,可以采用下面方式,比较快速。
解决方法:下载cudart64_12.dll,将其解压至viewersin中即可
下载地址:CUDART64_12.DLL : Free .DLL Download

我使用的是朋友配有GPU的电脑进行展示。
三、计算评估指标
需要注意的是输出文件要和train训练时输出的文件路径保持一致
python /home/featurize/work/3DGS/gaussian-splatting/render.py -m /home/featurize/work/3DGS/gaussian-splatting/data/output
下面是四个文件的路径格式
# 1. 训练模型
python train.py -s /path/to/data -m /path/to/output
# 2. 渲染测试图像
python render.py -m /path/to/output
# 3. 计算指标
python metrics.py -m /path/to/output
# 4. 完整评估(包含2和3)
python full_eval.py -m /path/to/output
四、完整评估流程
full_eval.py 是用于标准数据集基准测试的脚本,需要指定多个数据集的路径。所以我用的是metrics.py,因为我只有一个数据集的路径
python full_eval.py -m /home/featurize/work/3DGS/gaussian-splatting/data/output
当然下面是输出的结果

由于只有一个数据集,无法作为基准,所以结果值都是很大的。









