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

1 篇文章 0 订阅
本文详细描述了如何在特定硬件和软件环境下(Python3.10、CUDA12.3、PyTorch2.2.1等)部署Gaussian-splatting项目,并提供了从数据准备到模型训练、验证和评估的完整步骤,包括使用T&T+DBCOLMAP数据和VisualStudio2022等工具。
摘要由CSDN通过智能技术生成

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

结论: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截图

下载数据

按需下载 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 <path to COLMAP or NeRF Synthetic dataset> --iterations #迭代次数
# 实际代码
python train.py -s E:\3dgs-data\tandt_db\db\playroom --iterations 6000

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

训练过程查看Network Viewer

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

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

执行命令:

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

模型输出

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

训练结果点云查看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是指定模型存放的文件夹

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

SIBR镜头操作命令

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

模型评估Evaluation

训练过程中分段保存结果

python train.py -s <path to COLMAP or NeRF Synthetic dataset> --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 <location> [--resize] #If not resizing, ImageMagick is not needed

使用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在进行重建时将假设相机遵循的是最基础的几何投影模型,其中不包括像径向畸变这样的复杂因素。

参考自:

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

工具安装ImageMagick

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

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

训练自己的数据

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

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

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值