Scaffold-GS是基于3DGS的一种算法(CVPR2024)
首先从 SFM(运动恢复结构) 衍生的点形成一个稀疏体素(voxel)网格。每个可见体素的中心都放置有一个可学习尺度(learnable offset)的锚点(anchor),大致雕刻了场景的占用情况。 视锥内,从每个可见的带有偏移量𝑂_𝑘锚点生成 k 个神经高斯。它们的属性,即不透明度(opacity)、颜色、比例和四元数(quaternion)是使用MLP从锚点特征、相对相机-锚点的观看方向和距离进行解码,使用 Fα、Fc、Fs、Fq表示。神经高斯模型属性的预测是即时的,意味着只有在视锥体内可见的锚点才会被激活以生成神经高斯模型。为了使栅格化更加高效,我们仅保留透明度值大于预定义阈值 τα 的神经高斯模型。这大大降低了计算负载,并帮助我们的方法保持与原始3D-GS相当的高渲染速度。通过重建L_1、结构相似性L_𝑆𝑆𝐼𝑀和体积正则化L_𝑣𝑜𝑙来监督渲染图像。
初始输入依旧是使用COMLAP生成的点云,对点云进行体素化。
体素化
3D数据有多种表现形式,(a)点云,(b)体素网格,(c)多边形网格,(d)多视图表示。
其中:
a. 点云是三维空间(xyz坐标)点的集合。
b. 体素是3D空间的像素。量化的,大小固定的点云。每个单元都是固定大小和离散坐标。
(可以类比像素概念,有点像三维空间下的像素)
c. mesh是面片的集合。
d. 多视图表示是从不同模拟视点渲染的2D图像集合。
文中将点云体素化后删除重复条目
V是体素中心,P是点云,ϵ是体素大小
每一个体素都作为一个锚点,包含一个本地的上下文特征 fv,一个比例因子lv,一个可学习的偏移量k
fv由三个参数影响
xc是相机位置,xv是anchor位置,计算他们的相对距离和观看方向
根据相对距离和观看方向计算权重
由三个参数和小型MLP预测
用µ位置, α透明度,s缩放,q协方差相关四元数, c 颜色参数化高斯神经函数,对视锥内的anchor生成k个神经高斯函数并预测其属性。具体来说,给定位于xv的锚点,其神经高斯函数的位置计算为:
{Oo,...,Ok-1}是可学习的偏移量,lv是比例因子
通过MLP、fv、相机与锚点之间的相对观看距离δvc和方向中解码k个神经高斯函数的属性,记为Fα, Fc, Fq和Fs
例如透明度的解码:
anchor精炼:
anchors增长策略:
首先通过构建尺寸为ϵg的体素对神经高斯进行空间量化。对于每个体素,计算N次训练迭代中包含的神经高斯函数的平均梯度,记为∇g。然后,将∇g > τg的体素视为显著体素,其中τg为预定义阈值;如果没有建立锚点,则在该体素的中心部署一个新的锚点。
删除策略:
在N次训练迭代中累积它们相关的神经高斯函数的不透明度值。如果一个锚不能产生一个令人满意的不透明度水平的神经高斯,我们然后从场景中删除它。
损失函数设计:
使用SSIM项、LSSIM和体积正则化 Lvol,针对渲染像素颜色上的L1损失对可学习参数和mlp进行优化。总监督由: