[SIGGRAPH-23] 3D Gaussian Splatting for Real-Time Radiance Field Rendering

pdf | proj | code

  • 本文提出一种新的3D数据表达形式3D Gaussians。每个Gaussian由以下参数组成:中心点位置、协方差矩阵、可见性、颜色。通过世界坐标系到相机坐标系,再到图像坐标系的仿射关系,可将3D Gaussian映射到相机坐标系,通过对z轴积分,可得到对应Splatting 2D分布。
  • 针对3D Gaussians,提出对应的优化方法。去除可见性太低的高斯,对回传梯度较大的高斯,通过复制,克隆等操作,增强表达能力。
  • 针对3D Gaussians,提出对应的光栅化方法。将图像切分为16 x 16的块,每个块内对高斯根据深度进行排序。光栅时,从前向后遍历,当可见性累加到某个阈值即停止。梯度回传时从停止块开始,有后向前遍历。

目录

摘要

引言

近期工作

[Traditional Scene Reconstruction and Rendering](#Traditional Scene Reconstruction and Rendering)

[Neural Rendering and Radiance Fields](#Neural Rendering and Radiance Fields)

[Point-Based Rendering and Radiance Fields](#Point-Based Rendering and Radiance Fields)

Overview

[Differentiable 3D Gaussian Splatting](#Differentiable 3D Gaussian Splatting)

[Optimization with Adaptive Density Control of 3D Gaussians](#Optimization with Adaptive Density Control of 3D Gaussians)

[Fast Differentiable Rasterizer for Gaussians](#Fast Differentiable Rasterizer for Gaussians)

[Implementation, Results and Evaluation](#Implementation, Results and Evaluation)

Implementation

[Results and Evaluation](#Results and Evaluation)

[Real-World Scenes](#Real-World Scenes)

[Synthetic Bounded Scenes](#Synthetic Bounded Scenes)

Ablations

[Initialization from SfM](#Initialization from SfM)

Densification

[Unlimited depth complexity of splats with gradients](#Unlimited depth complexity of splats with gradients)

[Anisotropic Covariance](#Anisotropic Covariance)

Limitations


摘要

  • NeRF效果好,但是训练和渲染很花时间;特别是对1080p分辨率渲染的场景,现有方法无法实现实时渲染。
  • 本文引入三个关键部分,实现sota视觉质量、较短训练时间和1080p分辨率下新视角实时渲染。
    • 3D Gaussians。通过camera calibration中产生的稀疏点进行初始化。这种新的3D表达形式在保存NeRF优点的同时,避免了空白空间不必要的计算开销;
    • Optimization。实现3D Gaussian的交替优化和密度控制,优化各向异性协方差矩阵实现对场景的准确表达;
    • **Rendering。**实现快速可见感知渲染算法(fast visibility-aware rendering algorithm),支持各向异性飞溅(anisotropic splatting),同时加速训练和渲染。
  • 本文在多个数据集上,实现sota视觉质量和实时渲染。

引言

  • Mesh和点云是最常用的3D场景表达,这种显式表达非常适合快速GPU/CUDA-based rasterization。另一方面,NeRF可建立连续的场景表达,用volumetric ray-marching优化MLP,实现新视角生成。基于NeRF的高效算法,通常会引入一些新的表达形式,用插值的方式实现连续表达,例如:体素(voxel),hash grids,或点云。这些方法效果不错,但是渲染中要求的随机采样计算开销大、并且会导致噪声。本文提出的方法:3D Gaussian可以实现sota的视觉质量和具有竞争力的训练时间;tile-based splatting solution可以实现1080p的实时渲染。
  • 本文所提方法由三个主要部分组成。
    • 3D Gaussians:通过Structure-from-Motion (SfM) 相机标定得到的稀疏点云初始化,对于NeRF-synthetic dataset,本文方法在随机初始化情况下,也可取得较好的结果。3D Gaussian的优点在于(a)可导的体表示;(b)通过映射至2D,实现高效栅格化;(c)可以实施标准的alpha-blending;
    • 优化:提出一种优化3D Gaussians参数的方法,参数包括:3D position,opacity alpha,anisotropic covariance和球谐系数(spherical harmonic coefficients)。优化方法:交替执行密度控制步,在优化过程中增加或去除3D Gaussians。
    • 渲染:提出一种快速GPU排序算法,受tile-based rasterization方法启发。实现各向异性纹理飞溅(anisotropic splatting),一种可见性排序(visibility ordering)。受益于排序和alpha-blending,可以实现快速和准确的反向传播。

近期工作

Traditional Scene Reconstruction and Rendering

  • light fields (1996) -> Structure-from-Motion (SfM,2006) -> multi-view stereo (MVS,2007)
  • MVS-based方法会重投影(re-project)并融合(blend)输入图片到新相机视角,使用几何引导重投影。

Neural Rendering and Radiance Fields

  • Soft3D (2017,首次提出Volumetric representations) -> 将深度学习技术应用到volumetric ray-marching(2019)-> NeRF (2020,提出importance sampling和postional encoding,但是较大MLP影响了速度) -> MipNeRF360(2022,sota视觉效果,但训练和渲染时间太长)
  • 为了加速训练或渲染,现有的探索集中在三个方向:稀疏数据结构存储特征,不同的编码器和MLP容量。其中,值得一提的方法是InstantNGP(2022),该方法使用hash grid和occupancy grid来加速计算,用一个较小的MLP表示密度和外观。Plenoxels(2022),使用稀疏体素网格,插值表示连续密度场,并且能够不使用MLP。
  • 尽管上述方法产生了很好的结果,这些方法仍然不能高效表示空白区域。

Point-Based Rendering and Radiance Fields

-blending和体渲染(volumetric rendering)本质上是相同的成像模型。对于体渲染方法:

其中是密度,是透光率,是颜色,是相邻采样点的间隙。密度越大,越接近1,该点越重要;之前点的密度和越大,越大,该点越不重要。上式可以被重新组织为:

alpha-blending可以表示为:

其中,所有点根据前后关系排序,是该点颜色,是该点所在2D高斯的概率密度乘以该点的不透明性(opacity)。

相较于之前的-blending栅格化方法,本文提出可见性(visibility)排序。另外,本文反向传播梯度到像素点中的所有splats,栅格化所有各向异性splats。

Overview

  • Initialization:给定静态场景的一组图片,和对应经过SfM校准的相机参数,以及SfM在校准过程中产生的稀疏点云;
  • 3D Gaussians:给定稀疏点云,初始化3D Gaussians,每个3D Gaussian由位置mean,协方差矩阵和不透明性决定;辐射场中指向性外观部分(颜色),通过spherical harmonics (SH) 表征;
  • Optimization:逐步优化3D Gaussians的参数:位置、协方差矩阵、和SH系数;
  • Rendering:tile-based rasterizer,支持根据可见性顺序的各向异性splats的-blending

Differentiable 3D Gaussian Splatting

在世界坐标系下,3D Gaussians由三个系数定义:均值,3D协方差矩阵

将世界坐标系下的3D Gaussians转换到相机坐标下:

其中,是世界坐标系坐标到相机坐标系坐标的转换矩阵,是透视变换的Jacobian矩阵。

参考:EWA Volume Splatting

  • View transformation:将世界坐标系下坐标转换到相机坐标系。假设是世界坐标系下坐标,是相机坐标系下坐标,则有仿射变换,可得
  • Projective Transformation(透视变换):将相机坐标系下坐标转换到图像空间,该转换不是仿射变换。假设是图像空间下坐标,则有。由于该变换不是放射变换,因此考虑:,得到局部放射近似,其中。最终可得

协方差矩阵具有物理含义,需要满足半正定条件。考虑协方差矩阵描述了一个标准球体向椭球体的变化过程,对标准球体先放缩,再旋转

因此,缩放可以用三维向量描述,也即协方差矩阵的三个特征值。旋转其实是三个特征向量,它们两两正交且模为1,通过分析可由四维向量描述。

综上,一个3D Gaussian可由三个缩放系数、四个旋转系数、中心点位置和不透明率表示。除了上述提到的参数外,本文还用SH系数表示颜色。

Optimization with Adaptive Density Control of 3D Gaussians

  • 不透明率通过sigmoid激活函数映射至0到1之间。
  • 损失函数如下:

Gaussian的优化过程中,本文考虑以下两种情况:

  • 异常:移除小于阈值的高斯。
  • 梯度异常:梯度超过阈值时,本文认为梯度异常,考虑存在under-reconstruction或over-reconstruction:
    • under-reconstruction:Gaussians太小了,不能覆盖必要几何。本文考虑复制相同大小的Gaussian,新Gaussian放至位置梯度所指方向;
    • over-reconstruction:对于方差太大的Gaussians,本文将其拆分为两个Gaussians,两个都缩放,新Gaussian的位置通过在旧Gaussian中采样决定。
  • 特殊情况:
    • 漂浮物(floaters)会导致Gaussian密度的异常增加。本文提出,每 iter,将所有设置为近似为0的值。在优化后,对于没有增大的Gaussian,则根据前述规则去除掉。
    • 对于具有非常大worldspace和相机坐标中具有较大footprint的Gaussian也会去除掉。

Fast Differentiable Rasterizer for Gaussians

提出一种tile-based rasterizer

  • 光栅化:
    • 将屏幕划分为16 x 16块,一次性预排序所有primitives,避免针对每个像素排序的开销
    • 仅保留有99%置信度的Gaussians
    • 用保护带(guard band)拒绝极端位置的高斯,例如:距离平面太近,或在视锥体之外太远的高斯;
    • 实例化高斯,并赋予每个高斯一个键值,包括视觉空间深度和块ID
    • 根据键值排序高斯。对于每个块,得到一个根据深度由近到深排序的列表
    • 在光栅化过程中,每个块使用一个线程去处理,每个线程首先将Gaussians加载到shared memory。对于给定像素点,从前往后遍历列表,根据加权求和颜色。当达到目标饱和值时,该进程停止,得到该像素点的颜色。
  • 梯度回传:从最后一个点,从后往前遍历列表,选择对应的Gaussian反传梯度。

Implementation, Results and Evaluation

Implementation

Pytorch + 用于光栅化的custom CUDA kernels

Results and Evaluation

Real-World Scenes

Synthetic Bounded Scenes

  • 30K迭代后,每个场景由200-500K Gaussians组成

Ablations

Initialization from SfM

Densification

Unlimited depth complexity of splats with gradients

Anisotropic Covariance

Limitations

  • 对于缺乏训练数据的场景,存在失真,Mip-NeRF360也存在:
  • 存在拉长失真(elongated artifacts),比较脏的高斯(splotchy Gaussians),Mip-NeRF360也有
  • 相较于NeRF-based方法,内存开销大,需要20GB GPU memory
相关推荐
Sitarrrr8 分钟前
【Unity】ScriptableObject的应用和3D物体跟随鼠标移动:鼠标放置物体在场景中
3d·unity
starsongda15 小时前
VR科技展厅重塑科技展示新风貌,引领未来展示潮流
科技·3d·vr
兔老大的胡萝卜15 小时前
threejs 数字孪生,制作3d炫酷网页
前端·3d
CV-X.WANG19 小时前
【详细 工程向】基于Smart3D的五镜头相机三维重建
数码相机·3d
JoeyKo1 天前
国内版Sketchfab平台 - CG美术之家(3D编辑发布篇)
3d·3d建模·3dsmax·3d渲染·模型·3d模型·cg模型
mirrornan1 天前
3D互动+AR试戴,重塑线上珠宝营销新体验!
3d·ar
DisonTangor2 天前
腾讯混元3D-1.0:文本到三维和图像到三维生成的统一框架
人工智能·3d·aigc
坠金3 天前
【3D】基础概念
3d
小白菜学前端3 天前
ThreeJS创建一个3D物体的基本流程
3d·three.js
梦想的理由3 天前
3D人体建模的前沿探索:细数主流模型与技术进展
3d