用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023

网格和点是最常见的可以用于基于 GPU/CUDA 快速光栅化的显式三维场景表征方式。而神经辐射场基于 MLP 使用体渲染对捕捉的场景化进行自由视角合成。而提升辐射场效率的方案目前多基于体素、哈希网格或是点。辐射场方法的连续性有助于场景的优化,但是渲染过程中所需的随机采样需要的花销较大同时会带来噪声。因此,在本文中,作者提出了一种新的方法:本文所提出的 3D 高斯表达在能达到 sota 视觉质量和可比的渲染时间的同时,本文所提出的基于 tile 的 Splatting 方法可以实时渲染 1080p 的结果。

作者:Bernhard Kerbl, Georgios Kopanas 等
来源:SIGGRAPH 2023
论文题目:3D Gaussian Splatting for Real-Time Radiance Field Rendering
论文链接:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/3d_gaussian_splatting_low.pdf
内容整理:王秋文

引言

用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023
图1 本文的方法可以进行实时的辐射场渲染并具有高质量的合成结果

总得来说,本文主要由以下三点贡献:

  • 引入了各向异性的 3D 高斯作为辐射场的高效、非结构化的表征。
  • 一种对 3D 高斯的性质进行优化的方法,与自适应密度控制相结合,可以为所捕捉的场景创造高质量的表征。
  • 一种快速可微、可微的对GPU的渲染方法,具有可见性,并允许各向异性的 Splatting 以及快速的反向传播,能够实现高质量的新视角合成。

方法

本文方法的输入是静态场景的一组图像,以及相应的相机使用 SfM 标定后产生的稀疏点云。根据这些点云,作者初始化了一组 3D 高斯,定义了点的位置、协方差矩阵以及不透明度 α。这可以产生一个合理的 3D 场景的紧凑表征,因为高度各向异性的体溅射可以被用于紧凑地表达精细结构。辐射场的直接外观组成是球面谐波函数。本文所提出的算法的收益来自于一系列对 3D 高斯的参数进行优化的步骤,伴随着自适应的高斯体密度通知。本文方法的有效性的关键来自于作者提出的基于 tile 的光栅化器,其允许各向异性 Splatting 的基于可视性顺序的 α 混合。本文的快速光栅化器还包括通过追踪累积 α 值实现的快速反向传递,而不限制可以接收梯度的高斯数。

用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023
图2 本文的流程示意图

可微的 3D Gaussian Splatting

本文的目的是优化一个从 SfM 得到的稀疏点集开始的允许高质量新视角合成的场景表征。为了达到这一目标,作者需要一个基元,其能够继承可微体积表征这一性质,同时是非结构化的和显式的,以允许非常快速的渲染。作者选择了 3D 高斯:可微并易于映射到二维平面,从而能够满足快速的α混合的渲染。

本文的高斯由一个全 3D 的协方差矩阵 ∑ 定义的,在世界坐标中中心位置为 μ:

用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023

在混合过程中高斯函数会与 α 相乘。

然而,我们在渲染过程中需要将三维高斯投影到二维。给定一个视角变换矩阵 W,那么相机坐标系下的协方差矩阵 ∑’ 为:

用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023

其中,J 是投影变换矩阵的的仿射近似的雅可比矩阵。一种显而易见的方法就是直接优化协方差矩阵来得到表征辐射场的高斯函数。然而,协方差矩阵只有在为半正定矩阵的时候才是有意义的,本文使用的梯度下降难以被轻易约束就能产生有效的协方差矩阵。因此,作者选择了一种更加直观,但是等效的表示进行优化。3D 高斯的协方差矩阵 类似描述一个椭球体的结构。给定一个缩放矩阵 ∑ 以及旋转矩阵 R,可以得到对应的协方差矩阵为:

用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023

为了实现这两个因素的独立优化,作者将它们分别存储:3D 矢量 s 用于表示缩放、四元数 q 以表示旋转。这些可以简单地转换为各自的矩阵并进行组合,并归一化 q 以获得有效的单位四元数。

伴随自适应密度控制的 3D 高斯优化

本文方法的核心就是优化步骤,可以产生一组密集的能够准确表示场景的 3D 高斯。除了位置 、 以及协方差 之外,还对每个高斯的表征颜色

的球谐系数进行了优化,以便重建视角依赖的场景外观。这些参数的优化与告诉的密度控制相结合,使得场景的表征更好。

优化

对辐射场的优化基于连续迭代的渲染,并将结果图像与数据集中捕捉到的训练视角进行比较。不可避免的是,由于 3D 到 2D 投影的模糊性,几何形状可能被错误地放置。因此,本文的优化需要能够创建几何以及消除或移动几何如果其位置不对的话。3D 高斯的协方差矩阵的参数的质量对于表征的紧凑程度来说非常重要,因为在大的均匀区域可以用少量的大的高斯进行表征。

作者使用 SGD 进行优化,并对 α 使用 sigmoid 激活函数限制其在 [0,1] 区间内并能获得光滑梯度,对协方差的缩放尺度使用指数激活。作者将初始的协方差矩阵估计为一个各向同性的高斯函数,其轴为到最近的三个点的距离的平均值,并对位置参数使用了与 Plenoxels 类似的标准指数衰减。损失函数还与一个 D-SSIM 项相结合:

用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023

在本文中,作者设定 λ = 0.2。

自适应高斯控制

作者从 SfM 初始化的稀疏点集开始,并能够自适应的控制告诉的数量和密度,使得作者可以将初始的随机高斯集优化为更密集的几何从而更好的表征场景。在优化一段时间后,每100次迭代会去除掉不透明度小于一定阈值 εn 的高斯。

本文的高斯自适应控制还需要填补空白的区域。我们需要关注确实几何特征的区域(欠重建),也需要关注高斯覆盖了更大面积的区域(超重建)。而这两种情况都会导致优化时视图空间对高斯的位置的梯度较大。更直观的说,这可能是因为它们对应于尚未得到较好重建的区域,在优化时试图移动高斯的位置来纠正这一点。

由于这两种情况都是优化高斯的所需情况,作者用高于阈值的视图空间位置梯度的平均大小来估计高斯τpos,在实验中设置为0.0002。这两种情况的示意图如图 3 所示。

用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023
图3 两种需要优化高斯个数的情况示例

对于处于欠重建区域的较小的高斯来说,作者需要创造新的几何。对于这种情况,最好可以克隆已有的高斯函数,通过简单地创建一个相同大小的副本,并沿着位置梯度的方向移动这一副本即可。

另一方面,具有高方差的大的高斯函数需要被分成更小的高斯。作者将这样的高斯函数替换为两个新的高斯,并将大小除以 ф = 1.6 得到新高斯函数的大小。作者还通过使用原始的高斯函数作为采样的 PDF 来获得新高斯函数的位置。

在第一种情况中,需要检测并实现增加系统总体积和高斯函数数目的需求,而在第二种情况下,高斯的总体积不变但是高斯的数量增加。这种优化可能会被靠近相机的浮动体所限制,并可能导致高斯密度的不合理增长。一种有效缓和此类高斯函数数目增长的方法就是每 N = 3000 代将高斯函数的 α 值设置为 0。这样的话,优化过程就会将所需的高斯函数的 α 不断增大,从而使得前述的高斯函数的剔除方法可以将 α 小于 εα 的高斯函数去除。除此外,作者偶尔会去除在世界空间或者视角空间中非常大的高斯函数以控制高斯函数的总的数目。

针对高斯函数的快速可微光栅化

本文的目的是进行快速进行整体渲染以及快速排序,以实现 α 混合,并避免了过去工作中存在的对 Splatting 数量的限制从而能够接收到梯度。为了达到这一目标,作者设计了一种基于 tile 的 Gaussian Splatting 以对整张图像进行高斯基元的预排序,从而不需要逐像素的对高斯函数进行排序。本文的快速光栅化允许在使用较低的额外存储消耗的情况下进行任意混合高斯函数的有效后向传播,对每个像素只需要常数级别的消耗。本文的光栅化流程全部是可微的。

首先,本文的方法将图像划分为 16x 16 的 tiles,并对视锥以及每个 tile 进行 3D 高斯的剔除。具体来说,作者只保留了 99% 的置信度区间在视锥内的高斯函数。另外,作者使用了一种保护机制来拒绝极端位置三维高斯函数,因为计算此类投影的二维协方差可能是不稳定的。接着,作者根据每个高斯函数覆盖的tile的数量对其进行实例化,并为每个实例分配一个结合了视图空间深度和 tile ID 的密钥。接着,依据这些密钥,作者使用单个快速 GPU 基数排序对这些高斯函数进行排序。在这里没有进行额外的逐像素的对点的排序,并依据初始化的排序进行混合。在对高斯进行排序后,作者通过识别 Splatting 到给定 tile 上的依据深度从近到远的顺序设定了一个列表。对于光栅化,作者为每个 tile 启动了一个线程块。每个线程块首先协作地将高斯包加在到共享的存储器中,然后对于每个给定的像素,按照列表从前到后的累计颜色和 α 值。当在一个像素中, α 值累积到目标饱和度后,对应的线程就会停止。每经过固定的间隔,一个 tile 中的线程就会被查询,当其中的所有像素都达到饱和度的时候这个 tile 就会终止。

实验

作者在 13 个真实场景上进行了实验,得到的客观指标结果和主观对比结果分别如图 4 和图 5 所示。

用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023
图4 本文方法与其他方法比较的客观指标结果
用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023
图5 本文方法与其他方法比较的主观对比结果

由结果可以看出,在渲染的质量以及效率方面,本文基于高斯的方法都达到了最好的结果。针对本文中提出的策略,作者进行了消融实验来证明这些方法的有效性。首先,针对高斯的初始化,使用 SfM 点云初始化以及随机初始化得到的结果如图 6 所示。

用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023
图6 不同初始化方法的结果对比

由结果可以看出,使用随机初始化高斯函数时,本文的方法不会完全失效,而会在背景部分相对表现较差,同时有更多在优化过程中难以移除的浮动体。对文中提出的对高斯函数个数进行修改的两种方法进行消融实验,分别移除两种策略并进行对比,结果如图 7 所示。

用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023
图7 对高斯函数个数修改的消融实验结果

从结果可以看出两种策略都可以使得场景的重建质量更高,其中如果没有对大高斯的分割策略,那么会在大面积细节较多的区域产生模糊的伪影;如果没有对小高斯的复制策略,那么在高频细节区域可能出现断点或者是间隔,两种情况都会导致合成效果明显地下降。

用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023
图8 限制接受梯度的点的个数的结果

如果限制了接收梯度的点的个数,那么会出现如图 8 所示的明显的伪影。如果将高斯函数的优化从全协方差优化的各向异性改为了选取其中一个维度的各向同性,那么得到的结果中可以明显地看出高斯表征的伪影,证明了各向异性优化的必要性。

用于实时辐射场渲染的 3D Gaussian Splatting | SIGGRAPH 2023
图9 高斯函数各向异性的对比实验

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论