目录

一.【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

两江重大卓工院

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91633.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91633.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/91633.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#泛型委托讲解

1. 泛型&#xff08;Generics&#xff09; 泛型允许编写类型安全且可重用的代码&#xff0c;避免装箱拆箱操作&#xff0c;提高性能。 泛型类 // 定义泛型类 public class GenericList<T> {private T[] items;private int count;public GenericList(int capacity){items …

【DL学习笔记】DL入门指南

DL入门指南 资料课程 李沐老师 《动手学深度学习》 https://tangshusen.me/Dive-into-DL-PyTorch/李宏毅老师课程 https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.php DL入门必掌握知识点 数据处理 &#xff1a; numpy、torch地址处理 &#xff1a; os、pathlib文件处…

在 uni-app 中进行路由跳转前的权限验证(检查用户是否登录)

使用场景&#xff1a; 适用于需要登录才能访问的 uni-app 应用保护需要认证的页面不被未授权用户访问统一处理路由跳转的权限控制 /utils/cookies.js下的部分代码内容&#xff1a; // #ifdef H5 import Cookies from js-cookie // #endif// ums const tokenKey user_center_to…

垃圾收集器ParNewCMS与底层三色标记算法详解

垃圾收集技术详解笔记 1. 分代收集理论 当前虚拟机的垃圾收集采用分代收集算法&#xff0c;根据对象存活周期将内存分为不同代区&#xff0c;以优化回收效率。 核心分区&#xff1a; 新生代&#xff08;Young Generation&#xff09;&#xff1a;对象存活周期短&#xff0c;约9…

全排列(回溯算法)

本文参考代码随想录 给定一个 没有重复 数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路 排列是有序的&#xff0c;在排列问题中不需要startIndex&#xff1b;但排列问题需要一个…

在线任意长度大整数计算器

具体请前往&#xff1a;在线大整数计算器--支持超大整数的加减乘除,幂运算/模运算,最大公约数&#xff0c;最小公倍数

AT6668B芯片说明书

这颗北斗专用单芯片解决方案AT6668B&#xff0c;采用射频前端与基带处理一体化设计&#xff0c;集成北斗二号/三号双模B1IB1C信号处理器。通过优化星历解码算法实现秒级卫星锁定&#xff0c;配合硬件加速的干扰监测模块&#xff0c;在电磁环境复杂的应用场景中仍可维持10Hz高频…

谷歌Chrome浏览器安装插件

因为google浏览器的应用市场(https://chrome.google.com/webstore/category/extensions)在国内无法访问,所以无法在线安装插件,这里提供开发者模式离线安装插件的方法。 1、下载crx脚本 谷歌浏览器的插件离线文件的扩展名为:crx(Firefox火狐浏览器的插件扩展名为fpi)。…

【制造】erp和mes系统建设方案(word)

第一部分 概述 第二部分 方案介绍 第三部分 系统业务流程 3.1 关键需求概括分析 3.1.1 销售管理方面 3.1.2 采购管理方面 3.1.3 仓库管理方面 3.1.4 财务管理方面 3.1.5 人力资源方面 3.2 关键需求具体分析 3.2.1 财务管理 3.2.1.1会计凭证解决 3.2.1.2钞票流…

Spring AI 系列之二十八 - Spring AI Alibaba-基于Nacos的prompt模版

之前做个几个大模型的应用&#xff0c;都是使用Python语言&#xff0c;后来有一个项目使用了Java&#xff0c;并使用了Spring AI框架。随着Spring AI不断地完善&#xff0c;最近它发布了1.0正式版&#xff0c;意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说…

IMAP电子邮件归档系统Mail-Archiver

简介 什么是 Mail-Archiver &#xff1f; Mail-Archiver 是一个用于从多个 IMAP 账户归档、搜索和导出电子邮件的 web 应用程序。它提供了一种全面的解决方案&#xff0c;帮助用户管理和存储电子邮件。 主要特点 &#x1f4cc;自动归档&#xff1a;自动归档进出邮件&#xff…

李宏毅深度学习教程 第6-7章 自注意力机制 + Transformer

强烈推荐&#xff01;台大李宏毅自注意力机制和Transformer详解&#xff01;_哔哩哔哩_bilibili 目录 1. 词嵌入&问题情形 2. self-attention 自注意力机制 3. 自注意力的变形 3.1 多头注意力&#xff08;multi-head&#xff09; 3.2 位置编码 3.3 截断自注意力&…

大模型幻觉的本质:深度=逻辑层次,宽度=组合限制,深度为n的神经网络最多只能处理n层逻辑推理,宽度为w的网络无法区分超过w+1个复杂对象的组合

大模型幻觉的本质&#xff1a;深度逻辑层次&#xff0c;宽度组合限制&#xff0c;深度为n的神经网络最多只能处理n层逻辑推理&#xff0c;宽度为w的网络无法区分超过w1个复杂对象的组合&#x1f9e9; "深度逻辑层次"具体含义&#x1f522; "宽度组合限制"具…

2419.按位与最大的最长子数组

Problem: 2419. 按位与最大的最长子数组 思路 子数组按位与的结果&#xff0c;不会超过子数组里的最大值&#xff08;因为 a & b ≤ max(a, b)&#xff09;。 进一步推导&#xff0c;整个数组最大按位与的结果就是数组本身的最大值。 因为最大的那个元素自己作为子数组时&a…

智能时代:先管端点,再谈效率

为什么需要统一端点管理&#xff1f;在混合办公常态化、设备类型爆炸式增长的2025年&#xff0c;分散的端点如同散落各地的哨所。传统管理方式让IT团队疲于应对系统更新、漏洞修复、权限分配等重复劳动&#xff0c;不仅消耗60%以上的运维时间&#xff0c;更可能因响应延迟导致安…

Windows字体simsum.ttf的安装与Python路径设置指南

下载工具&#xff1a; https://fontforge.org/en-US/downloads/windows-dl/ 使用工具&#xff1a; 复制到c:\windows\fonts路径下面。 并复制到运行的python程序同一路径下。比如&#xff1a;c:\pythoncode\new\

GitHub下载项目完整配置SSH步骤详解

GitHub下载项目完整配置步骤&#xff08;从零开始&#xff09; 默认下好了git &#xff0c;在文件夹中右键打开git bash &#xff0c; 如果没有请在csdn搜索教程 第一步&#xff1a;检查并清理现有SSH配置 # 进入.ssh目录 cd ~/.ssh# 备份并删除所有现有密钥&#xff08;避免冲…

数据结构(9)栈和队列

1、栈 1.1 概念与结构 栈是一种特殊的线性表&#xff0c;只允许在固定的一端进行插入和删除元素的操作。进行数据插入和删除的一端称为栈顶&#xff0c;另一端称为栈底。栈里面的数据元素遵循后进先出的原则。栈的底层实现一般可以使用数组或者链表来实现&#xff0c;但数组的…

湖北大学暑期实训优秀作品:面向美丽中国的数据化可视平台

开发背景2024年1月11日&#xff0c;《中共中央国务院关于全面推进美丽中国建设的意见》发布&#xff0c;明确了建设美丽中国的总体要求、主要目标和重点任务&#xff0c;为我国生态文明建设提供了顶层设计和行动指南。系统简介当前&#xff0c;中国正以空前的力度推进生态文明建…

Ubuntu系统VScode实现opencv(c++)随机数与随机颜色

在图像处理与计算机图形学中&#xff0c;随机数与随机颜色的生成常用于增强图像的多样性、可视化多个目标区域、模拟自然现象以及生成测试数据等任务。通过随机化元素的颜色、位置或形状&#xff0c;可以使程序在动态展示、调试输出、以及数据增强等方面更加灵活和丰富。例如&a…