赞
踩
3D高斯Splatting这里不做更多介绍,本文意在提供一个配置好的环境以及源代码,如果你在参考官方readme的时候,觉得reclusive克隆原项目太慢,或者是在配置环境的时候遇到一点小问题,希望我的这篇文章能帮到你QAQ。
3D高斯的源码: GitHub - graphdeco-inria/gaussian-splatting: Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering" 本人在3d-gaussian-splatting的源码之外,还额外添加了两个快捷训练脚本,一个是用一段视频训练,一个是指定输入图片文件夹训练,不管是哪个使用起来都非常容易,可以一键运行
上图为官方代码实现,训练脚本为train,py;
我自己添加了两个训练的脚本,依次对应使用单个视频或者是图片集来进行训练与场景重建,代码也比较简单,如下:
- import os
- import subprocess
-
- # 视频绝对路径
- video_path = r"_你自己的视频,带上完整路径_"
- # 切分帧数,每秒多少帧
- fps = 2
-
- # 获取当前工作路径
- current_path = os.getcwd()
- # 上一级文件夹所在路径
- folder_path = os.path.dirname(video_path)
- # 图片保存路径
- images_path = os.path.join(folder_path, 'input')
- os.makedirs(images_path, exist_ok=True)
-
- ffmpeg_path = os.path.join(current_path, 'external', r'ffmpeg/bin/ffmpeg.exe')
-
- # 脚本运行
- # 视频切分脚本
- command = f'{ffmpeg_path} -i {video_path} -qscale:v 1 -qmin 1 -vf fps={fps} {images_path}\\%04d.jpg'
- subprocess.run(command, shell=True)
- # COLMAP估算相机位姿
- command = f'python convert.py -s {folder_path}'
- subprocess.run(command, shell=True)
- # 模型训练脚本,模型会保存在output路径下
- command = f'python train.py -s {folder_path}'
- subprocess.run(command, shell=True)
上面那个就是使用ffmpeg进行视频的切分,然后调用train.py进行训练 下面这个脚本为使用图片作为输入,然后进行训练。
- import os
- import subprocess
-
- # 图片集所在的绝对路径
- images_path = r"_你自己的图片数据集_"
-
- # 上一级文件夹所在路径
- folder_path = os.path.dirname(images_path)
- # 脚本运行
- # COLMAP估算相机位姿
- command = f'python convert.py -s {folder_path}'
- subprocess.run(command, shell=True)
- # 模型训练脚本,模型会保存在output路径下
- command = f'python train.py -s {folder_path}'
- subprocess.run(command, shell=True)
上面两个脚本都可以一键运行,开箱即用。
win11,3070-laptop,拥有8G显存; 已经配制好的环境,我放在下面这个度盘链接里面,如果你不想自己配置,直接把这个环境移动到你的conda环境列表里面就好;
- 链接:https://pan.baidu.com/s/1Lv6zQkGhGL6s13NwFYSfmQ?pwd=fopi
- 提取码:fopi
- --来自百度网盘超级会员V2的分享
具体操作如下:
step1:下载网盘当中的压缩包,下载完的env压缩包里面包含了已经预先配制好的环境,包含这个3d_gaussian_splatting文件夹:
里面包含的这些东西就是配制好的环境了:
step2: 把这个3d_gaussian_splatting文件夹给挪到你自己的conda安装位置里面的env路径下面去,之后你在pycharm或者其他编译器里面,就可以直接把这个虚拟环境设置为你的解释器(interpreter)。
举个例子,我自己的conda根目录是在E盘里面的,在安装目录下面,有一个envs文件夹,打开以后就可以看到已经安装的环境。
接下来就把gaussian_splatting文件夹给放到env文件夹里面就好了,像下面这样:
step3: 之后就是在pycharm里面给项目配置一下python解释器(InterPreter)就可以了,配置完成之后大概如下所示;
到此为止环境上的配置就已经完成了。
你可以把你录制的视频放置在项目的data目录之下,之后只需在train_video.py脚本当中指定一下你原视频的路径就好,像下面这样:
我自己使用的测试视频是我自己用手机录制的,就是简单围着自己的键盘拍了一圈,也有不错的场景重建效果。把视频的位置放好之后,在利用视频的训练脚本当中指定训练视频的绝对路径,然后就可以开始训练了。
运行train_video.py的时候,首先其实是先运行了Convert.py,大概是使用Colmap的一些api进行一些早期的处理。这里不再进行更多的介绍。
在3d-gaussian-splatting运行之前,首先是通过colmap去得到一个初始的,粗糙的稀疏点云
使用Colmap完成了初始的稀疏点云生成之后,就可以开始对3d高斯椭球的形状进行训练与调整了。 下面是对这个模型训练三万步的一个演示
训练完成之后的结果如下图所示,完整训练三万步在我的PC上还是需要相当长一段时间的。
实验室的同学也运行了这个代码,在运行的过程中,我们观察到的显存占用量也是8G左右,我自己的PC也是勉强能跑的动,所以如果你想要在自己的PC上把高斯泼溅给跑起来的话,个人建议是你的显卡能达到这个3070或者以上。
完成训练之后,你可以在项目的output目录下看到你的训练输出结果,只是结果文件夹的名字是一段乱七八糟的字母与数字,我建议跑完一遍之后你到output下面给输出文件改个名,不然很容易搞不清这个文件夹里面放的到底是谁的重建输出结果。
最终运行效果的查看是通过官方给定的可视化工具SIBR_viewer.py来实现的,使用的时候需要去指定输出结果的绝对路径,并将高斯点云可视化出来;
- import subprocess
-
- # output保存路径
- model_path = r'E:\ideaprojects\gaussian-splatting\output\keyboard'
- #一个示例,换成你自己的输出路径,反正肯定在output文件路径下面,找一下就好
-
- # 脚本执行
- command = f'SIBR_gaussianViewer_app.exe -m {model_path}'
- run_path = 'external/viewers/bin'
- subprocess.run(command, shell=True, cwd=run_path)
之后即可显示重建的结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。