每次都是在csdn上找救命稻草,这是第一次在csdn上发东西。确实是个不错的笔记网站,还能同步,保存哈哈哈。印象笔记,Onenote逊爆了。研一刚开学两个月,导师放养,给的方向还贼大,发点东西还是想找到相似方向的可以一起交流交流。
关于NeRF和3D GS的关系,这放个意の茗做的梗图:
言归正传,一开始选题是nerf,但是最近3D GS 好像要把NeRF干飞了,就赶快来凑凑热闹。
如果想详细的精读论文可以去看我转载的视频
复现3DGS的时候拓展包报错记得看Github的Issue,需要单独下载一个工具。
本文参考以下论文笔记:
https://zhuanlan.zhihu.com/p/654627437
3D GS 解决方案 基于三个主要组件。
首先,引入了3D高斯函数作为一种灵活且表达力强的场景表示方法。我们从与之前类似NeRF方法相同的输入开始(应该是PointNeRF),即使用结构光测量(SfM)[Snavely et al. 2006]校准的摄像机,并使用在SfM过程中生成的稀疏点云初始化3D高斯函数集合。与大多数基于点的解决方案不同,它们需要多视图立体匹配(MVS)数据[Aliev et al. 2020; Kopanas et al. 2021; Rückert et al. 2022]相比,我们只需将SfM点作为输入就能获得高质量结果。请注意,在NeRF合成数据集上,即使随机初始化,我们的方法也能实现高质量效果。我们展示了选择3D高斯函数是一个很好的选择,因为它们是可微分体积表示法,但也可以通过将其投影到二维并应用标准 混合来进行非常有效地光栅化处理,并使用与NeRF相同等效图像形成模型。
第二个组件是优化3D高斯函数属性-三维位置、不透明度 、各向异性协方差和球谐(SH)系数-与自适应密度控制步骤交替进行,其中我们在优化过程中添加并偶尔删除3D高斯函数。优化过程产生了一个相对紧凑、非结构化且精确的场景表示(所有测试场景中的1-5百万万个高斯函数)。
第三个部分是实时渲染解决方案,它使用快速GPU排序算法,并受到基于瓦片光栅化的最新工作[Lassner and Zollhofer 2021]的启发。然而,由于我们采用了3D高斯函数表示法,因此我们可以执行符合可见性顺序的各向异性喷洒 - 通过排序和 混合 - 并通过跟踪所需数量已排序喷洒物体遍历来实现快速而准确地反向传播。
引言了解个大概就行。
原文写的不错,建议好好看看。
主要的先前工作是PointNeRF和Plenoxel
简单总结一下
Point-NeRF
1.为每个点赋予特征向量;
2.体渲染时取采样点周边一定领域内的点的特
征做线性插值,解码得颜色和体密度
3.自适应点云生长和剔除
Plenoxels
这里是Gaussian的基础知识
链接: 意の茗.的讲解真的很不错
一维和三维的Gasussian
把变换矩阵A转换为协方差矩阵
Gaussian 知道了那什么是Gaussian Splatting呢
部分引用于知乎的汇智网
3D 高斯泼溅的核心是一种光栅化技术。 这意味着:
有描述场景的数据。在屏幕上绘制数据。
类似于计算机图形学中的三角形光栅化,用于在屏幕上绘制许多三角形:
然而,这里的Gaussian不是三角形,而是高斯分布。 这是一个栅格化的高斯函数,为了清晰起见,绘制了边框:
高斯泼溅由以下参数描述:
在实践中,会同时绘制多个高斯曲线:
这是700w高斯渲染之后的图片
这是每个高斯光栅化完全不透明的样子,可以看到很多类似椭球的东西:
这是对 3D 高斯分布的非常简短的概述。 接下来,让我们逐步完成本文中描述的完整过程。
运动结构恢复 (SfM: Structure from Motion) 方法从一组图像中估计点云。 这是一种从一组 2D 图像估计 3D 点云的方法。 这可以通过 COLMAP 库来完成。
这个是获得稀疏点云,作为初始Gaussian的中心点
训练过程使用随机梯度下降,类似于神经网络,但没有层。
输入一组静态场景的图像,由SfM校准的相应摄像机和稀疏点云;
从稀疏点云中,创建了一组三维高斯函数,通过位置(均值)、协方差矩阵和不透明度 来定义。这使得对3D场景的表示相对紧凑,一定程度上是因为可以使用高度各向异性的体积斑点(anisotropic volumetric splats)来紧凑地表示细微结构。辐射场的方向外观成分通过球谐函数(SH)进行表示,遵循标准做法。
通过一系列优化步骤来创建辐射场表示(第5节),这些步骤涉及3D高斯参数的位置、协方差、和SH系数,并与自适应控制高斯密度的操作交替进行。
后面就是论文的东西了太麻烦,csdn已经有很完善的讲解
传送门:论文的翻译----------论文的总结,看着很高效