【三维重建】Pixel-GS:三维高斯泼溅的像素感知的梯度密度控制(去除浮点,提升精度)

项目:https://pixelgs.github.io/
标题:Pixel-GS: Density Control with Pixel-aware Gradient for 3D Gaussian Splatting
来源:香港大学;腾讯AI Lab


文章目录

  • 摘要
  • 一、前言
  • 二、相关工作
    • 1.新视图合成
    • 2.基于点的辐射场
    • 3.Floater 的消除
  • 三、方法
    • 3.1 GS的自适应密度控制
    • 3.2 Pixel-aware Gradient 像素敏感梯度
    • 3.3 Scaled Gradient Field 梯度缩放
  • 四、效果


提示:关注B站【方矩实验室】,查看视频讲解

摘要

  三维高斯溅射(3DGS)在提高实时渲染性能的同时,展示了令人印象深刻的新视图合成性能。然而,它的有效性在很大程度上依赖于初始点云的质量,导致在初始化点不足的区域出现模糊和针状伪影( needle-like artifacts)。这个问题主要是由于点云的增长条件,它只考虑了可观测视点的splats的平均梯度大小,因此对于许多只覆盖在边界内的可观测的大高斯值无法增长。

  为了解决这个问题,Pixel-GS将被覆盖的像素数,视为动态平均不同视角的梯度的权重,从而促进大高斯分布的增长。初始化点不足的区域内的点可以更有效地增长,从而导致更准确和详细的重建。此外,提出一策略,根据到相机的距离来缩放梯度场,以抑制相机附近floater的生长。实验在Mip-NeRF 360和Tanks & Temples。

  


提示:以下是本篇文章正文内容,下面案例可供参考

一、前言

  新视点合成(NVS)是计算机视觉和图形学中的一个基本问题。近年来,三维高斯溅射(3DGS)[21]因其基于点的三维场景的明确表示和实时渲染性能而受到越来越多的关注。

  3DGS利用运动结构(SfM)过程产生的稀疏点仔细初始化点云,并提出了一种自适应密度控制机制,在优化过程中对点进行分割或克隆。 然而,这种机制在很大程度上依赖于初始点云的质量,不能有效地在初始点云稀疏的区域增长点,导致合成图像中出现模糊或针状伪影。在实际应用中,SfM的初始点云不可避免地存在重复纹理区域的点不足,观测量很少。如图1的第一列和第二列所示,RGB图像中的模糊区域与初始化点很少的区域对齐,而3DGS无法在这些区域中生成足够的点

在这里插入图片描述

  在本质上,这个问题主要归因于何时分裂或克隆一个点的条件。3DGS通过检查 Normalized Device Coordinates(NDC)中的点的平均梯度大小是否大于一个阈值来决定它。梯度的大小在不同的视点上被平均,阈值是固定的。大高斯分布通常在许多视点中可见,其投影区域的大小在不同视图中差异显著,导致梯度计算所涉及的像素数量差异显著。根据高斯分布的数学形式,在高斯投影中心附近的几个像素,比远离中心的像素对梯度的贡献要大得多。 较大的高斯分布通常有许多视点,其中投影中心点附近的区域不在屏幕空间内,从而降低了平均梯度,使它们难以分割或克隆。这个问题不能仅仅通过降低阈值来解决,因为它更有可能鼓励 growing points in areas with sufficient points,,如图1的第三列所示,仍然在点不足的区域留下模糊的伪影。

  在本文中,我们提出从像素的角度来计算点的平均梯度大小。在计算高斯分布的平均梯度幅度时,我们考虑了每个视图中高斯分布覆盖的像素数,将视图的平均替换为视图的加权平均。这背后的动机是放大大高斯的梯度贡献,同时保持分裂或克隆小高斯的条件不变,这样我们就可以有效地在具有大高斯的区域中增长点。同时,对于小高斯分布,由于不同视点间覆盖像素数的变化最小,加权平均对最终梯度的影响很小。此外,Pixel-GS根据点的深度值来放大NDC空间中的梯度场,从而抑制摄像机附近“飞蚊”的生长

-1.分析了3DGS中模糊伪影的原因,并提出从像素的角度优化点的数量,从而在初始点不足的区域有效地增长点。

2.提出了一种简单而有效的梯度缩放策略,来抑制相机附近的“folater”伪影。

二、相关工作

1.新视图合成

   新视角合成的任务是指从不同于原始输入视角的角度生成图像的过程。最近,NeRF [35]通过使用神经网络来近似辐射场和使用体积渲染[10,27,32,33]技术来进行渲染,在新的视图合成方面取得了令人印象深刻的结果。这些方法使用隐式函数(如MLPs [2,3,35]、基于特征网格的表示[6,13,29,37,46]或基于特征点的表示[21,50])来拟合场景的辐射场,并利用渲染公式进行渲染。由于需要通过MLP处理沿着射线的每个采样点以获得其密度和颜色,在体渲染过程中,这些工作明显受到低渲染速度的影响。随后的方法[15,41,42,56,58]将预先训练好的NeRF细化为稀疏表示,从而实现了NeRF的实时渲染。虽然一些先进的场景表示[2-4、6、7、13、16、25、29、37、46]提出了改进网络的一个或多个方面,如训练成本、渲染结果,渲染速度,3D高斯飞溅(3DGS)[21]仍然吸引越来越多的关注由于其显式表示,高保真结果,和实时渲染速度。最近,NeRF [35]通过使用神经网络来近似辐射场和使用体积渲染[10,27,32,33]技术来进行渲染,在新的视图合成方面取得了令人印象深刻的结果。这些方法使用隐式函数(如MLPs [2,3,35]、基于特征网格的表示[6,13,29,37,46]或基于特征点的表示[21,50])来拟合场景的辐射场,并利用渲染公式进行渲染。由于需要通过MLP处理沿着射线的每个采样点以获得其密度和颜色,在体渲染过程中,这些工作明显受到低渲染速度的影响。随后的方法[15,41,42,56,58]将预先训练好的NeRF细化为稀疏表示,从而实现了NeRF的实时渲染。虽然一些先进的场景表示[2-4、6、7、13、16、25、29、37、46]提出了改进网络的一个或多个方面,如训练成本、渲染结果,渲染速度,3D高斯飞溅(3DGS)[21]仍然吸引越来越多的关注由于其显式表示,高保真结果,和实时渲染速度

2.基于点的辐射场

   基于点的表示(如点云)通常使用固定大小的、非结构化的点来表示场景,并使用gpu[5,43,45]进行栅格化渲染。虽然这是解决拓扑变化的一个简单而方便的解决方案,但它通常会导致孔洞或异常值,从而导致渲染过程中的伪影。为了缓解不连续的问题,研究人员提出了基于点的可微渲染,利用点来建模局部域[14,18,21,28,48,50,57]。在这些方法中,[1,23]使用神经网络来表示点特征,并利用二维CNNs进行渲染。Point-NeRF [50]使用神经三维点对三维场景进行建模,并提出了修剪和生长点的策略,以修复基于点的辐射场中的常见孔和异常值。3DGS [21]使用光栅格化方法进行渲染,这大大加快了渲染过程。它从SfM的稀疏点云初始化开始,分别使用三维高斯分布和球谐函数拟合每个点的影响区域和颜色特征。为了增强这种基于点的空间函数的表征能力,3DGS引入了一种基于每个点的NDC(归一化设备坐标)坐标和不透明度梯度的密度控制机制,管理点云的增长和消除。最近[8]在3DGS上的工作,通过结合深度和法线改进了点云增长过程,提高了低纹理区域的拟合能力。相比之下,我们的Pixel-GS不需要任何额外的先验或信息资源,例如深度和法线,并且可以直接在初始化点不足的区域增长点,减少模糊和针状伪影

3.Floater 的消除

  大多数辐射场场景表示方法都遇到伪影,主要出现在摄像机附近,稀疏输入视图更严重。一些论文[9,44]通过引入深度先验,解决漂浮物的问题。NeRFshop [19]提出了一种删除飞蚊蚊的编辑方法。Mip-NeRF 360 [3]通过增加一个沿每个射线的密度分布是单峰的先验,引入了失真损失,有效地减少了相机附近的floaterNeRF in the Dark[34]提出权重的 a variance loss以减少floater。FreeNeRF [52]为接近相机的点的密度引入了一个惩罚项,以减少相机附近的漂浮物。大多数这些方法抑制飞蚊通过将先验通过损失或编辑方法,而 “Floaters No More”[40]试图探索发生飞蚊出现的根本原因,指出飞蚊主要是因为,两个区域相同的 volume 和shape,参与计算的像素数量,与每个区域的相机的距离平方的倒数成正比。在相同的学习速率下,靠近摄像机的区域迅速完成优化,优化后,阻止其后面区域的优化,从而增加了在摄像机附近漂浮的可能性 Pixel-GS则根据到相机的距离来缩放梯度场

三、方法

首先回顾了3DGS中“自适应密度控制”的点云生长条件。然后,我们提出了一种从象素的角度计算点云增长条件下的平均梯度幅度的方法,显著提高了初始点不足区域的重建能力。

在这里插入图片描述

3.1 GS的自适应密度控制

  在三维高斯溅射中,视点 k k k下的高斯 i i i会生成一个二维协方差矩阵 Σ Σ Σ,并确定相应的影响范围半径 R k i R^i_k Rki:

在这里插入图片描述

它覆盖了高斯分布中99%的概率。对于高斯 i i i,在视点 k k k下,摄像机坐标系中的坐标,以及像素坐标系中的坐标分别为:

在这里插入图片描述

  当图像宽度为W像素,高度为H像素时,高斯i在同时满足以下六个条件时参与了视点k的计算:

在这里插入图片描述

  3D GS的点splats分割、克隆,由高斯坐标参与计算的视点的NDC坐标梯度的平均大小决定的。具体来说,对于视点k下的高斯i,NDC坐标以及高斯转为两个高斯的标准为:(视点 k k k下的损失为 L k L_k Lk。在每100次的“自适应密度控制”迭代过程中,高斯 i i i参与了 M i M^i Mi个视角的计算,阈值 τ p o s τ_{pos} τpos设置为0.0002):

在这里插入图片描述

3.2 Pixel-aware Gradient 像素敏感梯度

  以上标准足以在大多数区域适当地分布高斯分布,但伪影往往发生在初始点稀疏的区域。在3DGS中,与高斯i对应的椭球体的三个轴的长度被初始化:

在这里插入图片描述
其中, d 1 i d^i_1 d1i d 2 i d^i_2 d2i d 3 i d^i_3 d3i分别是到离高斯分布 i i i最近的三个点的距离。我们观察到,建模不充分的区域通常具有非常稀疏的初始SfM点云,导致这些区域的高斯分布初始化为更大轴长的椭球体。这导致了他们从太多的角度参与计算。这些高斯分布只在投影后的中心点在像素空间内或附近的视点上表现出更大的梯度。这意味着,从这些角度来看,大高斯分布在投影后覆盖了像素空间中的较大区域。这导致这些点在“自适应密度控制”过程中,每100次迭代,它们的NDC坐标的平均梯度较小(Eq 3),因为它们从太多的角度参与计算,并且在个别视点中只有显著的梯度大小。因此,这些点很难分割或克隆,导致这些领域的建模效果不佳。

   方程分析 为什么前面提到的稀疏区域的高斯分布只能从足够覆盖的视点获得更大的NDC坐标梯度,而对于只影响边缘区域的视点,NDC坐标梯度更小。视点 k k k下的一个像素,对高斯 i i i的NDC坐标梯度的贡献为

在这里插入图片描述
其中,因子 α k i α^i_k αki计算为:

在这里插入图片描述

c j p i x c^{pix}_j cjpix代表 j j j通道的颜色像素, m k i m^i_k mki代表视角k下包含在高斯 i i i的计算内的像素数量。 α k , p i x i α^i_{k,pix} αk,pixi作为投影高斯中心和像素中心之间的距离的函数,随着距离的增加呈指数衰减。

  这导致在投影高斯分布的中心位置附近有几个像素,这对该高斯分布的NDC坐标梯度有主要贡献。对于大高斯分布,许多视点只会影响边缘区域,投射到这些视点中的像素上,导致这些视点参与计算,但NDC坐标梯度非常小。另一方面,我们观察到,对于这些点,对于一个给定的视点,当投影后的计算中涉及到大量的像素时,这些点在这个视点中往往表现出更大的NDC坐标梯度。因为当大量的像素在投影后参与计算,投影中心点往往在像素平面内,根据之前的计算,一些像素附近的中心点是NDC坐标梯度的主要贡献者。

  为了解决这个问题, 我们为每个视点上的每个高斯坐标的NDC坐标的梯度大小分配一个权值,其中权值是从相应的角度计算该高斯坐标时所涉及的像素数 这种计算方法的优点是,对于大高斯分布,计算中涉及的像素数在不同的视点之间有显著差异。大高斯分布,只在计算中涉及到更多像素的视点中接收到更大的梯度。用参与像素的数量来加权梯度的大小,可以更合理地促进这些高斯分布的分裂或克隆;对于较小的高斯,不同视点之间所涉及的像素数的变化是最小的,当前的平均方法不会产生显著的变化,也不会导致过多的额外内存消耗。

   高斯发生分裂、克隆的修正后方程为

在这里插入图片描述
其中, M i M^i Mi是高斯i在相应的100次“自适应密度控制”迭代中参与计算的视点数, m k i m^i_k mki是高斯 i i i在视点 k k k中参与的像素数。∂分别表示视点k处的NDC空间的x方向和y方向上的高斯 i i i的梯度。高斯分布参与像素计算的条件为(与等式2共同给出)

在这里插入图片描述

3.3 Scaled Gradient Field 梯度缩放

  当使用“像素敏感梯度”来决定一个点是应该分裂还是克隆(Eq。7)可以解决视点不足和重复纹理的建模区域的伪影,我们发现点云增长的条件也加剧了摄像机附近floater的存在。这主要是因为摄像机附近的floater占据了较大的屏幕空间,其NDC坐标有显著的梯度,导致点云增长过程中floater数量的增加。为了解决这个问题,我们缩放了NDC坐标的梯度场。

  具体使用半径来确定场景的比例:

在这里插入图片描述
训练集的N个视角中, C j C_j Cj表示第 j j j 个视角像机的世界坐标。第 k k k个视点下对高斯 i i i的NDC坐标的梯度进行缩放,比例因子 f ( i , k ) f(i,k) f(i,k)的计算方法为:

在这里插入图片描述
其中 µ c , z i , k µ^{i,k}_{c,z} µc,zi,k 是高斯 i i i的摄像机z坐标,从视点上表示该高斯值的深度, γ d e p t h γ_{depth} γdepth是手动设置的超参数。

  等式10中使用平方项作为比例系数来源于“Floaters No More”[40],其指出NeRF [35]中的floater主要是由于投影后靠近摄像机的区域占据了更多的像素,这导致了在优化过程中接收到更多的梯度。这导致这些区域首先被优化,从而掩盖了最初正确的空间位置无法被优化。所占据的像素的数量与到相机的距离的平方成反比,因此梯度的平方距离的缩放。

  综上,基于像素的优化的一个主要问题是空间梯度场的不平衡,导致不同区域的优化速度不一致。不同空间区域的梯度场的自适应尺度可以有效地解决这一问题。因此,高斯“分裂”或“克隆”的最终计算为:

在这里插入图片描述

四、效果

   Mip-NeRF 360以及Tanks & Temples数据集上指标:

在这里插入图片描述
    
  

  Pixel-GS (本文) 和 3DGS∗(调整阈值后的GS)的定性结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  

  消融定性实验:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/402019.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文写作新神器!10款可以写论文的人工智能软件

在当今快速发展的数字时代,人工智能(AI)技术已经渗透到各个领域,包括学术研究和论文写作。为了帮助学者和学生提高写作效率和质量,市场上涌现了许多优秀的AI写作工具。本文将详细介绍10款可以写论文的人工智能软件&…

图像文本擦除无痕迹!复旦提出EAFormer:最新场景文本分割新SOTA!(ECCV`24)

文章链接:https://arxiv.org/pdf/2407.17020 git链接:https://hyangyu.github.io/EAFormer/ 亮点直击 为了在文本边缘区域实现更好的分割性能,本文提出了边缘感知Transformer(EAFormer),该方法明确预测文…

CPU飙升 怎么定位问题

传统的方法 【top】 查看所有进程占系统CPU的排序,定位是哪个进程搞的鬼。PID那一列就是进程号。 【top -Hp pid】 定位进程中使用 CPU 最高的线程tid 【printf ‘0x%x’ tid】 线程 tid 转化 16 进制,例如printf ‘0x%x’ 11882 得到16进制的 0x2e6a 【jstack…

PX4-Autopolite linux环境下源码编译中遇到的一些问题及相应解决办法

最近在做一个PX4飞控移植的项目,第一次接触到PX4源码,真的是感觉编译起来非常的麻烦,下面我将介绍几个新手比较容易踩坑的点。 (我都踩了ㄒ-ㄒ) 1.PX4源码要用git clone 从github上克隆来,千万不要直接在g…

java SE--集合

1.Collection接口 Collection接口是List,Set,Queue接口的父接口,里面提供了子类的常用方法; List储存的是可以重复的,有序的数据,子类是arrayList(数组结构)和linkedList&#xff…

Mapreduce_Distinct数据去重

MapReduce中数据去重 输入如下的数据,统计其中的地址信息,并对输出的地址信息进行去重 实现方法:Map阶段输出的信息K2为想要去重的内容,利用Reduce阶段的聚合特点,对K2进行聚合,去重。在两阶段中&#xff…

24/8/15算法笔记 强化学习贪婪算法,UCB,汤普森算法

以老虎机为例介绍各算法 import numpy as np#每个老虎机的中奖概率,0-1之间均匀分布 probs np.random.uniform(size10)#生成一个数组,其中的元素是从均匀分布(也称为矩形分布)中随机抽取的。均匀分布意味着每个数出现的概率是相…

微服务架构的未来发展趋势

文章目录 摘要引言当前发展趋势ServerlessService MeshAIOps 未来可能出现的挑战代码示例微服务架构示例 QA环节小结未来展望参考资料 摘要 微服务架构在软件开发中已经成为主流,但随着市场需求和技术环境的快速变化,微服务架构也在不断演进。本文将分析…

如何为 Nextcloud 配置自动数据库备份 - 应用程序

自动数据库备份模块简化了生成数据库计划备份的过程。这些备份可以存储在各种位置,包括本地驱动器、FTP 服务器、SFTP 服务器、Dropbox、Google Drive、OneDrive、NextCloud 和 Amazon S3 云存储。用户还可以选择启用自动删除过期备份的功能。此外,用户可…

MyBatis-Plus 进阶之条件构造器Wrapper和常用接口

目录 1.wrapper 介绍 1.1什么是 wrapper 2.QueryWrapper 2.1测试前的准备 2.2例1:组装查询条件 2.3例2:组装排序条件 2.4例3:组装删除条件 2.5例4:条件的优先级 2.6例5:组装 select 子句 2.7例6:…

[Linux][OS][信号的保存和处理]

目录 信号的处理 1. 在内核中的表示 2. 相关概念 3. 信号集操作函数 4.sigprocmask 5.sigpending 信号的捕捉 重谈地址空间 信号的处理 1. 在内核中的表示 普通信号,多次产生只会记录一次 信号范围 [1,31],每一种信号都要有自己的一种处理方式…

【ElementUI】el-table值相同时合并行

效果图&#xff1a; 大致思路&#xff1a;el-table里添加合并行或列的计算方法span-method <el-table :data"tableList" :span-method"objectSpanMethod"> // 在获取到列表数据tableData后调用此方法 handleTableData(tableData) {let rowSpanArr …

Java JDVC编程

1、Java的数据库编程&#xff1a;JDBC JDBC&#xff08;Java Database Connectivity&#xff09;是Java中用来与数据库进行交互的一种标准API&#xff08;应用程序编程接口&#xff09;。它为开发人员提供了一种统一的方式来访问各种类型的数据库管理系统&#xff08;DBMS&…

【深度学习实践】基于深度学习的图像去雾算法-ChaIR-实践

本文介绍一个去雾算法ChaIR的使用方法&#xff0c;可以完成图像去雾&#xff0c;也可以用于图像去雨、去噪音等任务。本文不涉及论文原理&#xff0c;只包含源代码的跑通和使用。 先展示一下效果&#xff1a; 原图去雾 论文&#xff1a;Exploring the potential of channel …

如何以编程方式解析 XCResult 包的内容

文章目录 介绍查找 XCResult 包分享 XCResult 包 解析 XCResult 包自动解析 XCResult 包的内容 使用 XCResultKit 解析包的内容初始化库获取调用记录 获取测试信息导出屏幕录制 可运行 Demo初始化 Swift Package编写主文件代码解释运行 Demo 结论 介绍 XCResult 包是一个包含运…

ASP.NET在线交流论坛管理系统

ASP.NET在线交流论坛管理系统 说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于asp.net架构和sql server数据库 用户功能有个人信息管理 帖了信息管理 意见反馈信息管理 点赞管理 收藏管理 后台管理员可以进行用户管理 …

数据结构-查找

一、基本术语 二、线性结构 ASL&#xff1a;平均查找长度 1、顺序查找 1.1、代码实现 typedef struct {int* elem;int TableLen; }SSTable;int Search_Seq(SSTable ST, int key) {ST.elem[0] key; //哨兵&#xff0c;使得循环不用判断数组是否会越界int i;for (i ST…

LoadRunner性能指标分析常用监控参数

性能分析&#xff0c;Windows自带一种 &#xff0c;LoadRunner自带一种&#xff0c;2种参数类似 Windows自带入口 运行中搜索&#xff1a;性能监视器 进到&#xff1a;性能-数据收集器-用户定义-右键-新建-数据收集器集 名称自己任意输入&#xff0c;选择手动创建 数据类型根…

Haproxy的配置详解与使用

一、haproxy简介 HAProxy是一个使用C语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬…

JavaScript基础——函数

函数简介 定义函数 调用函数 函数的参数和返回值 函数参数 1.有形参情况下不传递实参 2.传递数量少于形参个数的实参 3.传递数量等于形参个数的实参 函数返回值 报错Uncaught SyntaxError: Illegal return statement 返回数字和字符串 返回数组、对象和函数 没有返回…