论文 · arXiv 2308.04079
用于实时辐射场渲染的 3D Gaussian Splatting
3D Gaussian Splatting for Real-Time Radiance Field Rendering
三句话总结
- 🎯 辐射场方法(如 NeRF)能产生极高的视觉质量,但受困于缓慢的体积光线步进和漫长的优化时间,而快速网格类方法则在画质或渲染速度上有所妥协。
- 🔧 使用从稀疏 SfM 点云初始化的 3D 各向异性高斯显式表示场景,通过自适应密度控制(克隆与分割)对其进行优化,并通过具备可见性感知的、基于分块的可微 GPU 光栅化器进行渲染。
- 📈 实现了与 Mip-NeRF360 相当的最先进视觉质量,在 1080p 分辨率下渲染速度超过 130–160 FPS,且训练时间不到一小时。
摘要
辐射场(Radiance Field)方法近年来彻底改变了利用多张照片或视频捕获的场景进行新视角合成的方式。然而,要获得高视觉质量仍然依赖计算成本高昂的神经网络进行训练和渲染,而近期更快速的方法则不可避免地在质量上做出了妥协。对于无边界的完整场景(而非孤立物体)以及 1080p 分辨率渲染,当前尚无方法能达到实时显示帧率。我们引入了三个关键要素,使我们能够在保持具备竞争力的训练时间的同时,实现最先进的视觉质量,更重要的是在 1080p 分辨率下实现高质量的实时(>= 30 fps)新视角合成。首先,从相机标定期间产生的稀疏点云出发,我们使用 3D 高斯来表示场景,既保留了连续体积辐射场在场景优化方面的优良特性,又避免了在空白空间进行不必要的计算;其次,我们对 3D 高斯进行交替优化与密度控制,特别是优化各向异性协方差以实现场景的精确表示;第三,我们开发了一种快速且具备可见性感知能力的渲染算法,支持各向异性 splatting,不仅加速了训练,还实现了实时渲染。我们在多个公认的数据集上展示了最先进的视觉质量和实时渲染表现。
英文原文摘要
Radiance Field methods have recently revolutionized novel-view synthesis of scenes captured with multiple photos or videos. However, achieving high visual quality still requires neural networks that are costly to train and render, while recent faster methods inevitably trade off speed for quality. For unbounded and complete scenes (rather than isolated objects) and 1080p resolution rendering, no current method can achieve real-time display rates. We introduce three key elements that allow us to achieve state-of-the-art visual quality while maintaining competitive training times and importantly allow high-quality real-time (>= 30 fps) novel-view synthesis at 1080p resolution. First, starting from sparse points produced during camera calibration, we represent the scene with 3D Gaussians that preserve desirable properties of continuous volumetric radiance fields for scene optimization while avoiding unnecessary computation in empty space; Second, we perform interleaved optimization/density control of the 3D Gaussians, notably optimizing anisotropic covariance to achieve an accurate representation of the scene; Third, we develop a fast visibility-aware rendering algorithm that supports anisotropic splatting and both accelerates training and allows realtime rendering. We demonstrate state-of-the-art visual quality and real-time rendering on several established datasets.
论文解读
问题与动机
神经辐射场(NeRF)通过多层感知机(MLP)优化连续隐式场景表示,彻底改变了新视角合成领域。然而,这些连续场的渲染依赖于随机体积光线步进(volumetric ray-marching),每条光线需要评估数十或数百个采样点。这带来了沉重的计算负担、漫长的训练时间(例如,Mip-NeRF360 需要长达 48 小时)以及极慢的推理速度(每帧需数秒),阻碍了在 1080p 等高分辨率下的实时漫游。
尽管更快的辐射场变体(如 Plenoxels 和 InstantNGP)依靠体素或哈希网格来加速训练,但它们通常会牺牲视觉保真度,并在处理空白空间或高频细节时表现挣扎。相反,基于点的方法提供了对 GPU 友好的显式几何表示,但传统的点光栅化需要稠密的多视图立体几何(MVS)以避免空洞,或者依赖引入时间闪烁的 CNN 后处理。
本文提出了一种使用 3D Gaussians 的非结构化显式场景表示,并结合快速的基于分块的光栅化器,在保持实时帧率和具有竞争力的优化时间的同时,达到了顶尖隐式辐射场的渲染保真度。
核心思想
- 非结构化 3D 高斯表示: 不使用连续坐标网络或密集网格,而是由具有完整各向异性协方差矩阵的离散 3D 高斯参数化辐射场,直接从稀疏运动恢复结构(SfM)点云初始化,无需法线或稠密 MVS。
- 通过尺度和旋转参数化: 为了确保协方差矩阵在梯度下降过程中始终保持正半定,将其解耦为一个 3D 缩放向量和一个单位四元数。
- 自适应密度控制: 优化过程通过跟踪视空间位置梯度动态管理场景密度:克隆重建不足的高斯,分割过度重建的高斯,同时剪枝透明或过大的 splat。
- 可见性感知分块光栅化: 定制的 GPU 光栅化器将屏幕像素组织成 的分块(tiles),使用快速基数排序对每帧中的 splat 进行深度排序,并由前向后对各向异性投影进行 Alpha 混合,且不限制接收梯度更新的 splat 数量。
方法
1. 3D 高斯场景表示
中心位于均值 的 3D 高斯在世界空间中由其协方差矩阵 定义:
为保证 在优化期间保持正半定,将其分解为旋转矩阵 和缩放矩阵 : 其中, 存储为使用指数激活求值的 3D 向量 , 由归一化单位四元数 参数化。
在渲染时,3D 高斯遵循 EWA splatting 框架投影到 2D 图像坐标。给定观察变换 以及投影变换仿射近似的雅可比矩阵 ,屏幕空间中的 2D 协方差矩阵 为: 舍弃第三行和第三列,得到用于平面 splatting 的 协方差矩阵。
2. 渲染与图像生成
每个高斯具有一个不透明度 (通过 sigmoid 激活约束在 )和描述视角相关颜色 的球谐(SH)系数。在一个像素处混合 个有序重叠的高斯遵循标准体积公式: 其中 由计算 2D 投影高斯乘以学得的单点不透明度决定。
3. 优化与自适应控制
损失函数结合了 损失和 D-SSIM 损失(其中 ):
对平均视空间位置梯度超过 的高斯,每 100 次迭代执行一次自适应密度控制:
- 克隆(重建不足): 对于小高斯,创建一个副本并沿位置梯度方向移动。
- 分割(过度重建): 对于大高斯,用两个尺度缩小 倍的较小高斯替换该图元,其初始位置从父高斯中采样。
- 剪枝: 剪除 或在世界/视空间中过大的高斯。每 次迭代,将不透明度重置为接近零以滤除悬浮伪影(floaters)。
4. 快速可微基于分块的光栅化器
- 屏幕被划分为 像素的分块(tiles)。
- 通过 99% 置信区间视锥裁剪的高斯会被赋予编码了分块 ID 和视空间深度的 64 位键值。
- 使用单次 GPU 基数排序对全帧的所有实例进行排序。
- 线程块在每个分块内由前向后累积颜色,直到 达到饱和(在超过 之前停止)。
- 反向传播由后向前遍历分块,通过将最终累积的不透明度除以每个图元的 来恢复中间不透明度,避免了高昂的动态逐像素内存缓冲区开销。
结果
- Mip-NeRF360 数据集: 经过 30K 次迭代(平均训练时间 41 分 33 秒)后,3D Gaussian Splatting 实现了平均 0.815 的 SSIM、27.21 dB 的 PSNR 和 0.214 的 LPIPS,达到或超过了 Mip-NeRF360(SSIM 0.792,PSNR 27.69 dB,LPIPS 0.237,训练耗时 48 小时),同时渲染速度达到 134 FPS(相比之下 Mip-NeRF360 仅为 0.06 FPS)。
- 快速配置(7K 次迭代): 仅需 6 分 25 秒即可提供 0.770 的 SSIM 和 25.60 dB 的 PSNR,帧率高达 160 FPS,在相近的训练时间内大幅超越了 InstantNGP-Base(SSIM 0.671,11.7 FPS)和 Plenoxels(SSIM 0.626,6.79 FPS)。
- Tanks&Temples 与 Deep Blending: 在 Tanks&Temples 上,30K 次迭代在 154 FPS 下达到 0.841 的 SSIM 和 23.14 dB 的 PSNR。在 Deep Blending 上,以 137 FPS 实现了 0.903 的 SSIM 和 29.41 dB 的 PSNR。
- Synthetic Blender: 从完全随机初始化的 10 万个点出发,达到了 33.32 dB 的平均 PSNR,渲染速度为 180–300 FPS。
局限性与待解决问题
- 未观察视角与异常值: 稀疏的覆盖或远离训练轨迹的视角可能会产生明显的伪影,例如拉长或斑驳的高斯核。
- 跳变伪影(Popping Artifacts): 深度顺序的突然切换或激进的保护带裁剪可能会在漫游期间引入跳变,这表明需要更好的抗锯齿处理。
- 显存占用: 尽管相比经典的密集点云更为紧凑,但这种显式表示仍需要数百兆字节(例如,包含 100 万至 500 万个高斯的场景需要 400–750 MB),且未优化的原型代码在训练时可能导致 GPU 显存峰值超过 20 GB。
- 缺乏正则化: 该框架未包含显式的几何平滑度或密度正则项,容易在相机光线约束较弱的区域留下背景浮空杂点。
关键术语
- 3D Gaussians (3D高斯)
- 核心的非结构化、可微 3D 图元,由中心位置、各向异性协方差矩阵、不透明度和球谐外观系数定义。
- Anisotropic Covariance (各向异性协方差)
- 一种定向的 3D 展宽,参数化为独立的缩放向量和单位旋转四元数,允许高斯变形为贴合物理表面的扁平椭球体。
- Adaptive Density Control (自适应密度控制)
- 一种交替优化策略,通过克隆或分割具有大位置梯度的图元来添加高斯,并剪枝透明或过大的高斯。
- Tile-Based Rasterization (分块光栅化)
- 一种 GPU 驱动的渲染管线,将视口划分为 像素块,以高效并行地对重叠的高斯 splat 进行排序和混合。
- Alpha-Blending (Alpha混合)
- 颜色和透射率由前向后的累加过程,对应了标准 NeRF 在排序后的 2D 投影 splat 上的体积积分。
- Radix Sort (基数排序)
- 一种 GPU 排序算法,用于根据结合了分块 ID 和视空间深度的 64 位键值,并行全局排序高斯。
- Spherical Harmonics (SH) (球谐函数)
- 一种基于频率的方向基函数,用于在最多 4 个阶数上表示每个高斯图元依赖于视角的颜色。
常见问题
3D 高斯在优化前是如何初始化的?
它们使用运动恢复结构(SfM)相机标定过程中伴随生成的稀疏点云进行初始化,初始各向同性尺度由到最近三个邻近点的平均距离确定。对于合成场景,也可以使用均匀随机初始化。
克隆和分割高斯有什么区别?
克隆是复制一个小高斯并沿其位置梯度方向平移,以弥补缺失的几何特征(重建不足);而分割是将一个过大的高斯拆分为两个尺度缩小 1.6 倍的较小高斯,从而更好地捕捉高方差细节(过度重建)。
为什么光栅化器按分块(tile)排序而不是按像素排序?
基于结合了分块与深度的键值使用单次全局 GPU 基数排序按分块进行排序,避免了逐像素对图元排序的高昂计算开销,从而在视觉近似损失微乎其微的前提下实现了极高的帧率。
反向传播是如何避免在全局内存中存储庞大的逐像素图元列表的?
光栅化器由后向前重新遍历现有的已排序分块列表,并通过将最终累积的不透明度除以每个高斯的 alpha 值来重构中间不透明度,仅需恒定的逐像素内存开销。
本页解读由 AI 根据论文生成,可能有错误;细节请以原文为准。