3D GS官方团队新作!29.87倍压缩!减少3DGS的内存占用

点击下方卡片,关注「3D视觉工坊」公众号
选择星标,干货第一时间送达

来源:3D视觉工坊

添加小助理:dddvision,备注:方向+学校/公司+昵称,拉你入群。文末附行业细分群

扫描下方二维码,加入3D视觉知识星球,星球内凝聚了众多3D视觉实战问题,以及各个模块的学习资料:近20门视频课程(星球成员免费学习)、最新顶会论文、计算机视觉书籍、优质3D视觉算法源码等。想要入门3D视觉、做项目、搞科研,欢迎扫码加入!

94c8ee3906ddc3a67f49e0b9e982752f.jpeg

0. 这篇文章干了啥?

新视图合成(NVS),即利用照片或视频捕获的场景生成新的3D视图,在过去的25年里取得了令人瞩目的进展,自光场和依赖于视图的纹理映射的第一项工作以来。传统的基于图像的渲染逐渐采用深度学,并在近年来引领了神经渲染,它已成为该领域的主流。之前的方法在速度、视觉质量和内存之间提供了不同的权衡,通常至少会牺牲其中一个;我们基于3D高斯溅射(3DGS)提出了一种内存高效的方法,该方法在新视图合成方面在三个标准上都表现出色。

神经辐射场(NeRFs)引入了一种基于多层感知机(MLP)的新型隐式场景表示,它使用体积密度作为几何形状和方向辐射度的代理。渲染是通过光线追踪进行的。这一解决方案为NVS提供了前所未有的视觉质量,但代价是训练MLP的优化成本非常高,且渲染速度较慢。一些方法通过使用空间数据结构或编码方法来加速训练和渲染,但牺牲了视觉质量。最近,3DGS提出了一种使用空间中的3D高斯基元的显式表示,每个基元都携带一组属性,如位置、协方差(非等轴比例和旋转)、不透明度和球谐(SH)系数,以表示方向辐射度。

3DGS结合了之前所有方法的性能优势:快速训练、高视觉质量,并且是首个在不降低质量的前提下提供实时渲染速度的方法。然而,原始方法会导致不合理的内存占用(所呈现场景的内存占用在700Mb到1.2Gb之间)。这种内存占用对于存储和处理都是一个问题,同时也阻碍了向移动设备的流式传输。

原始的3DGS方法从一个稀疏的3D基元集合开始,并根据梯度逐步增加密度。这是一种有效的策略,但也很浪费。类似地,该方法对场景中的所有基元都使用三个SH(球谐函数)带,即使在不存在依赖于视图的效应的情况下,单个颜色值就足够了。最后,大多数基元属性不需要非常高的精度或动态范围,这使得它们适合进行量化。

我们首先分析了这三个方面,即基元数量、SH带的使用情况和量化,并提出了一个完整且有效的解决方案。为了减少基元的数量,我们通过开发一种分辨率感知的冗余分数来扩展现有的剪枝方案,使用一种有效的两步算法来消除大约60%的基元(与基线相比)。我们为SH带引入了一种自适应调整方法,在训练过程中为每个基元减少带的数量。我们通过结合贡献估计和多视图一致性评估来识别没有依赖于视图的外观的基元。最后,我们为某些属性提出了一种基于码本的量化方法,并使用半浮点数来进一步减少表示的存储大小。

综合以上三个步骤,3DGS表示的大小减少了27倍,渲染速度提高了1.7倍。

下面一起来阅读一下这项工作~

1. 论文信息

标题:Reducing the Memory Footprint of 3D Gaussian Splatting

作者:Panagiotis Papantonakis, Georgios Kopanas, Bernhard Kerbl, Alexandre Lanvin, George Drettakis

机构:Inria、Université Côte d'Azur、TU Wien

原文链接:https://arxiv.org/abs/2406.17074

代码链接:https://repo-sam.inria.fr/fungraph/reduced_3dgs/#

可视化:https://repo-sam.inria.fr/fungraph/reduced_3dgs/webviewer.html

官方主页:https://repo-sam.inria.fr/fungraph/reduced_3dgs/

2. 摘要

3D 高斯溅射(splatting)在新型视图合成中提供了出色的视觉质量,同时具有快速的训练和实时渲染能力。然而,不幸的是,这种方法在存储和传输方面的内存需求过高。我们首先分析了这一问题的原因,确定了三个主要方面可以减少存储量:用于表示场景的3D高斯基元的数量、用于表示方向辐射度的球谐函数系数的数量以及存储高斯基元属性所需的精度。

我们针对每个问题提出了解决方案。首先,我们提出了一种高效、分辨率感知的基元剪枝方法,将基元数量减少了一半。其次,我们引入了一种自适应调整方法,为每个高斯基元选择用于表示方向辐射度的系数数量。最后,我们采用了一种基于码本的量化方法,并结合半浮点数表示来进一步减少内存。这三者结合在一起,在我们测试的标准数据集上,整体磁盘大小减少了27倍,渲染速度提高了1.7倍。我们在标准数据集上展示了我们的方法,并展示了当在移动设备上使用该方法时,我们的解决方案如何显著减少下载时间。

3. 效果展示

左图:一部手机为自行车场景运行修改后的截图。右图:同一场景,使用我们的方法进行处理,达到显著更低的内存占用和更短的下载时间。

48a7ff6ab974776b712e0ced4a92626a.png 40ae58b94fa8361bb9b89bf87b40c954.png

4. 主要贡献

总结来说,我们提出了三大主要贡献:

• 一种高效、分辨率感知的基元剪枝方法,该方法在优化过程中减少了不必要的点,导致基元总数减少了60%。

• 一种自适应调整方法,用于为每个3DGS基元选择所需的SH带数,显著减少了整体内存占用。

• 一种基于码本的量化方法,结合半浮点数表示,以更有效地存储表示,从而进一步减少内存。

尽管我们的最终目标是减少最终存储的表示大小,但根据实现方式,生成的3DGS模型在推理时间渲染时可以显著减少内存需求。我们对3DGS中使用的标准数据集集进行了完整的评估,展示了不同场景类型下对内存减少和渲染速度的影响。我们还展示了在WebGL框架中实现我们方法的情况,该方法在移动手机上实现了20-30倍的下载速度提升。

5. 基本原理是啥?

我们的目标是显著减少3DGS(3D高斯溅射)的内存占用,将其降低到最紧凑的辐射场表示的水平,同时保持初始方法的速度和质量优势。为此,我们首先分析模型的内存占用以及影响内存使用的各种参数。我们从对3DGS的简短回顾开始,重点关注与存储相关的部分。

3DGS将场景建模为一组3D高斯基元(我们将其表示为椭球体,如图2右侧所示),每个基元都位于给定的中心点上。每个基元都有一组属性,即不透明度(用于Alpha混合)、协方差(即各向异性缩放和旋转)以及球谐函数(SH)来表示漫反射方向辐射度。该技术通常以相机校准算法生成的点云为初始状态。这个初始点云对于新型视图合成来说过于稀疏;因此,3DGS优化包括一种自适应控制高斯数量的方法。在最初为空或缺少细节的区域,通过添加更多基元来密集化3D高斯。一个简单的度量标准用于控制密集化,即基元位置的梯度大小:在梯度较大的地方,会添加基元。此外,不透明度较低(因此在渲染中不贡献)的基元或世界空间尺寸非常大的基元会被定期剔除。

我们首先分析了得到的表示,观察到在许多情况下,3DGS创建了不必要的密集基元集。一个理想的密集化策略应该首先避免这种情况;然而,可靠地识别所需的基元密度是困难的,因为这相当于事先知道优化问题的解决方案。因此,我们通过确定哪些基元是冗余的来解决基元密度过高的问题;如我们后面所示,这强烈依赖于观察细节的尺度和分辨率。

给定3DGS基元的属性内存占用如下:位置、尺度和颜色(每个属性3个浮点数),旋转(四元数使用4个浮点数),不透明度(1个浮点数),以及SH系数。这导致了一个基元结构,其中包含14+3∑𝑁𝑖=1(2𝑖+1)个浮点数,其中𝑁=0,1,2,...是SH带的数量。当使用3个带(如原始论文中所述)时,每个基元需要59个浮点数来存储,其中45个(或76%)用于SH建模依赖于视图的效果。

我们的第二个观察结果是,这会导致内存利用率低下,因为场景的大部分区域包含完全或主要是漫反射材料,这些材料原则上只需要使用基础(RGB)颜色即可很好地建模。在许多情况下,SH被用于表示依赖于视图的材料外观。然而,重要的是要注意,3DGS和类似方法中的依赖于视图的效果也可以通过多个基元的组合来建模。一个典型的情况是,这些方法在反射表面后面创建的“反射几何体”,用于模拟移动的高光或反射。我们引入了一种新方法,它使用可变数量的球谐函数带,仅在真正需要时才启用它们,从而在真正需要的地方分配内存。

我们的第三个观察结果涉及许多基元属性的有效动态范围和所需精度。特别是,不透明度、缩放、旋转和SH系数不需要非常高的动态范围,也不对小的误差非常敏感。我们将利用这一事实,引入一个基于聚类的码本方法的后处理步骤,以进一步压缩表示。相反,以类似的方式降低基元位置的精度会导致质量显著下降。

40bbfba3e9edd4d30f1a98bd55e8abe9.png

基于上述分析,我们首先介绍一种在优化过程中识别并剔除冗余基元的方法。接下来,我们介绍一种允许每个基元使用可变数量的SH频段的方法。最后,我们介绍一种代码本压缩方法,该方法对不需要高精度的属性进行量化作为后处理。我们方法的概述如图3所示。

5a9e645eb6a0f9234211ff2804b53696.png

在优化过程中,原始的3DGS方法会定期剔除那些低于指定不透明度阈值的基元,因为它们对最终图像的贡献很小。为了限制基元的数量,一个直接的方法是强化这一策略,并更积极地移除低不透明度的基元,例如,每次删除指定百分比的基元。这样做已经能够限制最终基元的数量,进而减少表示的内存占用。然而,正如我们所观察到的,3DGS的自适应密集化可能导致某些区域的高斯数量异常高。因此,我们提出估计这种空间冗余性,并将这些信息与低不透明度过滤相结合,以实现一种高效的剔除策略。

我们方法的目标是首先识别空间中存在冗余基元的区域。本质上,我们正在寻找存在大量基元的区域,但这里的每个基元对最终渲染图像的贡献都很小。为了对每个空间中的高斯基元𝑔做出这个决定,我们找到其他基元𝑔′在围绕𝑔的球形区域内重叠的数量。在选择球体大小时,我们考虑了观察𝑔的像素在世界空间中的足迹。对于给定的视图𝑗,𝑔处的像素足迹确定了从𝑗视角看到的投影到𝑔深度的像素的世界空间范围(见图4(a,b))。理想情况下,该范围内的𝑔周围的3D区域应该由少量的基元占据;该区域中紧密排列的高斯群体会超过从𝑗可以区分的细节量。

fe9c64ab585e86807d5f3304a78b2962.png

6. 实验结果

在表1中,我们展示了解决方案的有效性。我们的基元减少方法将内存占用减少到原始方法2的32%至52%之间。对PSNR的平均影响很小,在-0.32 dB至+0.16 dB之间,对视觉质量的影响微乎其微。我们之所以不仅看到视觉质量的轻微下降,有时还有所提升,是因为基元和SH剔除也可以作为一种正则化策略,迫使优化找到泛化能力更好的解决方案。我们展示了我们的主要贡献——基元和SH剔除以及量化——都在显著且相当程度上对压缩3DGS表示做出了贡献。这些元素中的每一个都大约将表示的大小减少了3倍,导致在3DGS中使用的所有数据集上平均减少了27倍。我们注意到,将码本和半浮点类型处理集成到渲染器中,将使场景的VRAM消耗与其所需的磁盘存储一样减少。

4bfb58276187acc64a521c6f605b44ad.png

这使得3DGS表示对于实际应用更加实用,因为它可以通过网络更快地传输资产并更快地加载它们。我们的修改几乎不会降低视觉质量,特别是在较小的显示器上。在图5中,我们展示了三个场景的每一步的视觉效果,每个场景都来自测试的数据集。我们展示了测试输入视图,以便与真实情况进行比较。在打印版中,差异是看不见的;即使在计算机屏幕上查看,视觉质量下降也是最小的。这与其他最先进的实时方法形成鲜明对比,在这些方法中,质量差异更加明显。请参见图6的说明。

bc9bf18fcf1e421e90483b7cca8492f4.jpeg ff6968f1782cdb58895c1158782a0c78.jpeg

我们将所提出的方法与之前的解决方案进行了比较。在表2中,我们重现了原始3DGS论文中的结果,并添加了四行:一行是最近发表的MeRF方法,一行是3DGS*(对应于使用公共代码库的运行结果,见前文脚注),以及我们的完整解决方案,以及低压缩和高压缩变体。我们展示了基于3DGS的方法在30K次训练迭代后的结果。为了说明不同目标用例的可能权衡,我们还包括了两个配置略有不同的变体,实现了不同程度的压缩:“低”和“高”。这些变体分别使用了参数𝜖𝜎 = 0.01, 𝜖𝑐𝑑𝑖𝑠𝑡 = 0.0068和𝜖𝜎 = 0.06, 𝜖𝑐𝑑𝑖𝑠𝑡 = 0.054。此外,对于高压缩变体,用于剔除的最小冗余分数设置为2。我们看到,与INGP甚至MipNerf360相比,我们提出的方法及其变体在内存方面具有竞争力,但保持了3DGS在速度和质量方面的优势,包括训练时间。

3a3b1b64cc90beff07e7e55d2d54e69b.png

接下来,我们进行了一系列消融研究来分析我们的选择对内存和质量的影响。我们研究了各种参数的影响,特别是仅基于不透明度剔除与使用我们的冗余度量并选择低不透明度或随机的高分候选者的影响。结果汇总在表3中。虽然不透明度剔除和冗余减少都有相似的效果,但它们识别和剔除的是不同的基元集。通过结合这两种策略,我们在保持稳健的质量指标的同时获得了最大的减少。表4量化了我们从完整的32位浮点数到半浮点数的量化影响。再次强调,与所需文件大小的显著减少相比,这种影响是微小的。

da9eb98e23f090de376967ba8cbb140f.png 6ae134708c810f19d3e2acab3a2717bc.png

7. 总结 & 未来工作

在本文中,我们提出了一种针对3DGS的完整且有效的内存减少方法。我们通过引入一种分辨率感知的基元减少方法、将基元数量减少一半、一种自适应调整方法以选择每个基元所需的适当数量的SH频段,以及基于码本的量化方法,实现了这一目的。

我们的方法实现了内存×27的减少,同时渲染速度提高了×1.7。我们在WebGL实现的流式传输设置中展示了我们的结果,减少了下载时间20-30倍,并提高了渲染速度约3倍。我们的方法是首个保留高视觉质量的流式传输/移动3DGS解决方案。我们的内存减少消除了3DGS的一个重大限制;因此,我们的方法在所有三个标准(速度、质量和内存消耗)上都是最具竞争力的NVS方法。

在未来的工作中,研究如何进一步减少所需的基元数量,更重要的是从一开始就避免过度密集化,将是一个有趣的方向。简单的初步测试表明,这是一个非常困难的问题;一个可能的方向是使用数据驱动的先验知识,例如深度监督。

对更多实验结果和文章细节感兴趣的读者,可以阅读一下论文原文~

本文仅做学术分享,如有侵权,请联系删文。

3D视觉工坊交流群

目前我们已经建立了3D视觉方向多个社群,包括2D计算机视觉大模型工业3D视觉SLAM自动驾驶三维重建无人机等方向,细分群包括:

2D计算机视觉:图像分类/分割、目标/检测、医学影像、GAN、OCR、2D缺陷检测、遥感测绘、超分辨率、人脸检测、行为识别、模型量化剪枝、迁移学习、人体姿态估计等

大模型:NLP、CV、ASR、生成对抗大模型、强化学习大模型、对话大模型等

工业3D视觉:相机标定、立体匹配、三维点云、结构光、机械臂抓取、缺陷检测、6D位姿估计、相位偏折术、Halcon、摄影测量、阵列相机、光度立体视觉等。

SLAM:视觉SLAM、激光SLAM、语义SLAM、滤波算法、多传感器融合、多传感器标定、动态SLAM、MOT SLAM、NeRF SLAM、机器人导航等。

自动驾驶:深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器、多传感器标定、多传感器融合、自动驾驶综合群等、3D目标检测、路径规划、轨迹预测、3D点云分割、模型部署、车道线检测、Occupancy、目标跟踪等。

三维重建:3DGS、NeRF、多视图几何、OpenMVS、MVSNet、colmap、纹理贴图等

无人机:四旋翼建模、无人机飞控等

除了这些,还有求职硬件选型视觉产品落地最新论文3D视觉最新产品3D视觉行业新闻等交流群

添加小助理: dddvision,备注:研究方向+学校/公司+昵称(如3D点云+清华+小草莓), 拉你入群。

da4bc861a780ecc185b8506e846ee047.png
▲长按扫码添加助理
3D视觉工坊知识星球

3D视觉从入门到精通知识星球、国内成立最早、6000+成员交流学习。包括:星球视频课程近20门(价值超6000)项目对接3D视觉学习路线总结最新顶会论文&代码3D视觉行业最新模组3D视觉优质源码汇总书籍推荐编程基础&学习工具实战项目&作业求职招聘&面经&面试题等等。欢迎加入3D视觉从入门到精通知识星球,一起学习进步。

8081a25464510dcba4784ffae6926a06.jpeg
▲长按扫码加入星球
3D视觉工坊官网:www.3dcver.com

3DGS、NeRF、结构光、相位偏折术、机械臂抓取、点云实战、Open3D、缺陷检测、BEV感知、Occupancy、Transformer、模型部署、3D目标检测、深度估计、多传感器标定、规划与控制、无人机仿真、三维视觉C++、三维视觉python、dToF、相机标定、ROS2、机器人控制规划LeGo-LAOM、多模态融合SLAM、LOAM-SLAM、室内室外SLAM、VINS-Fusion、ORB-SLAM3、MVSNet三维重建、colmap、线面结构光、硬件结构光扫描仪,无人机等

e048ac3688ac299bbe38149d59db3cc1.jpeg
▲长按扫码学习3D视觉精品课程
3D视觉相关硬件
图片说明名称
5d86b1fb4463e6ad5182190f38271894.png硬件+源码+视频教程精迅V1(科研级))单目/双目3D结构光扫描仪
e8d3f5ab2ae5f4d3ce82daec1e1d38d7.png硬件+源码+视频教程深迅V13D线结构光三维扫描仪
c72b8595640c37dc2f33c4bf0eb58fe2.jpeg硬件+源码+视频教程御风250无人机(基于PX4)
b15734a4a7093e1f0bf5c1d645c6d9a5.png低成本+体积小
+重量轻+抗高反
YA001高精度3D相机
9c1a88b4136e58013c7349e7946a6654.png抗高反+无惧黑色+半透明KW-D | 高精度3D结构光
开源相机
86f46e47adda242bc71b4d7bfceaaa10.png硬件+源码‍工坊智能ROS小车
c8334383ae80ec74478d8baf50224258.png配套标定源码高精度标定板(玻璃or大理石)
添加微信:cv3d007或者QYong2014 咨询更多
—   —

点这里👇关注我,记得标星哦~

一键三连「分享」、「点赞」和「在看」

3D视觉科技前沿进展日日相见 ~ 

outside_default.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值