【基于3D Gaussian Splatting的三维重建】保姆级教程 | 环境安装 | 制作-训练-测试自己数据集 | torch | colmap | ffmpeg | 全过程图文by.Akaxi

目录

一.【3DGS环境配置】

1.1 克隆3DGS仓库

1.2 安装Visual Studio 2022

1.2.1 下载Visual Studio 2022

1.2.2 更改环境变量 

1.3 创建环境

1.3.1 创建python环境 

1.3.2 离线安装torch包

1.3.3 安装依赖包

1.3.4安装子模块

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

(2)再次安装子模块

二、【初步训练&可视化测试】

2.1 官方数据集训练与可视化

2.2 报错解决(显卡驱动升级至12.7)

2.2.1 错误尝试 

2.2.2 正确操作

2.3 可视化测试

三、【训练自己的数据集】

3.1 下载Colmap

3.2 下载Ffmpge

3.3 数据集制作

3.3.1 拍摄一段视频

3.3.2 视频转连续图片

3.3.3 连续图片转点云

3.4 训练数据集

3.5 可视化三维重建效果

四、【更多信息】

4.1 自己的数据集全场景

4.2 最终三维重建效果视频

4.3 参考链接


最终效果:

基于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

两江重大卓工院

### 高斯点绘技术概述 高斯点绘(Gaussian Splatting)是一种用于计算机图形学和可视化中的高效渲染方法,通过将几何体表示为一组加权高斯分布来增强效率、交互性和真实感[^1]。 #### 技术原理 在具体实施过程中,在给定的场景数据上,系统会预测对应于该输入的一系列高斯点。这些高斯点不仅包含了位置信息还携带了颜色和其他属性参数。此过程通常基于特定算法框架完成,比如pixelSplat实现方案中提到的方法[^2]。 对于大规模场景的应用而言,所采用的训练策略允许将由不同视角下的图像对所产生的全部高斯点串联起来形成完整的表达形式,从而支持更广泛的环境建模需求。 ```python import numpy as np def generate_gaussian_points(image_pairs): gaussian_points = [] for pair in image_pairs: # 基于pair生成单个高斯点 point = compute_gaussian_point(pair) # 添加到总集合中 gaussian_points.append(point) return gaussian_points def compute_gaussian_point(pair): mean_position = calculate_mean_from_pair(pair) # 计算均值向量 covariance_matrix = estimate_covariance(mean_position, pair) # 估计协方差矩阵 return {'mean': mean_position, 'covariance': covariance_matrix} ``` #### 应用实例 为了更好地捕捉物体表面附近的细节特征以及体积效果(如毛发或草),一种改进方式是从初始优化阶段提取基础网格结构并在此基础上构建具有可变厚度适应层的高斯分布模型[^5]。这种方法可以显著提高复杂纹理的表现力。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Akaxi-1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值