文章链接:https://arxiv.org/abs/2308.04079
文章目录
- Abstract
- 1 INTRODUCTION
- 2 RELATED WORK
-
- 2.1 传统场景重建与渲染
- 2.2 神经渲染与辐射场
- 2.3 基于点的渲染与辐射场
- 3 OVERVIEW
- 4 DIFFERENTIABLE 3D GAUSSIAN SPLATTING
- 5 OPTIMIZATION WITH ADAPTIVE DENSITY CONTROL OF 3D GAUSSIANS
-
- 5.1 优化
- 5.2 高斯的自适应控制
- 6 FAST DIFFERENTIABLE RASTERIZER FOR GAUSSIANS
- 7 IMPLEMENTATION, RESULTS AND EVALUATION
-
- 7.1 实现细节
-
- 优化细节
- 7.2 结果和评估
-
- 结果
- 真实场景
- 合成有界场景
- 紧凑性
- 7.3 消融实验
-
- 从SfM初始化
- 密化
- 具有梯度的点云碎片的无限深度复杂性
- 各向异性协方差
- 球面谐波
- 7.4 局限性
- 8 DISCUSSION AND CONCLUSIONS
- ACKNOWLEDGMENTS
Abstract
辐射场方法最近在基于多张照片或视频的场景新视角合成方面引发了革命。然而,要实现高视觉质量,仍需依赖昂贵的神经网络训练和渲染成本,而最近一些更快的方法则不可避免地在速度与质量之间做出了妥协。对于无边界的完整场景(而非孤立的物体)以及1080p分辨率的渲染,目前尚无方法能够实现实时显示(≥30帧/秒)。我们引入了三个关键要素,既能实现当前最先进的视觉质量,同时保持具有竞争力的训练时间,并且尤其能实现高质量的1080p分辨率实时新视角合成(≥30帧/秒)。
首先,从相机校准过程中生成的稀疏点出发,我们通过3D高斯体表示场景,保留了连续体积辐射场在场景优化中的理想特性,同时避免了在空白空间中的不必要计算;
其次,我们对3D高斯体进行交替的优化与密度控制,尤其是优化各向异性协方差以实现场景的精确表示;
第三,我们开发了一种快速的、支持各向异性喷溅的可见性感知渲染算法,这种算法不仅加速了训练,还实现了实时渲染。
我们在多个公认的数据集上展示了最先进的视觉质量和实时渲染效果。
CCS 概念
• 计算方法学 → 渲染;基于点的模型;光栅化;机器学习方法。
附加关键词和短语
新视角合成、辐射场、3D 高斯体、实时渲染。
ACM 参考格式
Bernhard Kerbl, Georgios Kopanas, Thomas Leimkühler, and George Drettakis. 2023. 3D Gaussian Splatting for Real-Time Radiance Field Rendering. ACM Transactions on Graphics, 42, 4, Article 1 (August 2023), 14 pages. https://doi.org/10.1145/3592433
图1. 我们的方法实现了实时渲染辐射场,并且其质量与之前质量最佳的方法 [Barron et al. 2022] 相当,同时优化时间仅与最快的现有方法 [Fridovich-Keil 和 Yu 等, 2022;Müller 等, 2022] 相媲美。其性能的关键在于采用了一种新颖的 3D 高斯场景表示,并结合实时可微渲染器,这大大加速了场景优化和新视图合成。值得注意的是,在与 InstantNGP [Müller et al. 2022] 相当的训练时间下,我们达到了与其相似的质量;而这是它们所能达到的最大质量,通过训练 51 分钟,我们实现了最先进的质量,甚至略优于 Mip-NeRF360 [Barron et al. 2022]。
1 INTRODUCTION
网格和点是最常见的3D场景表示方法,因为它们是显式的,并且非常适合于基于GPU/CUDA的快速光栅化。与此不同,最近的神经辐射场(NeRF)方法基于连续场景表示,通常通过使用体积射线行进(volumetric ray-marching)优化多层感知机(MLP)来进行捕获场景的新视角合成。类似地,迄今为止,最有效的辐射场解决方案也建立在连续表示上,通过插值存储在例如体素 [Fridovich-Keil 和 Yu 等 2022]、哈希 [Müller 等 2022] 网格或点 [Xu 等 2022] 中的值进行优化。尽管这些方法的连续性有助于优化,但渲染时所需的随机采样代价较高,且可能导致噪声。我们提出了一种新的方法,结合了两者的优点:我们的3D高斯体表示在优化时能提供最先进的视觉质量和竞争力的训练时间,而我们的基于瓦片的喷溅(splatting)解决方案则确保在多个已发布的数据集上,以最先进的质量实现1080p分辨率的实时渲染 [Barron 等 2022; Hedman 等 2018; Knapitsch 等 2017](见图1)。
我们的目标是为使用多张照片捕获的场景实现实时渲染,并使表示优化时间与典型实际场景的最有效先前方法一样快。最近的方法实现了快速训练 [Fridovich-Keil 和 Yu 等 2022;Müller 等 2022],但难以达到当前最先进的NeRF方法(如Mip-NeRF360 [Barron 等 2022])所获得的视觉质量,这些方法需要高达48小时的训练时间。快速但较低质量的辐射场方法可以根据场景实现交互式渲染时间(每秒10-15帧),但在高分辨率下无法实现实时渲染。
我们的解决方案基于三个主要组件。我们首先引入3D高斯体作为一种灵活且表现力强的场景表示。我们从与之前的NeRF类似的方法相同的输入开始,即通过结构光束法(SfM)[Snavely 等 2006]校准的相机,并用SfM过程中免费生成的稀疏点云初始化3D高斯体集。与大多数基于点的解决方案不同,这些方法需要多视角立体(MVS)数据 [Aliev 等 2020;Kopanas 等 2021;Rückert 等 2022],而我们仅凭SfM点即可实现高质量结果。需要注意的是,对于NeRF合成数据集,我们的方法即使在随机初始化的情况下也能取得高质量的效果。我们展示了3D高斯体是一种极好的选择,因为它们是可微分的体积表示,但也可以通过将它们投影到2D并应用标准的𝛼-混合(𝛼-blending)来非常高效地进行光栅化,使用与NeRF相同的图像形成模型。我们方法的第二个组件是对3D高斯体的属性进行优化——3D位置、不透明度𝛼、各向异性协方差和球面调和(SH)系数——并与自适应密度控制步骤交替进行,在优化过程中我们会添加和偶尔移除3D高斯体。优化过程生成了一个相对紧凑、无结构且精确的场景表示(所有测试场景的高斯体数量在1-5百万之间)。我们方法的第三个也是最后一个组件是我们的实时渲染解决方案,该方案利用快速的GPU排序算法,并借鉴了基于瓦片的光栅化技术 [Lassner 和 Zollhofer 2021]。然而,由于我们采用了3D高斯体表示,我们可以执行尊重可见性顺序的各向异性喷溅(anisotropic splatting)——通过排序和𝛼-混合实现——并通过跟踪所需数量的排序喷溅,实现快速且准确的反向传播。
总结来说,我们的贡献包括以下几点:
- 引入了各向异性3D高斯体作为辐射场的高质量、无结构表示。
- 提出了一种3D高斯体属性优化方法,并与自适应密度控制交替进行,从而为捕获的场景创建高质量的表示。
- 提供了一种快速、可微分的GPU渲染方法,该方法具备可见性感知,支持各向异性喷溅并加速反向传播,实现高质量的新视角合成。
我们在多个已发布的数据集上的结果表明,我们可以通过多视角捕获优化3D高斯体,并实现与最优的隐式辐射场方法相当或更好的质量。此外,我们还能够实现与最快方法相似的训练速度和质量,并且首次为新视角合成提供高质量的实时渲染。
2 RELATED WORK
总结来说,我们首先简要回顾了传统的重建方法,然后讨论了基于点的渲染和辐射场的研究,并讨论了它们的相似性;辐射场是一个庞大的研究领域,因此我们只关注直接相关的工作。对于该领域的完整覆盖,请参阅最近的优秀综述文献 [Tewari et al. 2022; Xie et al. 2022]。
2.1 传统场景重建与渲染
最早的新的视角合成方法基于光场,最初采用密集采样 [Gortler et al. 1996; Levoy and Hanrahan 1996],随后允许非结构化捕获 [Buehler et al. 2001]。结构光(SfM)[Snavely et al. 2006]的出现开启了一个全新的领域,在这个领域中,一组照片可以用来合成新的视角。SfM通过相机标定估计出稀疏的点云,最初用于简单的3D空间可视化。随后,多视角立体(MVS)技术产生了令人印象深刻的完整3D重建算法 [Goesele et al. 2007],并促进了多个视图合成算法的发展 [Chaurasia et al. 2013; Eisemann et al. 2008; Hedman et al. 2018; Kopanas et al. 2021]。这些方法都将输入图像重新投影并合成到新视角相机中,并使用几何信息来引导这种重新投影。尽管这些方法在许多情况下取得了出色的效果,但通常不能完全恢复未重建区域,或者在MVS生成不存在的几何体时会出现“过度重建”问题。最近的神经渲染算法 [Tewari et al. 2022] 大大减少了这些伪影,并避免了将所有输入图像存储在GPU上的巨大成本,在大多数方面超越了这些方法。
2.2 神经渲染与辐射场
深度学习技术早期就被应用于新视角合成 [Flynn et al. 2016; Zhou et al. 2016];CNN被用于估计混合权重 [Hedman et al. 2018],或用于纹理空间的解决方案 [Riegler and Koltun 2020; Thies et al. 2019]。基于MVS的几何数据是大多数这些方法的主要缺点;此外,使用CNN进行最终渲染时,常常会导致时间闪烁。
基于体积表示的新视角合成最早由Soft3D [Penner and Zhang 2017]提出;随后,结合体积光线行进的深度学习方法被提出 [Henzler et al. 2019; Sitzmann et al. 2019],利用连续可微分的密度场来表示几何体。使用体积光线行进进行渲染的成本较高,因为需要大量的样本来查询体积。神经辐射场(NeRF)[Mildenhall et al. 2020]引入了重要性采样和位置编码来提高质量,但使用了大型的多层感知机(MLP),这对速度产生了负面影响。NeRF的成功促使了大量后续方法的出现,这些方法通过引入正则化策略来解决质量和速度的问题;当前的新视角合成图像质量的最先进方法是Mip-NeRF360 [Barron et al. 2022]。尽管渲染质量非常优秀,但训练和渲染时间依然极高;我们能够在提供快速训练和实时渲染的同时,达到或在某些情况下超越这种质量。
最近的方法集中在更快的训练和/或渲染,通常通过三种设计选择来实现:使用空间数据结构来存储(神经)特征,这些特征随后在体积光线行进过程中进行插值,不同的编码方式,以及MLP的容量。这些方法包括空间离散化的不同变体 [Chen et al. 2022b,a; Fridovich-Keil and Yu et al. 2022; Garbin et al. 2021; Hedman et al. 2021; Reiser et al. 2021; Takikawa et al. 2021; Wu et al. 2022; Yu et al. 2021],代码本 [Takikawa et al. 2022],以及哈希表编码 [Müller et al. 2022],这些方法允许使用更小的MLP,或完全舍弃神经网络 [Fridovich-Keil and Yu et al. 2022; Sun et al. 2022]。
其中最著名的这些方法是InstantNGP [Müller et al. 2022],它使用哈希网格和占据网格来加速计算,并使用更小的MLP来表示密度和外观;以及Plenoxels [Fridovich-Keil and Yu et al. 2022],它使用稀疏体素网格来插值连续密度场,能够完全舍弃神经网络。两者都依赖于球面谐波:前者直接表示方向性效应,后者用来编码输入到颜色网络的内容。尽管这两种方法提供了出色的结果,但它们仍然可能在表示空白区域时存在困难,这在一定程度上取决于场景/捕获类型。此外,图像质量在很大程度上受限于加速所使用的结构化网格的选择,而渲染速度则受限于每个光线行进步骤中需要查询大量样本。我们使用的无结构、显式、适合GPU的3D高斯体在没有神经网络的情况下实现了更快的渲染速度和更好的质量。
2.3 基于点的渲染与辐射场
基于点的方法有效地渲染离散且非结构化的几何体样本(即点云)[Gross and Pfister 2011]。在最简单的形式中,点样本渲染 [Grossman and Dally 1998] 使用固定大小的非结构化点集进行光栅化,通常利用图形API本地支持的点类型 [Sainz and Pajarola 2004] 或在GPU上进行并行软件光栅化 [Laine and Karras 2011; Schütz et al. 2022]。尽管忠实于底层数据,点样本渲染存在孔洞、引发锯齿效应并且严格不连续。针对这些问题,高质量基于点的渲染工作提出了通过“喷溅”点原语来解决这些问题,其中点的范围大于像素,例如圆形或椭圆盘、椭球体或表面元素(surfels)[Botsch et al. 2005; Pfister et al. 2000; Ren et al. 2002; Zwicker et al. 2001b]。
最近,对可微分基于点的渲染技术也产生了兴趣 [Wiles et al. 2020; Yifan et al. 2019]。通过将神经特征与点结合,并使用CNN进行渲染 [Aliev et al. 2020; Rückert et al. 2022],实现了快速甚至实时的视角合成;然而,它们仍然依赖于MVS来获取初始几何体,因此继承了MVS的伪影,特别是在特征缺乏/光滑区域或薄结构的困难情况下,存在过度或不足重建的问题。
基于点的 𝛼-混合与NeRF风格的体积渲染共享基本相同的图像生成模型。具体而言,颜色 𝐶 是通过沿光线进行体积渲染得到的:
C = ∑ i = 1 N T i ( 1 − exp ( − σ i δ i ) ) c i , with T i = exp ( − ∑ j = 1 i − 1 σ j δ j ) (1) C = \sum_{i=1}^N T_i \left(1 - \exp(-\sigma_i \delta_i)\right)c_i, \quad \text{with} \quad T_i = \exp\left(-\sum_{j=1}^{i-1} \sigma_j \delta_j\right)\tag{1} C=i=1∑NTi(1−exp(−σiδi))c