3D Gaussian Splatting-实时辐射场渲染技术

引用自:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/3d_gaussian_splatting_high.pdf

概述:
该论文介绍了一种用于实时辐射场渲染的3D高斯点渲染技术。

其基本原理是:

一:首先从SfM校准的图像及其对应的稀疏点云中提取出场景信息。

解析:

1.SfM校准的图像是指通过Structure from Motion (SfM)技术校准过的图像。SfM是一种从多视角图像中重建三维场景结构的技术。校准过程包括提取图像特征点,匹配不同视角下的特征点,并估计相机的内参数和外参数,从而构建场景的稀疏点云。在校准完成后,每个图像都会被赋予相机参数,以表示图像的拍摄位置和方向。这些校准的图像作为输入,用于构建后续的3D高斯点表示和渲染。简而言之,SfM校准的图像是经过多视角图像匹配和相机参数估计后得到的图像,其包含了场景的稀疏三维结构信息,为后续的3D渲染提供了基础。

2.相机的内参数和外参数是描述相机几何形状和位置的重要参数。
内参数包括:
焦距f:表示相机成像平面到光心的距离。
光心坐标(x0, y0):表示相机成像平面上焦点的坐标。
像素尺寸(pixel size):表示一个像素所代表的实际长度。
旋转矩阵R:表示相机的旋转,用于将场景中的点投影到成像平面上。
平移向量t:表示相机的平移,用于确定成像平面上点云的位置。
外参数包括:
旋转矩阵R:表示相机在场景中的旋转。
平移向量t:表示相机在场景中的平移。
通过校准相机的内参数和外参数,可以得到相机的完整参数,用于将场景中的三维点投影到图像上,或者将图像中的二维点反向投影到场景中。这些参数对于3D重建和渲染都非常重要。

3.稀疏点云是指通过SfM校准从多视角图像中提取出的三维点云。这些点云的密度较低,通常只有数百到数千个点。这些点代表了场景中的关键特征点,例如边缘和角点等。稀疏点云的构建通常包含以下步骤:
在图像上检测特征点。
将不同视角下的特征点进行匹配。
估计相机的内参数和外参数。
通过相机参数将匹配的特征点投影到场景坐标系中,构建稀疏点云。
稀疏点云的主要优点是计算量小,表示简单,适合于快速的3D重建和渲染。通常,后续的渲染和优化过程会在稀疏点云的基础上进行。

二:通过这些点创建一组3D高斯点,每个高斯点由位置(均值)、协方差矩阵和透明度α组成。

三:进行分阶段的优化,交替优化高斯点的位置、协方差、α和颜色相关的SH系数等参数,同时进行自适应密度控制,增加和删除高斯点,以更好地表示场景。

四:利用基于GPU的平铺栅格化渲染器,对高斯点进行快速排序,并高效地进行各向异性α混合渲染,以实现实时渲染。

这个技术可以用于多种不同风格的数据集,实现高质量的实时新视角合成,同时训练时间较短,仅需30-40分钟。

高效的可微分的3D高斯点扩散渲染方法

一:使用3D高斯点代替传统点云,避免了需要估计表面法线的困难,同时保留了体积表示的可微性。

(1)传统点云通常需要考虑表面法线的原因如下:


遮挡和纹理缺失:多视角图像无法直接恢复完整的场景表面信息,因此需要表面法线来帮助填补遮挡和纹理缺失的区域。
法线估计:传统方法使用多视角图像估计表面法线,以便在重建表面时考虑表面方向信息。
表面重建:法线估计可以为表面重建提供方向约束,从而提高重建的精度。
渲染:表面法线对基于物理的渲染很重要,因为它决定了光线的反射方向。
然而,使用多视角图像估计表面法线存在以下困难:
遮挡和纹理缺失:这些区域难以估计表面法线。
计算量大:法线估计需要遍历每个像素和每个点,计算量大。
噪声影响:遮挡、纹理缺失等区域会导致法线估计结果存在噪声。
低分辨率:表面法线估计结果通常分辨率较低,难以准确反映场景细节。
依赖多视角几何:法线估计依赖多视角几何的准确性,因此受遮挡和纹理缺失的影响。
因此,传统点云通常需要考虑表面法线,但由于估计表面法线存在困难,因此需要采用其他方法来替代表面法线的应用。


二:将3D高斯点投影到2D平面上,得到各向异性的二维高斯扩散,可进行快速alpha混合渲染。
(1)各向异性的二维高斯扩散是指在二维平面上,高斯扩散的大小和方向都是各向异性的,可以用来表示三维空间中的复杂几何结构。


在3D高斯点扩散渲染方法中,每个3D高斯点在2D图像平面上都会对应一个二维高斯扩散。这个二维高斯扩散的形状和方向是由该3D高斯点的协方差矩阵决定的
具体来说,每个3D高斯点都由一个位置和一个协方差矩阵表示协方差矩阵可以分解为一个旋转矩阵和一个缩放矩阵,这决定了高斯扩散的形状和方向。因此,每个3D高斯点对应的高斯扩散在2D平面上都是各向异性的。
这样的设计可以使得二维高斯扩散能够紧凑表示三维空间中的复杂几何结构,并且仍然可以进行快速的alpha混合渲染。这是3D高斯点扩散渲染方法的一个关键创新点。

(2)协方差矩阵是一种用于描述随机变量之间相关性的数学工具。在3D高斯点扩散渲染方法中,协方差矩阵被用来描述3D高斯点的形状和方向。


具体来说,对于一个3D高斯点,其协方差矩阵Σ是一个3x3的正定对称矩阵。Σ矩阵的对角线元素描述了高斯点沿着三个坐标轴的方差,非对角线元素描述了三个坐标轴之间的相关性
Σ矩阵可以由一个旋转矩阵R和一个缩放矩阵S相乘得到,即Σ = RST^TR^T。其中,R是一个3x3的正交矩阵,描述了高斯点朝向的方向,S是一个对角矩阵,描述了高斯点沿着三个坐标轴的缩放比例。
因此,Σ矩阵描述了高斯点在三维空间中的形状和方向,这对于3D高斯点扩散渲染方法中紧凑表示复杂几何结构至关重要。通过优化Σ矩阵,可以使得3D高斯点扩散更加紧凑,从而提高渲染效果


三:3D高斯点由位置、协方差、α和SH系数表示,这些参数都是可优化的,从而使其适应不同形状的几何结构。
四:每个高斯点都有一个相应的2D高斯扩散,从而实现了各向异性扩散,这可以表示复杂几何结构。
五:整个渲染过程是可微分的,可以用于反向传播梯度,实现端到端的学习。
六:3D高斯扩散的优点包括紧凑表示、快速渲染和体积表示的可微性。


这一方法为后续的场景优化和实时渲染打下了基础。

论文还说了一些优化的手段:

一:高斯点参数优化:


优化的原因:原始高斯点参数可能无法准确表示场景中的几何结构和颜色,导致渲染效果较差。
优化的方法:使用梯度下降算法,迭代更新高斯点的位置、协方差矩阵、透明度和球谐系数等参数。
优化的原理:位置优化使高斯点更准确代表几何结构;协方差矩阵优化控制高斯点的形状和方向;透明度优化控制高斯点的可见性;球谐系数优化控制高斯点的颜色分布
优化的结果:高斯点表示更准确,渲染效果显著提高,同时高斯点数量也得以减少

使用梯度下降算法来优化3D高斯点的参数包括以下步骤:


表示高斯点:使用高斯点来表示场景,每个高斯点包含位置(均值)、协方差矩阵、透明度α和球谐系数等参数。
定义损失函数:定义损失函数来度量渲染图像和真实图像之间的差异,通常使用L1损失和SSIM损失的结合。
前向传播:进行前向传播,根据当前高斯点的参数,使用不同的可微渲染器渲染图像
反向传播:计算损失函数对各个参数的梯度,进行反向传播。
更新参数:使用梯度下降算法更新高斯点的各个参数,例如位置、协方差矩阵、透明度和球谐系数等。
迭代优化:重复上述步骤,不断迭代优化高斯点的参数,直到收敛或达到预设的迭代次数。

解析:

L1损失和SSIM损失都是用于计算预测图像和真实图像之间差异的损失函数。

它们的原理如下:
L1损失(L1 Loss):L1损失也称为绝对值损失,它计算预测图像和真实图像之间每个像素的绝对值差异。其计算公式为:
L1 = Σ ||预测图像 - 真实图像||
其中,Σ表示对所有像素求和。L1损失对预测和真实图像之间的像素级差异进行平滑处理,对大误差不太敏感,因此可以很好地处理遮挡、变形等。
SSIM损失(SSIM Loss):SSIM损失基于结构相似性度量(SSIM),它计算预测图像和真实图像的结构差异。SSIM损失包括3个部分:
(1) 亮度差异度量:计算预测图像和真实图像的亮度差异。

(2) 对比度差异度量:计算预测图像和真实图像的对比度差异。

(3) 结构差异度量:计算预测图像和真实图像的结构差异。
SSIM损失将这3个差异进行加权求和,并通过SSIM公式计算得到。相较于L1损失,SSIM损失对预测和真实图像之间的结构差异更为敏感,可以更好地保持预测图像的结构细节。
因此,L1损失和SSIM损失各有优缺点,通常会结合使用,在结构保持和像素差异处理上取得较好的平衡。

在深度学习中,前向传播是指从输入层到输出层的信息传递过程。具体来说,前向传播的步骤如下:


初始化参数:首先对模型的参数进行初始化。
输入层处理:将输入数据传入输入层,通过激活函数产生非线性变化
逐层传递:按顺序从输入层到输出层,逐层进行计算。每层都将前一层的结果作为输入,经过线性变换后,通过激活函数产生非线性变化。
输出层输出:当计算到输出层时,对输出层的结果进行处理,得到最终输出。
反向传播:基于输出结果和真实标签,通过反向传播计算梯度,进而优化模型参数。
通过前向传播,模型可以将输入数据转化为输出结果。这种计算过程与深度网络中神经元的计算过程相类似。前向传播为反向传播提供了基础,是深度学习的关键步骤之一。

可微分渲染器是指一个能够将场景或模型渲染成图像的算法,同时支持自动微分求导。

这样的渲染器可以用于训练神经渲染模型,通过计算渲染图像与真实图像之间的损失,并通过反向传播来优化渲染模型中的参数,从而提高渲染质量。
可微分渲染器的主要特点包括:
支持渲染场景或模型,将其转换成图像。
支持自动微分,能够计算出渲染图像与真实图像之间的损失函数的梯度。
支持反向传播,可以基于梯度信息优化渲染模型中的参数。反向传播的关键在于自动微分求导,它能够计算出渲染图像与真实图像之间损失函数的梯度。这些梯度信息可以被优化器利用,以更新渲染模型参数,实现持续优化。
通过反向传播迭代训练,神经渲染可以不断优化渲染模型,以逐步逼近真实图像的质量,实现逼真的高质量渲染效果。
渲染质量可调,通过改变渲染模型的参数,可以调整渲染图像的质量。
训练速度快,利用GPU并行加速渲染和反向传播过程。
因此,可微分渲染器是实现高质量神经渲染的重要基础,能够通过反向传播持续优化渲染模型,从而实现逼真的高质量渲染效果。


二:自适应密度控制:


优化的原因:场景的复杂度和遮挡关系会影响高斯点表示的效果,因此需要动态调整高斯点的密度。
优化的方法:根据高斯点在视空间中的梯度大小,动态增减高斯点的密度,以适应场景的结构。
优化的原理:通过检测高斯点梯度大小,判断是否需要增加或减少高斯点密度,以更准确地表示场景结构。
优化的结果:高斯点密度与场景结构相匹配,渲染效果得以提高。

高斯点密度控制的具体步骤如下:


计算梯度:在优化过程中,计算每个高斯点在视空间中的梯度大小,即\nabla L∇L。
判断梯度大小:若\left|\nabla L\right|∣∇L∣大于阈值\tauτ,则判断该高斯点可能需要增密以适应场景结构。
确定增密方法:根据高斯点的大小,选择不同的增密方法:
对于大高斯点,采用分裂操作,将其一分为二,以增加高斯点数量。
对于小高斯点,采用克隆操作,直接复制一个高斯点并移动位置,以增加高斯点数量。
删除透明高斯点:在优化过程中,需要删除透明度小于阈值\epsilonϵ的高斯点,以保持整体密度的稳定。
周期性调整:每隔一定迭代次数,降低所有高斯点的透明度,然后重新优化,以抑制过密区域的增加。
通过这种自适应增密机制,可以动态调整高斯点的密度,使其能够很好地适应场景结构,同时保持密度的稳定。这有利于构建高质量的高斯点表示,为实时神经辐射场渲染提供了基础。

在3D Gaussian Splatting中,高斯点的密度控制方法如下:


识别大小高斯点:根据高斯点在视图空间的投影大小来判断。如果高斯点覆盖的面积较大,则认为是大高斯点;如果覆盖的面积较小,则认为是小高斯点。
分裂大高斯点:当识别到高斯点过大时,可以将该高斯点替换为两个尺寸减半的新高斯点。新点位置通过从原高斯点中采样得到
克隆小高斯点:对于小高斯点,可以通过复制该高斯点,并在其位置梯度方向移动一定的距离,从而生成一个新克隆点。
分裂或克隆的方向:分裂大高斯点可以将其替换为两个小高斯点,而克隆小高斯点可以在其位置梯度方向上移动一定距离,以生成新的小高斯点。
识别和替换:在优化过程中,需要检测高斯点的位置大小和位置梯度,从而判断是否需要分裂或克隆高斯点。当高斯点过大或位置梯度较大时,进行分裂或克隆操作。
通过这种自适应的高斯点密度控制方法,可以有效地控制高斯点的数量和密度,同时填充场景中不完整的区域,提高渲染质量。

对于克隆小高斯点的操作,其移动距离和方向是由该点在视图空间中的位置梯度决定的。具体步骤如下:


计算高斯点在视图空间中的位置梯度。可以使用反向传播来计算渲染图像的损失函数对高斯点位置参数的梯度。
在梯度方向上移动高斯点。根据梯度的方向,可以计算出移动的方向移动的距离则可以通过计算梯度的模长来确定。
将原高斯点克隆,并沿着梯度方向移动一定距离,从而得到新克隆的高斯点。
用新克隆的高斯点替换原高斯点,从而完成密度控制。

三:快速渲染:


优化的原因:原始渲染方法需要对每个像素进行射线追踪和透明度混合,效率较低,无法实现实时渲染。
优化的方法:采用基于瓦片的渲染算法,先对高斯点进行排序,然后并行处理每个像素,从而加速渲染。
优化的原理:通过快速排序和并行计算,大幅减少每个像素的处理时间,实现实时渲染。
优化的结果:渲染效率大幅提高,实现了高质量的实时辐射场渲染。

基于瓦片的渲染算法包括以下步骤:


1.将屏幕划分为16x16的瓦片,每个瓦片由一个线程块负责渲染。
2.对所有高斯点进行排序,将高斯点划分为16个等级,每个等级对应一个瓦片
3.为每个瓦片计算高斯点列表,只包含该瓦片需要渲染的高斯点。
4.每个线程块独立并行地处理一个瓦片,按照深度顺序对高斯点进行渲染
5.线程块内的多个线程共享内存,以并行处理高斯点。
6.当某像素的透明度大于阈值时,停止对该像素进行渲染。
7.每个线程块处理完瓦片后,所有线程查询并等待,直到所有瓦片都完成。
8.采用同样的排序和渲染流程,进行反向传播计算梯度。
这种基于瓦片的渲染算法利用并行处理和共享内存,实现了高效的渲染,避免了像素级排序,从而提升了渲染速度。同时,反向传播过程也可以利用同样的排序结果,避免了额外的计算。这种算法为实时神经辐射场渲染提供了基础。

3d高斯函数和渲染图像结合过程:

得到了3D高斯函数的场景表示后,将这些3D高斯函数与渲染结合起来,可以得到最终渲染的图像效果。具体步骤如下:
1.将3D高斯函数投影到2D平面上,得到2D高斯函数
2.对每个像素进行光线投射,遍历3D空间中的所有高斯函数,计算光线与每个高斯函数的交点
3.计算光线穿过每个交点时的高斯函数值,并根据高斯函数值计算每个交点对光线强度的影响。
4.将所有交点的影响值进行累积,得到该光线在3D空间中的总强度。
5.将所有光线总强度进行累积,得到该像素在渲染图像中的最终颜色
重复步骤2-5,对每个像素进行光线投射,得到最终渲染图像。
通过这种方法,将3D高斯函数作为场景的表示,可以与渲染过程进行有机结合,并最终得到高质量的渲染图像。

结果:

结果部分在多个数据集上验证了方法的有效性,达到或超过当前最优方法的质量,同时具有较快的训练速度和低内存占用。
评估部分进行了多个方面的定量评估,验证了各模块的有效性,并与其他方法进行了对比,充分证明了方法在多方面的优势。
这三个部分共同构成了一个完整的研究方案,从理论到实践都得到了充分的验证。对于个人职业发展来说,这是完整系统方案设计的锻炼,对于社会进步而言,这是对高质量实时神经渲染技术的积极探索,具有广泛的应用前景。

总结:

3D Gaussian Splatting是一种新颖的连续体表示,能够高效地表示场景并支持快速渲染。
交错优化高斯点属性和密度控制实现了高斯点集的紧凑表示。
基于瓦片的渲染算法实现了高效可微分的渲染,支持了快速训练和实时渲染。
方法在多个数据集上实现了高质量和实时效果,同时训练速度和内存占用较低。
3D高斯模型可被视为一种介于体积和表面表示之间的折衷,具有广泛的适用性。
尽管方法在某些区域存在缺陷,但总体上达到了高质量实时神经辐射场渲染的要求。
未来工作将包括进一步优化渲染算法,以及与其他表示形式的结合。
总的来说,该方法创新地结合了体积和表面表示的优势,在多个方面取得了进步,对相关领域的发展具有重要意义。

你可能感兴趣的:(gpu,并行编程,3d高斯飞溅,图形渲染论文,ai)