3D高斯溅射:面向三维场景的实时渲染技术

1. 前言

高斯溅射技术【1】一经推出,立刻引起学术界和工业界的广泛关注。相比传统的隐式神经散射场渲染技术,高斯溅射依托椭球空间,显性地表示多目图像的三维空间关系,其计算效率和综合性能均有较大的提升,且更容易理解。可以预见,未来2年针对高斯溅射的应用研究将会迎来爆炸式发展。通过本篇博文,我和大家来一起了解高斯溅射技术,希望对有需要的同学提供一点帮助。


2. 简介

高斯溅射3D Guassian Splatting是2023年Siggraph发表的一项创新性技术,其基本的思路为利用运动结构恢复SfM【2】,从一组多目图像中估计一个显性的稀疏点云。对于该点云中的每一个点,构造一个类似散射场的高斯椭球概率预测模型,通过神经网络完成学习,获得每一个椭球的对应参数,进而得到一个类似体像素的离散表示,以支持多角度的体渲染和光栅化。

高斯椭球 起初,图形学几何表达并不局限于三角面片。基于椭球的三维几何表示一度被工程化,例如1994年发售的魔城迷踪ecstatica:知乎:3D Gaussian Splatting入门

实际的现实世界是离散的,面片的位置是确定的,即“空白”区域就是没有数据,可以用标量0表示,有实物的区域或者一个实体表面,就是有数据的,可以用标量1表示。针对现实世界,数据显然是不可微的,因为从无到有是一个标量从0到1的跳变。由于不可微,导致不能直接套用基于微分的优化方法。而神经散射场技术的成功之处在于针对三维世界建立了一个可微的体渲染方式已解决该问题。简单解释,就是对三维世界进行渲染时,一个区域是否有物体,不是一个非0即1的二值判断,而是一个概率的预测。即空间的每一个位置都有一个基于概率的数值。这样,从0到1的跳变就转换成了一个连续的概率变换。优点是使渲染或三维表示变得可微,缺点是不能准确的确定一个几何结构。由于对整个空间建立体概率预测,训练效率较低,即使使用了GPU并行加速和类似八叉树的结构优化,依然不能获得实时的渲染性能。这时,高斯椭球被重新采用。

神经散射场的问题在于无法将概率预测控制在一个可控的区域。高斯椭球提供了一个有效的解决方案,该技术将概率预测压缩在一个基于稀疏点云的多个高斯分布中。即每一个概率预测的计算都是以稀疏点云中的一个点为标定,一个特定的作用范围作为概率预测的界限。这样,体渲染面对的不是全局场景,而是椭球限定的一组小区域。全局优化被拆解为一组局部优化,对应的计算效率自然会有所提升。高斯溅射技术就是基于上述思路提出,以平衡渲染效率和精度。


3. 算法流程

算法输入为一个静态场景的一组多目视图。首先通过SfM技术产生一组稀疏点云。基于该点云的每一个点建立一个3D高斯模型,伴随一组参数,包括位置,协方差矩阵(变换),透明度还有颜色。由于每一个局部的高斯模型对应不同的参数,那么这种体渲染是各向异性的,具有比较好的灵活性。散射场的颜色对应一个球谐函数的解。在完成优化后,高斯模型的对应参数被学习获得,体渲染需要的信息被获知,即可通过光栅化实现三维渲染的可视化。

可微分的3D高斯溅射 使用一组3D高斯模型来表示几何,优点在于不需要精确估计法向量。高斯模型由一个定义在世界坐标系下的满秩3D协方差矩阵Σ,由中点𝜇定位:

上面的高斯模型经由透明度α累加合成。3D高斯是一个事实上的三维表达,同时也是一种概率散射场体渲染表示,最终通过2D光栅化呈现。协方差矩阵Σ可由缩放矩阵S和旋转矩阵R表示:

3D高斯的自适应优化 基于高斯模型,高斯溅射的核心技术为对模型内参数的优化,以获得一组显性的高斯椭球估计。由于高斯溅射需要考虑从3D到2D的映射,错误的几何估计是不可避免的。这时需要在优化过程删除错误的几何估计。作者使用了一个随机梯度下降技术,借助标准GPU加速结构,实现对高斯模型参数的高效优化。注:这里有一部分参数选择的介绍,以及当高斯覆盖区域过大而误差显著时,需要进行分割的实现细节,我并没有搞清楚,需要研究代码后再看。

基于高斯的光栅化 高斯溅射的目标是提供任意角度的2D渲染。从一组高斯模型中实现到图像的光栅化是一个需要面对的挑战。作者采用一种基于瓷砖的光栅化(tile-based rasterizer,是计算机图形学中的一种渲染技术。它将屏幕划分为小的矩形区域,称为瓷砖。每个瓷砖都独立处理,以减少冗余计算和内存访问)。首先将屏幕分成16*16个瓷砖,基于视锥体区域剔除域外高斯。利用估计的透明度α,对瓷砖进行排序,并为每一个瓷砖分配一个线程。对于一个像素,按照光栅化步骤,在视锥体中,逐个检索瓷砖,结合透明度与颜色,确定像素的具体信息。到此,整个高斯溅射的核心技术都已经做了简要的介绍。确实是一个非常巧妙且便于理解的体渲染方法。


实验结果:

可以看到,对场景种的一些细节,高斯溅射技术(第二列)能够获得更精确的结果。


参考文献:

[1] Kerbl B, Kopanas G, Leimkühler T, et al. 3D Gaussian Splatting for Real-Time Radiance Field Rendering[J]. ACM Transactions on Graphics, 2023, 42(4).

[2] Snavely N, Seitz S M, Szeliski R. Photo tourism: exploring photo collections in 3D[M]. ACM siggraph 2006 papers. 2006: 835-846.

[3] Lassner C, Zollhofer M. Pulsar: Efficient sphere-based neural rendering[C]. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 1440-1449.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LocalAI 部署(主要针对 mac m2 启动)

LocalAI 部署 介绍 LocalAI 是免费的开源 OpenAI 替代方案。 LocalAI 充当 REST API 的直接替代品,与本地推理的 OpenAI API 规范兼容。 它无需 GPU,还有多种用途集成,允许您使用消费级硬件在本地或本地运行 LLM、生成图像、音频等等&#…

字串变换(AcWing, NOIP2002提高组)

题目描述: 题目链接: https://www.acwing.com/problem/content/192/ 思路: 这个题是要求“最小步数”,比较容易想到是用BFS来进行搜索,但是直接BFS的话状态数太多了,时间复杂度会到:,其中L是字符串的长度,N是一个字符串的可能变换到的后继…

X图形

1.题目 这道题是蓝桥云课上面的一道题目,它是2022年蓝桥杯省模拟题,题目难度为简单。 考察的知识点为递归。 题目链接:X图形 2.思路 如何理解题意? 蓝桥杯的题目和Leetcode题目最大的不同点在于,蓝桥杯的题目大部…

MogaNet实战:使用MogaNet实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 论文:https://arxiv.org/pdf/2211.03295.pdf 作者多阶博弈论交互这一全新视角探索了现代卷积神经网络的表示能力。这种交互反映了不同尺度上下文中变量间的相互作用效…

tcp 中使用的定时器

定时器的使用场景主要有两种。 (1)周期性任务 这是定时器最常用的一种场景,比如 tcp 中的 keepalive 定时器,起到 tcp 连接的两端保活的作用,周期性发送数据包,如果对端回复报文,说明对端还活着…

【后端高频面试题--设计模式下篇】

🚀 作者 :“码上有前” 🚀 文章简介 :后端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 后端高频面试题--设计模式下篇 后端高频面试题--设计模式上篇设计模式总览模板方法模式怎么理解模…

2024年腾讯云4核8G12M服务器性能测评,适合哪些使用场景?

腾讯云4核8G服务器适合做什么?搭建网站博客、企业官网、小程序、小游戏后端服务器、电商应用、云盘和图床等均可以,腾讯云4核8G服务器可以选择轻量应用服务器4核8G12M或云服务器CVM,轻量服务器和标准型CVM服务器性能是差不多的,轻…

【c++基础】同构数

说明 同构数是这样一种数:它出现在它的平方数的右端。例如:5的平方是25,5就是同构数,25的平方是625,25也是同构数。 再比如:100以内的同构数有1 5 6 25 76这5个整数。 请编程计算出1~N之间(包…

算法村目录

大家好我是苏麟 , 这是算法村使用目录 . 算法通关村 从链表到动态规划的实战 目录 算法村开篇第一关 了解链表第二关 链表专题第三关 数组专题第四关 栈专题第五关 队列专题第六关 树专题第七关 二叉树遍历专题第八关 二叉树专题第九关 二分查找与二叉树专题第十关 快速排序与归…

传统推荐算法库使用--mahout初体验

文章目录 前言环境准备调用混合总结 前言 郑重声明:本博文做法仅限毕设糊弄老师使用,不建议生产环境使用!!! 老项目缝缝补补又是三年,本来是打算直接重写写个社区然后给毕设使用的。但是怎么说呢&#xff…

事理与事件知识图谱

目录 前言1 事件定义与事理逻辑1.1 事件定义1.2 事理逻辑 2 事理知识图谱与传统知识图谱的区别和联系2.1 事理知识图谱与传统知识图谱的区别2.2 事理知识图谱与传统知识图谱的联系 3 事理知识图谱中的关系3.1 顺承关系3.2 因果关系3.3 条件关系3.4 并发关系3.5 上下位关系 4 事…

HP Pavilion Laptop 15-cs3xxx原装出厂Win10.20H1系统

惠普笔记本HP Pavilion - 15-cs3030tx原厂Windows10系统镜像下载 链接:https://pan.baidu.com/s/1LmdJoN7F3BGvt49ovq-eww?pwdzgmt 提取码:zgmt 适用型号: 15-cs3001tx,15-cs3030tx,15-cs3031tx,15-cs…

每日一练:LeeCode-654、最大二叉树【二叉树+DFS+分治】

本文是力扣LeeCode-654、最大二叉树【二叉树DFS分治】 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐LeeCode。 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其…

最全面的Docker安装部署,配置镜像加速

安装Docker 卸载旧版 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 配置Docker的yum仓库 首先…

Codeforces Round 924 (Div. 2)B. Equalize(思维+双指针)

文章目录 题面链接题意题解代码 题面 链接 B. Equalize 题意 给一个数组 a a a,然后让你给这个数组加上一个排列,求出现最多的次数 题解 赛时没过不应该。 最开始很容易想到要去重,因为重复的元素对于答案是没有贡献的。 去重后排序。&a…

HTTP 超文本传送协议

1 超文本传送协议 HTTP HTTP 是面向事务的 (transaction-oriented) 应用层协议。 使用 TCP 连接进行可靠的传送。 定义了浏览器与万维网服务器通信的格式和规则。 是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。 H…

LLM大模型常见问题解答(2)

对大模型基本原理和架构的理解 大型语言模型如GPT(Generative Pre-trained Transformer)系列是基于自注意力机制的深度学习模型,主要用于处理和生成人类语言。 基本原理 自然语言理解:模型通过对大量文本数据的预训练&#xff…

LLM之RAG实战(二十五)| 使用LlamaIndex和BM25重排序实践

本文,我们将研究高级RAG方法的中的重排序优化方法以及其与普通RAG相比的关键差异。 一、什么是RAG? 检索增强生成(RAG)是一种复杂的自然语言处理方法,它包括两个不同的步骤:信息检索和生成语言建模。这种方…

【开源】JAVA+Vue.js实现车险自助理赔系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 车辆档案模块2.4 车辆理赔模块2.5 理赔照片模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 角色表3.2.2 车辆表3.2.3 理赔表3.2.4 理赔照片表 四、系统展示五、核心代码5.1 查询车…

【PyQt】10 QLineEdit

文章目录 前言一、回显模式(EchoMode)1.1 四种回显模式1.2 代码展示运行结果 二、校验器2.1 代码2.2 运行结果 三、通过掩码限制输入3.1 代码3.2 运行结果 总结 前言 1、QLineEdit 可以输入单行文字 2、回显模式 3、校验器 4、掩码输入 一、回显模式&am…
最新文章