Reducing the Memory Footprint of 3D Gaussian Splatting
目录
摘要
贡献
分析3DGS内存使用情况
3DGS的内存减少
1.支持比例和分辨率的冗余基元移除
实现
结果和评估
1.结果
2.评估
总结
摘要
该技术为新兴的视图合成提供了卓越的表现力,并且其优势在于能够快速训练并实时渲染;然而,在实际应用中存在较高的内存消耗问题。经过深入探究后发现,在生成高质量图像的过程中需要解决以下三个关键问题:一是场景中的3D高斯基元数量过多导致存储负担过重、二是方向辐射的数据复杂度使得球面谐波系数需求过高、三是对高斯基元属性的数据精度要求过高。针对每个问题我们提出了一种独特的解决方案:第一种方案采用了高效且分辨率敏感的一次性剪枝算法将数据规模缩减了一半、第二种方案引入了一种自适应调整机制来优化每个体素对应的方向辐射数据量、第三种方案则采用了压缩编码策略并结合半浮点表示法来进一步降低内存占用。综合而言,在经过我们优化后的组件测试中这些改进措施使得总体占用空间减少了×27倍同时将渲染效率提升了约1.7倍的效果(见图1)。我们将改进方案应用于移动设备测试并展示了其显著提升了性能的效果(见图1)。

如图1所示,在左侧展示了一部手机在自行车场景下运行优化版本gsplat.js所得的截屏;右侧呈现了采用我们方法后在同一场景下的效果对比:内存占用明显降低,并且下载时间也较短
贡献
• 一种高效且具有分辨率意识的基元修剪方案,在优化过程中能够去除多余的数据点,并使该方案所对应的基元计数总数降低约60%。
• 通过设计一种自适应调节机制,在每个3DGS基元中动态确定所需使用的SH带数量,大幅降低了整体内存占用量。
• 基于编码本位的量化策略,并结合半浮点表示法能够更加高效地进行数据表示处理,并进一步降低了整体内存占用量。
分析3DGS内存使用情况
我们的目标是大幅减少3DGS所需内存空间,并使其存储效率达到最高水平的同时维持原始算法的速度与质量优势为此我们将对模型运行过程中涉及内存占用的关键组件进行深入分析随后我们将重点介绍与数据存储相关的具体实现细节
3DGS将场景建模为一组3D高斯基元(我们将其表示为椭球体),见图2右端所示。这些基元均以指定点为中心,并各自携带一组属性参数:用于alpha混合的透光率(即各向异性比例和旋转参数),以及表示漫反射方向辐射的球面谐波(SH)。该技术通常通过相机校准算法生成的点云来进行初始化操作。然而,在新颖视图合成过程中所使用的初始点云过于稀疏;因此引入了3DGS优化方法——一种基于自适应控制的高斯数目调节策略。在初始阶段为空或缺乏细节的区域,则通过动态增加基元数量来实现密集化处理。为了实现密集化效果,在基元位置密度较大的区域会优先增加基元数量;同时为了保证渲染效率,在低透光率的基本体或占据世界空间范围较大的基本体会定期进行移除处理。

该系统通过分析输入视图并结合稀疏采样点数据生成具有高度真实感的照片。该系统采用椭圆体呈现而非溅射效果来展示各个场景;这些场景均基于超过数十万的几何元素构建。其中每个基础元素(base element)都包含以下关键参数:位置坐标𝑝(position)、旋转四元数𝑞(rotation quaternion)、缩放因子𝑠(scale factor)、透明度𝛼(transparency coefficient)、色彩值以及三个球面调色板(three spherical harmonics)。这种复杂性显著增加了该系统所需内存资源的使用上限。
我们对结果表示进行了深入探讨,在许多情况下发现3DGS会生成不必要的密集基元集合。一个理想化的致密化策略应首先防备这种情况;然而,在准确判断所需基元的密度方面存在巨大挑战——因为这意味着预先知道优化问题的最佳解决方案。为此,我们通过识别哪些基元是多余的来解决过度密集的问题;正如我们稍后将演示的那样,在很大程度上这取决于所观察细节的规模与分辨率。
对于给定3DGS基元的属性内存占用情况如下所述:位置、比例以及颜色均以浮点数形式存在,并各自占据不同数量的空间——位置及比例各占用了三个浮点数值而颜色仅使用一个浮点数值;旋转则通过四元数的形式占据四个浮点单元;不透明度同样采用单个浮点值表示;此外还包括SH系数所涉及的一系列参数。这些参数共同构成了总共有14 + 3Í𝑁 = 1 (2) 个浮点数值构成的基础数据结构——其中𝑀 = 0, 1, 2分别代表不同的SH频带数目。当采用论文中建议的三个频带时,在这种情况下每个基元所需存储的空间总量为59个浮点数值——其中约45个(占76%)由球谐函数建模用于视图相关效果的模拟与构建。
我们得出了第二个结论:这种现象会导致严重的内存资源浪费问题。具体而言,在场景中绝大多数区域都涉及完全或接近完全漫反射材质的情况较为普遍;这些材质通常仅需基于RGB的基本颜色信息进行建模即可达到较好的表现效果。然而,在许多情况下SH常被用来描述与视角相关的材料外观特征;需要注意的是,在3DGS等类似的方法中也存在类似的视图相关效果建模需求;例如这种方法通过构建"反射几何体"的方式来模拟动态高光和反射变化过程。为此我们提出了一种新型的方法:该方法采用可变数量的球面谐波频带;通过仅在实际需求时启用这些频带以优化内存使用效率
我们的第三项观察涵盖了大量原始特征及其显著动态范围和准确性要求。值得注意的是这些参数中不透明度比例旋转以及SH系数具有较低动态范围要求同时也表现出对微小误差高度敏感性。我们将利用这一事实引入后处理步骤并采用基于聚类的码本方法进一步压缩表示数据。与此不同采用类似策略来降低基础元的位置精度将导致系统性能明显下降。
3DGS的内存减少
在分析的基础上, 我们首先开发了一种能够识别冗余基元并将其在优化过程中进行修剪的方法. 随后, 我们引入了一种允许可变数量, 每个基元对应的SH频带. 最后, 针对那些对高精度要求不高的属性, 我们执行了量化处理, 作为后处理步骤进行了码本压缩.

图3展示了三个阶段的压缩过程及其效果对比。
左侧:在训练期间每隔1000次迭代会计算空间冗余分数并将其映射至基本体中进行剔除多余基本体的操作。
中间部分:在致密化停止后的15K迭代过程中通过分析SH系数确定哪些基元仅需使用一个RGB通道即可表示(即用零个、一个、两个或三个SH带表示),从而可避免存储不必要的SH系数。
右侧:最终在训练完成后对除了原始位置外的所有值执行码本量化处理。
每个阶段相对于原始数据集的记忆量节省比例如图所示,在所有测试数据集上总节省率为27倍(×27),同时平均PSNR降低了约-0.21 dB。
1.支持比例和分辨率的冗余基元移除
在优化过程中,在原始3DGS方法中会定期去除小于指定不透明度阈值的基元
我们的目标在于首先识别空间内存在冗余基元的区域。核心在于搜索出包含大量基元的区域,在此场景下每个基元对生成渲染图像的影响较小。为了确定每个高斯基元g的具体属性我们需要考察其周围一定范围内其他高斯基元的数量。为了合理设定这一范围大小我们参考了观察到的像素足迹数据:在给定视图中g处对应的像素足迹标识了从相机到观察的最大深度(见图4(a b))。理想情况下这种范围内仅需少量高斯即可覆盖所有相关细节;而过于密集则可能导致信息过载从而影响渲染质量。在此基础上我们通过最近视图中的像素足迹确定了球体范围其空间范围与该视图所呈现的最小细节成比例这样能有效避免因视角差异导致的空间失真现象同时又能保证计算效率不会显著下降。这种设定方式使得冗余检测趋于保守即可能导致我们低估不同视角下的冗余程度但在实际应用中这种保守性能够帮助维持一致性和稳定性避免因视角变化带来的性能波动问题严重时甚至可能引发性能瓶颈或者系统崩溃风险为了避免遗漏重要细节我们在计算时采用了动态缩放机制:对于更高分辨率的新视图我们将采用更大的采样密度从而维持最佳渲染效果与原有方案相比这种方法既保持了理论上的精确性又兼顾了实际应用中的灵活性

图4展示了我们提出的基于分辨率和尺度感知冗余度量在高斯表示场景必要性分析中的应用效果。a)各个相机能够捕获特定分辨率的细节信息,在相机距离场景越远的情况下,则该相机所代表的空间分辨率会相应降低;b)在同一个场景中,默认情况下由多个摄影机组成的基元能够分别表示不同的空间分辨率层次;c)对于每个高斯g,在输入条件下我们选取最高分辨率a_{i min}来覆盖该区域;在此基础上统计区域内与该高斯覆盖范围相交的所有高斯个体的数量;随后通过设置阈值K剔除那些受到K个及以上其他高斯影响区域内的高斯个体;在这个过程中发现,在实际应用中并非所有高斯都能被有效剔除——例如对于高斯g0而言,在其覆盖区域内至少存在一个子区域a_{0 min}并未受到其他任何高斯的影响。
对于庞大数量的高斯体而言,在天真地估算上述冗余分数方面会耗费巨大的资源成本。为了限制相交测试的数量,在基元集合上部署具有30个邻居的k-NN搜索算法来筛选候选相交基元是一个有效的方法。此外,在执行椭球点相交测试之前对球体半径进行椭球轴缩放作为一种近似方法能有效替代复杂的球体-椭球相交测试(该操作仅涉及一次点积运算)。通过统计通过相交测试的基元数量我们可以确定每个高斯中心所对应的球形区域内的空间冗余度值;这种计数本质上相当于在感兴趣的采样点处评估空间冗余度字段;与均匀采样不同我们采用高斯中心作为采样位置并将计算出的相应分数值传播到这些基元上以确保采样结果更具代表性。为了保证这一过程的安全性我们在每一步骤中都选取所有相关椭球体相交区域中最小的那个冗余分数来进行传播操作这样能更准确地反映那些与非冗余填充区域有重叠接触的情况并确保最终结果能够更好地捕捉到关键细节信息
在当前阶段,在每个被分析的对象内部系统中,在每个基体单元都被赋予了一个特定的冗余评分之后,在按照各自的冗余评分对这些单元进行排序后,在过滤过程中排除了那些冗余评分超过自适应阈值(记为𝜏𝑝)的所有单元。其中, 𝜇代表所有单元 redundancy scoring集合中的平均值, 并且\120583代表其标准差. 通过这种方法, 我们能够有效地将具有高于一定标准 deviation 的 redundancy 分数的标准差从 mean 值中去除. 在所有的实验运行中,默认设置均为𝜆𝑟=1.
由于各基元间的冗余分数相互关联,在某些特定条件下可能会导致过度去除某些区域中的滤过基元。相比之下,则采取了更为激进的方式——仅移除了总基数的一半。在筛选过程采用低不透明度作为筛选标准,在这一筛选过程中采用低不透明度作为筛选标准时,在这种情况下则会使得整个处理流程更加简洁高效。其中,基于高斯模型得出的视觉结果贡献度指标——不透明度——被选作评估和筛选的标准。同时,在这一筛选过程中采用低不透明度作为筛选标准时只会对图像质量产生微乎其微的影响
我们经过研究发现,在去除多余分数低于3的基元——即一个基元至少与其他两个基元存在共同区域——的过程中可能会对质量造成负面影响。为此我们采用了以下策略:将𝜏𝑝设置为(𝜇 + 𝜆𝑟𝜎, 3),这样在实际应用中意味着我们在选择时不会去除那些冗余分数介于4至无穷大的基元(因为这些数值均为整数)。
为了降低不透明度我们采用了𝐿1稀疏正则化方法优化损失函数。这一策略不仅能够降低训练复杂性还能显著提升模型效率。具体而言我们通过在损失函数中添加𝐿1稀疏项来引导模型向具有更低复杂性的解收敛进而减少不必要的基元数量。在优化过程中每1000次迭代就执行一次基数缩减操作以确保计算效率的同时避免过度拟合的问题。
第6.2节对该过程的结果进行了细致评估;值得注意的是简单的低透明度剔除所产生的结果与冗余剔除接近但在某些特定条件下两者的性能表现存在差异
对于仅采用低透明度部分的情况每次迭代都移除了3%最低不透明度的基元并且设定最大允许的不透明度阈值为0.05这是因为较高的阈值可能会对图像质量造成负面影响
实现
基于开源3DGS框架的基础上, 我们开发了我们的方法. 我们已发布该源代码作为开放资源.
然而,在训练阶段实施的基本修剪策略和动态自适应调整措施都会影响显存占用。尽管这些措施的效果在显存资源接近上限时趋于一致,但它们并未显著增加整体内存需求。在渲染流程中,默认情况下模型通过减少高斯系数的数量来降低内存消耗。一方面是因为模型通过减少高斯系数的数量来降低内存消耗。另一方面,则是因为动态生成少量高斯数所需的存储空间远小于完整球谐函数(Spherical Harmonics, SH)带所需的空间。此外,在实现细节上进行优化后发现:灵活获取不同数量的SH系数只需对其程序逻辑进行轻微优化即可实现。
基于该方法在文件大小方面的表现(...),我们评估了其有效性(...)。特别地,在处理3DGS表示(...)时,并非所有数据都是实时解压缩(...)。特别地,在处理3DGS表示(...)时,并非所有数据都是实时解压缩(...)。特别地,在处理3DGS表示(...)时,并非所有数据都是实时解压缩(...)。特别地,在处理3DGS表示(...)时,并非所有数据都是实时解压缩()。特别地,在处理3DGS表示()的时候,并非所有数据都是实时解压缩。()。特别地,在处理3DGS表示的时候,并非所有数据都是实时解压缩。()。特别地,在处理3DGS表示的时候,并非所有数据都是实时解压缩。()。特别地,在处理3DGS表示的时候,并非所有数据都是实时解压缩。()。特别地,在处理3DGS表示的时候,并非所有数据都是实时解压缩。()。
结果和评估
所有结果均基于NVIDIA RTX A6000 GPU在Linux环境下处理所得。
所有结果均基于NVIDIA RTX A6000 GPU在Linux环境下处理所得。
1.结果
如表1所示,我们展示了该方法的有效性。通过原始减少技术(即原方法二)的应用,在内存占用上实现了降低至其32%-52%区间的目标效果。在PSNR指标方面的影响最小值为-0.32dB至+0.16dB,在视觉质量方面的影响最小。同时观察到最低程度的视觉质量退化现象,并且在某些情况下实现了改进效果(即原方法与SH剔除结合同样可作为正则化手段),这表明优化过程能够寻找到更好的泛化能力解。具体而言,在该研究中我们成功证明了三个主要贡献:一是原方法与SH剔除技术相结合的应用;二是量化优化策略的确立;三是每个关键组件均能将数据规模缩减至原来的三分之一水平(即每个关键组件均能实现约三倍的数据规模缩减)。通过证明原方法与SH剔除技术相结合以及量化优化策略的应用(即量化处理后的数据量较之未采用量化处理的情况减少了约三倍),我们成功实现了所有目标数据集所占存储空间总量平均缩减约二十七倍的效果)。此外,在具体实现过程中发现:若将代码簿与半浮点数据整合进渲染引擎中,则能够在不增加额外存储开销的前提下显著提升VRAM消耗效率(即此方案能够在满足所需存储条件下最大限度地降低VRAM消耗)。
通过逐步添加这些元素,在线段中将演示每个组件的作用。从上至下部分,请注意我们将在以下方面进行详细说明:首先减少基元数量带来的效果;其次采用自适应SH参数优化所带来的效果;最后是量化处理所产生的影响。在每种配置下,默认情况下我们都会进行SSIM、PSNR、LPIPS指标的评估,并比较不同内存占用情况下的模型性能。

2.评估
我们将我们提出的方法与以前的解决方案进行了比较。在表2中,我们复制了原始3DGS论文的结果,并添加了四行:一行用于最近发布的MeRF方法,一行用于3DGS*,对应于使用公共代码库的运行(见前面的脚注)和我们的完整解决方案,以及低压缩和高压缩变体。我们展示了30K训练迭代后基于3DGS的方法的结果。为了说明不同目标用例的可能权衡,我们还包括两种配置略有不同的变体,实现了不同程度的压缩:“低”和“高”。这些变体使用参数𝜖õ=0.01,𝜖𝑐𝑑𝑖𝑠𝑡 = 0.0068和,𝜖𝑐𝑑𝑖𝑠𝑡 = 分别为0.054。此外,对于高压缩变体,要考虑用于剔除的最小冗余分数被设置为2。我们看到,与INGP甚至MipNerf360相比,我们提出的方法及其变体在内存方面具有竞争力,但保持了3DGS w.r.t.速度和质量的优势,包括训练时间。
接下来,我们进行一组消融研究,以分析我们的选择对记忆和质量的影响。我们研究了各种参数的影响,特别是仅基于不透明度的剔除与使用我们的冗余度量并选择具有低不透明度或随机的高分候选者相比。结果汇总在表3中。虽然不透明度剔除和冗余减少都有类似的效果,但它们可以识别和剔除不同的基元集。通过将这两种策略相结合,我们在保持稳健的质量指标的同时获得了最高的缩减率。表4量化了我们从全32位浮点到半浮点量化的影响。同样,与所需文件大小的显著减少相比,影响很小。
不同方法的定量对比;第一部分数据源自3DGS出版物中的表1。基于三个具有代表性的数据集进行评估。我们提出的方法在尺寸、速度与质量三者之间达到了最佳平衡,在这一关键指标上表现尤为突出。
M-NeRF360模型以其最小规模的网络架构著称,在耗时约几天训练完成的情况下实现了高质量图像生成(渲染时间为几分钟)。然而其质量与渲染速度均显著低于M-NeRF360。
我们的改进版本"红色方法"表现最优,在 orange 方法之后紧随其后,在 yellow 方法之后则稍逊一筹(各表均采用了统一的颜色编码方案)。

表3展示了基于原始剔除策略的消融效果。
为了验证筛选策略的有效性, 我们采用了更为简洁的基础模型作为基准。
第一阶段, 我们采用直接去除非透明区域的方法进行筛选。
第二阶段, 通过计算空间冗余分数(参考第4.1节), 我们筛选出具有最低不透明度50%的关键帧。
第三阶段, 我们在保持原有筛选标准的同时, 随机移除部分关键帧以模拟冗余情况。
最终阶段, 我们的综合策略将两种指标相结合:基于非透明区域的选择和基于空间冗余的关键帧提取。实验结果表明,在所有对比方案中, 综合优化后的方法较最优方案提升了约9%的关键帧数量。

表4中展示了半精度浮点对总模型内存的PSNR、内存和位置内存占用率的影响。该方法使质量下降限制降低至约0.07 dB,并实现了内存减少至少20%的目标。

总结
在本文中,我们提出了一个完整且高效的3DGS内存缩减方案。通过引入一种分辨率感知的基元缩减策略,并结合一种优化后自动计算SH频带数量的方法以及一种基于码本的压缩技术,在不牺牲视觉质量的前提下显著降低了模型复杂度。
该方法使得内存占用降低了27倍。在流媒体设置中展示了实验结果,并采用WebGL技术实现了渲染过程。与现有方案相比,在速度方面提升了约1.7倍,在压缩效率方面提升了约1.8倍的同时内存消耗也大幅降低。我们是首个适用于流媒体及移动平台的3DGS解决方案,在视觉质量方面表现优异。通过对比实验发现,在速度、压缩效率及内存占用这三个关键指标上均优于现有方案。
未来的工作中, 探索如何进一步降低所需的基础单元数量, 确实是一个引人入胜的研究方向. 初步实验结果表明, 这一问题具有显著的挑战性; 一个可行的研究方向是利用数据驱动的方法建立先验模型.
