纯大二小白,记录一下自己首次接触高斯喷溅技术的收获。【本博客脉络不是很清晰,因为是在学习中所做的笔记,想到什么了就写什么】
一、什么是3dgs?
3d gaussian splatting作为一种栅格化技术,可用于实时且逼真地渲采从一组图像中学到的场景,其引入了三个关键元素用以改善nerf神经辐射场方法训练速度和渲染质量的瓶颈问题,在保持有竞争力的训练时间的同时实现最先进的视觉质量,允许在1080p分辨率下实现高质量的实时(≥30fps)的新视图合成。
1. 三个关键技术
(1)3d高斯场景表达:多个高斯模型共同构成了整个场景的连续体积表示,这些3d高斯从最初产生的稀疏点(由sfm得到)开始初始化。
因为3d高斯这种基元,它继承可微分体积表示的属性,同时是非结构化和显式的,可以轻松投影到 2d,允许非常快速的渲染,实现快速a混合渲染(图形学里的概念)。
(2)自适应密度控制优化:
(3)快速光栅化:使用高速gpu,支持各向异性抛雪球,保证高质量实时渲染。
2. slam和3dgs结合的优点
nerf-based slam方法区别于之前的方法单点替代方法,端到端的替代传统slam,没有特征提取,直接操作原始像素值,无论是隐式还是显式的环境表达都可以进行微分,但存在渲染速度慢、图像质量不高、定位精度欠佳等问题。基于3d gaussian splatting的slam方法全面继承了nerf-based slam方法的上述优点(无手工特征提取、可微分),在实时性和定位精度上表现优秀,在染速度和渲染质量上更是一骑绝尘。
3. 一组各向异性高斯函数
(1)什么叫各向异性:
在所有方向都具有相同扩散程度称为各向同性,其形状为椭球,那么具有各项异性的一组高斯函数的形状就是椭球,这也是该论文的核心。
(2)为什么3d高斯是一个椭球:
(3)协方差矩阵怎么控制椭球形状:
即:任意高斯可以通过标准高斯经由仿射变换得到。
4. 代表视相关辐射的球面谐波(shs):一组基函数,可以理解为傅里叶分解的一种特殊形式。下面这张图就很好地展现了其基本性质。该论文中运用的是n=4的情况,共有16个参数(本质上是1+3+5+7)。任何一个球面坐标的函数都可以用多个球谐函数来近似。
球谐函数分析:
二、3dgs代码review
阅读过程中的一些疑问 (有些可能与算法本身关系不大):
1.随机种子是什么?
随机种子(random seed)是计算机专业术语,一种以随机数作为对象的以真随机数(种子)为初始条件的随机数。一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数。
2.tqdm进度条是什么?
3.点云密度操作是什么?
即“一”中提到的自适应控制优化。
4.前向渲染是什么?
5.高斯光栅化器是什么?
6.点剪枝是什么?
7.此处的关键帧是什么?
简而言之:关键帧是几帧普通帧中较具有代表性的一帧。
个人觉得即使看了一遍别人的代码review也很难学会操作,毕竟“绝知此事要躬行”,之后必须自己实操,估计是个漫长的过程。
三、论文阅读
又在网上零零碎碎地收集了一些资料后,我再次将目光转向论文。
该论文所做成果不仅支持rgbd的输入,还支持单目相机的输入(很难)。
在开头,论文呈现了构建结果——对于每个传入的 rgb 帧,3d 高斯都会与相机pose一起增量式形成和优化。我们显示了棚格化高斯图像(左)和阴影高斯以突出显示几何图形(右)。注意捕获的细节和复杂的材料属性(例如透明度),细结构由许多细小的、细长的高斯函数精确地表示,而透明物体则通过沿着边缘放置高斯函数来有效地表示。
之后,作者在“介绍”和“相关工作”中提到了大量相关的文章和方法成果,想了解清楚并不是一件易事,看完之后有一种文字进入了脑子又偷偷溜走的感觉,后续再深入了解。
最近看了不少资料,对该论文有了一定的了解,但后续需要进行更多深入工作,深刻理解其中内涵。
发表评论