当前位置:   article > 正文

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

3dgs

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

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

以下过程供大家参考!

部署

硬件情况

GPU:4090

软件情况

cudatoolkit

visual studio 2022

win11

conda

执行部署

按照以下步骤依次操作。

  1. git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
  2. cd gaussian-splatting
  3. conda create -n gaussian_splatting python=3.10
  4. conda activate gaussian_splatting
  5. conda install -c conda-forge vs2022_win-64
  6. # 安装pytorch 2.2.1版本,cuda 12.1
  7. pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
  8. SET DISTUTILS_USE_SDK=1
  9. pip install submodules\diff-gaussian-rasterization
  10. pip install submodules\simple-knn
  11. pip install plyfile
  12. 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) 进行训练测试,验证环境是否正常。

运行以下代码

  1. # 示例代码
  2. python train.py -s <path to COLMAP or NeRF Synthetic dataset> --iterations #迭代次数
  3. # 实际代码
  4. 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

执行命令:

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

模型输出

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

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

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

  1. # 进入目录的bin文件夹,执行exe文件。或者双击执行
  2. cd XXXX\viewers\bin>
  3. .\SIBR_gaussianViewer_app.exe -m D:\3DGS\gaussian-splatting\output\ad910f74-4
  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命令

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

  1. ffmpeg -i input.mp4 -vf "setpts=0.2*PTS" input/input_%4d.jpg
  2. # -i input.mp4:指定输入视频文件为 input.mp4
  3. # -vf "setpts=0.2*PTS":这是一个视频过滤器选项,其中 setpts 指令用来设置帧的时间戳(Presentation TimeStamps)。这里的表达式 0.2*PTS 表示将当前帧的时间戳乘以0.2,这意味着抽取出来的帧之间的间隔被拉长了5倍,所以生成的图像序列将以视频原始速度的五分之一进行播放。
  4. # 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不需要的操作。

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

参考自:

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

工具安装ImageMagick

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

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

训练自己的数据

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/443491
推荐阅读
相关标签
  

闽ICP备14008679号