我是先阅读一遍官方文档,后来发现版本有要求,看了半天,后来下定决心尝试下和官方要求的不一样的环境是否可以运行。
结论: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等
训练自己的数据
按照上述“训练”章节的训练语句执行。
我的训练结果如下图:(图片很渣,所以效果不好。得亏是效果不好,不然要露脸了)文章来源:https://www.toymoban.com/news/detail-838191.html
文章来源地址https://www.toymoban.com/news/detail-838191.html
到了这里,关于3DGS(3D Guassian Splatting)部署验证+个人数据训练的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!