0%

3D Guassian Splatting

https://github.com/graphdeco-inria/gaussian-splatting 复现

环境构建

首先clone仓库https://github.com/graphdeco-inria/gaussian-splatting

理论上应该按照源码提供的environment.yml文件创建环境,即:

1
conda env create --file environment.yml

然而,实验室服务器CUDA版本为12.2,environment.yml中指定的python和pytorch版本过低,因此,选择自己配置环境python3.10, cuda12.1对应的pytorch(适用于12.2):

1
2
3
4
5
6
7
8
9
10
conda create -n gaussian_splatting python=3.10
conda activate gaussian_splatting
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

pip install submodules\diff-gaussian-rasterization
pip install submodules\simple-knn
pip install plyfile
pip install tqdm
pip install opencv-python
pip install joblib

数据前期处理程序

都是在Windows端下载。

下载ffmep www.gyan.dev/ffmpeg/builds/

将文件夹重命名为ffmep,将bin文件路径加入系统变量

下载COLMAP

https://github.com/colmap/colmap/releases

将文件夹重命名为COLMAP,将bin文件路径加入系统变量

下载ImageMagick

训练流程

  • Step1:录制视频,使用ffmep进行抽帧
1
ffmpeg -i input.mp4 -vf "setpts=0.2*PTS" input/input_%4d.jpg

-i input.mp4:指定输入视频文件为 input.mp4。
-vf “setpts=0.2 PTS”:这是一个视频过滤器选项,其中 setpts 指令用来设置帧的时间戳(Presentation TimeStamps)。这里的表达式 0.2PTS 表示将当前帧的时间戳乘以0.2,这意味着抽取出来的帧之间的间隔被拉长了5倍,所以生成的图像序列将以视频原始速度的五分之一进行播放。
input/input_%4d.jpg:这是输出文件格式及路径,其中 %4d 是一个格式化占位符,它会被自增的整数所替换,确保每个输出文件名是唯一的。例如,输出的第一帧将会被保存为 input/input_0001.jpg,第二帧为 input/input_0002.jpg,依此类推。同时,输出目录被指定为 input/ 目录下。

  • Step2:使用3D Guassian Splatting仓库中包含的convert.py完成图像数据转换。
1
python convert.py -s <location> [--resize]

location:代表需要转化的图像位置,图像必须被放在一个input文件夹下,location则为其父文件夹。
[–resize]:表示是否变化图像尺寸,可选

  • Step3:将转换完成的图像,包括images和sparse两个文件夹,放在一个父文件夹下作为输入数据,进行训练。
1
python train.py -s <location>

location:代表数据路径

结果预览

拉取代码:https://github.com/kishimisu/Gaussian-Splatting-WebGL.git,在live server中打开网页,上传ply数据: