近日,来自University of California, Davis的Soroush Abbasi Koohpayegani介绍了他和其他几位作者的研究论文Compact3D: Smaller and Faster Gaussian Splatting with Vector Quantization(《Compact3D—通过矢量量化实现更小更快的高斯斑点绘制》):
3D高斯(3DGS)由于其更快的训练和渲染时间,正在替代3D世界中的NeRF。如果你不熟悉3D高斯,这里有一个简单的版本:可以将其想象成用彩色球体来近似场景,这些球体在远离其中心时会变得更加透明。与NeRF不同的是,后者需要对每个像素(射线)进行多次前向传播计算,而使用3D高斯渲染则简单得多,只需将这些高斯投影到图像平面上。因此,使用3D高斯进行渲染速度更快,训练时间显著减少。
NeRF的一个优点是每个场景的内存需求是固定的,因为它只需要存储神经网络(MLP)的参数。相比之下,3D高斯是适配于3D场景的,越复杂的场景需要更多的高斯。因此,高斯的数量随着场景复杂度的增加而增长,导致线性内存复杂度和渲染时间的增加。
在我们最近的论文《Compact3D—通过矢量量化实现更小更快的高斯斑点绘制》中,我们提出了一种基于k-means的简单方法,将3D高斯量化为一个固定大小为K的代码本。换句话说,我们只使用K种高斯变化,并仅为每个高斯存储代码本的索引。此外,通过对高斯的不透明度参数应用正则化,我们鼓励它们变得透明,从而能够剪除高度透明的高斯。我们证明了这种方法可以降低存储需求,同时加快训练和渲染时间。与3DGS相比,我们的模型实现了40-50倍的模型尺寸减少和2-3倍的渲染速度提升。
——Source:Soroush Abbasi Koohpayegani
论文的概要内容如下:
一、摘要
3D Gaussian Splatting (3DGS) 是一种新的3D辐射场建模和渲染方法,相比当前的NeRF方法有更快的学习和渲染速度。然而,其需要存储数百万个3D高斯参数,导致存储需求大大增加。本文提出了一种基于K-means算法的简单矢量量化方法来量化高斯参数,并通过排序和类似游程编码的方法进一步压缩索引。此外,本文使用了一种简单的正则化方法,鼓励零不透明度(不可见的高斯),从而减少高斯数量,压缩模型并加速渲染。实验表明,本文的方法可以将3DGS的存储成本减少40至50倍,渲染时间减少2至3倍,且渲染图像质量几乎没有下降。
二、引言
近年来,辐射场方法在通过多视点图像重建3D场景方面取得了显著进展。其中,NeRF使用隐式神经表示,通过深度模型学习辐射场。尽管成功,NeRF方法的训练和渲染速度较慢。为了解决这个问题,提出了多种方法,但通常以图像质量的下降为代价。3D Gaussian Splatting (3DGS) 是一种新的学习辐射场的方法,通过一组高斯来建模场景,显著加快了训练和渲染速度。然而,与NeRF方法相比,3DGS需要更多的参数,增加了存储和通信需求。
三、方法
1. 3DGS简介
3DGS使用3D高斯集合来建模场景。每个高斯有其在3D空间中的位置、协方差矩阵、不透明度、颜色和颜色的球谐系数等参数,这些参数需要从多视点图像中学习。给定一个视点,通过对各向异性斑点进行α混合、排序和使用基于块的光栅化器,可以高效地将3D高斯渲染成2D图像。训练时,3DGS渲染训练视点,并最小化像素空间中的损失。
2. 矢量量化
为了压缩3DGS的参数,我们使用K-means算法对参数进行矢量量化。在学习3DGS模型的参数时,存储未量化的参数。在前向传播过程中,量化参数并替换为量化版本进行渲染和计算损失。然后,进行反向传播以获取量化参数的梯度,并将梯度复制到未量化的参数以更新它们。由于高斯数量通常以百万计,每次迭代执行K-means的成本可能非常高。我们在每次迭代后更新质心,每t次迭代更新一次分配。对于高斯的某些参数(如位置),无法轻易量化,因此我们将它们分组并独立聚类,以学习每个参数的单独代码本。为了进一步压缩,我们将高斯基于一个索引排序,并使用类似游程编码的方法存储它们。
3. 不透明度正则化
一些参数(如高斯的位置)不能轻易量化。为了解决这个问题,我们引入了一个新的损失项,鼓励不透明度为零。最终的损失为:
λreg 控制不透明度的稀疏性。通过这种方法,我们显著减少了存储和推理时间。
四、实验
实验部分主要包括:
- 实现细节:使用3DGS的公开代码库进行实验,并未修改训练的超参数。
- 数据集:主要在Tanks & Temples、Deep Blending和Mip-NeRF360等真实世界数据集上进行测试。
- 基线方法:比较了不同的参数压缩方法,包括位量化和去除球谐分量等。
- 评估:使用SSIM、PSNR和LPIPS等指标评估性能,报告压缩率、渲染FPS和训练时间。
实验结果显示,矢量量化后的CompGS在保持3DGS速度和性能优势的同时,实现了40至50倍的压缩,使其与NeRF方法相比更加实用。此外,通过不透明度正则化,进一步减少了高斯数量,显著降低了存储和推理时间。
五、结论
本文提出的方法通过矢量量化和不透明度正则化,实现了对3DGS模型的高效压缩,在保持渲染质量的同时,大幅度减少了存储需求和渲染时间。
P.S., Compact3D on GitHub: https://github.com/UCDvision/compact3d