3D 高斯泼溅(Gaussian Splatting)-3D重建的3DGS时代

3D重建自从NeRfs出现之后又热闹了一次,3D GS技术一时间燃变了整个三维重建和Slam领域,几个月不见,沧海桑田。

NeRF貌似已成为过去式,三维重建进入了3DGS时代,且3DGS在各方面比NeRF落地更快。3D 高斯泼溅(Splatting)是用于实时辐射场渲染的 3D 高斯分布描述的一种光栅化技术,它允许实时渲染从小图像样本中学习到的逼真场景。

2023 SIG Graph BestPaper : 3D  Gaussian Splatting for Real-Time Radiance Field Rendering。

SIGGRAPH 2023最佳论文公布!山大、港大获奖!北大、腾讯光子获提名-

从点云/多面体 到场景渲染,是一个异常 经验性的过程。2001年,Splatting 是一种将3D高斯分布投射到屏幕上的渲染方式,可以快速收敛和渲染,并与点云结合得到不错的重建质量。这个文章翻译的最详细:

一文带你入门 3D Gaussian Splatting -

部分摘抄:

总体的 pipeline

5.1 总体流程

论文中的总流程图:

系统首先对 SfM 点云进行了初始化,得到 3D 高斯球们,然后借助相机外参将点投影到图像平面上(即Splatting),接着用可微光栅化,渲染得到图像。得到渲染图像Image后,将其与Ground Truth图像比较求loss,并沿蓝色箭头反向传播。蓝色箭头向上,更新3D高斯中的参数,向下送入自适应密度控制中,更新点云。

5.2 SfM

SfM (Structure from Motion,运动恢复结构) 是一种从一组图像中估计出点云的方法。

SfM 初始化点云过程的主要步骤如下:

  • 对每一张图像,使用 SIFT、SURF、ORB 等算法提取特征点,并计算特征描述子。
  • 对相邻的图像,使用 KNN、FLANN 等算法进行特征匹配,筛选出满足一致性和稳定性的匹配对。
  • 对匹配的特征点,使用 RANSAC、LMedS 等算法进行异常值剔除,提高匹配的准确性。
  • 对匹配的特征点,使用多视图几何的约束,如基础矩阵、本质矩阵、单应矩阵等,进行相机位姿的估计,以及三维坐标点的三角化。
  • 对估计的相机位姿和三维坐标点,使用 BA(Bundle Adjustment)等算法进行优化,以减少重投影误差和累积误差。

初始点的示例:

5.3 自适应密度控制

初始化:3DGS 建议从 SfM 产生的稀疏点云初始化或随机初始化高斯,可以直接调用 COLMAP 库来完成这一步,然后进行点的密集化和剪枝以控制3D高斯的密度。当由于某种原因无法获得点云时,可以使用随机初始化来代替,但可能会降低最终的重建质量。

点密集化:在点密集化阶段,3DGS自适应地增加高斯的密度,以更好地捕捉场景的细节。该过程特别关注缺失几何特征或高斯过于分散的区域。密集化在一定数量的迭代后执行,比如100个迭代,针对在视图空间中具有较大位置梯度(即超过特定阈值)的高斯。其包括在未充分重建的区域克隆小高斯或在过度重建的区域分裂大高斯。对于克隆,创建高斯的复制体并朝着位置梯度移动。对于分裂,用两个较小的高斯替换一个大高斯,按照特定因子减小它们的尺度。这一步旨在于 3D 空间中寻求高斯的最佳分布和表示,增强重建的整体质量。

点的剪枝:点的剪枝阶段移除冗余或影响较小的高斯,可以在某种程度上看作是一种正则化过程。一般消除几乎是透明的高斯(α低于指定阈值)和在世界空间或视图空间中过大的高斯。此外,为防止输入相机附近的高斯密度不合理地增加,这些高斯会在固定次数的迭代后,将

设置为接近0的值。该步骤在保证高斯的精度和有效性的情况下,能节约计算资源。

5.4 优化

这部分,原始论文的伪代码已经足够清晰,我把它翻译成中文,各位细品一下。

6. 限制

优点

  1. 高品质、逼真的场景
  2. 快速、实时的渲染
  3. 更快的训练速度

缺点

  1. 防止模型优化中的“破碎”的高斯:点太大、太长、冗余等
  2. 更高的显存使用率 (4GB 用于显示,12GB 用于训练)
  3. 更大的磁盘占用 (每场景 1GB+)
  4. 与现有渲染管线不兼容

KeyPoint:与现有渲染管线不兼容,这个才是水论文领域最的重要一点。

7. 应用

  1. 同时定位与地图构建(SLAM)

SLAM是机器人学和自动系统的核心计算问题。它涉及机器人或设备在未知环境中理解其位置的同时,映射环境布局的挑战。SLAM在各种应用中至关重要,包括自动驾驶车辆、增强现实和机器人导航。SLAM的核心是创建一个未知环境的地图,并实时确定设备在此地图上的位置。因此,SLAM为计算密集型场景表示技术提出了巨大挑战,同时也是3D GS的良好测试平台。

  1. 动态场景建模

动态场景建模指的是捕捉和表示随时间变化的三维结构和场景外观的过程。这涉及创建一个数字模型,准确反映场景中对象的几何形状、运动和视觉方面的变化。动态场景建模在虚拟现实、增强现实、3D动画和计算机视觉等多个应用领域至关重要。4D 高斯散射(4D GS)将3D GS的概念扩展到动态场景。它包含了时间维度,允许表示和渲染随时间变化的场景。

  1. 人工智能生成内容(AIGC)

AIGC 指的是由人工智能系统自主创造或显著改变的数字内容,特别是在计算机视觉、自然语言处理和机器学习领域。AIGC的特点是它能模拟、扩展或增强人类生成的内容,使其应用范围从逼真的图像合成到动态叙事创作。AIGC的重要性在于其跨越娱乐、教育和技术发展等各个行业的变革潜力。它是数字内容创造不断演变景观中的关键要素,提供了与传统方法相比更具可扩展性、可定制性和通常更高效的替代方案。

后续:

各个实验室赶紧跟进,在稠密SLAM领域确实又惹火了一波。比如这个:GS-SLAM: Dense Visual SLAM with 3D Gaussian Splatting

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

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

相关文章

React里面useMemo和useCallBack的区别

useMemo 和 useCallback 接收的参数都是一样,第一个参数为回调,第二个参数为要依赖的数据。 相同部分:都是依赖数据发生变化,才会去更新缓存数据 不同部分: useMemo缓存的是二次计算的数据,主要用于缓存…

加密与解密(第四版)】第二十四章笔记

第二十四章 .NET平台加密解密 暂时不看 https://learn.microsoft.com/zh-cn/dotnet/core/introduction https://www.cnblogs.com/1996V/p/9037603.html https://zhuanlan.zhihu.com/p/134174688

Docker-数据卷的挂载

文章目录 数据卷概念数据卷实现机制数据卷特性数据卷操作数据卷挂载通用命令匿名挂载具名挂载数据卷继承容器数据卷只读容器数据卷读写-默认 总结 数据卷概念 为了很好的实现数据保存和数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合文…

Java(十)---抽象类和接口

文章目录 前言知识回顾1.抽象类1.1.抽象类语法1.2 抽象类特性 2.接口2.1.接口的概念2.2 语法规则2.3 接口使用2.4 接口特性2.5 实现多个接口 3.Object类3.1 获取对象信息3.2.对象比较equals方法 4.接口使用实例4.1.Comparable4.2.Comparator4.3.Cloneable深拷贝和浅拷贝 前言 …

Flutter 中的 Scaffold 小部件:全面指南

Flutter 中的 Scaffold 小部件:全面指南 在 Flutter 中,Scaffold 是一个非常重要的 widget,它为 Material Design 中的布局提供了一个基础的结构。Scaffold 通常作为应用的主要布局容器,提供了管理应用栏(AppBar&…

新定义RD8T36P48点亮LED--汇编

其实汇编和C语言差不多,简单的东西用汇编挺好,中等及以上复杂度的程序还是C语言更灵活 直接在keil新建好工程,选好芯片型号和下载方式,再创建一个.asm文件并添加到工程, 工程创建完如图 工程配置 代码 ORG 0000HL…

两数交换,数组查找奇数个数的数(位运算)

文章目录 一、异或运算:1.1 Demo1.2 面试题 一、异或运算: 1.1 Demo 0和N进行异或运算都等于N 任何一个数和自己异或运算都等于0 且异或运算满足交换率 a^b b^a eg: a 甲 , b 已 那么则有 a a^b ​ b a^b ​ a a^b 故有&am…

如何理解数字孪生?数字孪生三维可视化有什么关系?

随着科技的飞速发展和数字化转型的浪潮,数字孪生技术逐渐崭露头角,并在多个领域展现出巨大的潜力。而在这股技术革新的潮流中,数字孪生三维可视化以其直观、精确和动态的特点,成为了推动数字化转型的重要部分。 一、数字孪生的魅…

正则项学习笔记

目录 1. L2 正则化 岭回归 1.1 L2 norm计算例子 2. L1 正则化 3. 弹性网正则化 4. Dropout 1. L2 正则化 岭回归 在 PyTorch 中,L2 正则化通常通过设置优化器的 weight_decay 参数实现。以下是一个简单的例子: 介绍博文: 正则化(1)&a…

Java数据结构与算法(翻转二叉树)

前言 翻转二叉树的规则: 1.将二叉树所有节点以根节点为中心进行左右交换。 实现原理 递归实现:采用后续遍历的方式交换节点。同样也可以采用前序递归的方式,必须按分层替换。所以不可以用中序递归方式。 1.递归退出条件:节点的值为空,返回null。 2…

八国多语言微盘微交易所系统源码 单控点控 K线完好

安装环境linux NGMySQL5.6PHP7.2(函数全删)pm2管理器(node版本选择v12.20.0) config/ database.php 修改数据库链接 设置运行目录 public 伪静态thinkphp

C语言----深入理解指针(1)

1.内存地址 内存单元的编号 地址 指针 cpu访问内存中的某个字节空间,必须知道这个字节空间在内存的什么位置,而因为内存中字节很多,所以需要给内存进行编址 /int main() //{ // int a 20;//创建变量的本质其实是在内存中申请空间 //…

css左右滚动互不影响

想实现左右都可以滚动,且互不影响。 只需要再左边的css里面 .threedlist {cursor: pointer;width: 280px;position: fixed;height: 100vh; /* 定义父容器高度 */overflow-y: auto; /* 只有在内容超过父容器高度时才出现滚动条 */} 如果想取消滚动条样式 .threedli…

PHP深度探索:从基础到实战,打造高效Web应用

PHP深度探索:从基础到实战,打造高效Web应用 PHP基础概念与环境搭建PHP简介环境搭建 PHP基础语法输出与变量控制结构条件判断循环 函数与数组 实战案例:简易博客系统数据库连接文章发布功能表单提交提交处理 安全性与性能优化安全实践性能优化…

【设计模式深度剖析】【4】【创建型】【建造者模式】| 类比选购汽车的过程,加深理解

👈️上一篇:抽象工厂模式 | 下一篇:原型模式👉️ 目录 建造者模式概览定义英文原话直译如何理解呢?建造者模式将对象的建造过程给抽象出来了类比选购汽车 4个角色UML类图1. 抽象建造者(Builder)角色2. 具体建造者…

【Docker实操】启动redis服务

一、步骤 1、获取redis镜像 执行获取redis镜像命令&#xff1a;docker pull redis。打印镜像清单&#xff0c;可以看到新拉到的redis镜像。 2、创建redis.conf配置文件 linux主机 mkdir -p /root/www/redis/conf touch /root/www/redis/conf/redis.conf cat << EOF &…

三维焊接平台在新一代机器人生产中得到广泛应用-河北北重

随着智能制造行业的不断推进&#xff0c;三维焊接平台在工业机器人领域应用现象普遍。三维焊接平台、三维柔性焊接平台工装夹具也会在新一代机器人——智能机器人在工业生产中得到广泛应用。目前&#xff0c;三维焊接平台、焊接铸铁平台在工业机器人的主要作用是应用于弧焊、电…

内网穿透--Ngrok-入门-上线

免责声明:本文仅做技术交流与学习... 目录 Ngrok: 技术实现: 前提: 命令: 详细流程及图解: 平台Ngrok: Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器 支持的协议&#xff1a;tcp、http、https 支持的类型&#xff1a;正向代理、反向代理 --隧道开通免费的 --协议…

Flink集群搭建简介

一、下载与解压 前往Flink官方网站&#xff08;https://flink.apache.org/zh/downloads.html&#xff09;下载适合你环境的Flink版本。注意&#xff0c;你需要选择与你的Scala版本相匹配的Flink版本。将下载的安装包&#xff08;通常是.tgz格式&#xff09;传输到你的主节点&a…

第三代“图即代码”低代码平台设计

低代码平台现在市面上的产品大致分为两类&#xff0c;一种是“ 搭积木”类型的 这种类型的主要是一些行业定制的saas产品&#xff0c;是在已经成型或者是平台提供的垄断性资源上来做二次“搭建”这种平台优势在于能快速上手&#xff0c;有难度的都进行了“简化”和“特定场景”…