【小白】一文读懂3DGS高斯泼溅技术

论文:《3D Gaussian Splatting for Real-Time Radiance Field Rendering》
代码:https://github.com/graphdeco-inria/gaussian-splatting
主页:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/

前言

3D Gaussian Splatting是最近NeRF方面的突破性工作,它的特点在于重建质量高的情况下还能接入传统光栅化,优化速度也快(能够在较少的训练时间,实现SOTA级别的NeRF的实时渲染效果,且可以以 1080p 分辨率进行高质量的实时(≥ 30 fps)新视图合成)。开山之作就是论文“3D Gaussian Splatting for Real-Time Radiance Field Rendering”是2023年SIGGRAPH最佳论文。

首先,3DGS可以认为是NeRF的一种,做的任务也是新视图的合成。

对于NeRF而言,它属于隐式几何表达(Implicit Geometry ),顾名思义,不表达点的具体位置,而表示点与点的关系。通过选取空间坐标作为采样点输入,隐式场景将输出这些点的几何密度是多少,颜色是什么。而所谓的神经隐式几何则是用神经网络转换上述输入输出的方法(输入三维空间坐标和观测视角,输出对应点的几何密度和颜色)。把光线上的一系列采样点加权积起来就渲染得到一个像素颜色,这便是NeRF神经辐射场渲染的流程。

既然有隐式,那么就有显式几何表达( Explicit geometry),就是类似点云、三角mesh这类可以沿着存储空间遍历所有元素。(通过某些方式,真正的把物体上的点都表示出来)

对于渲染,NeRF是非常典型的backward mapping过程,即计算出每个像素点受到每个体素影响的方式来生成最终图像,对每个像素,投出一条视线,并累积其颜色和不透明度。
而3DGaussian Splatting是forward mapping的过程,将每个体素视作一个模糊的球,投影到屏幕上。在Splatting中,我们计算出每个体素如何影响每个像素点。

摘要

辐射场方法最近彻底改变了用多张照片或视频捕获的场景的新颖视图合成。然而,实现高视觉质量仍然需要训练和渲染成本高昂的神经网络,而最近更快的方法不可避免地要牺牲速度来换取质量。对于无界和完整的场景(而不是孤立的对象)和1080p分辨率的渲染,目前没有任何方法可以实现实时显示速率。

本文介绍了三个关键要素,使我们能够在保持有竞争力的训练时间的同时实现最先进的视觉质量,重要的是能够在1080p分辨率下实现高质量的实时(≥30 fps)新视图合成。
首先,从相机校准过程中产生的稀疏点开始,我们用3D高斯分布表示场景,该分布保留了连续体辐射场的理想属性,用于场景优化,同时避免了在空白空间中不必要的计算;
其次,我们对三维高斯函数进行交错优化/密度控制,特别是优化各向异性协方差,以实现对场景的准确表示;
第三,我们开发了一种快速的可视性感知渲染算法,该算法支持各向异性飞溅,既加速了训练,又允许实时渲染。我们在几个已建立的数据集上展示了最先进的视觉质量和实时渲染。

一、介绍

网格和点是最常见的3D场景表示,因为它们是显式的,非常适合基于GPU/ cuda的快速光栅化。相比之下,最近的神经辐射场(NeRF)方法建立在连续场景表示的基础上,通常使用体积射线推进优化多层感知器(MLP),用于捕获场景的新视图合成。同样,迄今为止最有效的辐射场解决方案建立在连续表示的基础上,通过插值存储的值,例如体素或散列网格或点。
虽然这些方法的连续性有助于优化,但渲染所需的随机采样成本很高,并且可能导致噪声。我们引入了一种结合了两者优点的新方法:我们的3D高斯表示允许优化最先进的(SOTA)视觉质量和竞争性训练时间,而我们基于瓷砖的飞溅解决方案确保在几个先前发布的数据集上以1080p分辨率以SOTA质量实时渲染(见图1)。
在这里插入图片描述
我们的目标是允许对多张照片拍摄的场景进行实时渲染,并以优化时间创建表示,速度与之前针对典型真实场景的最有效方法一样快。

我们的解决方案基于三个主要组件。我们首先引入三维高斯函数作为灵活和富有表现力的场景表示。

我们从与以前类似nerf的方法相同的输入开始,即使用运动结构(SfM)校准的相机,并使用作为SfM过程的一部分免费生成的稀疏点云初始化3D高斯集。与大多数需要多视图立体(MVS)数据的基于点的解决方案相反,我们仅使用SfM点作为输入就获得了高质量的结果。请注意,对于nerf合成数据集,我们的方法即使在随机初始化的情况下也能达到高质量。我们证明了3D高斯图像是一个很好的选择,因为它们是一个可微的体积表示,但它们也可以通过将它们投影到2D并应用标准𝛼-blending来非常有效地栅格化,使用等效的图像形成模型作为NeRF。

我们方法的第二个组成部分是优化3D高斯函数的属性- 3D位置,不透明度,各向异性协方差和球面谐波(SH)系数-与自适应密度控制步骤交错,我们在优化过程中添加和偶尔删除3D高斯函数。优化过程产生了一个相当紧凑、非结构化和精确的场景表示(所有测试场景的1-5百万高斯)。

我们方法的第三个也是最后一个元素是我们的实时渲染解决方案,它使用快速GPU排序算法,并受到基于瓷砖的光栅化 tile-based rasterization的启发,遵循最近的工作。然而,由于我们的3D高斯表示,我们可以执行尊重可见性排序的各向异性飞溅(多亏了排序和𝛼blending),并通过跟踪尽可能多的排序飞溅的遍历来实现快速准确的向后传递。

综上所述,我们提供了以下贡献:
•引入各向异性3D高斯作为高质量,非结构化的辐射场表示。

•3D高斯属性的优化方法,与自适应密度控制交错,为捕获的场景创建高质量的表示。

•GPU的快速、可微分渲染方法,具有可视性感知,允许各向异性飞溅和快速反向传播,以实现高质量的新视图合成。

我们在先前发布的数据集上的结果表明,我们可以从多视图捕获中优化我们的3D高斯分布,并获得与之前最佳质量的隐式辐射场方法相同或更好的质量。我们还可以实现与最快方法相似的训练速度和质量,重要的是为新视图合成提供第一个高质量的实时渲染。

二、概况

我们方法的输入是一组静态场景的图像,以及由SfM校准的相应相机,这会产生稀疏的点云作为副作用。从这些点出发,我们创建了一组3D高斯函数,由位置(平均值)、协方差矩阵和不透明度参数定义,这允许非常灵活的优化机制。这导致了3D场景的合理紧凑的表示,部分原因是高度各向异性的体积片可以用来紧凑地表示精细的结构。辐射场的方向外观分量(颜色)通过球面谐波(SH)表示,遵循标准做法。我们的算法通过一系列三维高斯参数的优化步骤,即位置、协方差、rdr和SH系数与自适应控制高斯密度的操作交错,继续创建辐射场表示。

我们方法效率的关键是tile-based rasterizer快速光栅化,它允许𝛼-blending各向异性splats,由于快速排序,尊重可见性顺序。我们的快速光栅化器还包括一个快速的反向传递,通过跟踪累积的延迟值,没有限制可以接收梯度的高斯数。我们的方法概述如图2所示。
在这里插入图片描述

三、可微三维高斯溅射

我们的目标是从没有法线的稀疏点集(SfM)开始,优化一个场景表示,允许高质量的新视图合成。要做到这一点,我们需要一个原语,它继承了可微分体积表示的属性,同时是非结构化和显式的,以允许非常快速的渲染。我们选择3D高斯函数,它是可微分的,可以很容易地投影到2D splats上,允许快速𝛼-blending渲染。

我们的表示与之前使用2D点的方法相似,假设每个点都是一个具有法线的平面小圆。考虑到SfM点的极端稀疏性,估计法线是非常困难的。同样的,从这样的估计中优化非常嘈杂的正态线将是非常具有挑战性的。相反,我们将几何形状建模为一组不需要法线的3D高斯曲线。我们的高斯分布由一个完整的三维协方差矩阵Σ定义在世界空间中,以点(mean)为中心μ:
在这里插入图片描述
在我们的混合过程中,这个高斯值乘以α。

然而,我们需要将我们的3D高斯图像投影到2D进行渲染。给定观看变换矩阵𝑊,相机坐标下的协方差矩阵Σ’如下:
在这里插入图片描述
其中𝐽是投影变换的仿射近似的雅可比矩阵。

一个明显的方法是直接优化协方差矩阵Σ来获得代表辐射场的三维高斯函数。

然而,协方差矩阵只有在正半定时才有物理意义。对于我们的所有参数的优化,我们使用梯度下降,不能轻易地约束产生这样的有效矩阵,更新步骤和梯度可以很容易地创建无效的协方差矩阵。

因此,我们选择了一种更直观,但同样具有表现力的表示来进行优化。三维高斯函数的协方差矩阵Σ类似于描述椭球体的结构。给定缩放矩阵𝑆和旋转矩阵𝑅,我们可以找到对应的Σ:
在这里插入图片描述
为了允许独立优化这两个因素,我们将它们分开存储:用于缩放的3D向量𝑠和表示旋转的四元数𝑞。可以将它们简单地转换为各自的矩阵并组合起来,确保规范化𝑞以获得有效的单位四元数。

为了避免在训练过程中由于自动微分造成的巨大开销,我们明确地推导了所有参数的梯度。具体的导数计算细节略。

这种各向异性协方差的表示-适合于优化-允许我们优化3D高斯函数以适应捕获场景中不同形状的几何形状,从而产生相当紧凑的表示。图3说明了这些情况。
在这里插入图片描述
我们通过缩小60%(最右)来可视化优化后的3D高斯函数。这清楚地显示了优化后紧凑地表示复杂几何形状的三维高斯的各向异性形状。留下实际渲染的图像。

四、 三维高斯密度自适应控制优化

我们方法的核心是优化步骤,它创建一个密集的3D高斯集,准确地代表自由视图合成的场景。除了位置𝑝、α和协方差Σ之外,我们还优化了代表每个高斯的颜色𝑐的SH系数,以正确捕获场景的视图依赖外观。这些参数的优化与控制高斯密度的步骤交织在一起,以更好地表示场景。

4.1 优化

优化是基于渲染的连续迭代,并将结果图像与捕获数据集中的训练视图进行比较。不可避免地,由于3D到2D投影的模糊性,几何体可能会被错误地放置。因此,我们的优化需要能够创建几何体,并在几何体位置不正确时破坏或移动它。三维高斯分布的协方差参数的质量对于表示的紧凑性至关重要,因为大的均匀区域可以用少量的大各向异性高斯分布来捕获。

我们使用随机梯度下降技术进行优化,充分利用标准gpu加速框架,以及为某些操作添加自定义CUDA内核的能力,遵循最近的最佳实践。特别是,我们的快速光栅化对于优化的效率至关重要,因为它是优化的主要计算瓶颈。

我们使用sigmoid激活函数将其约束在[0−1)范围内并获得平滑梯度,出于类似的原因,我们使用指数激活函数用于协方差的尺度。

我们将初始协方差矩阵估计为各向同性高斯矩阵,其轴等于到最近的三个点的距离的平均值。

我们使用类似于Plenoxels的标准指数衰减调度技术,但仅用于位置。损失函数为L1结合D-SSIM项:
在这里插入图片描述
我们在所有的测试中都使用了λ=0.2。

4.2 高斯函数的自适应控制

我们从SfM的初始稀疏点集开始,然后应用我们的方法自适应地控制单位体积上的高斯点的数量及其密度,使我们能够从初始的高斯稀疏集到更密集的集,更好地代表场景,并具有正确的参数。在优化预热之后,我们每100次迭代进行一次密集化,并删除任何本质上透明的高斯分布,即在α小于阈值的情况下。

我们对高斯函数的自适应控制需要填充空白区域。它侧重于缺少几何特征的区域(“欠重建”),但也适用于场景中高斯分布覆盖大面积的区域(通常对应于“过度重建”)。两者都具有较大的视图空间位置梯度。直观地说,这可能是因为它们对应的区域还没有很好地重建,而优化试图移动高斯函数来纠正这一点。

由于这两种情况都是致密化的良好候选者,因此我们使用高于阈值𝜏pos的视图空间位置梯度的平均幅度来致密高斯函数,我们在测试中将其设置为0.0002。这一过程,如图4所示。
在这里插入图片描述
对于处于重建不足区域的小高斯函数,我们需要覆盖必须创建的新几何。对于这种情况,最好是克隆高斯函数,通过简单地创建一个相同大小的副本,并沿着位置梯度的方向移动它。

另一方面,高方差区域中的大高斯分布需要被分割成小高斯分布。我们用两个新的高斯函数来代替这样的高斯函数,并将它们的尺度除以我们实验确定的系数1.6。我们还通过使用原始的3D高斯作为采样的PDF来初始化它们的位置。

在第一种情况下,我们检测并处理增加系统的总体积和高斯数的需要,而在第二种情况下,我们保留总体积,但增加高斯数。与其他体积表示类似,我们的优化可能会遇到靠近输入摄像头的漂浮物;在我们的例子中,这可能会导致高斯密度的不合理增加。缓和高斯数目增加的一种有效方法是每3000轮将每一次操作的值设置为接近于零。
高斯分布可能会缩小或增长,并与其他分布有相当大的重叠,但我们会定期删除在世界空间中非常大的高斯分布和在视图空间中占用空间很大的高斯分布。这种策略可以很好地控制高斯函数的总数。我们模型中的高斯函数在欧几里得空间中始终保持原函数;与其他方法不同,我们不需要空间压缩、翘翘或投影策略来处理远距离或大型高斯分布。

五、 高斯函数的快速可微光栅化

我们的目标是实现快速的整体渲染和快速排序,以允许近似𝛼-blending -包括各向异性splats -并避免对可以接收以前工作中存在的梯度的splats数量的硬限制。

为了实现这些目标,我们设计了一个快速可微光栅器,灵感来自最近的软件光栅化方法,一次对整个图像进行预排序,避免了阻碍以前𝛼-blending解决方案的每像素排序的费用。我们的快速光栅化器允许在任意数量的混合高斯上进行有效的反向传播,并且额外的内存消耗很低,每像素只需要恒定的开销。我们的栅格化管道是完全可微的,并且给定2D投影可以栅格化各向异性片,类似于以前的2D飞溅方法。

我们的方法首先将屏幕分割为16×16块,然后针对视锥体和每个块继续剔除3D高斯。具体来说,我们只保留与视锥体相交的具有99%置信区间的高斯函数。此外,我们使用保护带在极端位置(即,那些接近近平面和远离视锥台的平均值)平凡地拒绝高斯,因为计算它们的投影二维协方差将是不稳定的。然后,我们根据麻木实例化每个高斯函数,并为每个实例分配一个键,该键结合了视图空间深度和瓷砖ID。然后,我们使用一个快速的GPU基数排序,基于这些键对高斯函数进行排序。注意,没有额外的逐像素点排序,并且混合是基于这个初始排序执行的。因此,我们的𝛼-blending在某些配置中是近似的。然而,当splats接近单个像素的大小时,这些近似值变得可以忽略不计。我们发现这种选择大大提高了训练和渲染性能,而不会在融合场景中产生可见的工件。

六、结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值