【基于3D Gaussian Splatting的三维重建】保姆级教程 | 环境安装 | 制作-训练-测试自己数据集 | torch | colmap | ffmpeg | 全过程图文by.Akaxi
【基于3D Gaussian Splatting的三维重建】保姆级教程 | 数据集制作 | 训练可视化自己数据集 | torch | colmap | ffmpge | 全过程图文by.Akaxi
目录
最终效果:
基于3D_Gaussian_splatting的“小王”三维场景重建
------------------------全文6614字88图一步一步完成大约耗时5h------------------------
所需软件以及环境:

显卡:NVIDA RTX 3050
Nvidia显卡驱动:566.36
CUDA version:12.7
运行CUDA11.7&pytorch2.0.0
一.【3DGS环境配置】
1.1 克隆3DGS仓库
【指令】git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
输入指令克隆仓库

克隆到本地文件夹里哦~

可以看到在本地文件目录是这样的
1.2 安装Visual Studio 2022
后面会遇到关于vs2022的报错哦, 这里装2022会与cuda11.7版本不适配哈,需要降级到vs2019,请参考1.3.4安装子模块报错解决章节
1.2.1 下载Visual Studio 2022
https://visualstudio.microsoft.com/zh-hans/vs/

去到官网下载Visual Studio,然后安装

选择使用C++的桌面开发:

然后更改安装路径:

指定一下安装路径:

然后点击右下角安装

耐心等待即可,大概5min

完成~
1.2.2 更改环境变量
然后需要更改一下Path路径

在自己电脑目录下找到cl.exe文件:
【我的路径】E:\Akaxi_Microsoft_Visual_Studio_build_tools\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64
然后打开【系统属性-高级-环境变量】

在环境变量中找到【系统变量】-【Path】点击它,然后点【新建】

将刚刚在目录下找到的cl.exe路径,如:
E:\Akaxi_Microsoft_Visual_Studio_build_tools\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64
添加到系统变量Path路径里面即可

然后新建终端,输入命令【cl】测试是否有以上输出,有的话说明配置成功噜
1.3 创建环境
1.3.1 创建python环境
在文件目录的environment.yml中可以看到对环境的要求,这里要求cuda11.6(我用的是cuda11.7),python至少3.8(我的是python3.8),然后pytorch至少是1.12.1 (我的是pytorch2.0.0),满足要求哦

查看自己用的cuda版本,输入指令
【指令】ncvv --version

(出现cuda11.7即可)
然后开始创建一个python3.8.20的环境,我们使用的是anaconda工具对环境进行创建,关于anaconda的安装和使用参考Windows下的Anaconda详细安装教程_windows安装anaconda-CSDN博客
使用conda指令创建环境:
【指令】conda create -n 3dgs python=3.8.20

激活环境,看到里面有python3.8.20啦
【指令】conda activate 3dgs
【指令】conda list

继续下载:
【命令】conda install -c conda-forge vs2022_win-64

完成后可以看到:

1.3.2 离线安装torch包
因为环境是CUDA11.7,那我们pytorch选择2.0.0版本
我们最重要的是安装这个:pytorch-2.0.0-py3.8_cuda11.7_cudnn8_0.tar.bz2
去清华镜像网站:https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/

找到【pytorch-2.0.0-py3.8_cuda11.7_cudnn8_0.tar.bz2】,点击下载到本地离线安装
【指令】pip install "E:\AAA_download\torch-2.0.0+cu117-cp38-cp38-win_amd64.whl"
注意这里的指令install后面需要接上你刚刚自己下载torch包的安装路径哦


成功
然后再装一些依赖:
【指令】pip install torch==2.0.0 torchvision==0.15.1 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu117

成功啦:

1.3.3 安装依赖包
可以看到我们需要安装一些依赖包:

装一下plyfile
【指令】pip install plyfile

然后装一下tqdm
【指令】pip install tqdm

同理装一下opencv-python和joblib
【指令】pip install opencv-python
【指令】pip install joblib

当前conda环境如下

1.3.4安装子模块
进入目录继续下载子目录下的内容

【指令】pip install submodules/diff-gaussian-rasterization

(1)报错解决(vs2022降级到vs2019)
报错遇到

原因:

可能是vs2022的问题,vs2022与我的cuda11.7冲突,降低一下版本
卸载vs2022,准备安装vs2019

注意:官网已经不再提供vs2019的版本啦,需要自己去找vs2019的下载包哦
下载完成后重复1.2.1和1.2.2的步骤

同理需要设置环境变量,找到cl.exe文件的路径哦:


降级成功~
(2)再次安装子模块
降级后再次尝试:
【指令】pip install submodules/diff-gaussian-rasterization



~~~~~~~~~成功啦~~~~~~~~~
原因总结,cuda11.7和vs2019适配,故前面装的2022不行哈
同理下载其他两个子模块:
【指令】pip install submodules/simple-knn
【指令】pip install submodules/fused-ssin

最终环境是这样的:

环境配置成功啦~~~~~~~~~~~~~~~~
二、【初步训练&可视化测试】
2.1 官方数据集训练与可视化
去到github官网下载 T&T+DB COLMAP (650MB) 4个场景的图片:
【github官网】https://github.com/graphdeco-inria/gaussian-splatting

补充:
这一排的链接分别是:
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 E:\AAA_3D_Gaussian-splatting\gaussian-splatting\my_download_data\tandt_db\db\playroom --iterations 6000

报错了,应该是cuda内存不足

这里在指令后面加上【--resolution 2】让分辨率减少一半试一试,指令:
【指令】
python train.py -s E:\AAA_3D_Gaussian-splatting\gaussian-splatting\my_download_data\tandt_db\db\playroom --iterations 6000 --resolution 2

然后这边在训练的过程中,新建一个终端,在目录下E:\AAA_3D_Gaussian-splatting\gaussian-splatting\viewers\bin执行命令进行可视化
【命令】.\SIBR_remoteGaussian_app.exe

可以看到:

【期间又是因为内存不足导致提前中断】
试一试再低一点:
【指令】
python train.py -s E:\AAA_3D_Gaussian-splatting\gaussian-splatting\my_download_data\tandt_db\db\playroom --iterations 6000 --resolution 4 --percent_dense 0.3
含义
--resolution 4 降低分辨率
--percent_dense 0.3 控制点云密度为 30%
【训练完成】
2.2 报错解决(显卡驱动升级至12.7)
2.2.1 错误尝试
~~~~~~~~~~~以下皆是错误尝试哈~~~~~~~~~~~
但是又遇到报错,找不到cudart64_12.dll:

好像是conda里面的cudatoolkit没有装(不是,是CUDA驱动和版本的问题应该是)
【命令】conda search cudatoolkit --info

找到对应版本的cudatoolkit并且找到url,点击手动下载(不使用命令的原因是因为网速太慢了)

下载完成后手动安装:
【命令】conda install --use-local E:\AAA_download\cudatoolkit-11.8.0-hd77b12b_0.conda

成功,但是还是没有用,这里手动将cudart64_12.dll放在目录下的话可以运行,但是会报兼容问题的错误
在网站可以找到cudart64_12.dll下载文件
网址:https://www.dllme.com/dll/files/cudart64_12



后面还是运行冲突了
2.2.2 正确操作
更新了Nvidia显卡驱动至版本566.36,且cuda version更新至12.7:

【并且将CUDART64_12.DLL文件复制到gaussian-splatting\viewers\bin目录下】
CUDART64_12.DLL文件下载网址:https://www.dllme.com/dll/files/cudart64_12

2.3 可视化测试
再次运行可视化成功:
【指令】.\SIBR_gaussianViewer_app -m E:\AAA_3D_Gaussian-splatting\gaussian-splatting\output\e4ad78d4-b

【结论】cuda version>=12.X;cuda-toolkit11.7; torch2.0.0+cu117;可行

三、【训练自己的数据集】
3.1 下载Colmap
Colmap:三维重建查看器
【github网址】https://github.com/colmap/colmap/releases/tag/3.8

下载到文件夹下(新建一个tools文件夹)


然后将文件路径添加到环境变量

然后新建终端输入【命令】COLMAP即可打开软件

3.2 下载Ffmpeg
Ffmpeg:视频->连续图片工具
【官网】https://www.gyan.dev/ffmpeg/builds/

下载后解压到tools文件夹下

同样把bin目录添加到Path环境变量中

输入【ffmpeg –version】

安装成功~
3.3 数据集制作
3.3.1 拍摄一段视频
用手机围绕自己喜欢的物体拍摄一段视频吧,作为自己的数据集~
3.3.2 视频转连续图片

输入指令开始将拍到的视频转图片:
【指令】ffmpeg -i my_create_data/cake.mp4 my_create_input/input_%04d.png

根据视频拍摄时长大小转换时间也会不同,我大概花了20min,视频转连续图片帧完成

在my_create_input文件中可以看到,这是我制作的一个蛋糕数据集
注意:这里目录结构要一致,不能取别名

3.3.3 连续图片转点云
连续图片帧转点云(耗时,大约2h左右)
【命令】python convert.py -s data

点云转换成功,准备开始训练
3.4 训练数据集
在PS E:\AAA_3D_Gaussian-splatting\gaussian-splatting>目录下开始训练
【指令】python train.py -s data -m data/output --resolution 2


训练时间1.5h左右
3.5 可视化三维重建效果
迭代7000次,效果已经很不错了,进行可视化:

四、【更多信息】
4.1 自己的数据集全场景

视频转图片帧
【指令】ffmpeg -i my_data/input_1.mp4 my_data/input/input_%04d.png

一共生成1264张图片

然后图片转点云:
【指令】python convert.py -s my_data

特征点匹配(这一步很耗时)这里就是要进行26x26=676次

使用COLMAP查看:

训练后可视化:

效果蛮好,成功撒花~~~~~~~~~~~~~
4.2 最终三维重建效果视频
基于3D
4.3 参考链接

【github官网】https://github.com/graphdeco-inria/gaussian-splatting
【Youtube教程】https://www.youtube.com/watch?v=UXtuigy_wYc
【github教程】https://github.com/jonstephens85/gaussian-splatting-Windows
【csdn博客】https://blog.csdn.net/weixin_48400654/article/details/139456202?spm=1001.2014.3001.5506
----------------------------------------------------------------------------------------------------
相信读到这里的朋友,一定是坚持且优秀的
给博主一个免费的赞👍吧
扫描二维码进博主交流群,问题交流 | 吹吹水 | 一起变得更加优秀

2025.3.16
两江重大卓工院
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)