【论文笔记】A Survey on 3D Gaussian Splatting

发布时间:2024年01月20日

原文链接:https://arxiv.org/abs/2401.03890

1. 引言

NeRF在计算效率和可控性上具有局限性,这导致了3D高斯溅射(3D GS)的出现,重新定义了场景表达和渲染。

3D GS通过引入新的场景表达技术,用大量的3D高斯表达场景。3D GS使用显式的表达和高度并行化的工作流程,促进高效计算和渲染;其创新在于混合了可微渲染与基于点的渲染技术的优势。3D GS保留了连续体积辐射场的理想特性(有利于高质量图像渲染),同时避免了渲染空空间带来的计算开销。此外,3D GS的显式表达提供了对场景的动态控制能力。

2. 背景

2.1 问题定义

2.1.1 辐射场

辐射场是3D空间中光分布的表达,捕捉了环境中光与表面和材料的交互。神经场可表达为函数 L : R 5 → R + L:\mathbb{R}^5\rightarrow\mathbb{R}^+ L:R5R+,其中 L ( x , y , z , θ , ? ) L(x,y,z,\theta,\phi) L(x,y,z,θ,?)将点 ( x , y , z ) (x,y,z) (x,y,z)和球坐标下的方向 ( θ , ? ) (\theta,\phi) (θ,?)映射为非负辐射值。辐射场有显示表达和隐式表达。

2.1.2 隐式辐射场

隐式辐射场不显式地定义场景几何,通常使用神经网络学习连续体积场景表达。其代表NeRF使用MLP将坐标与视线方向映射为密度和颜色,不会显式存储,而是通过查询神经网络在线计算:
L implicit ( x , y , z , θ , ? ) = NeuralNetwork ( x , y , z , θ , ? ) L_\text{implicit}(x,y,z,\theta,\phi)=\text{NeuralNetwork}(x,y,z,\theta,\phi) Limplicit?(x,y,z,θ,?)=NeuralNetwork(x,y,z,θ,?)

这一形式允许复制场景可微且紧凑的表达,但渲染时的射线行进有较高的计算复杂度。

2.1.3 显式辐射场

显式辐射场直接在离散空间结构中表达光的分布,如体素或点集。结构中的每个元素存储了相应位置的辐射信息。这一方法通常能更直接、更快地获取辐射数据,但需要大量存储空间,且分辨率可能受限。通常形式为:
L explicit ( x , y , z , θ , ? ) = DataStructure [ ( x , y , z ) ] ? f ( θ , ? ) L_\text{explicit}(x,y,z,\theta,\phi)=\text{DataStructure}[(x,y,z)]\cdot f(\theta,\phi) Lexplicit?(x,y,z,θ,?)=DataStructure[(x,y,z)]?f(θ,?)

其中 DataStructure \text{DataStructure} DataStructure为网格或点云, f f f为基于视线方向修改辐射的函数。

2.1.4 3D高斯溅射

3D GS使用3D高斯作为灵活且高效的表达,从而利用了隐式和显式辐射场的优势。高斯可通过基于神经网络的优化来精确表达场景,但进行的是显式、结构化的数据存储。这种混合方法能进行高质量渲染,且训练更快、有实时性。3D高斯表达可表示为:
L 3DGS ( x , y , z , θ , ? ) = ∑ i G ( x , y , z , μ i , Σ i ) ? c i ( θ , ? ) L_\text{3DGS}(x,y,z,\theta,\phi)=\sum_iG(x,y,z,\mu_i,\Sigma_i)\cdot c_i(\theta,\phi) L3DGS?(x,y,z,θ,?)=i?G(x,y,z,μi?,Σi?)?ci?(θ,?)

其中 G G G为高斯函数,均值为 μ i \mu_i μi?,方差为 Σ i \Sigma_i Σi? c i c_i ci?表示视线相关的颜色。

2.2 上下文和术语

2.2.1 场景重建和渲染

场景重建:从一组图像或其它数据建立场景的3D模型。
渲染:将计算机可读取的信息(如场景中的3D物体)转化为图像。
早期技术基于光场生成逼真的图像,运动恢复结构(SfM)与多视图立体(MVS)算法通过从图像序列估计3D结构来增强光场。

2.2.2 神经渲染和辐射场

神经渲染:通过将深度学习与传统图形技术结合生成图像。早期方法使用CNN估计混合权重或纹理空间解。
辐射场:函数表达,描述从各方向穿过空间各点的光的量。NeRF使用神经网络建模辐射场。

2.2.3 体积表达和射线行进

体积表达:不仅将物体和场景表达为表面,还表达为填充了材料或空空间的“体”。这样可以对如雾、烟或半透明材料进行更精确的渲染。
射线行进:是体积表达渲染图像的技术,通过增量跟踪穿过“体”的光线来渲染图像。NeRF引入重要性采样和位置编码增强合成图像的质量。但这一方法计算量大。

2.2.4 基于点的渲染

基于点的渲染使用点而非传统的多边形可视化3D场景,对复杂、无结构或稀疏几何数据的渲染非常高效。点可以使用可学习神经描述符增强特征。但这一方法会导致渲染中出现孔或混叠现象。3D GS通过使用各向异性高斯进行更连贯的场景表达。

3. 3D高斯用于显式辐射场

3D高斯可以进行实时、高分辨率的图像渲染,而无需依赖神经成分。

3.1 使用学习的3D高斯进行新视图合成

现有由大量3D高斯表达的场景,目的是生成特定视角下的相机图像。NeRF使用射线行进采样点,影响其实时性;而3D GS将3D高斯投影到图像平面,称为“溅射”,如下图所示。然后对高斯进行排序,并计算各像素的值。NeRF和3D GS的渲染可视为互逆关系。
在这里插入图片描述

  • 3D高斯的属性:一个3D高斯的属性包括,中心(位置) μ \mu μ,不透明度 α \alpha α,3D协方差矩阵 Σ \Sigma Σ,颜色 c c c。其中 c c c与视角相关,由球面谐波表达。所有属性均可学习,并通过反向传播优化。

  • 视域剔除:给定特定的相机姿态,该步骤会判断哪些高斯位于相机的视锥外,并在后续步骤中剔除之,以节省计算。

  • 溅射:3D高斯(椭球)被投影到2D图像平面(椭圆)进行渲染。给定视图变换 W W W和3D协方差矩阵 Σ \Sigma Σ,投影的2D协方差矩阵 Σ ′ \Sigma' Σ按下式计算:
    Σ ′ = J W Σ W T J T \Sigma'=JW\Sigma W^TJ^T Σ=JWΣWTJT

    其中 J J J为投影变换仿射近似的雅可比矩阵。

  • 像素渲染:给定像素的位置 x x x,其与所有重叠高斯的距离,即高斯的深度可以通过视图变换 W W W计算,得到排序后的高斯列表 N \mathcal{N} N。然后进行alpha混合,计算该像素的最终颜色:
    C = ∑ i ∈ N c i α i ′ ∏ j = 1 i ? 1 ( 1 ? α j ′ ) C=\sum_{i\in\mathcal{N}}c_i\alpha'_i\prod_{j=1}^{i-1}(1-\alpha'_j) C=iN?ci?αi?j=1i?1?(1?αj?)

    其中 c i c_i ci?为学习的颜色,最终不透明度 α i ′ \alpha'_i αi?为学习不透明度 α i \alpha_i αi?与高斯的乘积:
    α i ′ = α i × exp ? ( ? 1 2 ( x ′ ? μ i ′ ) T Σ i ′ ? 1 ( x ′ ? μ i ′ ) ) \alpha'_i=\alpha_i\times\exp(-\frac{1}{2}(x'-\mu'_i)^T\Sigma^{'-1}_i(x'-\mu'_i)) αi?=αi?×exp(?21?(x?μi?)TΣi?1?(x?μi?))

    其中 x ′ x' x μ i ′ \mu'_i μi?为投影空间内的坐标。考虑到排序的并行化较为困难,这种逐像素的方法可能会影响渲染速度。为实现实时渲染,3D GS做出了一些让步,以进行并行计算。
    在这里插入图片描述

  • Tile(Patch):为避免逐像素计算,3D GS改为patch级别的渲染。首先将图像分割为多个不重叠的patch,称为tile,如上图所示。然后确定tile与投影高斯的相交情况。由于投影高斯可能会与多个tile相交,需要进行复制,并为每个复制体分配相关tile的标识符(如tile的ID)。
    在这里插入图片描述

  • 并行渲染:复制后,3D GS(对应字节的无序列表)包含了相关的tile ID(对应字节的高位)和深度信息(对应字节的低位),如上图所示。排序后的列表可直接用于渲染(alpha混合),如下图所示。由于渲染每个tile和像素是独立的,这使得该过程适合并行计算。此外,每个tile的像素可访问共享空间,保留统一的读取序列,可以进一步提高效率。可以将tile与像素的处理类比于CUDA程序结构中的块与线程。
    在这里插入图片描述
    总的来说,3D GS在前向过程中做出了一些近似,以提高计算效率并保留图像合成的高质量。

3.2 3D高斯溅射的优化

3D GS的核心是3D高斯集合的优化过程。一方面需要通过可微渲染来使高斯符合场景纹理,另一方面表达场景需要的高斯数量是未知的。这分别对应参数优化与密度控制两步,这两步在优化过程中交替进行。优化过程中,需要手动设置很多超参数。

3.2.1 参数优化

  • 损失函数:图像合成完成后,计算渲染图像与真实图像的差异作为损失:
    L = ( 1 ? λ ) L 1 + λ L D ? S S I M \mathcal{L}=(1-\lambda)\mathcal{L}_1+\lambda\mathcal{L}_{D-SSIM} L=(1?λ)L1?+λLD?SSIM?

    这与NeRF的损失略有不同。NeRF的损失是在像素层面计算的,而非图像层面。

  • 参数更新:3D高斯的多数参数可通过反向传播直接更新,但对于协方差矩阵 Σ \Sigma Σ来说,需要半正定矩阵。因此,改为优化四元数 q q q和3D向量 s s s。将协方差矩阵分解:
    Σ = R S S T R T \Sigma=RSS^TR^T Σ=RSSTRT

    其中 R R R S S S分别由 q q q s s s推导得到的旋转和缩放矩阵。对于不透明度 α \alpha α,其计算图较为复杂: ( q , s ) → Σ → Σ ′ → α (q,s)\rightarrow\Sigma\rightarrow\Sigma'\rightarrow\alpha (q,s)ΣΣα。为避免自动微分的计算消耗,3D GS还推导了 q q q s s s的梯度,在优化过程中直接计算之。

3.2.2 密度控制

  • 初始化:3D GS从SfM产生的稀疏点云初始化或随机初始化高斯。然后进行点的密集化和剪枝以控制3D高斯的密度。
  • 点的密集化:3D GS自适应地增加高斯密度,以更好地表达场景细节。该步骤关注缺失几何特征的区域和高斯过度扩张的区域。在固定的迭代次数后执行密集化,目标是那些视图空间位置梯度大的高斯。其包括在欠重建区域复制小高斯,以及在过重建区域分裂大高斯。前者将复制体沿位置梯度方向移动,后者则通过固定的比例因子缩小高斯大小。该步骤寻找3D空间中高斯的最优分布于表达,能提高重建质量。
  • 点的剪枝:该步骤移除冗余或影响较小的高斯,可以视为正则化过程。移除的是几乎透明的高斯( α \alpha α在某阈值下)或在世界空间/视图空间极其大的高斯。此外,为防止输入相机附近的高斯密度不合理地增加,这些高斯会在固定次数的迭代后将 α \alpha α设置为接近0的值。该步骤在保证高斯的精度和有效性的情况下,能节约计算资源。

4. 应用领域和任务

4.1 同时定位和建图(SLAM)

SLAM需要让设备实时理解自身位置并同时为环境建图,因此计算量大的表达技术难以应用。

传统SLAM使用点/surfel云或体素网格表达环境。3D GS的优势在于高效性(自适应控制高斯密度)、精确性(各向异性高斯能建模环境细节)、适应性(能用于各种尺度和复杂度的环境)。

4.2 动态场景建模

动态场景建模需要捕捉和表达场景随时间变化的的3D结构和外表。需要建立 能精确反映场景中物体几何、运动和视觉方面的数字模型。4D高斯溅射通过扩展3D高斯溅射的概念,引入时间维度,使得可以表达和渲染动态场景。

4.3 AI生成内容(AIGC)

AIGC是人工智能自动创建或极大修改的数字内容,可以模仿、扩展或增强人类生成的内容。

3D GS的显式特性、实时渲染能力和可编辑水平使其与AIGC高度相关。例如,有方法使用3D GS与生成模型、化身或场景编辑结合。

4.4 自动驾驶

自动驾驶的目标是在无人干涉的情况下导航并操作车辆,其主要目标是安全而高效地感知环境、做出决策和操作执行器。

其中,感知和理解环境需要实时重建驾驶场景,精确识别静态和动态物体,并理解其相互关系和运动。动态驾驶场景中,场景还会随时间连续变化。3D GS可以通过混合数据点(如激光雷达点)将场景重建为连贯表达,有利于处理数据点变化的密度,以及静态背景和动态物体的精确重建。

5. 性能比较

5.1 性能基准:定位

  • 数据集:Replica。
  • 基准算法:Gaussian-SLAM、GS-SLAM、SplaTAM、GSS-SLAM。
  • 评估指标:均方根误差(RMSE)、绝对轨迹误差(ATE),测量传感器运动轨迹上真实位置与估计位置欧式距离的均方根。
  • 结果:基于3D高斯的SLAM方法能超过基于NeRF的密集视觉SLAM。

5.2 性能基准:静态场景渲染

  • 数据集:Replica。
  • 基准算法:Gaussian-SLAM、GS-SLAM、SplaTAM、GSS-SLAM。
  • 评估指标:峰值信噪比(PSNR)、结构相似性(SSIM)、学习的感知图像patch相似性(LPIPS),衡量RGB渲染性能。
  • 结果:基于3D高斯的方法能超过基于NeRF的方法。

5.3 性能基准:动态场景渲染

  • 数据集:D-NeRF。
  • 基准算法:CoGS、4D-GS、GauFRe、4DGS。
  • 评估指标:PSNR、SSIM、LPIPS,用于衡量RGB渲染性能。
  • 结果:3D GS能大幅超过基于NeRF的SotA。但静态版本的3D GS对动态场景的重建是失败的。

5.4 性能基准:驾驶场景渲染

  • 数据集:nuScences。
  • 基准算法:DrivingGaussian。
  • 评估指标:PSNR、SSIM、LPIPS,用于衡量RGB渲染性能。
  • 结果:3D GS方法能大幅超过基于NeRF的方法。

5.5 性能基准:人的化身

该任务的目标是从给定的多视角视频渲染人体化身模型。

  • 数据集:ZJU-MoCap。
  • 基准算法:GART、Human101、HUGS、3DGS-Avatar。
  • 评估指标:PSNR、SSIM、LPIPS*(LPIPS × 1000 \times 1000 ×1000),用于衡量RGB渲染性能。
  • 结果:基于3D GS的方法能在渲染质量和速度上均有优势。

6. 未来研究方向

  • 数据高效的3D GS解决方案:从少量数据点中进行新视图生成和场景重建很重要。目前的方法引入深度信息、密集概率分布、像素到高斯的映射来促进该能力。此外,在观测不足的区域,3D GS会产生伪影,可尝试在这些区域进行数据插值或整合。
  • 存储高效的3D GS解决方案:3D GS的可放缩性较差,在大尺度环境中需要大量的存储。需要优化训练阶段和模型的存储利用。可以探索更多高效的数据结构和先进的压缩技术。
  • 先进的渲染算法:目前3D GS的渲染算法较为直接,可见性算法会导致高斯深度/混合顺序的剧烈切换,需要实施更先进的渲染算法,以模拟光与材料属性的复杂相互作用。可结合传统计算机图形学的方法。此外,还可探索逆渲染。
  • 优化与正则化:各向异性高斯会导致不期望的视觉伪影。使用抗混叠可以减轻深度和混合顺序的突然变化。增强优化算法可能更好地控制高斯。使用正则化可以增加收敛速度,平滑视觉噪声或提高图像质量。此外,3D GS中大量的超参数也会影响3D GS的泛化性。
  • 网孔重建中的3D高斯:可探索3D GS在网孔重建中的潜力,从而缩小体积渲染和传统基于表面的方法的差距,以便提出新的渲染技巧和应用。
  • 赋予3D GS更多可能性:可以为3D高斯附加传统属性,如语言学的或物理学的属性,用于特定应用。目前已有方法使用3D GS进行相机姿态估计、手-物体交互作用的捕获、不确定性的量化。
文章来源:https://blog.csdn.net/weixin_45657478/article/details/135603696
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。