制作网页和做网站是一个意思吗,网站制作三站,网站优化的方式,垂直门户网站建设文章目录 前言小结 原文地址#xff1a;https://blog.csdn.net/qq_45752541/article/details/132854115
前言
mesh 和点是最常见的3D场景表示#xff0c;因为它们是显式的#xff0c;非常适合于快速的基于GPU/CUDA的栅格化。相比之下#xff0c;最近的神经辐射场#xf… 文章目录 前言小结 原文地址https://blog.csdn.net/qq_45752541/article/details/132854115
前言
mesh 和点是最常见的3D场景表示因为它们是显式的非常适合于快速的基于GPU/CUDA的栅格化。相比之下最近的神经辐射场NeRF方法建立在连续场景表示的基础上通常使用体射线行进来优化多层感知器MLP以实现捕获场景的新视图合成。类似地迄今为止最有效的辐射场解决方案建立在连续表示的基础上通过插值存储的值例如体素或哈希[网格或点。虽然这些方法的连续性有助于优化但渲染所需的随机抽样是昂贵的并可能导致噪声。我们引入了一种新方法结合了最好的两个世界我们的三维高斯表示允许优化与最先进的SOTA视觉质量和竞争训练时间而我们的拼接解决方案确保实时渲染SOTA质量1080p分辨率在几个之前发布的数据集见下图1。 Mip-NeRF360 需要长达48小时的训练时间快速但质量较低的辐射场方法可以根据场景实现交互式渲染时间每秒10-15帧但不能在高分辨率下实现实时渲染。 我们的解决方案有三个主要组件 首先引入三维高斯分布作为场景表示。与 nerf 方法相同的输入开始即使用运动结构SfM校准的相机并使用SfM过程中免费产生的稀疏点云初始化三维高斯数集。与大多数需要多视图立体声MVS数据的基于点的解决方案相比仅以SfM点作为输入就获得了高质量的结果。注意对于nerf合成数据集我们的方法即使在随机初始化下也能获得高质量。我们证明了三维高斯优点是可微的体积表示但它们也可以通过投影到二维并使用标准混合使用等效的图像形成模型作为NeRF。 第二个组成部分是优化三维高斯分布的性质-三维位置不透明度各向异性协方差和球谐SH系数-与自适应密度控制步骤交错我们在优化过程中添加和偶尔删除三维高斯分布。优化过程产生了一个合理的紧凑、非结构化和精确的场景表示所有测试场景的100-500万高斯值。 第三个元素是我们的实时渲染解决方案它使用快速的GPU排序算法并受到 tile-based 的栅格化的启发遵循工作 [Pulsar: Efficient Sphere-Based Neural Rendering CVPR2021]。 首先简要概述了传统的重建然后讨论了基于点的渲染和辐射场工作讨论了它们的相似性辐射场是一个广阔的领域所以我们只关注直接相关的工作。 2.1 传统的场景重建与渲染 第一种新视图合成方法基于光场首先密集采样然后允许非结构化捕获。运动结构SfM的出现使一个全新的领域成为可能其中一组照片可以用来合成新的观点。SfM在相机校准过程中估计了一个稀疏点云最初用于三维空间的简单可视化。随后的多视图立体声MVS多年来产生了令人印象深刻的完整三维重建算法使几种视图合成算法得以发展。所有这些方法都将输入的图像重新投影并混合到新的视图相机中并使用几何图形来指导这种重新投影。这些方法在许多情况下产生了极好的结果但当MVS产生不存在的几何形状时通常不能从未重建的区域或“过度重建”中完全恢复。最近的神经渲染算法极大地减少了这种伪影并避免了在GPU上存储所有输入图像的巨大成本在大多数方面都优于这些方法。 2.2 神经渲染和辐射场 早期采用深度学习技术进行新视图合成[Flynn等人2016Zhou等人2016]使用CNNs估计混合权重[Hedman等人2018]或使用纹理空间解决方案[里格勒和科尔顿2020Thies等人2019]。使用基于mvs的几何图形是大多数这些方法的一个主要缺点此外使用cnn进行最终渲染经常会导致时间闪烁 新视图合成的体积表示由 Soft3D 发起随后提出了深度学习技术与体积射线行进的结合基于连续可微密度场来表示几何。由于查询体积需要大量的样本因此使用体积射线行进进行渲染需要大量的成本。神经辐射场NeRFs引入了重要采样和位置编码来提高质量但使用了一个大的多层感知器对速度产生负面影响。NeRF的成功导致了解决质量和速度的后续方法的爆炸通常是通过引入正则化策略目前用于新视图合成的最先进的图像质量是Mip-NeRF360。虽然渲染质量很优秀但训练和渲染时间仍然非常高。 加速训练和/或渲染三种设计选择使用空间数据结构来存储神经特征随后在体积射线行进过程中进行插值不同的编码和MLP容量。这些方法包括空间离散化的不同变量、codebook 和编码允许完全使用较小的MLP或前面的神经网络。典型的 InstantNGP 使用哈希网格和占用网格来加速计算使用更小的MLP来表示密度和外观Plenoxels 使用稀疏体素网格来插值连续密度场并且能够完全放弃神经网络。两者都依赖于球面谐波前者直接表示方向性效应后者直接编码其输入到颜色网络。虽然两者都提供了出色的结果但这些方法仍然难以有效地表示空空间这部分取决于场景/捕获类型。此外图像质量在很大程度上受到用于加速的结构化网格的选择的限制由于需要为给定的光线行进步骤查询许多样本阻碍了渲染速度。我们使用的非结构化、显式gpu友好的三维高斯算法在没有神经组件的情况下实现更快的渲染速度和更好的质量。 2.3 基于点的渲染和辐射场 基于点的方法即点云有效地渲染了断开的和非结构化的几何样本。点采样渲染栅格化具有固定大小的非结构化点集它可以利用本地支持的点类型的图形api或并行软件栅格化。虽然对于底层数据点样本呈现存在漏洞导致混叠并且是严格不连续的。在高质量的基于点的渲染方面的开创性工作通过“spliting”范围大于像素的点来解决这些问题例如圆或椭圆盘、椭球体或表面。 最近人们对可微点渲染技术感兴趣。点已被神经特征增强并使用CNN渲染导致快速甚至实时视图合成然而它们仍然依赖于MVS的初始几何因此继承其伪影特别是在困难的情况下过度或欠重建如无特征/闪亮的区域或薄结构。 基于点的混合和nerf风格的体积渲染本质上共享相同的图像形成模型。具体来说颜色是通过沿着光线的体积渲染来给出的 其中密度、透射率和颜色c的样品沿射线间隔。这可以被重写为 一种典型的基于神经点的方法通过混合重叠于像素上的N个有序点来计算一个像素的颜色其中c 是每个点的颜色是通过计算协方差Σ的二维高斯分布乘以学习的每点不透明度给出的 从等式2和3可以看到splitting和nerf的图像形成模型是相同的。然而渲染算法是非常不同的。nerf是一种隐式表示空/占用空间的连续表示需要昂贵的随机抽样来找到等式中的样本2从而产生噪声和计算消耗。相比之下点是一种非结构化的、离散的表示方式它足够灵活可以允许几何的创造、破坏和位移类似于nerf。这是通过优化不透明度和位置来实现的如之前的工作所示[ Point-Based Neural Rendering with Per-View Optimization]避免了一个完整的体积表示的缺点。 Pulsar 实现了快速的球体栅格化这启发了我们 基于tile 和排序的渲染。然而考虑到上面的分析我们希望在已排序的 splats翻译为飞溅 上保持近似的传统的混合以具有体积表示的优势我们的栅格化尊重可见性顺序而不是它们的顺序无关的方法。此外我们在一个像素的所有splats 上反传梯度并栅格化各向异性splats 。这些元素都有助于我们的研究结果的高视觉质量。上述方法也使用cnn进行渲染这导致了时间不稳定性。尽管如此Pulsar 的渲染速度成为了我们开发快速渲染解决方案的动力。 Gaussian Splatting 使用三维高斯算法来进行更灵活的场景表示避免了MVS几何的需要并实现了实时渲染归功于我们的 tile-based 渲染的投影高斯算法。 最近的一种方法[Xu et al. 2022]基于径向基函数方法使用点来表示辐射场。他们在优化过程中使用点修剪和致密化技术但使用体积射线行进不能实现实时显示率。 3D高斯分布可以被用来表示被捕捉的人体最近也被用于表示体射线。它们关注的是重建和渲染单个孤立物体人体或人脸的具体情况从而导致深度复杂性较小的场景。相比之下我们对各向异性协方差的优化我们的交叉优化/密度控制以及高效的渲染深度排序使我们能够处理完整的、复杂的场景包括背景包括室内和室外并具有较大的深度复杂性。 2.4 什么是 Tile-based rasterizer (快速光栅化) tile-based rasterizer将三维场景中的mesh面片分割成小的片段并将这些片段映射到屏幕上的 tile瓦片区域而非像素然后进行光栅化、深度测试和像素着色等操作最终将三维场景转化为二维图像。这个过程是图形引擎或渲染器中的核心步骤步骤为 1分割三角形首先三维场景中的三角形会被分割成小的三角形片段。这个过程通常是由图形引擎或渲染器完成的。分割的目的是为了更好地适应不同的瓦片大小或屏幕分辨率。 2映射到瓦片每个小的三角形片段会被映射到屏幕上的相应瓦片中。瓦片是屏幕上的一个小区域可以是一个像素或者多个像素的集合。这个映射过程会计算片段在屏幕上的位置、深度值等信息。 3光栅化映射到瓦片后tile-based rasterizer会将每个小的三角形片段转化为屏幕上的像素。这个过程被称为光栅化。在光栅化过程中对于每个片段会计算其在屏幕上的位置、深度值等信息。 4深度测试在光栅化过程中进行深度测试是非常重要的。深度测试用于确定哪些像素应该被绘制。通过比较片段的深度值与屏幕上对应像素的深度值可以确定是否绘制该像素。这样可以确保在绘制过程中正确处理遮挡关系以产生正确的渲染结果。 5像素着色光栅化的最后一步是像素着色。在像素着色过程中根据片段的属性如颜色、纹理等为每个像素计算最终的颜色值。这样三维场景就被转化为了屏幕上的二维图像。 Tile-based rasterizer 能够实现加速是因为它通过减少内存带宽和光栅化的工作量来提高渲染性能。具体原因 1局部性Tile-based rasterizer利用了渲染过程中的空间局部性。通过将整个屏幕划分为小的瓦片每次只处理一个瓦片的数据可以将渲染操作限制在较小的数据集上。这样可以减少内存访问和带宽消耗提高渲染效率。 2带宽优化传统的片段渲染器在每个像素上都会执行光栅化、深度测试和像素着色等操作。而在tile-based rasterizer中只有在需要绘制的瓦片上才会执行这些操作。这样可以减少对内存带宽的需求从而提高渲染性能。 3提前深度测试在tile-based rasterizer中深度测试是在光栅化之前进行的。通过在光栅化之前进行深度测试可以减少不必要的片段处理和像素着色操作从而节省了处理时间和资源。 4数据重用tile-based rasterizer会将每个瓦片的像素数据存储在高速缓存中并在多个片段之间共享。这样可以避免对相同像素的重复计算提高渲染效率。 03 OVERVIEW Gaussian Splatting的输入是一组静态场景的图像以及由SfM校准的相应摄像机它产生一个稀疏点云作为衍生物。从稀疏点上我们创建了一组三维高斯分布由位置均值、协方差矩阵和不透明度定义允许一个非常灵活的优化机制。这导致了对三维场景的一个合理紧凑的表示。高度各向异性的体素 splat 可以用来紧凑地表示精细结构。辐射场的方向外观分量颜色通过球谐波SH表示。该算法通过一系列三维高斯参数的优化即位置、协方差、和SH系数与高斯密度的自适应控制操作交织来创建辐射场表示。效率的关键是 tile-based 的栅格化器允许混合各向异性斑点由于快速排序尊重可见性顺序。输出快速光栅化器还包括一个快速反向传递通过累积的值跟踪没有限制可以接收梯度的高斯数的数量。整体概述如图2所示.
04 可微的三维高斯 Splatting 质量的新视图合成从一个稀疏的SfM点集开始。为了做到这一点我们需要一个能够继承可微体积表示属性的原型同时是非结构化和显式的以允许非常快速的呈现。我们选择了三维高斯分布这是可微的可以很容易地投影到二维 Splatting允许快速的混合渲染。 我们的表示类似于之前二维点的表示方法[Kopanas等人2021假设每个点都是一个带有法线的小平面圆]。由于SfM点的极强稀疏性很难估计法线。从这样的估计中优化带噪声法线将很难。相反我们将几何模型建模为一组不需要法线的三维高斯函数。我们的高斯分布是由世界空间中定义的全三维协方差矩阵Σ定义的其中心为点均值 这个高斯分布在混合过程中乘以。 然而我们需要将我们的三维高斯投影到二维进行渲染。对图像空间进行投影给定一个变换矩阵摄像机坐标下的协方差矩阵Σ’ 计算如下 其中是投影变换的仿射变换的 Jacobian 矩阵。Zwicker等人[2001a]表明如果我们跳过Σ’ 的第三行和列我们得到一个具有相同结构和性质的2×2方差矩阵。 一个明显的方法是直接优化协方差矩阵Σ以获得代表辐射方差场的三维高斯分布。然而协方差矩阵只有在它们是正的半定的时才具有物理意义。为了优化我们所有的参数我们使用梯度下降不能轻易地约束产生这样的有效的矩阵并且更新步骤和梯度可以很容易地创建无效的协方差矩阵。因此我们选择了一种更直观、更能表达的表示来进行优化。三维高斯分布的协方差矩阵Σ类似于描述椭球体的构型。给定一个缩放矩阵和旋转矩阵我们可以找到相应的Σ 为了允许对这两个因素进行独立的优化我们分别存储它们一个用于缩放的三维向量和一个表示旋转的四元数来进行组合以确保规范化得到一个有效的单位四元数。 三维高斯自适应密度控制的优化 Gaussian Splatting的核心是优化步骤。它创建了一个密集的三维高斯函数集合精确地表示自由视图合成的场景。优化参数有位置、和协方差Σ外我们还优化了代表每个高斯分布的颜色的SH系数以正确地捕捉场景中与视图相关的外观。 5.1 优化 优化基于连续的渲染迭代将生成的图像与训练视图进行比较。 由于三维到二维投影的歧义几何图形可能会被错误地放置。因此我们的优化需要能够创建几何也破坏或移动几何如果定位错误。 使用随机梯度下降进行优化利用gpu加速框架。快速栅格对我们的优化效率至关重要因为它是优化的主要计算瓶颈 使用sigmoid 函数 将 约束在[0−1)范围内得到平滑的梯度。由于类似的原因对协方差尺度的使用指数激活函数。 协方差矩阵初始化为一个各向同性高斯矩阵其轴等于到最近的三个点的距离的平均值。我们使用一种类似于 Plenoxels 的标准指数衰减调度技术但只针对位置。损失函数是L1和D-SSIM项相结合λ0.2 5.2 高斯的自适应控制 从SfM估计的初始稀疏点开始然后自适应控制高斯分布的数量及其密度单位体积允许我们从初始稀疏的高斯集密集更好地代表场景。warm-up之后每100次迭代一次删除透明的高斯分布α小于阈值 εα 。 我们对高斯分布的自适应控制需要填充空白区域。它关注缺失几何特征的区域“欠重建”但也关注高斯分布覆盖场景中大面积区域的区域通常对应于“过度重建”。我们观察到两者都有很大的视空间位置梯度。直观地说这可能是因为它们对应的是尚未很好地重建的区域而优化试图移动高斯分布来纠正这一点。 克隆与分裂 由于这两种情况都是致密化的好候选者我们用高于阈值┏pos 的视图空间位置梯度的平均大小来描述高斯测试选择0.0002过程如图4所示。对于重建不足的区域中的小高斯通过简单地创建一个相同大小的副本并将其沿位置梯度的方向移动来克隆高斯。另一方面高变异区域中的大高斯需要分裂成更小的高斯用两个新的高斯代替了这些高斯并用我们实验确定的o1.6因子除以它们的尺度。 在第一种情况下我们检测并处理需要同时增加系统的总体积和高斯的数量而在第二种情况下我们保留总体积但增加高斯的数量。与其他体积表示类似我们的优化可能会被靠近输入摄像机的漂浮物卡住在我们的例子中这可能会导致高斯密度的不合理的增加。调节高斯数增加的一种有效方法是每N 3000次迭代将α 设置为接近于零。 优化增加了高斯分布的α同时允许我们的剔除方法去除 α小于阈值 εα的高斯分布。高斯分布可能会缩小或增长并与其他分布有相当大的重叠但我们会周期性地去除在非常大的高斯分布和那些在视图空间中有很大足迹的高斯分布。这种策略可以很好地控制高斯分布的总数。我们模型中的高斯函数在欧几里得空间中始终保持原型与其他方法不同我们对遥远或大的高斯分布不需要空间压缩、扭曲或投影策略。 06 高斯分布的快速可微光栅化器拓展 我们的目标是拥有快速的整体渲染和快速的排序以允许近似的 α 混合——包括各向异性的Splatting——并避免对以前工作中存在的可以接收梯度的Splatting 数量的严格限制。 为了实现这些目标我们为整个图像设计一个 tile-based 光栅器的高斯 Splatting避免每像素的排序费用阻碍之前 α-mobice解决方案。我们的快速光栅化器允许在任意数量的混合高斯分布上有效地反向传播而额外的内存消耗较低每个像素只需要一个恒定的开销。我们的栅格化管道是完全可微的来投影到2D。 我们的方法首先将屏幕分割成16×16个 tile然后对视图框和每个tile 选择3D高斯分布。具体来说我们只保留与视锥相交的置信区间为99%的高斯。此外我们使用 a guard band来去除极端位置的高斯即那些均值接近 near plane 且远离视锥体的高斯因为其投影的2D协方差是不稳定的。然后我们根据它们重叠的 tile 数量实例化每个高斯值并为每个实例分配一个结合视图空间深度和tile ID的键。然后我们根据这些键快速排序基于快速 GPU Radix 。而没有额外像素点排序混合是基于这个初始排序执行的。 因此我们的 α-混合在某些构型中可以是近似的。然而当spliting 接近单个像素的大小时这些近似可以忽略不计。我们发现这种选择大大提高了训练和渲染性能而不会在融合场景中产生可见的伪影。 在对高斯排序之后我们通过识别 splitting 到 tile 的第一个和最后一个深度排序的条目为每个tile 生成一个列表。对于栅格化我们为每个 tile 启动一个线程块。每个块首先协作地将高斯数据包加载到共享内存中然后对于给定的像素通过从前到后遍历列表来累积颜色和α 值从而最大限度地提高数据加载/共享和处理的并行性增益。 栅格化过程中α 的饱和度是唯一的停止标准。与其他工作相比我们不限制接收梯度更新的混合原型的数量以允许我们的方法处理具有任意、不同深度复杂度的场景并准确地学习它们而不必诉诸于特定于场景的超参数调优。因此反向传播必须恢复前向过程中每像素混合点的完整序列。一种解决方案是在全局内存中存储任意长的每像素混合点列表。为了避免隐含的动态内存管理开销我们选择再次遍历永久列表我们可以重用从向前传递的高斯和 tile 范围的排序数组。 遍历从影响 tile 中任何像素的最后一个点开始并再次协作地将点加载到共享内存中。此外只有当每个像素的深度低于或等于在前向过程中导致其颜色的最后一个点的深度时每个像素才会开始重叠测试和处理点代价比较昂贵。第4节中梯度的计算要求在原始混合过程中每一步累积的不透明度值。我们可以通过只存储向前传递结束时的总累积不透明来恢复这些中间不透明而不是横向传递反向传递中逐步缩小的不透明的显式列表。具体来说每个点在正向过程中存储最终累积的不透明度 α我们在前后遍历中除以每个点的 α得到梯度计算所需的系数。 效果
小结
辐射场方法改变了多张照片或视频主导的场景新视角合成。Gaussian Splatting引入了三个关键元素在保持有竞争力的训练时间的同时实现最先进的视觉质量重要的是允许在1080p分辨率下实现高质量的实时≥30 fps的新视图合成。 首先从摄像机校准过程中产生的稀疏点开始我们用三维高斯来表示场景保持连续体积辐射场的理想特性同时避免空白空间不必要的计算 其次对三维高斯进行交叉优化/密度控制特别是优化各向异性协方差以实现场景的精确表示 我们开发了一种快速的可见性感知渲染算法支持各向异性 splatting既加速训练又允许实时渲染。