3d gaussian splatting笔记(paper部分翻译)

这篇具有很好参考价值的文章主要介绍了3d gaussian splatting笔记(paper部分翻译)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文为3DGS paper的部分翻译。

基于点的𝛼混合和 NeRF 风格的体积渲染本质上共享相同的图像形成模型。 具体来说,颜色 𝐶 由沿射线的体积渲染给出:
3d gaussian splatting笔记(paper部分翻译),DeepLearning,3d,笔记

其中密度 𝜎、透射率 𝑇 和颜色 c 的样本是沿着射线以间隔 𝛿 𝑖 采集的。 这可以重写为

3d gaussian splatting笔记(paper部分翻译),DeepLearning,3d,笔记

典型的基于神经点的方法通过混合与像素重叠的 N 个有序点来计算像素的颜色 𝐶:
3d gaussian splatting笔记(paper部分翻译),DeepLearning,3d,笔记

其中 c 𝑖 是每个点的颜色,𝛼 𝑖 是通过评估一个2D 高斯,用协方差 Σ 乘以学习的每点不透明度。

从等式2,3 可以清楚地看到成像模型是相同的。 然而,渲染算法却有很大不同。 NeRF 是隐式表示空/占用空间的连续表示; 需要昂贵的随机抽样才能找到等式2中的样本。 随之而来的噪声和计算开销。 相比之下,点是一种非结构化、离散的表示形式,它足够灵活,可以像 NeRF 一样创建、破坏和位移几何图形。 这是通过优化不透明度和位置来实现的,同时避免了完整体积表示的缺点。

最近的一种方法使用点通过径向基函数方法来表示辐射场。 他们在优化过程中采用点修剪和致密化技术,但使用体积光线行进并且无法实现实时显示速率。
在人体表演捕捉领域,3D 高斯已被用来表示捕捉到的人体。最近,它们已与体积光线行进一起用于视觉任务。 神经体积基元已在类似的背景下被提出。 虽然这些方法启发了我们选择 3D 高斯作为我们的场景表示,但它们专注于重建和渲染单个孤立对象(人体或面部)的特定情况,从而产生深度复杂度较小的场景。 相比之下,我们对各向异性协方差的优化、交错优化/密度控制以及用于渲染的高效深度排序使我们能够处理完整、复杂的场景,包括室内和室外的背景,并且具有较大的深度复杂性。

输入是一组静态场景的图像,以及由 SfM校准的相应摄像机,这会产生稀疏点云作为副作用。 从这些点出发,我们创建了一组 3D 高斯(第 4 节),由位置(均值)、协方差矩阵和不透明度 𝛼 定义,这允许非常灵活的优化机制。 这会产生 3D 场景的相当紧凑的表示,部分原因是高度各向异性的体积片可用于紧凑地表示精细结构。 辐射场的方向外观分量(颜色)通过球谐函数 (SH) 表示。 我们的算法继续通过 3D 高斯参数的一系列优化步骤来创建辐射场表示(第 5 节),即位置、协方差、𝛼 和 SH 系数与高斯密度自适应控制的操作交织在一起。 我们方法效率的关键是我们基于图块的光栅化器(第 6 节),它允许各向异性图块的𝛼混合,通过快速排序尊重可见性顺序。 快速光栅化器还包括通过跟踪累积的 𝛼 值进行快速向后传递,并且对可以接收梯度的高斯数量没有限制。 我们的方法的概述如图 2 所示。

流程如图:
3d gaussian splatting笔记(paper部分翻译),DeepLearning,3d,笔记
可微3d gaussian splatting

我们的目标是优化场景表示,从一组没有法线的稀疏 (SfM) 点开始,实现高质量的新颖视图合成。 为此,我们需要一个基元,它继承可微分体积表示的属性,同时是非结构化和显式的,以允许非常快速的渲染。 我们选择 3D 高斯,它是可微分的,可以轻松投影到 2D splats,从而允许快速𝛼混合进行渲染。
我们的表示与以前使用 2D 点的方法有相似之处 [Kopanas 等人。 2021 年; 一帆等人。 2019]并假设每个点都是一个具有法线的小平面圆。 鉴于 SfM 点极其稀疏,很难估计法线。 同样,从这样的估计中优化非常嘈杂的法线将非常具有挑战性。 相反,我们将几何体建模为一组不需要法线的 3D 高斯函数。 我们的高斯函数由世界空间中定义的完整 3D 协方差矩阵 Σ 定义 [Zwicker 等人,2017]。 2001a] 以点(平均值)𝜇 为中心:

3d gaussian splatting笔记(paper部分翻译),DeepLearning,3d,笔记
在我们的混合过程中,该高斯乘以 𝛼。
然而,我们需要将 3D 高斯投影到 2D 进行渲染。 茨威克等人。 [2001a] 演示如何对图像空间进行投影。 给定观察变换 𝑊,相机坐标中的协方差矩阵 Σ ′ 如下:

3d gaussian splatting笔记(paper部分翻译),DeepLearning,3d,笔记

其中 𝐽 是射影变换的仿射近似的雅可比行列式。 茨威克等人。 [2001a] 还表明,如果我们跳过 Σ ′ 的第三行和第三列,我们将获得一个具有相同结构和属性的 2×2 方差矩阵,就好像我们从具有法线的平面点开始一样,如之前的工作 [Kopanas et 等人。 2021]。

一种明显的方法是直接优化协方差矩阵 Σ 以获得表示辐射场的 3D 高斯分布。 然而,协方差矩阵仅在半正定时才具有物理意义。 为了优化所有参数,我们使用梯度下降,它不能轻易地被约束来产生这样的有效矩阵,并且更新步骤和梯度可以很容易地创建无效的协方差矩阵。
因此,我们选择了一种更直观、但同样具有表达能力的表示方式来进行优化。 3D 高斯的协方差矩阵 Σ 类似于描述椭球体的配置。 给定缩放矩阵𝑆和旋转矩阵𝑅,我们可以找到相应的Σ:

3d gaussian splatting笔记(paper部分翻译),DeepLearning,3d,笔记
为了允许对这两个因素进行独立优化,我们将它们分开存储:用于缩放的 3D 向量 𝑠 和表示旋转的四元数 𝑞。 这些可以简单地转换为各自的矩阵并组合,确保标准化 𝑞 以获得有效的单位四元数。
为了避免训练过程中自动微分带来的巨大开销,我们显式地导出所有参数的梯度。 精确导数计算的详细信息在附录 A 中。各向异性协方差的这种表示(适合优化)允许我们优化 3D 高斯以适应捕获场景中不同形状的几何形状,从而产生相当紧凑的表示。 图 3 说明了这种情况。

3d gaussian splatting笔记(paper部分翻译),DeepLearning,3d,笔记

通过 3D 高斯自适应密度控制进行优化

我们方法的核心是优化步骤,它创建一组密集的 3D 高斯函数,准确地表示自由视图合成的场景。 除了位置 𝑝、𝛼 和协方差 Σ 之外,我们还优化表示每个高斯颜色 𝑐 的 SH 系数,以正确捕获场景的依赖于视图的外观。 这些参数的优化与控制高斯密度的步骤交织在一起,以更好地表示场景。

优化

优化基于渲染的连续迭代并将生成的图像与数据集中的训练视图进行比较。 由于 3D 到 2D 投影的模糊性,几何图形不可避免地可能会被错误放置。 因此,我们的优化需要能够创建几何体,并且如果几何体定位不正确,还需要破坏或移动几何体。 3D 高斯协方差参数的质量对于表示的紧凑性至关重要,因为可以用少量大的各向异性高斯函数捕获大的均匀区域。

我们使用随机梯度下降技术进行优化,充分利用标准 GPU 加速框架,以及为某些操作添加自定义 CUDA 内核的能力。 特别是,我们的快速光栅化(参见第 6 节)对于优化的效率至关重要,因为它是优化的主要计算瓶颈。
我们对 𝛼 使用 sigmoid 激活函数将其限制在 [0 − 1) 范围内并获得平滑梯度,出于类似的原因,我们对协方差尺度使用指数激活函数。
我们将初始协方差矩阵估计为各向同性高斯矩阵,其轴等于到最近三个点的距离的平均值。 我们使用类似于 Plenoxels 的标准指数衰减调度技术,但仅适用于位置。 损失函数是 L 1 与 D-SSIM 项的结合:

3d gaussian splatting笔记(paper部分翻译),DeepLearning,3d,笔记
高斯自适应控制

我们从 SfM 的初始稀疏点集开始,然后应用我们的方法自适应地控制单位体积 1 上高斯的数量及其密度,从而使我们能够从初始的稀疏高斯集变为更好地表示 场景,并具有正确的参数。 优化预热后(参见第 7.1 节),我们每 100 次迭代进行一次致密化,并删除任何本质上透明的高斯分布,即 𝛼 小于阈值 𝜖 𝛼 。 我们对高斯的自适应控制需要填充空白区域。 它专注于缺少几何特征的区域(“重建不足”),但也关注高斯覆盖场景中大面积的区域(通常对应于“过度重建”)。 我们观察到两者都有很大的视图空间位置梯度。 直观上,这可能是因为它们对应于尚未很好重建的区域,并且优化尝试移动高斯来纠正这一点。

由于这两种情况都是致密化的良好候选者,因此我们用高于阈值 𝜏 的视空间位置梯度的平均幅度来致密高斯,我们在测试中将其设置为 0.0002。

接下来我们将详细介绍该过程,如图 4 所示。

图 4.我们的自适应高斯致密化方案。 顶行(重建中):当小规模几何体(黑色轮廓)未被充分覆盖时,我们克隆相应的高斯。 底行(过度重建):如果小规模几何体由一个大的板表示,我们将其分成两部分。

3d gaussian splatting笔记(paper部分翻译),DeepLearning,3d,笔记
对于重建区域中的小高斯,我们需要覆盖必须创建的新几何形状。 为此,最好通过简单地创建相同大小的副本并将其沿位置梯度的方向移动来克隆高斯。

另一方面,具有高方差的区域中的大高斯需要被分割成更小的高斯。 我们用两个新的高斯函数替换这些高斯函数,并将它们的尺度除以我们通过实验确定的系数 𝜙 = 1.6。 我们还通过使用原始 3D 高斯作为 PDF 进行采样来初始化它们的位置。

在第一种情况下,我们检测并处理增加系统总体积和高斯数量的需要,而在第二种情况下,我们保留总体积但增加高斯数量。 与其他体积表示类似,我们的优化可能会因靠近输入摄像机的浮动体而陷入困境; 在我们的例子中,这可能会导致高斯密度的不合理增加。 调节高斯数量增加的有效方法是每 𝑁 = 3000 次迭代将 𝛼 值设置为接近于零。 然后,优化会在需要时增加高斯的 𝛼,同时允许我们的剔除方法删除 𝛼 小于 𝜖 𝛼 的高斯,如上所述。 高斯可能会缩小或增长,并且与其他高斯有相当大的重叠,但我们会定期删除在世界空间中非常大的高斯以及在视空间中具有较大足迹的高斯。 该策略可以总体上很好地控制高斯总数。 我们模型中的高斯始终在欧几里得空间中保持原语; 与其他方法不同,我们不需要针对远距离或大高斯的空间压缩、扭曲或投影策略。

优化和致密化算法如下:

以colmap(sfm) 的稀疏点为起始, 调节高斯数量增加的有效方法是每 𝑁 = 3000 次迭代将 𝛼 值设置为接近于零。
然后,优化会在需要时增加高斯的 𝛼,同时允许我们的剔除方法删除 𝛼 小于 𝜖 𝛼 的高斯,如上所述。
高斯可能会缩小或增长,并且与其他高斯有相当大的重叠,但我们会定期删除在世界空间中非常大的高斯以及在视空间中具有较大足迹的高斯。
该策略可以总体上很好地控制高斯总数。 当小规模几何体未被充分覆盖时,我们克隆相应的高斯。
如果小规模几何体由一个大的板表示,我们将其分成两部分。

3d gaussian splatting笔记(paper部分翻译),DeepLearning,3d,笔记

高斯快速可微光栅化器

我们的目标是实现快速整体渲染和快速排序,以允许近似 𝛼 混合(包括各向异性图片),并避免对先前工作中存在的可以接收梯度的图片数量进行硬性限制 [Lassner 和 Zollhofer 2021]。

为了实现这些目标,我们受最新软件光栅化方法 [Lassner 和 Zollhofer 2021] 的启发,为高斯图设计了一个基于图块的光栅化器,一次对整个图像的图元进行预排序,避免了对每个像素进行排序的开销,而这会阻碍之前的 𝛼-混合解决方案。 我们的快速光栅化器允许在任意数量的混合高斯上进行有效的反向传播,并且附加内存消耗低,每个像素只需要恒定的开销。 我们的光栅化管道是完全可微分的,并且考虑到 2D 投影(第 4 节)可以对各向异性 splats 进行光栅化,类似于以前的 2D splatting 方法。

我们的方法首先将屏幕分割成 16×16 块,然后根据视锥体和每个块剔除 3D 高斯。 具体来说,我们只保留与视锥体相交的置信区间为 99% 的高斯分布。 此外,我们使用保护带来简单地拒绝极端位置处的高斯分布(即那些均值接近近平面且远离视锥体的位置),因为计算它们的投影 2D 协方差将不稳定。 然后,我们根据每个高斯重叠的图块数量来实例化它们,并为每个实例分配一个结合了视图空间深度和图块 ID 的键。 然后,我们使用单个快速 GPU 基数排序根据这些键对高斯进行排序 [Merrill 和 Grimshaw 2010]。 请注意,没有额外的每像素点排序,并且混合是基于此初始排序执行的。 因此,我们的 𝛼 混合在某些配置中可以是近似的。 然而,当图块接近单个像素的大小时,这些近似值变得可以忽略不计。 我们发现这种选择极大地增强了训练和渲染性能,而不会在融合场景中产生可见的伪影。

对高斯进行排序后,我们通过识别第一个和最后一个映射到给定图块的深度排序条目来为每个图块生成一个列表。 对于光栅化,我们为每个图块启动一个线程块。 每个块首先协作地将高斯数据包加载到共享内存中,然后对于给定的像素,通过从前到后遍历列表来累积颜色和𝛼值,从而最大化数据加载/共享和处理的并行性增益。 当我们达到像素中的目标饱和度 𝛼 时,相应的线程就会停止。 每隔一段时间,就会查询图块中的线程,并且当所有像素都饱和时(即 𝛼 变为 1),整个图块的处理就会终止。 附录 C 中给出了排序的详细信息和总体光栅化方法的高级概述。

在光栅化过程中,𝛼的饱和度是唯一的停止标准。 与之前的工作相比,我们不限制接收梯度更新的混合基元的数量。 我们强制执行此属性,以允许我们的方法处理具有任意、不同深度复杂性的场景并准确地学习它们,而不必求助于特定于场景的超参数调整。 因此,在后向传递过程中,我们必须恢复前向传递中每个像素的混合点的完整序列。 一种解决方案是将每个像素的任意长混合点列表存储在全局内存中[Kopanas et al. 2021]。 为了避免隐含的动态内存管理开销,我们选择再次遍历 Pertile 列表; 我们可以重用前向传递中的高斯排序数组和平铺范围。 为了便于梯度计算,我们现在从后到前遍历它们。

遍历从影响图块中任何像素的最后一个点开始,并且将点加载到共享内存中再次协作发生。 此外,如果每个像素的深度低于或等于前向传递过程中对其颜色有贡献的最后一个点的深度,则每个像素只会开始(昂贵的)点重叠测试和处理。 第 4 节中描述的梯度计算需要原始混合过程中每个步骤的累积不透明度值。 我们可以通过在前向传递结束时仅存储累积的总不透明度来恢复这些中间不透明度,而不是在后向传递中遍历逐渐缩小的不透明度的显式列表。 具体来说,每个点存储的是前向过程中最终累积的不透明度𝛼; 我们在从后到前的遍历中将其除以每个点的𝛼,以获得梯度计算所需的系数。

优化细节。 为了稳定性,我们以较低的分辨率“预热”计算。 具体来说,我们使用 4 倍小的图像分辨率开始优化,并在 250 次和 500 次迭代后上采样两次。
SH 系数优化对角度信息的缺乏很敏感。 对于典型的“类似 NeRF”的捕捉,通过在其周围的整个半球拍摄的照片来观察中心物体,优化效果很好。 然而,如果捕获丢失了角度区域(例如,当捕获场景的角落或执行“由内而外”[Hedman et al. 2016]捕获时)SH 的零阶分量可以通过优化产生完全不正确的值( 即,基础颜色或漫反射颜色)。 为了克服这个问题,我们首先仅优化零阶分量,然后每 1000 次迭代后引入一个 SH 频带,直到表示所有 4 个 SH 频带。文章来源地址https://www.toymoban.com/news/detail-821133.html

到了这里,关于3d gaussian splatting笔记(paper部分翻译)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3D Gaussian Splatting for Real-Time Radiance Field Rendering 阅读笔记

    感谢B站意の茗的讲解。 论文地址:https://arxiv.org/abs/2308.04079 项目主页:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/ 从已有点云模型出发(sfm),以每个点为中心建立可学习的3D高斯表达,Splatting方法进行渲染,实现高分辨率实时渲染。(推动NERF加速方向) 能用训练好的点云

    2024年01月16日
    浏览(36)
  • 论文笔记《3D Gaussian Splatting for Real-Time Radiance Field Rendering》

    项目地址 原论文 最近辐射场方法彻底改变了多图/视频场景捕获的新视角合成。然而取得高视觉质量仍需神经网络花费大量时间训练和渲染,同时最近较快的方法都无可避免地以质量为代价。对于无边界的完整场景(而不是孤立的对象)和 1080p 分辨率渲染,目前没有任何方法

    2024年02月09日
    浏览(31)
  • 【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的全网最详细的解析

    3D Gaussian Splatting for Real-Time Radiance Field Rendering 论文:link code:link video:link 1. 开山之作 Nerf 一切的开始都是起源于 NERF 开山之作 这里由详细的学习与拆解 【NERF】入门学习整理(一) 【NERF】入门学习整理(二) 【NERF】入门学习整理(三) 【NeRF数据集】LLFF格式数据集处理co

    2024年04月15日
    浏览(56)
  • 3D Gaussian Splatting

    本文转载于大佬~~ 这是3D Gaussian Splatting综述, 先回顾3D Gaussian的原理和应用,借着全面比较了3D GS在静态场景、动态场景和驾驶场景中的性能,最后为未来指明了研究方向! 三维 Gaussian splatting(3DGS)是近年来在显式辐射场和计算机图形学领域出现的一种变革性技术。这种创新

    2024年04月08日
    浏览(40)
  • 3D Gaussian Splatting的使用

    今年SIGGRAPH最佳论文,学习了一下,果然厉害,具体论文原理就不说了,一搜都有,主要是看看怎么用,自己能不能把身边的场景快速建个模。 赶紧记录下,好像这几天在这个基础上又有很多花样出来了… 我的系统是Ubuntu22.04。 开源作者已经都弄的很详细了,也有教程。 首

    2024年02月04日
    浏览(33)
  • 3D Gaussian Splatting 渲染过程

    给定一组三维高斯点,渲染步骤大致为:1.camera space转成ray space 2.对像平面进行分块,然后对高斯排序 3.正投影发出射线进行α-blending 这个步骤将NeRF中的投影过程变为了正投影,引入了ray space的概念,让3D Gaussian 变为2D Gaussian. 透视投影和正投影                    一般的渲

    2024年01月20日
    浏览(55)
  • 【辐射场】3D Gaussian Splatting

      , 3D Gaussian Splatting,下文简称3DGS,是好一段时间以来在三维内容创作和三维重建领域比较有热度的一项技术。 它属于 基于图像的三维重建方法 ,意思就是你对现实物体或者场景拍照片,就能给你训练成一个场景模型,能够被渲染出来给你看。 它产生的模型可以作为三维

    2024年02月03日
    浏览(31)
  • 3D Gaussian Splatting:论文原理分析

    标题:3D Gaussian Splatting for Real-Time Radiance Field Rendering 作者:Bernhard Kerbl、Georgios Kopanas、Thomas Leimkühler和George Drettakis,来自法国Inria、Université Côte d\\\'Azur和德国Max-Planck-Institut für Informatik。 发表时间:2023年8月,ACM Transactions on Graphics上,卷号42,编号4 提出了一种名为3D Gaussia

    2024年01月23日
    浏览(35)
  • 3D Gaussian Splatting学习记录11.2

    cmd输入以下命令,开始训练 整个训练(30,000步)大约需要20分钟,但7000步后会保存一个中间模型,效果已经很不错了。训练结束后得到output文件 在Ubuntu 22.04上,运行以下命令来构建可视化工具: 安装后,找到SIBR_gaussianViewer_app二进制文件,并以模型的路径作为参数运行它: 参

    2024年02月04日
    浏览(48)
  • Awesome 3D Gaussian Splatting Resources

    GitHub - MrNeRF/awesome-3D-gaussian-splatting: Curated list of papers and resources focused on 3D Gaussian Splatting, intended to keep pace with the anticipated surge of research in the coming months. 3D Gaussian Splatting简明教程 - 知乎 

    2024年01月20日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包