3DGS(3D Guassian Splatting)部署验证+个人数据训练

2024-03-27 1082阅读

我是先阅读一遍官方文档,后来发现版本有要求,看了半天,后来下定决心尝试下和官方要求的不一样的环境是否可以运行。

结论:python3.10 +cuda12.3+pytorch2.2.1可以运行。

以下过程供大家参考!

部署

硬件情况

GPU:4090

软件情况

cudatoolkit

visual studio 2022

win11

conda

执行部署

按照以下步骤依次操作。

git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
cd gaussian-splatting
conda create -n gaussian_splatting python=3.10
conda activate gaussian_splatting
conda install -c conda-forge vs2022_win-64
# 安装pytorch 2.2.1版本,cuda 12.1
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
SET DISTUTILS_USE_SDK=1
pip install submodules\diff-gaussian-rasterization
pip install submodules\simple-knn
pip install plyfile
pip install tqdm

参考到的几个issue截图

3DGS(3D Guassian Splatting)部署验证+个人数据训练

3DGS(3D Guassian Splatting)部署验证+个人数据训练

3DGS(3D Guassian Splatting)部署验证+个人数据训练

下载数据

按需下载 T&T+DB COLMAP (650MB) | Pre-trained Models (14 GB) | Viewers for Windows (60MB) | Evaluation Images (7 GB) 等数据。

T&T+DB COLMAP (650MB) :包含了4个场景的图片,并已经通过convert.py进行colmap转换。可以直接用来做train.py训练测试。

Pre-trained Models (14 GB):论文中提到的各种场景的预训练模型。可以通过viewer查看效果

Viewers for Windows (60MB):作者已经编译好的SIBR点云查看工具,不需要按照教程再编译。

Evaluation Images (7 GB) :这是项目训练过程中,同一批数据在不同的算法之下训练出来的场景数据对比图片。

colmap下载(如需使用自己的图片训练):可以从照片集合中进行三维重建,可以识别运动结构 (Structure-from-Motion, SfM)、也可以进行多视图立体 (Multi-View Stereo, MVS)构建。

ImageMagick下载(如需针对自己的图片进行裁剪):

训练

使用刚才下载的T&T+DB COLMAP (650MB) 进行训练测试,验证环境是否正常。

运行以下代码

# 示例代码
python train.py -s  --iterations #迭代次数
# 实际代码
python train.py -s E:\3dgs-data\tandt_db\db\playroom --iterations 6000

注意:如果不指定输出目录,默认存储在项目根的output文件中

3DGS(3D Guassian Splatting)部署验证+个人数据训练

训练过程查看Network Viewer

使用下载的Viewers for Windows (60MB)中的remoteGuassian查看。它会自动识别训练过程中开放的IP端口并连接。

APP地址:SIBR安装目录下的/bin/SIBR_remoteGaussian_app

执行命令:

# 进入目录的bin文件夹,执行exe文件。或者双击执行
cd XXXX\viewers\bin>
.\SIBR_remoteGaussian_app.exe

3DGS(3D Guassian Splatting)部署验证+个人数据训练

模型输出

训练完毕后,训练好的模型会输出在output文件夹(或者指定的文件夹下)

3DGS(3D Guassian Splatting)部署验证+个人数据训练

训练结果点云查看Real-Time Viewer

进入下载好的Viewers for Windows (60MB)的bin目录,右键在终端中打开,然后输入:

# 进入目录的bin文件夹,执行exe文件。或者双击执行
cd XXXX\viewers\bin>
.\SIBR_gaussianViewer_app.exe  -m D:\3DGS\gaussian-splatting\output\ad910f74-4
# -m是指定模型存放的文件夹

3DGS(3D Guassian Splatting)部署验证+个人数据训练

下图是我通过命令查看的预训练文件Pre-trained Models (14 GB)的其中一个场景。(每个文件都是一个预训练的场景)

3DGS(3D Guassian Splatting)部署验证+个人数据训练

SIBR镜头操作命令

通过W, A, S, D, Q, E 移动相机位置(前后左右高低),通过I, K, J, L, U, O 移动相机角度(左转/右转/下转/上转/顺时针转/逆时针转)。

模型评估Evaluation

训练过程中分段保存结果

python train.py -s  --eval # Train with train/test split

对于render.py、metrics.py这两个功能,我还没有仔细研究,不做介绍。

使用自己的图片数据训练

准备数据

我网上看到很多人直接使用手机拍摄的视频抽帧形成的照片,复现效果也不错。

大家可以尝试用手机拍摄试试看。我的数据是从网上找的视频转换成图片的。

视频图像按帧输出图片(按需)

如果是从视频中抽帧形成训练图片,需要使用工具,推荐使用ffmpeg

ffmpeg下载地址

Builds - CODEX FFMPEG @ gyan.dev

下载ffmpeg-git-full.7即可,下载完成后如果要命令行使用ffmpeg,则需要将目录加入系统环境便来给你PATH路径中。

ffmpeg命令

执行以下语句,可将视频切分为图片

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.2*PTS 表示将当前帧的时间戳乘以0.2,这意味着抽取出来的帧之间的间隔被拉长了5倍,所以生成的图像序列将以视频原始速度的五分之一进行播放。
# input/input_%4d.jpg:这是输出文件格式及路径,其中 %4d 是一个格式化占位符,它会被自增的整数所替换,确保每个输出文件名是唯一的。例如,输出的第一帧将会被保存为 input/input_0001.jpg,第二帧为 input/input_0002.jpg,依此类推。同时,输出目录被指定为 input/ 目录下。

数据转换convert

使用官方提供的revert.py转换器,完成图像数据转换。转换需要用到COLMAP和ImageMagick

工具安装COLMAP

Releases · colmap/colmap

从github下载最新的colmap

将安装路径加入环境变量,环境变量添加后,需要打卡新的终端之后,colmap才能被找到,convert语句才能生效。

执行图像转换convert.py

python convert.py -s  [--resize] #If not resizing, ImageMagick is not needed

3DGS(3D Guassian Splatting)部署验证+个人数据训练

使用colmap命令直接转换数据,不使用convert(如需)

可能是因为我自己网上找的视频质量不行,导致使用convert.py进行转换时,只有两张照片有效(249张照片,convert执行完毕后,image文件夹中只有两张),所以网上找了别人的教程,直接使用clomap进行操作,但是colmap的这个命令执行时间太长了,249张照片执行了1个多小时。应该是这个命令做了其他3dgs不需要的操作。

colmap automatic_reconstructor --workspace_path . --image_path ./images --sparse 1 --camera_model SIMPLE_PINHOLE
# colmap automatic_reconstructor: 这是调用COLMAP程序中的自动重建模块,它会自动完成特征提取、匹配、重投影误差优化和三角化等步骤,以生成场景的稀疏3D点云模型。
# --workspace_path .: 指定了工作空间路径为当前目录(.),在这个路径下,COLMAP将存储中间结果以及最终的重建输出文件。
# --image_path ./images: 定义了图像数据集所在的路径,即所有参与重建的图片都位于./images目录下。
# --sparse 1: 这个参数表示进行稀疏重建(与密集重建相对),即只构建出场景中的关键点及其对应关系,并通过这些信息生成一个由稀疏点云组成的三维模型。
# --camera_model SIMPLE_PINHOLE: 指定使用的相机模型为“简单针孔模型”(Simple Pinhole Model)。这意味着COLMAP在进行重建时将假设相机遵循的是最基础的几何投影模型,其中不包括像径向畸变这样的复杂因素。

3DGS(3D Guassian Splatting)部署验证+个人数据训练

参考自:

用3D高斯泼溅(3DGS)重建自己的数据-CSDN博客

工具安装ImageMagick

下载后,按官方文档指导,在需要对图像进行编辑时使用。

ImageMagick是一款强大的、开源的跨平台图像处理软件套件,它主要用于查看、编辑、转换、合成以及创建位图图像。ImageMagick支持超过200种不同的图像文件格式,包括但不限于PNG、JPEG、GIF、TIFF、BMP、PDF、Postscript等

训练自己的数据

按照上述“训练”章节的训练语句执行。

我的训练结果如下图:(图片很渣,所以效果不好。得亏是效果不好,不然要露脸了)

3DGS(3D Guassian Splatting)部署验证+个人数据训练

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]