​3D 高斯点染简介

2023-12-26 13:36
文章标签 3d 简介 高斯 点染

本文主要是介绍​3D 高斯点染简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3D 高斯点染技术由 3D Gaussian Splatting for Real-Time Radiance Field Rendering 一文首次提出。作为一种栅格化技术,3D 高斯点染可用于实时且逼真地渲染从一小组图像中学到的场景。本文将详细介绍其工作原理并讨论其对图形学的未来会带来什么影响。

什么是 3D 高斯点染?

3D 高斯点染本质上是一种栅格化技术。也就是说:

  1. 我们有场景描述数据;

  2. 我们会把这些数据在屏幕上渲染出来。

大家可能对计算机图形学中的三角形栅格化比较熟悉,其通过在屏幕上渲染许多三角形的方式来绘制图形。

cb9a2b2081c84298155bd2c5b5837c75.png

其实 3D 高斯点染与三角形栅格化是一样的,只不过把基本绘图元素从三角形换成了高斯图像。下图给出了高斯图像的一个例子,为清晰起见,我们标出了它的边框。

10ec5055442b80c7e7908e34579b49eb.png

每个高斯图像可由以下参数来描述:

  • 位置: 所在位置 (XYZ)

  • 协方差: 缩放程度 (3x3 矩阵)

  • 颜色: 颜色 (RGB)

  • Alpha: 透明度 (α)

在实践中,我们通过在屏幕上绘制多个高斯图像,从而画出想要的图像。

329024768a4fc7db9a340252981b823f.png

上图是由 3 个高斯图像渲染出的图像。那么用 700 万个高斯图像可能会渲染出怎样的图像呢?看看下图:

3aa11288b7bc99f74a6c07a3d77b657c.png

如果这 700 万个高斯图像每个都完全不透明的话,渲染出的图像又会怎么样呢?如下:

5bb7b565f4351250e19ef19c8545c911.png

以上,我们对 3D 高斯点染有了一个初步的认识。接下来,我们了解一下点染的具体过程。

点染过程

1. 从运动中恢复出结构

第一步是使用运动恢复结构 (Structure from Motion,SfM) 方法从一组图像中估计出点云。SfM 方法可以让我们从一组 2D 图像中估计出 3D 点云。我们可以直接调用 COLMAP 库来完成这一步。

d6a7a93323e96029e799e9213cf66536.png

2. 用高斯图像对云中的每个点进行建模

接下来,把每个点建模成一个 3D 高斯图像。从 SfM 数据中,我们能推断出每个高斯图像的位置和颜色。这对于一般的栅格化已经够用了,但如果要产生更高质量的表征的话,我们还需要对每个高斯图像进行训练,以推断出更精细的位置和颜色,并推断出协方差和透明度。

3. 训练

与神经网络类似,我们使用随机梯度下降法进行训练,但这里没有神经网络的层的概念 (都是 3D 高斯函数)。训练步骤如下:

  1. 用当前所有可微高斯图像渲染出图像 (稍后详细介绍)

  2. 根据渲染图像和真实图像之间的差异计算损失

  3. 根据损失调整每个高斯图像的参数

  4. 根据情况对当前相关高斯图像进行自动致密化及修剪

步骤 1-3 比较简单,下面我们稍微解释一下第 4 步的工作:

  • 如果某高斯图像的梯度很大 (即它错得比较离谱),则对其进行分割或克隆

    • 如果该高斯图像很小,则克隆它

    • 如果该高斯图像很大,则将其分割

  • 如果该高斯图像的 alpha 太低,则将其删除

这么做能帮助高斯图像更好地拟合精细的细节,同时修剪掉不必要的高斯图像。

4. 可微高斯栅格化

如前所述,3D 高斯点染是一种 栅格化 方法,即我们可以用其将数据渲染到屏幕上。作为众多栅格化方法的 其中之一 ,它有两个特点:

  1. 可微

你可在 此处 找到可微高斯渲染器的原始实现。其主要步骤为:

  1. 针对给定相机视角,把每个 3D 高斯图像投影到 2D。

  2. 按深度对高斯图像进行排序。

  3. 对每个像素,从前到后计算每个高斯函数在该像素点的值,并将所有值混合以得到最终像素值。

更多细节及优化可参阅 论文。

渲染器可微这一点很重要,因为这样我们就可以用随机梯度下降法来训练它。但这一点仅对训练阶段很重要,训后的高斯函数是可以用不可微的方式来表示的。

有啥用?

为什么 3D 高斯点染受到如此多的关注?最直接的原因是其非凡的实力。有了它,对高画质场景的实时渲染成为了可能。有了这个能力,我们可以解锁更多可能的应用。

比如说,可以用它来渲染动画吗?即将发表的论文 Dynamic 3D Gaussians: tracking by Persistent Dynamic View Synthesis 似乎表明这有戏。还有更多其他问题有待研究。它能对反射进行建模吗?可以不经参考图像的训练就直接建模吗……

最后,当前人们对 具身智能 (Embodied AI) 兴趣日隆。但作为人工智能的一个研究领域,当前最先进的具身智能的性能仍然比人类低好几个数量级,其中大部分的挑战在 3D 空间的表示上。鉴于 3D 高斯分布可以产生致密的 3D 空间表示,这对具身智能研究有何影响?

所有这些问题都引发了人们对 3D 高斯点染的广泛关注。时间会告诉我们答案!

图形学的未来

3D 高斯点染会左右图形学的未来吗?我们先来看下该方法的优缺点:

优点

  1. 高品质、逼真的场景

  2. 快速、实时的渲染

  3. 更快的训练速度

缺点

  1. 更高的显存使用率 (4GB 用于显示,12GB 用于训练)

  2. 更大的磁盘占用 (每场景 1GB+)

  3. 与现有渲染管线不兼容

  4. 仅能绘制静态图像 (当前)

到目前为止,3D 高斯点染的 CUDA 原始实现尚未与 Vulkan、DirectX、WebGPU 等产品级渲染管道进行适配,因此尚不清楚其会对现有渲染管线带来什么影响。

已有的适配如下:

  1. 远程显示器

  2. WebGPU 显示器

  3. WebGL 显示器

  4. Unity 显示器

  5. 优化过的 WebGL 显示器

这些显示器要么依赖于远程流式传输 (1),要么依赖于传统的基于 2x2 像素块的栅格化方法 (2-5)。虽然基于 2x2 像素块的方法与数十年来的图形技术兼容,但它可能会导致质量/性能的降低。然而,第 5 个显示器 的工作又表明,尽管采用基于 2x2 像素块的方法,通过巧妙的优化我们仍可以达到高的质量及性能。

那么有没有可能需要针对生产环境重实现 3D 高斯点染代码呢?答案是 有可能 。当前主要的性能瓶颈在对数百万个高斯图像进行排序上,在论文的原始实现中,这一过程是通过 CUB 库的基数排序 原语来高效实现的,但该高性能原语仅在 CUDA 中可用。我们相信,经过努力,其他渲染管线也可以达到相仿的性能水平。

如果你有任何问题或有兴趣加入我们的工作,请加入 Hugging Face Discord!

🤗 宝子们可以戳 阅读原文 查看文中所有的外部链接哟!


英文原文: https://hf.co/blog/gaussian-splatting

原文作者: Dylan Ebert

译者: Matrix Yao (姚伟峰),英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的应用及大规模模型的训练推理

这篇关于​3D 高斯点染简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/539606

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

【机器学习】高斯网络的基本概念和应用领域

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Process)1.2 高斯混合模型(Gaussian Mixture Model)1.3 应用1.4 总结 二、高斯网络的应用2.1 机器学习2.2 统计学2.3

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

SaaS、PaaS、IaaS简介

云计算、云服务、云平台……现在“云”已成了一个家喻户晓的概念,但PaaS, IaaS 和SaaS的区别估计还没有那么多的人分得清,下面就分别向大家普及一下它们的基本概念: SaaS 软件即服务 SaaS是Software-as-a-Service的简称,意思是软件即服务。随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。 它是一种通过Internet提供