论文阅读《Gaussian Splatting with Localized Points Management》
Motivation: Adaptive Density Control的局限性
论文在Introduction部分提到了Adaptive Density Control存在几个问题:
Thresholding simply the average gradient for deciding the regions for point densification tends to overlook under-optimized points. For example, larger Gaussian points typically exhibit lower average gradients, frequently appearing across various views in screen space.
单纯采用平均梯度阈值法确定点密度区域,容易忽略优化不足的点。例如,较大的高斯点通常表现出较低的平均梯度,经常出现在屏幕空间的不同视图中。
Point sparsity makes it difficult to add sufficient and reliable points to comprehensively cover the scene.
点稀疏性导致难以添加足够、可靠的点来全面覆盖场景。
Falsely optimized Gaussian points could cause negative effects, e.g., occluding other good points and leading to incorrect depth estimates.
错误优化的高斯点可能会产生负面影响,例如,遮挡其他好的点并导致不正确的深度估计。
Solution: 识别导致渲染错误的点
在Introduction部分论文提到,他们的核心思路是:identifying those 3D Gaussian points leading to rendering errors,即识别那些导致渲染错误的3D高斯点。
Point management Since existing 3DGS variants【原方法】
原方法是使用平均梯度的阈值来决定点的密度。对于每一个高斯点$G_i$,3DGS跟踪所有渲染视图中位置梯度$\frac{\partial L_\pi}{\partial \mu_i}$的大小,将其平均为一个量$T_i$。每次训练迭代的时候,判断$T_i$是否超过预定义的阈值,如果超过就认为这个点不能充分代表相应的3D区域。之后会根据高斯的大小来进行处理,大的高斯会被分裂,小的高斯会被克隆。
论文提到上面这种方法无法识别所有需要点致密化的3D区域。这是因为,通常场景几何的局部复杂性变化很大,这超出了任何基于单一值的阈值的范围。此外,缺乏适当的机制来处理具有负面影响的病态点。
Localized Gaussian Point Management【论文方法】
论文提到,他们引入了一种新的模型无关点管理方法——局部点管理(localization point management, LPM),该方法利用多视图几何约束,在图像渲染错误的指导下,识别导致3D点错误的点。这种方法可以与现有的3DGS模型无缝集成,而无需进行架构修改。
看到这里,做一个猜测,按照论文的描述,最简单的方法可以是:
首先,生成每一帧的error map,标记每一个error map中对应的高斯点。
之后,计算每几帧error map对应的高斯点集的交集,中间存在的高斯点就是通过“多视图几何约束”识别的导致错误的高斯点。
但是错误的高斯点通常是影响固定的一个区域,而上面做交集太简单粗暴了,最好还是两张图像之间先做一个特征匹配,只计算对应区域中错误高斯点的交集。(但是这样就有点麻烦了,特征匹配会产生额外的数据,就像使用external tracker的3dgs slam一样)
如果放到3dgs slam里面,就有两个思路了:
- 接受external tracker,并且将其结果用于Localized Gaussian Point Management,预计对mapper的细节有提升;
- 拒绝使用external tracker,那么就只能实现粗暴的、基于交集的Localized Gaussian Point Management,编程实现很简单,但是不一定能提升效果。
论文整体的pipeline如下所示:
Error map generation 使用论文《Z. Li, Z. Chen, Z. Li, and Y. Xu. Spacetime gaussian feature splatting for real-time dynamic view synthesis. arXiv preprint arXiv:2312.16812, 2023.》的误差函数来生成误差图
Error contributing 3D zone identification 为了将渲染误差投影回3D空间,论文利用了多视图几何约束下不同视图之间的区域对应关系。这涉及以下两个关键步骤:
Cross-view region mapping
选一个相邻帧作为Referred View,根据LightGlue的预测来从Current View和Reffered View中寻找匹配关系,通过匹配点来选择配对的区域,最终得到具有渲染误差的配对区域。
2D-to-3D projection
获得具有渲染误差的配对区域后,分别计算Current View和Reffered View中相关区域对应的视锥,并且得到射线的交点,计算这些交点的最小包围球面,该球面被认定为误差源的三维区域。
Points manipulation 论文在3DGS的ADC基础上,识别出误差源3D区域,在区域内进行局部的点添加或者几何校正。
其中,对于点的添加,考虑了两种常见的情况:
- 在存在点的情况下,应用点密度对原始对应点进行局部补全。论文设置了一个较低的阈值来选择需要致密化的点,以增强几何细节。致密化规律与3DGS一致,但聚焦于最需要致密化的局部3D区域。具体来说,对于小高斯函数,论文的策略包括克隆高斯函数,同时保持它们的大小,并沿着位置梯度重新定位它们,以更好地捕捉新出现的几何特征。相反,位于高方差区域的较大的高斯分布被分割成较小的点,以更准确地表示底层几何形状。
- 在点稀疏的情况下,论文在三维区域的中心添加新的高斯点。
对于几何校正,论文认为在进行alpha-blending的时候,如果误差区域最前方的点不透明度最高,就可能会遮挡有效的点,导致深度估计错误。因此论文认为这些点是潜在的病态点,对于这些点,论文的方法会重置它们的不透明度,提供校正的机会,进一步校准几何形状。
另外,为了minimize model expansion,论文根据不透明度从低到高的自适应修剪点,修剪的数量由区域中的点密度决定,这种方法可以保证论文的点管理策略保持成本效益,适应场景表示不断变化的需求。
也就是说,论文的核心思路其实是:
对于当前帧的优化过程,首先寻找导致误差的三维区域
- 计算current view的error map;
- 找一个相邻帧作为referred view,和current view通过lightglue做特征匹配,得到匹配点对;
- 根据匹配点对和error map得到误差区域(2D),计算current view和reffered view区域内的像素点对应的射线(计算视锥);
- 求射线(视锥)的交点,计算交点的最小包围球面,球面包围的区域就是误差源的三维区域。
之后在3DGS的自适应密度控制(ADC)基础上,在误差源的三维区域中进行局部的点添加或校正
- 存在高斯点:用ADC方法进行局部补全;
- 不存在高斯点:在三维区域中心添加新的高斯点;
- 误差区域最前方点的不透明度最高:重置他们的不透明度,提供校正的机会。
个人评价
论文主要关注于,寻找导致渲染误差的局部三维区域,并且根据局部三维区域的情况,做了对应的处理。
从实现方法上来看:通过当前帧和相邻帧的多视图几何约束来计算误差源三维区域,之后根据区域内三种常见的情况提供了三种处理方案,整体思路还是很简单直观的。但是使用了lightglue来计算匹配点,这个过程其实会导致额外的计算资源消耗(比如要跑lightglue这个模型,要保存lightglue中间的结果),考虑到论文是致力于实现一个3dgs的插件,能够得到的信息有限,因此可以理解。
如果是放到gaussian splatting上的话,输入的是colmap重建的结果,这中间可以访问colmap的数据库拿到匹配点对。
如果是放到3dgs slam中的话,可以使用external tracker,由external tracker提供匹配关系。
从实验结果来看:加入论文实现的LPM模块之后,PSNR、LPIPS等指标只有些微的提升,感觉可以忽略不计;不过训练时间、高斯点数等指标也没有特别大的影响。另外,论文还测试了自适应密度控制lower threshold下3DGS的结果,高斯点数、训练时间明显提升,但是效果不一定提升,这个现象我之前也发现了,所以自适应密度控制这种方法,确实不是很适合提升一些局部的细节。这样看的话,论文为3dgs局部细节的提升做了一定的贡献。
此外,论文在最后的总结部分也提到了“While our method identifies the 3D Gaussian points that lead to rendering errors, it still follows the densification rules of 3DGS”,论文的方法本质上还是遵循3DGS的致密化规则,只是识别了导致渲染错误的3D高斯。所以如何寻找更好的致密化规则,还是值得研究的。