首页 > 其他分享 >Trim3D

Trim3D

时间:2024-10-21 22:47:29浏览次数:3  
标签:高斯 模型 像素 向量 Trim3D 高斯分布 3D

TrimGS ------ 修剪3D高斯飞溅

论文链接:TrimGS

1.NeRF++

1.1介绍

在原始NeRF(Neural Radiance Fields)基础上进行改进和扩展的一种神经渲染技术。该技术主要解决了NeRF在处理大尺度、无边界场景(如室外360度场景)时面临的挑战,并提高了渲染质量和效率

1.2改进地方

  1. 形状-辐射模糊性分析

    • NeRF++首先分析了NeRF中的形状-辐射模糊性问题,指出即使在错误的密度分布下,NeRF仍能产生高质量图像,这主要归因于网络设计限制了高频信号的拟合。

    • 通过实验验证,NeRF在训练过程中可能学习到错误的几何形状,但仍能在训练样本上渲染出正确的结果。这种现象是由于损失函数仅要求预测颜色与原图接近,而不严格要求几何形状的准确性。

  2. 倒球面参数化(Inverted Sphere Parametrization)

    • 为解决室外360度场景的渲染挑战,NeRF++提出了倒球面参数化方法。该方法将场景空间划分为两个体积:一个内部单位球体和一个由覆盖内部体积补集的反向球体表示的外部体积。

    • 内部NeRF不需要重新参数化,因为场景的这一部分被很好地限制住了。外部NeRF则采用倒球面参数化,将外部的三维点重参数化为一个四元变量(包含单位圆上的点和距离的倒数),以便在inverted sphere space下进行积分和渲染。

  3. 分离建模

    • NeRF++将前景和背景分离建模,分别使用两个NeRF网络进行渲染。这种分离建模的方式提高了背景和前景的渲染质量,特别是在处理大尺度、无边界场景时更为有效。

2.几何正则化

2.1引入

几何正则化可以想象成在教你画画时,老师告诉你要让图形更平滑、更自然。比如说,如果你在画一个圆,老师可能会建议你避免画得太尖锐,尽量让圆看起来更流畅。

2.2原理

  1. 形状平滑性:通过添加约束,要求模型学习到的函数或曲线在形状上更平滑,避免过度拟合数据中的噪声。这可以通过最小化曲率或梯度的变化来实现。

  2. 距离度量:采用特定的距离度量,以捕捉数据点之间的关系,从而更好地理解数据的几何结构。

  3. 正则项:在损失函数中引入正则项,强制模型在优化过程中遵循一定的几何特性。例如,可以通过最小化模型参数的复杂度,确保模型不会变得过于复杂。

  4. 数据流形:假设数据分布在一个低维流形上,几何正则化帮助模型在这个流形上进行学习,避免在高维空间中的噪声影响

2.3通俗解释

  1. 什么是几何正则化? 它是一种方法,帮助计算机在学习过程中更好地理解形状和空间的规律,从而做出更准确的判断。

  2. 为什么需要它? 当计算机处理数据时,可能会学到一些不必要的细节或噪音(就像画画时,手抖导致线条不规则),这会影响它的表现。几何正则化通过添加一些“规则”来让模型更加稳健。

2.4举个例子

想象你在做一个识别手写数字的程序。你希望它能够准确识别数字“8”。但如果没有几何正则化,程序可能会学到一些不太规则的写法,比如一个人写得特别歪斜或断裂的“8”,这样它在遇到不同书写风格的“8”时可能会出错。

通过几何正则化,你可以告诉程序:“嘿,数字‘8’通常是平滑的,尽量识别那些看起来更接近标准形状的‘8’。”这样,程序就能忽略一些不太正常的写法,提升识别的准确性。


在最初3DGS使用不透明度作为修剪的度量,高斯显示非常低的不透明度被删除,然而,许多具有低贡献或不准确几何结构的高 斯分布通常具有相对较高的不透明度,使得默认策略不足以保持精确的几何结构

举例

你有一棵树的模型,树的叶子部分由许多小片组成。某些叶子可能只有轻微的光照和反射,导致它们的渲染不透明度较低。这些低不透明度的叶子可能被系统轻易忽略(即修剪掉),认为它们对最终图像贡献不大。 ​ 然而,树的某些部分可能实际上具有重要的几何信息,尽管它们的光照效果较差。比如,树的形状和结构可能会因为删除这些部分而失去细节,导致树看起来不真实。

问题所在

如果默认策略只是基于不透明度来判断哪些部分可以删除,那么就会忽略那些重要的、尽管贡献较低但对整体形状至关重要的几何结构。这样一来,最终渲染的效果就可能失去精确度,造成视觉上的不自然感


因此需要新的评估度量

3.基于贡献的修剪

3DGS中 的致密化策略

保持相对较小的高斯尺度

法向一致性正则化

  1. 生成扰动:对原始输入进行小范围的扰动,通常是在输入的特征空间内。

  2. 计算法向输出:通过模型计算原始输入和扰动后的输入的预测输出。

  3. 一致性损失:定义一个损失函数,衡量这两个输出之间的差异,通常使用均方误差或交叉熵等。

  4. 优化:在训练过程中,最小化这个一致性损失,从而鼓励模型对输入的微小变化保持稳定的预测

4.相关工作

4.1新颖视图的合成(NVS)

{% label 分为隐式和显式 green %}

4.1.1NeRF使用隐式、体渲染

NeRF是使用隐式亮度场来表示NVS的3D场景,使用多层感知器(MLP)对每个空间 位置的几何和光度信息进行编码

NeRF利用体渲染技术将隐式 神经场渲染成图像

4.1.2原始NeRF的缺点
  • 低训练和渲染效率

因此,一系列的方法旨在提 高其效率。基于网格的特征表示被证明在加速收敛方面是有效的。代表性方法提出在 MLP中优化基于网格的特征而不是神经参数。在渲染效率方面,烘焙策略和基于稀疏哈希的网格被用于提升性能。另一项工作侧重于提高NeRF的渲染质量,特别是解决抗锯齿问题

{% label Plenoxels、3DGaussionSplatting等使用显式亮度场 blue %}

4.2 高斯分布曲面重建

SuGaR利用有符号距离函数和密度来监督高斯分布,迫使它们与物体表面对齐。然后利用泊松曲面重构提取网格,将三维高斯分布与粗网格绑定,并进行进一步的细化

  • SuGaR可以通过编辑耦合网格灵活地编辑3D高斯

4.2.1 NeuSG和GSDF
  • 将三维高斯分布与隐式曲面结合起来。他们优化了三维高斯场和带符号距离函数,以获得高质量的表面

  1. 三维高斯分布:这是一种概率分布,可以用来描述空间中某些点的分布特征。在3D空间中,每个点可以被视为一个高斯分布的中心,周围有一定的“模糊”范围,这样可以表示不确定性和局部结构。

  2. 隐式曲面:隐式曲面通过一个函数来定义曲面上的每一点,通常使用符号距离函数(Signed Distance Function,SDF)。该函数对于曲面内的点返回负值,外部点返回正值,而在表面上返回零。

  3. 符号距离场加速查询交点原理:

    假设从p0点沿蓝色线发射一条光线,通过符号距离场可以获取到p0点到黑色线的最短距离,如果距离是零,表示p0落在黑色折线上,如果是正数n0,那么可以直接沿蓝色线方向前进n0的距离得到p1的点,重复执行此流程直到p4点时,p4点与黑色折线的最短距离已经小于一定的阈值,那么即可把p4点视为与黑色折线的交点,这样相对于固定单位步长前进判断是否在黑色折线上省去了许多计算量

4.2.2 GS2Mesh
  • 利用立体深度估计来增强融合的深度质量

  1. 立体深度估计:通过使用两张或多张从不同视角拍摄的图像,计算出场景中每个点的深度信息。这种方法依赖于三角测量,分析同一物体在不同视角下的位移(视差)。

  2. 增强深度质量:将立体深度估计的结果与其他深度来源(如深度传感器或单目深度估计)进行融合,可以提高整体深度图的质量。通过结合不同来源的深度信息,能够减少噪声和误差,获取更准确的深度图。

举例:

假设你在创建一个3D环境,使用立体相机拍摄场景。立体深度估计可以获取物体的粗略深度信息。随后,你还使用一个深度传感器获取额外的深度数据。通过融合这两种深度信息,你能生成一个更加准确、细致的深度图,从而提升场景的真实感和细节。

4.2.3 2DGS
  • 引入了2D磁盘表示来取代3D表示,从而产生更光滑的对象表面。同时,除了几何正则化 之外,2DGS还采用截断符号距离函数(Truncated Signed Distance Function, TSDF)融合和 Marching Cubes进行网格提取,对漂浮物和噪声深度表现出令人印象深刻的鲁棒性

2D磁盘表示通过在二维平面上模拟物体的形状,降低了计算复杂度,同时保持了表面的细腻感

  1. TSDF和SDF:SDF更精确,适合细致的三维形状表示;TSDF更具鲁棒性,适合实时深度数据融合和处理。SDF考虑每个点,TSDF考虑一定范围内的深度值,超出范围会被截断

  2. Marching Cubes:这一算法用于将隐式表面(如SDF或TSDF)转换为三维网格。它通过在3D空间中遍历体素,提取出物体的表面,生成高质量的三角网格。

  3. 鲁棒性:这种方法在处理漂浮物和噪声深度时表现出色,因为它结合了几何正则化和深度融合,能够有效过滤掉异常值,从而生成平滑的表面。

举例

想象你在创建一个复杂的3D模型,比如一片海洋场景。通过使用2D磁盘表示和TSDF,结合Marching Cubes,你可以有效地处理从不同传感器获得的深度数据,生成一个清晰且光滑的海面,避免因深度噪声而导致的不规则波纹。

4.2.4 GOF
  • 主要关注无界场景。它利用基于光线跟踪的三维高斯分布体渲染,能够利用水平集直接提取几何三维高斯分布,而无需像SuGaR和2DGS那样诉诸泊松重建或TSDF融合

{% label 以上方法产生具有强几何正则化的光滑表面,但在捕捉详细的几何和纹理方面面临挑战 green %}

4.3 高斯分布的剪枝策略

  • 添加额外的模块或设计特定的准则

  • 采用 虚拟摄像机视图修剪方法来标记和消除异常值

  • 通过交集测试计算冗余分数,根据交集 测试对高斯分布进行过滤

  • 设计一个显著分数,衡量高斯对渲染图像的贡献,并修剪 那些分数低的图像

{% label 这些方法都专注于修剪策略,但它们主要将其视为减少内存成本的方法,而不是更精确的几何形状 green %} 因此,它们倾向于保留较大的高斯函数,而修剪较小的,这降低了表 示几何细节的能力

5.初步认识

5.1 3DGS(3D高斯飞溅)

  • 3DGS创建一组3D高斯函数来显式表达目标3D场景

  • 每个高斯函数由期望位置µ、协方差矩阵Σ、不透明度σ和SH(球谐函数)系数定义

  • 为了渲染图像,3DGS使用alpha 混合过程来累积每个像素的颜色

设p表示目标像素,其颜色Ip 由

式中Λ(方阵的n个特征值构成的对角阵)为影响p的高斯函数集合,其深度按升序排列。ci 表示由SH系数生成的第i个高斯的颜色,取决于观测点。混合权重α_i通过查询相应的高斯分布得到

其中p为像素图像空间坐标,σi 为第i次高斯的不透明度参数。值得注意的是,Eq.(2)中忽略了高 斯分布的归一化系数,其标准版本如下

因此,3DGS实现中采用的高斯分布实际上是一个非归一化的公式。这一属性在接下来的梯度 分析和§6.1中的贡献度量设计中被考虑

5.2 梯度分析

大的高斯函数通常有更多的噪声梯度

梯度的理论分析

由于Eq.(2)中忽略了归一化因素,通过不同大小的高斯函数之间的协方差Σ公平梯度比较的行列式手动归一化梯度。高斯大小与梯度的关系如表1所示。可以看出大的高斯函数具有小得多的归一化梯度。

对于每个高斯,它的梯度是通过将每个像素光度损失的梯度相加来计算的。这些像素的梯度不一致会导致一个相对较小的总和。大的高斯函数,其覆盖的像素范围很广,更容易陷入这种困境,特别是当目标3D场景复杂且细节丰富时

梯度求和:每个高斯的梯度是通过对像素级光度损失的梯度进行求和来计算的。这意味着每个像素根据其强度与模型预期强度的匹配程度,对其关联的高斯的梯度产生贡献

梯度不一致性:当来自不同像素的梯度不一致时(即它们指向不同的方向或具有不同的大小),它们的总和可能相对较小。{% label 它们的梯度指向不同方向,结果就是整体的调整效果变弱。比如某些像素想让模型往左调,另一些像素想让模型往右调,最终效果可能让模型几乎不动 red %}这种不一致性可能发生在以下情况:

  • 像素受不同的光照条件或遮挡的影响。

  • 由于噪声或传感器的不准确性,像素强度值存在误差

大高斯的影响:较大的高斯(覆盖更多像素)特别容易受到这个问题的影响。因为它们从更广泛的像素聚合贡献,可能导致梯度的方向和强度分散,从而使得其最终的梯度计算相对较小。这种情况在目标三维场景复杂且细节丰富时尤为明显

6.方法

三个部分

§6.1提出基于贡献的裁剪

§6.2进一步引入尺度控制策略

§一种常规的正则化增强几何形状

6.1 高斯矫正

TrimGS最重要的是正确评估每个高斯的贡献 原始使用的是不透明度 根据α累加累乘过程提出新的评估

单一视图的贡献
  • 高斯对单个视图的贡献

第一个式子表达的α混合中,混合权值 \sum_{p \in P_k} \alpha_{i(p)} \prod_{j=1}^{i(p)-1} (1 - \alpha_j) 可以表示高斯对像素的贡献,当高斯对第K张图渲染图象时,总体贡献C_k可以是所有相关像素的α混合权重的和

  • 在(4)式中,P_k表示第k个视图中高斯的二维投影区域,这里使用i_(p)来取代第一个式子中的i是因为高斯在不同的像素射线具有不同的深度顺序

  • 这个式子对高斯贡献的理论上是准确评价,但根据§5的分析,3DGS采用高斯分布没有使用归一化,直接使用会对大高斯输出相当显著的贡献,对小高斯分布输出非常低的贡献

  • 由于存在梯度且难以优化,如5.2所示,进一步手动将(4)式子归一化为

(5)和(4)有两个不同之处:①通过投影区域的像素数将贡献归一化 ②引入一个超参数γ来控制贡献成分

当γ变大时,(5)对透光率 \prod_{j=1}^{i(p)-1} (1 - \alpha_j) 的权重减小,且衰减j简化到3DGS中默认的基于不透明度的剪枝算法

引入γ的另一个原因是为了控制贡献偏差。直观地说,偏离表面的点通常会导致不精确的几何。 在这些不准确的高斯分布中,靠近外表面的高斯分布通常具有较大的透过率,而靠近内表面的 透过率通常较小。因此,γ控制偏向于偏离到内部或外部的高斯分布

多视图的贡献
  • 考虑高斯对所有视图的总体贡献。高斯通常只在少数的视图中有很大的贡献。因此,我们将少数高贡献视图的平均贡献值作为整体贡献,正式表示为

{% label V是高斯贡献最大的视图集,通常我们选择贡献排名前5的视图 green %}

修剪
  • 在训练期间,我们以预设的迭代间隔执行所提出的裁剪,其中间隔通常为1000次迭代。 每次,我们遍历训练集中的所有视图,以评估每个高斯的多视图贡献。具有最低贡献的一定百分比的高斯分布被去除

基于梯度驱动的密集化

  • 根据特定的尺度(或视角、分辨率、细节层次等),逐步增加一个系统或场景中的元素或数据密度。随着观察的距离或细节需求的增加,系统会动态地调整物体的密度,保证在适当的范围内显示出足够的细节,而不浪费不必要的资源

    可以将这个过程比作地图应用的缩放功能。当你在手机上查看地图时,放大某个区域时,系统会逐渐显示更多的细节,比如道路、建筑物和地标。这就是“基于尺度驱动的密集化”——放大到一定程度时,地图中的内容会变得更加密集,提供更多的信息

根据§5.2中的分析,大高斯函数在处理那些快速变化、包含细节的区域时是不理想的,因为它会过度平滑这些区域,导致细节的丢失。为了保持较小的高斯大小,如果高斯的最大尺度大于场景相关的尺度阈值τ_s 就将其拆分为k个较小的高斯,并预设因子缩小的规模,类似于原始3DGS的拆分实现

这种策略基本上遵循了原始3DGS中梯度驱动的致密化。如果一个高斯逐渐增长到一个大的高斯,它很可能会收到显著的累积梯度的尺度。因此,拆分那些大的高斯分布与拆分具有大梯 度的高斯分布具有相似的效果,同时更加直接和直观。

一般正则化

理解
  • 除了高斯裁剪之外,TrimGS还可以与以前的几何正则化方法无缝结合。

    1. 互补性:

    • TrimGS的功能: TrimGS通过高斯修剪来去除数据中的噪声和不必要的信息。这可以使数据变得更清晰,有助于保留重要的特征和细节。

    • 几何正则化的功能: 几何正则化则关注于保持形状的几何属性,确保重建的模型在光滑度、连续性等方面满足一定的标准。它能够引导模型在遵循几何约束的同时提高准确性。

    2. 提高模型稳定性:

    • 噪声的影响: 在有噪声的数据中,直接应用几何正则化可能会导致模型不稳定,难以准确反映真实的几何特征。通过先使用TrimGS去噪声,数据变得更干净,几何正则化的应用效果也会更好。

    • 鲁棒性: 结合这两者可以增强模型对噪声和不规则性的鲁棒性,从而在重建形状时更加可靠

  • 提出了一个{% label 法向量正则化损失 blue %},以更好地进行几何学习。基本思想是强制保证高斯模型的法向量与从渲染深度图得到的法向量之间的一致性

    想象一下你在制作一个3D模型,比如一栋建筑:

    • 高斯模型法向量: 在3D软件中,你可能使用高斯函数来表示建筑表面的某些特征,比如曲线或凹凸不平的地方。这个模型会生成一组法向量来表示这些特征的方向。

    • 渲染深度图法向量: 当你渲染这个建筑时,会得到一幅深度图,其中每个像素的深度值可以用来推断该点的法向量。这些法向量会根据建筑表面的真实形状计算得出。

    • 法向量一致性: 如果高斯模型的法向量与从深度图计算得出的法向量不一致,可能会导致模型的光照效果看起来不自然。通过应用法向量正则化损失,模型会不断调整,使得这两组法向量更为一致,从而生成更真实的建筑外观。

  • 高斯的法向定义为其最短轴的方向。

    1. 高斯的法向量:

    • 定义: 高斯分布在三维空间中可以视作一个椭球体,其中的法向量是指该椭球体最短轴的方向。也就是说,高斯的法向量指向其在该点的表面法线方向。

    • 几何意义: 高斯的法向量可以用来描述其曲面的方向,特别是在处理表面法线和光照计算时非常重要。

    2. 理解最短轴:

    • 最短轴的概念: 在一个三维椭球中,长轴、短轴和最短轴分别指代椭球的各个方向。法向量与最短轴相一致,可以帮助我们理解该椭球体的形状特征。

  • 但是高斯法向量从深度图推导出的法向量在初期都非常嘈杂(即含有噪声),导致监督信号本身也变得不可靠。

    1. 噪声问题:

    • 高斯法向量的噪声: 在模型训练初期,由于数据不完善或者模型尚未充分学习,高斯分布生成的法向量可能并不准确。这会导致模型无法正确理解几何形状的方向。

    • 深度图推导法向量的噪声: 从深度图中推导法向量的过程也容易受到噪声影响,特别是在边缘或者不规则表面,深度图可能会产生错误或不准确的法向量。

    2. 噪声监督的影响:

    • 噪声监督: 由于两组法向量本身都包含噪声,这种不精确的监督信号会引导模型朝着错误的方向学习,导致模型在初期阶段可能无法收敛到理想的几何表示。

    • 模型难以学习: 模型需要依赖准确的法向量信息来学习几何形状,如果法向量噪声较大,模型将难以确定正确的形状和表面特征,导致训练过程变得不稳定。

    3. 通俗解释:

    想象你在画一幅风景画,但一开始你的画笔和调色板上都有很多杂乱的颜色(相当于噪声),这使得你很难准确地描绘出风景的轮廓和细节。同样,在几何学习中,噪声法向量让模型难以得到准确的表面方向信息,影响模型对物体形状的理解。

  • 因此,从渲染的深度图中提出了一种鲁棒的法向量计算方法

定义
  • 考虑渲染深度图中的一个局部k×k窗口,有k2深度点p∈ R3,可以从深度值和相机姿态计算。任意一对k2深度点表示曲面切平面上的一个3D向量。因此,通过叉积可以从任 意两对深度点推导出法向量。我们正式定义局部窗口的法 向量为 n = \frac{1}{|T|} \sum_{t_i, t_j \in T} t_i \times t_j

  • 其中T是由局部窗口中的深度点对定义的所有切向量的集合。在实际中,我们不会遍历T中的所有切向量,而是对其中一些进行采样,如图2 (b)所示。这个从深度图派生出来的法线贴图记作N_D

  • 另一方面,我们将高斯法线渲染到另一个法线贴图N_G。 采用N_D 和N_G之间的L_1差值来保证法线的一致性。这样,整体损失函数为

  • 其中L_c 是3DGS中默认的光度损失。为了公平的比较,当与2DGS结合使用时,采用了深度畸变损失和 2DGS 中默认的法线正则化

一些注释

倒球面参数化

基本概念:
  1. 场景分割:将场景分为两个部分:

    • 内部单位球体:这个部分可以想象成一个球形的空间,里面有我们需要渲染的物体。

    • 外部反向球体:这个部分是包围内部球体的一个空间,用于处理外部的场景。

  2. 参数化

    • 内部NeRF:直接在内部球体内进行渲染,因为这个区域比较简单,限制条件好。

    • 外部NeRF:为了处理外部空间的复杂性,我们使用倒球面参数化。

如何进行倒球面参数化?
  1. 四元变量:

    • 外部三维点通过一种特殊方式进行转换,使用一个四元变量表示。这个变量包含:

      • 单位圆上的点:这就像在一个圆周上选择一个点。

      • 距离的倒数:这意味着如果某个点离中心很近,倒数会很大,反之则会很小。

实例解释

想象一下我们在一个公园里:

  • 内部单位球体:公园里的草坪、树木和座椅等所有元素,这些元素都在一个固定的空间内。

  • 外部反向球体:围绕着公园的道路、建筑物和天空等。这些元素不仅影响渲染,还会因为视角的变化而产生复杂的效果。

渲染流程
  1. 内部NeRF

    • 在公园的草坪上渲染树木和座椅。因为这个空间是封闭的,渲染效果非常好。

  2. 外部NeRF

    • 当我们想要渲染公园外的天空和建筑物时,我们使用倒球面参数化的方法。

    • 我们在一个单位圆上选择一个点,比如选择某个方向,然后根据这个方向和距离来调整渲染效果。

正则项

损失函数中的正则项
  1. 什么是损失函数? 损失函数衡量模型的预测值与真实值之间的差距,目标是最小化这个差距。

  2. 什么是正则项? 正则项是损失函数中的附加部分,用于惩罚模型复杂性。简单来说,它会让模型在追求低误差的同时,保持“简洁”或“平滑”。

举个例子

想象你在给一组学生的成绩画曲线。如果你只关注拟合这些数据点,可能会得到一条非常复杂、弯弯曲曲的线,这样在新数据上就很容易出错(过拟合)。为了避免这个问题,你可以在损失函数中添加一个正则项,比如L2正则化(也叫权重衰减),它会惩罚权重过大的情况。

{% label 具体来说,L2正则化会计算所有权重的平方和,然后把这个值加到损失函数中。这就像在说:“如果你的曲线太复杂,就得付出代价。”这样,模型会倾向于选择更简单、更加平滑的曲线,更好地适应新数据 pink %}

隐式亮度场

即不直接存储场景的几何信息,而是通过神经网络学习光线在场景中的分布,实现新视角的合成

具体而言,NeRF将3D坐标和视角信息输入神经网络,输出该位置的颜色和密度,从而生成该位置的光线属性。通过优化网络以匹配给定视角的2D图像,NeRF能够生成逼真的新视角图像,展现复杂的光照和细节

举个例子,假设你拍摄了一座公园的多张照片。NeRF会分析这些照片,理解公园的形状、颜色和光照。然后,当你想从一个新角度查看这个公园时,NeRF可以生成一张全新的、看起来真实的图片,仿佛你真的站在那个角度上

显示亮度场

显式亮度场是指在3D场景中直接定义每个点的颜色和光强度。这种方法通常通过将场景分割成一个个小体素(类似于3D像素),并为每个体素指定颜色和密度。

举个例子,想象你在制作一个简单的3D模型,比如一个玩具车。在显式亮度场中,你会为车的每个部分(车身、轮胎、窗户)指定颜色和光照信息。通过这些信息,你可以在计算机中直接渲染出这个玩具车的图像。

与NeRF不同,显式亮度场需要存储具体的颜色和光强度数据,而不是通过神经网络来学习这些信息。这种方法的优势是实现简单,但在处理复杂场景时,存储和计算的开销会迅速增加

NeuSG和GSDF的应用

应用
  • 优化过程:在NeuSG和GSDF中,首先建立一个三维高斯场,并通过学习优化它的参数。同时,结合符号距离函数,可以通过学习得到高质量的隐式曲面表示。

  • 高质量表面:这种方法能够有效处理复杂的形状和细节,并提供平滑的表面。这种高质量的表面在3D打印、计算机动画和虚拟现实中具有重要应用。

举例

想象你正在设计一个复杂的3D模型,比如一座雕塑。通过使用NeuSG或GSDF,你可以先在3D空间中布置一些高斯分布,来表示雕塑的不同部分。然后,通过优化这些分布和距离函数,你能够得到一个细腻、平滑的雕塑表面,而无需手动调整每个细节。

球谐函数

  • 二维坐标系下

  • 三维直角坐标系下

  • 三维球面坐标系

不用距离用颜色描述

SH的基函数长这样(其中蓝色表示正数,黄色表示负数)

表达式长这样:

其实退化到二维来看,还是很简单的,二维的SH差不多长这样,蓝色表示正数,黄色表示负数:

(具体系数不太准确仅用于示意...)

假如有一个极坐标的函数长这样:

他可以表示为

r=0.5+0.1cosθ+0.07sinθ+0.05cosθsinθ+0.3(2cos2θ−1)

只记系数,这个函数就压缩为了:

0.5, 0.1, 0.07, 0.05, 0.3

回到三维的情况这几个数字其实就是SH系数啦。

当SH的系数用的越多,那么表达能力就越强,跟原始的函数就越接近

当用来描述不同方向光照的SH基函数我们一般用到二阶或者三阶,二阶是4个系数:

拓展到rgb,就是4 * 3 = 12个系数

三阶是9个系数:

拓展到rgb,就是9 * 3 = 27个系数

梯度的理论分析

  • 在一维空间中演示第5.2节中讨论的梯度困境,其中常见的方波函数近似为如图所示的一维高斯分布

{% label 方波函数用高斯分布局部近似。σ= T/4的方波函数比σ= T/2的方波函数得到更大的梯度,从而更快 地向最优位置移动 orange %}

1

让为周期为2T的方波函数,g_σ(x;µ)为均值变化µ、标准差固定σ的一维高斯分布

2

考虑到 L_σ(µ) =\int_{-∞}^{+∞}|g_σ(x;µ)−f(x)|dx中 g_σ 和 f 之间的L_1 损失,我们提出具有相对较小σ的g_σ(x;μ)在解决通过梯度下降最小化L_σ(µ)的最优μ时,有助于更快地收敛。具体来说,当σ1 = T/4和σ2 = T/2时,当初始值μ_0 = 2kT设置在方波函数的任何脉冲开始时,梯度关系 |L′ _{σ_1} (µ_0)| > 2|L′ _{σ_2} (µ_0)|保持不变

3

我们通过简化梯度的表达式来证明这一点。为了方便起见,我们只考虑有限区间[µ0 −3σ,µ0 + 3σ], 因为3σ原理(也适用于3DGS内核),设I+ 和I−表示区间,其中f分别等于1和0.梯度可写为

注意到\frac{∂_{g_σ}(x;μ)}{∂_μ}=-\frac{∂_{g_σ}(x;μ)}{∂_x}可以进一步写为

4

这个式子表示通过对区间端点处的高斯分布值进行加减得到梯度。当σ较小时,这些值更有可能对 最终梯度产生相同的影响(见Eq. (12));当σ变大时,更多的区间被纳入,它们的影响可能是相互矛盾的(Eq.(13))

设μ = μ0 ,当σ= T/4时,我们有

当σ= T/2时,我们有

因此 |L′ _σ1 (µ_0)| > 2|L′ _{σ_2} (µ_0)| ,说明在这种情况下,σ越小的高斯分布梯度越大

高斯在不同的像素射线具有不同的深度顺序

  • 在不同的像素射线中,高斯分布会呈现出不同的深度顺序。简单来说,就是在图像中,不同的像素在某些情况下对应到的物体的远近顺序不同,而高斯分布在这些不同深度下的表现会有所差异

  • 对于一张图像来说,每一个像素都可以被看作是从摄像机发射的一条射线(称为像素射线)。这些射线在穿过场景时,会遇到不同的物体,物体的位置决定了射线穿过的深度。而这些物体在不同的射线方向上,可能离镜头远近不同,因此我们看到的像素值会与这些深度的不同产生联系,最终影响像素颜色或模糊度(例如高斯模糊)

通俗表达: 就像我们透过一排窗户看风景,每扇窗户(像素)能看到的东西可能不一样。有的窗户外面近处有树,有的窗户外面先看到的是远处的房子。所以,每个窗户能看到的物体(对应的像素)离我们有多远是不一样的。高斯分布代表的就是这种“模糊”程度,在有些窗户下看到的物体离我们近,在有些窗户下看到的物体离我们远,因此模糊的效果也不一样。

举例: 假设你站在一片森林边缘,透过你的相机看远处的景象。每个像素对应的就是相机中一条射线。如果你往左边看,可能最近的树就在你面前,但如果你往右边看,可能最近的树离你远一点,因为右边的树更远,所以你会觉得它更模糊。这就是高斯分布在不同像素射线中的“深度顺序”不同的例子

光度损失

光度损失是3D重建中常用的一种损失函数,它通过比较生成图像与真实图像的像素值差异来衡量模型的效果。通俗地说,它是衡量“模型生成的图像和我们实际拍到的照片差距有多大”。 举例:假设你用一个3D模型生成了一张图片,真实照片中某个点的颜色是红色,但生成的图片中是蓝色,那么光度损失就会因为这个差异增大。光度损失越小,说明模型生成的图像越接近真实。

深度畸变损失

深度畸变损失用于衡量模型生成的3D场景中各点的深度信息是否准确。深度信息表示的是物体距离相机的远近,这个损失函数就是为了确保生成的3D模型与真实世界的深度关系保持一致。

假设你生成了一个3D场景,其中某个物体应该离你很远,但模型生成的结果中它离你很近,深度畸变损失就会增大。通过最小化这个损失,可以让生成的3D模型更接近真实世界的深度分布。

个人博客:https://myblog.b2wang.cn

标签:高斯,模型,像素,向量,Trim3D,高斯分布,3D
From: https://blog.csdn.net/w574993075/article/details/143030256

相关文章