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 | conda create -n gaussian_splatting python=3.10 |
数据前期处理程序
都是在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数据: