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

news2024/11/25 20:40:27

项目: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.coloradmin.cn/o/2045496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MFC系列-改变控件字体和颜色

【1】在资源管理器中,选择对话框,右键选择类向导,消息中选择WM_CTLCOLOR HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);//if (nCtlColor CTLCOLOR_STATIC) …

Postgres 超时 (Timeout) 详解

原文地址 https://www.bytebase.com/blog/postgres-timeout/ PostgreSQL 提供各种超时 (Timeout) 设置,通过控制某些进程的持续时间来帮助管理和优化数据库操作。这些超时对于确保系统的稳定性和性能至关重要,尤其是在高流量或复杂查询的环境中。让我们…

脱胎于 S 语言的R语言,它何为成为各行业数据分析师的首选?

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容,每篇文章都在 5000 字以上,质量平均分高达 94 分,看全文请点击下面链接: 1章3节:R 语言的产生与发展轨迹(更新2024/08/14)-C…

积木报表导出数据量太大报错

积木报表导出数据量太大报错问题处理 问题背景解决方案运行结果关键代码 问题背景 积木报表在导出大量数据时可能会遇到报错‌,‌这通常是由于数据量大导致的性能问题或数据处理方式不当引起的。‌以下是一些可能导致报错的原因及相应的解决方法:‌ …

Redis13-多级缓存

目录 概述 JVM进程缓存 Caffeine 实现进程缓存 Lua语法 初识Lua 变量和循环 Lua的数据类型 声明变量 循环 条件控制、函数 函数 条件控制 实现多级缓存 安装OpenResty OpenResty快速入门 请求参数处理 查询Tomcat 发送http请求的API 封装http工具 CJSON工…

传感器灯光与避障系统的详细作用!

传感器灯光 视觉指示:传感器灯光为无人机提供了直观的视觉指示,帮助飞行员或地面操作人员清晰地识别无人机的飞行状态、方向和位置。 通信与警示:通过特定的灯光颜色和闪烁模式,传感器灯光能够传达无人机的特定状态或警告信息&a…

Gato:A Generalist Agent

发表时间:11 Nov 2022 论文链接:https://readpaper.com/pdf-annotate/note?pdfId4689785740490440705&noteId2412686834489472512 作者单位:DeepMind 前言:近日,DeepMind发布了文章《A Generalist Agent》&#…

jenkins配置+vue打包多环境切换

jenkins配置流水线过程 1.新建item 加入相关的参数就行了。 流水线脚本设置 后端脚本 node {stage checkoutsh"""#每次打包清空工作空间目录rm -rf $workspace/*cd $workspace#到工作空间下从远端svn服务端拉取代码svn co svn://10.1.19.21/repo/技术中台/低…

深度学习基础之循环神经网络

目录 基本概念与特点 定义与工作原理 结构组成 应用领域 自然语言处理 语音识别 时间序列分析 优缺点 优点 缺点 改进方法 总结 循环神经网络在自然语言处理中的最新应用和研究进展是什么? 长短期记忆网络(LSTM)与门控循环单元…

国内首个非遗数字人智能体,AI让传统文化“活”起来

在数字化与智能化时代,文化传承正迎来全新的机遇。河南省非物质文化遗产保护和智慧化中心基于百度文心智能体平台,成功推出了国内首个非遗数字人(智能体)——「河南非遗数字人」,开启了非遗文化传播的新篇章。 河南非遗…

vue3中引入高德地图初始化,并添加、删除marker

目录 先上图 1.npm引入插件(高德地图官方推荐) 2.页面中引入使用 3.地图初始化 4.标记marker的添加和删除 先上图 1.npm引入插件(高德地图官方推荐) npm install amap/amap-jsapi-loader 2.页面中引入使用 import AMapLoad…

Therabody™明星产品TheragunⓇ筋膜枪,以科技健康助力舞台高光时刻

(2024 年 8月16日,中国上海)近日,热门音乐竞演综艺《披荆斩棘》携最新一季热血回归,节目邀请三十四位知名男艺人走上舞台,带来精彩绝伦的表演,受到广大观众的喜欢。Therabody™的明星产品Therag…

科目一满分刷题技巧(三)

十六、三超扣分★常考 口诀:高速扣分,上扣12下扣6; 普路扣分,普车3下6上;校中危记住9/6/1 口诀:校客旅,上扣12,下扣6 普车超载100%扣12,(50%基准,3下6上)…

本地连接腾讯云服务器

本地连接腾讯云服务器 1 查看服务器信息1.1 登录腾讯云官网1.2 打开开发者控制台1.3 打开已购买的服务器1.4 查看系统类型和 IP 2 本地连接服务器 1 查看服务器信息 1.1 登录腾讯云官网 官网链接 1.2 打开开发者控制台 控制台链接 1.3 打开已购买的服务器 1.4 查看系统类型…

企业图纸要怎么加密?2024年最好用的十款图纸加密软件排行榜

在数字化进程不断加速的2024年,企业图纸的安全保护愈发重要。如何有效地对企业图纸进行加密,成为了众多企业关注的焦点。为了帮助您找到最佳的解决方案,我们精心整理了2024年最好用的十款图纸加密软件排行榜。 1. 安秉图纸加密软件 安秉图纸…

AI编程工具合集

GPT-4o (OpenAI) 这里是一些知名和广泛使用的AI编程工具及其简要介绍: 1. 框架和库 (Frameworks and Libraries) - TensorFlow: 由谷歌开发的开源深度学习框架,支持多种平台,适合构建和训练复杂神经网络。 - PyTorch: 由Facebook的人工智能研…

Unity Recttransform操作

1、拉伸铺满 RectTransform rect GetComponent<RectTransform>();rect.anchorMin Vector2.zero;rect.anchorMax Vector2.one;rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, Screen.width);rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Verti…

3-3 红外人体感应模块(智能应用篇)

3-3 红外人体感应模块&#xff08;智能应用篇&#xff09; 3-3 红外人体感应模块介绍红外人体感应传感器模块&#xff08;HC-SR501原理&#xff09;电路连接示例程序效果演示人体感应传感器模块调节控制&#xff08;1&#xff09;调节感应距离&#xff08;2&#xff09;调节感应…

COMSOL碱性电解槽

记录下COMSOL案例库里面的碱性电解槽对应的文献资料和心得 文献资料参考&#xff1a; 1&#xff1a;Multiphase Fluid Dynamics and Mass Transport Modeling in a Porous Electrode toward Hydrogen Evolution Reactionhttps://pubs.acs.org/doi/10.1021/acs.iecr.2c00990# 2&…

one-shot 序列图像红外小目标分割

one-shot 序列图像红外小目标分割 IEEE TRANSACTIONS ON GEOSCIENCE AND REMOTE SENSING 代码还未开源 GitHub - D-IceIce/one-shot-IRSTS few-shot&#xff1a;利用少量标注样本进行学习 one-shot: 属于few-shot的特殊情况&#xff0c;只用一个样本进行学习 zero-shot&am…