3D高斯泼溅原理及实践【3DGS】

news2024/11/17 1:34:19

人工智能可能是我们这个时代的主要领域之一,它几乎可以用于从驾驶汽车到医疗保健甚至能够预防失明等所有领域,最近提出了一种新的 3D 重建方法。SNGULAR 及其人工智能团队希望了解有关 3D 重建技术的最新更新的更多信息。

目前可用于 3D 重建的许多 SOTA 方法需要大量 CPU/GPU 使用率来处理场景或渲染场景,其中一些甚至需要两者兼而有之。SIGGRAPH 2023 Gaussian Splatting 上提出的新方法可以节省推理和渲染的时间。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

过去几年,我们看到了大量关于 3D 重建的文章,例如 NeRF(神经辐射场)方法,该方法实现了非常好的 3D 重建,具有高度精确的场景和模型,可用于虚拟旅游、沉浸式游戏和建筑可视化等众多领域。然而,这是有代价的,NeRF 耗时,需要大量内存和存储空间,并且仅限于静态场景。高斯泼溅(Gaussian Splatting)解决了其中一些问题,使其成为当今最好的 3D 重建方法。

本文旨在将此方法应用于室内重建的特定领域,我们的主要目标是:

  • 了解 3D 重建和高斯泼溅的工作原理。
  • 运行一个小型演示,无需离开家即可重建你自己的场景。

所以,跟我一起深入研究如何对你的家进行 3D 重建。

1、了解 3D 重建

重建始于用相机从场景的不同视角拍摄的几张照片。这些图像将作为重建的输入数据。重建的主要目的是恢复场景的空间结构,并使我们能够从任何角度查看它。

3D 重建中最重要的关键概念之一是特征匹配,其中在多个视图中识别和匹配 2D 图像中的独特点或特征。使用两幅图像之间的对应关系可以估计相机的相对位置,从而计算这些特征的 3D 位置的三角测量。高斯 Splatting 使用来自另一种称为运动结构 (SfM) 的方法的云点,该方法通过分析相机随时间的运动来估计相机姿势和 3D 结构。

3D 重建广泛应用于各个领域。在考古学中,它可以帮助研究人员记录和分析历史遗迹和文物。在建筑学中,它有助于创建精确的建筑模型,用于设计和翻新。医学成像依靠 3D 重建来可视化复杂的解剖结构。娱乐行业将其用于逼真的 CGI 和视频游戏开发。此外,3D 重建在自主机器人技术中起着至关重要的作用,使机器人和无人机能够感知和导航其环境。随着技术的不断进步,3D 重建有望彻底改变我们与物理和数字世界的互动方式,为虚拟和增强现实、制造业等开辟新的可能性。

2、高斯泼溅简介

在 SNGULAR 中,我们决定让人们稍微了解一下这项革命性的新技术。

高斯泼溅是一种革命性的 3D 重建新方法,它试图解决其他方法存在的一些问题,例如处理时间长。对于这种方法,他们的方法不是将场景表示为体积或网格,而是将世界用作 3D 画布,绘制小笔触,直到场景看起来像输入图像。这种方法的主要优点之一是它不仅可以重建静止图像,还可以重建移动场景:

它从点云开始,为每个点创建一个小笔画,然后慢慢改变每个笔画的大小、位置、旋转和颜色,每次迭代都使用随机梯度下降技术优化这些参数,以减少笔画和输入图像之间的误差。但这还不够,因为有些区域可能需要更多或更少的笔画才能正确绘制,因此每 100 次迭代就会应用一次密集化过程,在需要更多细节的区域中拆分笔画,并在不再需要笔画的区域中将其移除。

一旦优化达到官方存储库中获得的代码中的 7000 和 30000 次迭代,默认情况下将创建一个新的 ply 文件,其中包含表示场景所需的所有笔触,我们只需将文件加载到兼容的可视化工具中即可完成!

3、高斯泼溅的优点

现在我们对高斯泼溅的工作原理有了大致的了解,我们可以总结这种方法的优点。

  • 训练时间短:一个场景可以在一个小时的计算时间内完成训练。
  • 高渲染 fps:高斯溅射能够以高达 100 fps 的速度实时渲染场景。
  • 动态场景:不仅像其他方法一样可以重建静态场景,高斯泼溅还可以重建移动场景。

4、用高斯泼溅重建自己的家

在这个小教程中,我们将使用 Ubuntu 20.04。需要支持 CUDA 的显卡,我们使用了 GTX 1080。

第一步是获取图像。最简单的方法是制作你想要重建的区域的视频。

尝试:

  • 获取不太大或太短的视频,大约 1 分钟即可。
  • 尝试从不同角度进行流畅的动作。
  • 使用大约 1920x1080 的分辨率。
  • 聚焦于一个物体并转动它,确保背景也出现。
  • 在良好的照明条件下进行,否则很难获得软件匹配。

一旦我们有了视频,我们就可以使用 ffmpeg 提取帧。为此,我们将在终端中执行:

ffmpeg -i <Path to video file> -r X Example/input/image%03d.jpg

你需要将 -r 中的 X 替换为一个数字,具体取决于视频的长度,您可以使用此参数,直到获得理想的 100 到 300 张图像。图像越多,点云的质量就越高,但您还需要具有更多 VRAM 的图形卡。对于我们的视频,我们使用了 2 的 X,因此最终命令将是:

ffmpeg -i video.mp4 -r 2 Example/input/image%03d.jpg

几秒钟后,我们的图像就可以进行处理了。

如前所述,Gaussian Splatting 将使用 SfM 计算的云点与图像一起作为输入;他们建议使用 Colmap 或 NeRF 来实现这一点。使用 Colmap 是一种非常简单的方法。为此,在 ubuntu 中,我们只需使用 apt 下载 Colmap 即可。

sudo apt-get install colmap

如果你在服务器中运行(没有屏幕),则可能需要从头开始构建 colmap,你可以在此处找到如何操作的说明。

安装 colmap 后,我们可以继续生成点云,Gaussian Splatting 存储库提供了一个可以轻松执行此操作的脚本,因此首先我们将使用 git 下载存储库。

如果你的系统中未安装 git,可以使用以下命令执行此操作:

sudo apt-get install git

然后我们可以运行:

git clone https://github.com/graphdeco-inria/gaussian-splatting - recursive

下载完成后,我们开始准备环境,我们将使用 conda,如果你没有安装,可以在这里找到它。

我们安装 Gaussian Splatting 的要求:

cd gaussian-splatting
conda env create - file environment.yml

完成后,我们可以激活环境:

conda activate gaussian_splatting

然后我们开始处理点云:

python convert.py -s <PATH>/<Foldername>/

一旦完成,我们将有一个类似于这样的目录树:

<location>
    | — -input
    |	 	| — -<image 0>
    | 		| — -<image 1>
    | 		| — -…
    | — -distorted
    | — -database.db
    | — -sparse
    | — -0
    | — -…

然后我们可以使用以下命令开始训练!

python train.py -s <path to COLMAP or NeRF Synthetic dataset>

这个过程需要一段时间,完成后,我们将在文件夹 output 中得到结果,将有两个文件夹,分别包含迭代 7000 次和 30000 次的结果。然后,我们可以继续使用可视化工具可视化结果。

最简单的方法是使用“camenduru”制作的 colab笔记本。

你只需运行该单元,打开类似“https://.trycloudflare.com”的 http 链接,然后拖动在输出文件夹中找到的 point_cloud.ply 文件。运行后,就可以看到重建的家了!


原文链接:3DGS三维重建实战 - BimAnt

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[干货!必看文章]学会如何用L4级AI软件开发平台免费制作应用程序

前言&#xff1a; 自从ChatGPT问世以来&#xff0c;就掀起了全球AI大模型的浪潮。国外有Claude&#xff0c;Llama&#xff0c;Grok&#xff0c;Suno&#xff0c;国内有kimi&#xff0c;有智谱AI&#xff0c;有通义千问&#xff0c;还有文心一言... 国内大模型市场规模已经达到了…

【Python/Pytorch - 网络模型】-- 手把手搭建U-Net模型

文章目录 文章目录 00 写在前面01 基于Pytorch版本的UNet代码02 论文下载 00 写在前面 通过U-Net代码学习&#xff0c;可以学习基于Pytorch的网络结构模块化编程&#xff0c;对于后续学习其他更复杂网络模型&#xff0c;有很大的帮助作用。 在01中&#xff0c;可以根据U-Net…

瓦片边界可视化工具

本文涉及的核心内容 瓦片边界可视化-VisibleTileBoundariesmeethigher/visible-tile-boundaries: visible tiles boundaries demo 一、瓦片边界可视化 1.1 背景 日常GIS开发中&#xff0c;需要了解瓦片是什么&#xff0c;瓦片展示的效果是什么样的。这种口头上抽象的东西&a…

计算机哈佛架构、冯·诺依曼架构对比

哈佛架构和冯诺依曼架构是两种不同的计算机系统架构&#xff0c;它们在存储器组织方式上有着显著的区别。下面是它们的原理、优缺点的对比以及一些常见的 MCU 采用的架构&#xff1a; 哈佛架构&#xff1a; 原理&#xff1a;哈佛架构将指令存储器&#xff08;程序存储器&#x…

Androd adb命令汇总,app专项测试命令。

1.普通命令 1.1 devices命令 # 语法格式 &#xff1a;adb devices [-l] # 作用 &#xff1a;返回已连接设备的信息 # 示例 &#xff1a;adb devices : 返回设备的信息adb devices -l : 返回设备的详细信息1.2 help命令 # 语法格式 &#xff1a;adb --help # 作用 &…

攻防世界--杂项misc-2017_Dating_in_Singapore

题目信息 题目描述和附件分别是一串数字和新加坡日历&#xff0c;数字中间有短线-连接&#xff0c;刚好分成了12个字段。猜想对应了12个月 01081522291516170310172431-050607132027262728-0102030209162330-02091623020310090910172423-02010814222930-0605041118252627-020…

集合进阶(接口Collection(迭代器、增强for、Lambda表达式)、List中常见的方法和五种遍历方式、数据结构(栈、队列、数组、链表)

一、单列集合顶层Collection List系列集合&#xff1a;添加的元素是有序、可重复、有索引Set系列集合&#xff1a;添加的元素是无序、不重复、无索引 Collection是单列集合的祖宗接口&#xff0c;它的功能是全部单列集合都可以继承使用的。 Collection的遍历方式 1、迭代器——…

catia零件装配中通过指南针移动零件

1 将零件导入进来后 2 把指南针移动到零件上 具体移动哪个可以通过模型树点击选中&#xff0c;选中那个就可以移动那个。 这种情况需要注意的是 需要双击选择要移动零件的父节点 如下图&#xff0c;Product2蓝色表示是激活的&#xff0c;这样才可以单击选中下面的零件后通过…

STM32F103RCT6换STM32F103C8T6后delay函数延时了10倍

更换单片机步骤&#xff1a; 1、型号选择 2、启动文件&#xff0c;将HD改为MD。 3、引入对应的启动文件。 4、后面发现delay比之前延时了差不多10倍&#xff0c;解决办法&#xff1a;在初始化后加入SystemInit();即可。

Frontiers旗下期刊,23年分区表整理出炉!它还值得投吗?

本周投稿推荐 SSCI • 中科院2区&#xff0c;6.0-7.0&#xff08;录用友好&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09; CNKI • 7天录用-检索&#xff08;急录友好&#xff09; SCI&EI • 4区生物医学类&#xff0c;0.5-1.0&#xff08;录用…

第十五届蓝桥杯pb组国赛E题[马与象] (15分)BFS算法 详解

博客主页&#xff1a;誓则盟约 系列专栏&#xff1a;IT竞赛 专栏 关注博主&#xff0c;后期持续更新系列文章 如果有错误感谢请大家批评指出&#xff0c;及时修改 感谢大家点赞&#x1f44d;收藏⭐评论✍ 问题描述&#xff1a; 小蓝有一个大小为 N N 的棋盘&#xff08;棋…

110.网络游戏逆向分析与漏洞攻防-装备系统数据分析-装备与技能描述信息的处理

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

javaWeb项目-ssm+vue医院住院信息管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、Java简介 现代社…

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:AI智能监控 用于沙滩救援

以色列的一个团队在人工智能领域取得的成果引起了轰动。 今天他们取得的成果源于多年前的一个想法。Netanel Eliav 和 Adam Bismut 是校园时代的旧伙伴&#xff0c;当时他们想要解决一个可以改变世界的问题&#xff0c;由此引出这样一个想法&#xff1a;溺水的 Bismut 漂流到死…

RV32M指令集

RV32M指令集 1、乘法运算2、除法运算1、乘法运算 MUL 指令(得到整数32位乘积(64位中的低32位)) MUL 指令用于执行两个带符号或无符号整数之间的乘法运算。其语法如下: mul rd, rs1, rs2 它将寄存器 rs1 和 rs2 中的值相乘,并将结果写入寄存器 rd 中。如果 rs1 和 rs2 都是有…

catia零件装配时预览零件的形状

这样的显示方式看不到 选择大或中图标就可预览零件形状

基于STM32的智能水产养殖系统(二)

TPS5433IDR TPS5433IDR 是一款由德州仪器 (Texas Instruments) 生产的高效降压转换器&#xff08;Buck Converter&#xff09;。它能够将较高的输入电压转换为较低的输出电压&#xff0c;适用于各种电源管理应用。 主要特性 输入电压范围: 5.5V 至 36V输出电压范围: 0.9V 至 …

惊艳的短视频:成都科成博通文化传媒公司

惊艳的短视频&#xff1a;瞬间之美&#xff0c;震撼心灵 在数字化时代&#xff0c;短视频以其短小精悍、内容丰富的特点&#xff0c;迅速占领了我们的屏幕和时间。而在这个浩如烟海的视频海洋中&#xff0c;总有一些短视频能够脱颖而出&#xff0c;以其惊艳的视觉效果、深刻的…

设计模式-代理模式(结构型)

代理模式 代理模式是一种结构型模式&#xff0c;它可以通过一个类代理另一个类的功能。代理类持有被代理类的引用地址&#xff0c;负责将请求转发给代理类&#xff0c;并且可以在转发前后做一些处理 图解 角色 抽象主题&#xff08;Subject&#xff09;: 定义代理对象和被代理…

足球实况分析系统YOLO

① 足球运动员、裁判和球检测&#xff1b; ② 球员球队预测&#xff1b; ③ 足球地图上球员和球位置的估计&#xff1b; ④ 足球跟踪&#xff1b; 当你启动应用程序时&#xff0c;会自动加载两个演示视频以及推荐的设置和超参数. 1. 使用侧栏菜单“浏览文件”按钮上传视频…