【三维修复、分割与编辑】InFusion、Bootstrap 3D、GaussianGrouping、GaussianEditor等(论文总结)

在这里插入图片描述


提示:


前言

  

  

  


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

一、InFusion:扩散模型助力,效率提高20倍!(2024)


在这里插入图片描述

项目主页: https://johanan528.github.io/Infusion/

代码仓库: https://github.com/ali-vilab/infusion

机构单位: 中科大,港科大,蚂蚁,阿里巴巴

1. 摘要

  本工作研究了3D GS编辑能力,特别着重于补全任务, 旨在为不完整的3D场景补充高斯,以实现视觉上更好的渲染效果。与2D图像补全任务相比,补全3D高斯模型的关键是要确定新增点的相关高斯属性,这些属性的优化很大程度上受益于它们初始的3D位置。为此,我们提出 使用一个图像指导的深度补全模型来指导点的初始化 ,该模型基于2D图像直接恢复深度图。这样的设计使我们的模型能够以与原始深度对齐的比例填充深度值,并且利用大规模扩散模型的强大先验。得益于更精确的深度补全,我们的方法,称为InFusion,在各种复杂场景下以足够更好的视觉保真度和效率(约快20倍)超越现有的替代方案。并且 具有符合用户指定纹理 插入新颖物体 的补全能力。

在这里插入图片描述

(a)InFusion 无缝删除 3D 对象,以用户友好的方式进行纹理编辑和对象插入。
(b)InFusion 通过 扩散先验学习深度补全,显着提高深度修复质量。

  现有方法对3D高斯的补全,通常使用对不同角度的渲染图象进行图像层次的补全,作为3D GS新的训练数据。但是,这种方法往往会因生成过程中的不一致而产生模糊的纹理,且速度缓慢。

  值得注意的是,当初始点在3D场景中精确定位时,高斯模型的训练质量会显著提高。因此一个实际的解决方案是将需要补全位置的高斯设置到正确的初始点,从而简化整个训练过程。因此,在为需补全高斯分配初始高斯点时,进行深度补全是关键的,将修复后的深度图投影回3D场景能够实现向3D空间的无缝过渡。本文利用预训练的扩散模型先验,训练了一个深度补全模型。该模型在与未修复区域的对齐以及重构物体深度方面展现了显著的优越性。这种增强的对齐能力确保了补全高斯和原3D场景的无缝合成。此外,为了应对涉及大面积遮挡的挑战性场景InFusion可以通过渐进的补全方式,体现了它解决此类复杂案例的能力。
  

2. 算法

在这里插入图片描述

  整体流程如下

  1)场景编辑初始化:首先,根据编辑需求和提供的mask,构造残缺的高斯场景。

  2)深度补全:选择一个视角,渲染得到的利用图像修复模型如(Stable Diffusion XL Inpainting )进行,修复单张RGB图像。再利用深度补全模型(基于观测图像)预测出缺失区域的深度信息生成补全的深度图。具体来说,深度补全模型接受三个输入:从3D高斯渲染得到的深度图、相应的修复后彩色图像和一个掩码,其中掩码定义了需要补全的区域。先使用变分自编码器(VAE)将深度图和彩色图像编码到潜在空间中。其中通过将深度图重复使其适合VAE的输入要求,并应用线性归一化,使得深度值主要位于[-1, 1]区间内。后将编码后的深度图加噪得到的近高斯噪声,将掩码区域设置为0的编码后的深度图,编码后的RGB指导图像,以及掩码图像,在channel维度进行连接,输入到U-Net网络进行去噪,逐步从噪声中恢复出干净的深度潜在表示。再次通过VAE解码得到补全后的深度图。

  3)3D点云构建:使用补全的深度图对应的彩色图,通过3D空间中的反投影操作,将2D图像点转换为3D点云,这些点云随后与原始的3D高斯体集合合并。

  4)Gaussian模型优化:合并后的3D点云通过进一步迭代优化和调整,以确保新补全的高斯体与原始场景在视觉上的一致性和平滑过渡。

  

  

3. 效果

  1.Infusion表现出保持 3D 连贯性的清晰纹理,而基线方法通常会产生模糊的纹理,尤其是复杂场景下

在这里插入图片描述

  2.同时通过与广泛使用的其他基线方法的比较,以及相应的点云可视化。比较清楚地表明,我们的方法成功地能够补出与现有几何形状对齐的正确形状。

在这里插入图片描述

  3.Infusion可以通过迭代的方式,对复杂的残缺gaussian进行补全。
在这里插入图片描述

  5.得益于Infusion补全3d高斯点的空间准确性,用户可以修改补全区域的外观和纹理。

在这里插入图片描述

  6.通过编辑单个图像,用户可以将物体投影到真实的三维场景中。此过程将虚拟对象无缝集成到物理环境中,为场景定制提供直观的工具

在这里插入图片描述

二、2D Gaussian Splatting

标题:2D Gaussian Splatting for Geometrically Accurate Radiance Fields
代码:https://github.com/hbb1/2d-gaussian-splatting
论文:https://arxiv.org/abs/2403.17888

三、Bootstrap 3D:从扩散模型引导三维重建

在这里插入图片描述

标题:Bootstrap 3D Reconstructed Scenes from 3D Gaussian Splatting
来源:电子科技大学;深圳先进技术研究院;中科院

1.摘要

  3D高斯喷溅(3D-GS),已经为神经渲染技术的质量和速度设置了新的基准。然而,3D-GS的局限在合成新视角,特别是偏离训练中的视角。此外,当放大或缩小时,也会出现膨胀和混叠( dilation/aliasing)等问题。 这些挑战都可以追溯到一个潜在的问题:抽样不足。本论文提出了一个自举方法:采用一个扩散模型,利用训练后的3D-GS增强新视图的渲染,从而简化训练过程。该方法是通用的,并且可以很容易地集成。

在这里插入图片描述

2.相关工作

  扩散模型。其预测过程可公式化如下:
在这里插入图片描述

  此过程中,时间步0的原始分布从时间步t的分布中逐渐恢复,通过优化负对数似然的通常变分界进行训练。若所有的条件都被建模为具有可训练均值函数和固定方差的高斯模型,训练目标为:

在这里插入图片描述

  图像到图像的生成。这是扩散模型的一个实际应用。本文专门讨论了一种独特的生成形式,其中输入图像由扩散模型再生, 利用一个定义的破损强度 s r s_r sr 来促进可控的生成。 s r s_r sr 的大小直接影响输出图像与原始图像的偏差程度,值越大,变化就越大 。给定一个输入图像 I I I,在编码到潜在空间 x I x^I xI时,我们认为xI 是基于 s r s_r sr 的 T个时间步之一。 例如 s r s_r sr = 0.1和T = 1000,反向扩散过程中,在扩散的时间步长 T T T × s r s_r sr = 100处 直接应用 p θ ( x I ) p_θ(x^I) pθ(xI),只执行反向扩散过程的最后100个时间步长来进行部分再生。

  

3.方法

1.Boostrapping by Diffusion 通过扩散模型促进

  在3D-GS的优化过程中,从稀疏的COLMAP [19,20]点集开始,通过分裂或克隆产生额外的点,最终得到数百万个小而密集的三维高斯模型。由于最大点的大小(分裂)和梯度的积累(克隆)阈值是需要调整的超参数,我们主要关注梯度的方向,这将显著影响新点生成的位置和方式。

  因为训练数据集之外,存在一些看不见的部分,训练过的3DGS合成的新视图 I I I,可能不能准确地反映GT图像。我们将 I I I 视为 I ′ I' I 的“部分退化版本”。可以利用扩散模型,实现对 I I I 的 image-to-image integration,得到image density I ′ I' I I ′ I' I 可以表示为添加到合成图像 I I I 中的噪声集合。

在这里插入图片描述

  然而,在实践中实现这种理想的情况是非常困难的。这不仅是因为 1.目前可用的开源扩散模型不能很好地生成所有场景中的部分图像 ,而且还因为 2.许多场景本身都是复杂和独特的 。此外, 3.引导(bootstrap)的过程也引入了一定程度的不确定性 。理想情况下,构建的3D场景在所有角度都保持一致。然而,扩散模型引入的可变性使得保证扩散模型从一个新视角重新生成的场景与来自另一个新视角的场景无缝对齐具有挑战性。另外, 4.并不是合成的新视图图像的所有部分都应该被再生 ,如果我们将扩散过程应用到整个图像中,一些已经训练良好的部分会在一定程度上被扭曲。本文探索了一种更通用、更稳定的方法。

  

2.梯度方向和 Diffusion

   引入Bootstrapping 的时机 。对于整体场景一致性的问题,需要从一个相对完整的阶段开始引导。对于通过扩散模型再生的新视图图像,如果周围的上下文相似且 homogeneous (应该翻译为同类或同质),这种环境下再生的内容往往变化不大。差异程度Pt∈Tsrϵθ(√¯αtxt(我,ϵ)+√1−¯αtϵ,t)
部分是有限的,不仅仅是由于初始上下文的相似性,还因为扩散过程只应用在最后几个时间步(t越接近0,t时刻引入的噪声越小)。

  在3D-GS模型构建一个相对完整的场景后,对每个训练图像进行bootstrap。为了从训练图像 I t I_t It 中获得新图像 I n t I_n^t Int稍微改变训练相机的 q v e c qvec qvec t v e c tvec tvec,以获得新的视图相机。然后通过扩散模型D,重新生成 I d t I_d^t Idt=D( I n t I_n^t Int)。实践中,从每个训练像机中生成多个新视图。

   可控的扩散方向重新生成的内容分为两个部分: 一个包含了对场景的忠实表示,但随着改变而改变,另一个显示了被扩散模型修改的场景的新的表示 通过管理原始训练部分和bootstrap部分相关的损失比值,我们可以实现3D-GS模型的全局稳定训练过程

  bootstrap损失 L b L_b Lb= || I d t I_d^t Idt - I n t I_n^t Int||;对每个训练像机,使用混合损失:

在这里插入图片描述

   L o L_o Lo是GT图像的原始3D-GS损失, ∑ i ∈ N L b i \sum_{i∈N}L_b^i iNLbi 是基于该训练摄像机及其周围像机的所有新视图变体引入的引导损失的和,N是总变体数。例如,如果训练摄像机有周围摄像机的两侧,并且我们用它的2个变体来引导每个摄像机,那么N是6。这种设计选择是由于大多数三维重建数据集[83–85]的共同特征,其中位于近距离的摄像机通常会捕捉相邻的场景.

  对于训练中不可见的视角,渲染明显无序或缺乏细节,bootstrap足以在多个视点中进行一致的更改。在我们的方法中,当引导场景涉及到损失项设置中的相同部分时,我们会对这些公共区域的值进行平均(这些部分通常被合成了很多次),这确保了不同引导场景中的元素被规范化。

  稠密化过程中,点被分裂或克隆。不完美部分的周围点被 initially flattened,以补偿重生的新视图渲染中的不一致性。经过多次迭代的积累,大点被分割成小点,小点沿着梯度方向被克隆(这是主要焦点,代表场景中的细粒度)。实际应用中,大的点可以被认为是较小的高斯分布的粗聚集。

  补偿过程往往是不稳定的,因为渲染甚至在同一场景部分也发生变化。 然而,本文利用多个重新生成的新视图,来训练单个视图 。对于这些渲染,如果其中的细节不冲突,那么它们能表示看不见的细节,或可以自由修改的粗糙建模;如果它们之间存在冲突,则选择最普遍适用的方法来对齐。给定一个受到不同梯度方向更新的点,称为 ∑ i ∈ m ∂ g m \sum_{i∈m}∂g_m imgm m m m 为不同梯度方向的总数, ∂ g m ∂g_m gm为对应的梯度。如果我们将这些高维梯度方向抽象成简单的二维方向,我们就可以进一步简化这个问题。

  假设二维xy平面上的每个梯度只包含两个方向,正y指向GT,x表示偏差,为了简单起见,我们将每个方向分离成一个累积形式。我们假设扩散模型通常产生的图像与背景一致,但细节有所不同。然后通过建立一个适当的梯度积累幅度阈值,并将其与我们在等式8中概述的优化策略相结合,可以达到所期望的优化结果,如图3所示。

在这里插入图片描述
  经过几轮分裂后,点将足够小,在这些点上只会出现少量的梯度(即使没有,λboot也足够小)。为了进一步克隆,只有这些恰好指向一个方向的梯度和较小的偏差才有可能超过这个阈值,然后我们得到一个相对可靠的bootstrap克隆点,构成了该场景中的细节。

4.实验

  数据集。数据集包括Mip-NeRF360 [83]的7个场景,两个来自 Tanks&Temples[84]的场景,两个场景来自 DeepBlending[85]的场景。

  Baseline。原始3D-GS [1], Mip-NeRF360 [83],
iNGP [10] 和 Plenoxels [9],以及最近的 Scaffold-GS。

  设置。对于bootstrap部分,使用 Stable Diffusion (SD) 2v.1模型 [30]及其精调模型作为初始扩散模型。共进行了4个阶段的实验,其中何时和如何应用bootstrap是不同的。实验初始阶段,以特定的时间间隔执行bootstrap,为每个引导跨度提供1000次迭代。在这1000次迭代间隔中,我们在前500次迭代中将 λ b o o t λ_{boot} λboot设置为 0.15,在剩下的500次迭代中将其降低为 0.05。在配置扩散模型时,我们采用了一个逐步降低的图像破损强度 s r s_r sr,范围从0.05到0.01,跨越100个DDIM [28]采样的时间步长。不同的数据集,有不同的策略来创建新的视图像机(随机或连续)。引导重新生成的图像将使用原始的SD2.1v模型来执行。在第二阶段的实验中,SD2.1v模型分别对每个训练数据集进行细化,同时保持其他配置不变。调整SD2.1v模型,结果有显著的波动:一些场景在指标上显示了明显的进展,而另一些场景表现出明显的退化,4.2节会讨论到。

  在对每个场景的模型进行微调之后,为进一步解锁bootstrap的潜力,在第三阶段实验中,将扩散破损强度 s r s_r sr从0.15调整到0.01,每个场景的所有bootstrap图像都设置为随机。虽然最初三个阶段的实验已经证明了比最初的3D-GS有相当大的改进,但在渲染特定视图方面仍然存在挑战。因此,在第四阶段实验中,使用了一个upscale的扩散模型来进行bootstrap再生。

  结果分析。bootstrap方法的有效性已经在各种场景中得到了证明,特别是在具有无纹理表面观察不足的具有挑战性的环境中。此外,该方法还显示了其在改变相机进行新视图渲染时的适应性,突出了其在捕捉均匀细微差别方面的熟练程度,如图4。
在这里插入图片描述

  指标对比。与原始3D-GS相比,仅应用一个interval的bootstrap后,质量指标的改进可以追溯到7k次迭代。即使第一阶段实验中简单地应用SD2.1v模型,与原始3D-GS相比也有着显著进展。此外,在对每个场景的SD2.1v模型进行微调后,在所有数据集和指标上都取得了最好的结果,在它们自己的数据集上的性能甚至超过了Mip-NeRF 360。鉴于第三阶段实验的总体性能指标与第二阶段相似,在补充材料中提供第三阶段实验的详细报告。

在这里插入图片描述

  新视角伪影的缓解。除了指标,我们还解决了在改变相机变焦或渲染视图时出现的一些问题(一定程度上明显偏离了训练集)。通过生成如图5所示的伪细节,bootstrap减轻了在原始3D-GS中观察到的伪影。通过第三阶段实验,在特定视图中出现的伪影确实可以在保持强性能指标的同时得到缓解。第四阶段实验将主要集中于进一步减轻这些伪影(见附录说明)。从图1和图6中可以看出,第四阶段,在欠采样视图中观察到的失真和表下的混乱质量已经被大大修改。基于Mip-NeRF 360数据集的第四阶段实验表明,upscale扩散模型的应用在包含许多看不见的视图的开放场景中特别有效(可能是因为我们没有对它进行微调)。对于大多数室内场景,通过高upscale散模型引入显著的噪声往往会对性能指标产生实质性的负面影响。

在这里插入图片描述

  时间消耗比较见表2。一般来说,扩散时间步长的增加,这与破损强度 s r s_r sr有关,以及在我们的第四阶段实验中使用的upscale扩散模型,显著增加了额外的训练时间。

  特征分析比较了四个阶段的实验中的渲染细节 在最初的两个阶段,如果我们仅仅根据生成质量进行评估,而不考虑地面真相,那么当用肉眼观察时,它们的质量似乎有最小的差异。在对每个特定场景进行微调后,我们观察到在特定环境细节方面取得了显著进展。例如,在图4的房间中,考虑了门上方的封闭摄像头。在我们的第一阶段实验中,相机只以一种类似于相机的基本形式表示。然而,在我们的第二阶段实验中,摄像机显示出与地面真相相似的曲线。第三阶段实验中,虽然由于DDIM采样步骤的增加,细节发生了改变和改进,如图5所示,但这些改变并不能完全弥补场景中存在的实质性缺陷。此外,这些产生的细节往往发生在低频率,这与我们的损失项密切相关。由于我们的方法强调增强相互协调而不是相互冲突的细节,由扩散模型产生的高频细节往往表现出可变性。最终,第四阶段实验能够显著地修改看不见的内容

  消融实验。表3评估了扩散模型的超参数,只有破损强度 s r s_r sr和减重 λ b o o t λ_{boot} λboot是重要的。 常见的超参数通常会影响传统文本到图像生成的结果,如文本提示、文本提示比例和[30]中描述的eta,在我们的实验设置中影响很小。我们只在特定的时间间隔内应用bootstrap技术(第6000次迭代后进行连续的bootstrap),但发现这种方法导致不稳定性。当过度使用时,连续的引导往往会生成完全脱离上下文的场景。即使是专门对每个场景的扩散模型进行微调,它的不稳定性仍然是一个重要的问题。在第二阶段的设置中,通过连续引导获得的最高结果偶尔会超过我们的最佳记录。然而,实现这些优越的结果是相当具有挑战性的,所需的训练时间大约是我们的第三阶段实验的训练时间的2.5倍。这种时间和精力的显著增加突出了连续bootstrap的低效率,尽管它有可能实现稍微更好的性能指标。请注意,其他基础消融研究都是在第一阶段实验的配置上进行测试的

补充材料

  1.Bootstrapping 视角的创建。COLMAP中,相机内参在给定的场景中保持一致, 外参包括qvec和tvec(栅格化中必不可少的),引入两种类型的视图Bootstrap:随机的,和连续的 。对于随机视图的创建,在qvec和tvec中加入正态分布噪声,比例因子分别为0.1和0.2,然后对qvec进行归一化。对于连续法,将间隔均匀地插入后续摄像机的qvec和tvec中,然后对qvec进行归一化。

   s r s_r sr λ b o o t λ_{boot} λboot的解释 s r s_r sr的递减设置相对容易理解。随着训练过程的进展,模型逐步改善了其对重建的三维场景的表示,因此需要更少的修改。在对SD2.1v模型进行微调后,我们建议通过微调的模型所做的改变应该更好地与GT一致。因此,我们可以在早期的迭代中应用更大的 s r s_r sr,以确保初始修正更有影响力。 λ b o o t λ_{boot} λboot设置为两阶段方法:第一阶段,使用一个更大的 λ b o o t λ_{boot} λboot来补偿伪影。这是通过使用扩散模型生成更多的上下文一致渲染来实现的,有助于稳定初始输出,后续阶段进一步细化。

  Bootstrap间隔。对于共30k次迭代,Bootstrap仅应用于第6000、9000、15000、15000、18000、21000、24000、27000和29000次迭代,每次持续1000次迭代。这个时间与3,000个迭代周期相一致,其中3D-GS模型的占用率被重置。通过将Bootstrap干预与这些重置点同步,有效地实现理想的更改变得更容易,因为由于占用变量的重置(reset of occupancy variables),模型处于更容易接受修改的状态。另一方面,1000次迭代的Bootstrap间隔,与3000次迭代周期很一致,提供了一种平衡的方法来合并新的细节而不超载系统。这个间隔是最优的,因为扩散模型产生的细节可能会相互冲突,因此没有必要连续运行完整的训练周期。此外,Bootstrap损失的计算,如等式8中所述、是资源密集型的,显著减慢了整体的训练速度

  SD策略:我们认为新视图渲染图是“beoken”的,它们可以被扩散模型修正和增强。因此,选择用于微调的图像应该代表这些破碎的渲染图及其相应的GT。微调扩散模型的方法:利用一半的训练集来训练3D-GS模型。然后,我们在6000个迭代标记处使用模型来渲染训练集的剩余一半,由于潜在的差异和伪影,将这些渲染识别为“beoken的”渲染。这个过程对训练集的每一半重复两次,使我们能够生成数百张微调图像。此外,在4,000个迭代checkpoint处的原始3D-GS模型也适合使用,因为它为我们的目的显示了适当的缺陷水平。这个特定的checkpoint可以用来获得额外的微调渲染。

  Upscale 扩散模型的实现 Upscale diffusion 专门设计来解决重要的伪影,如distortion和 jumbled masses,我们认为这是广泛的“破坏”方面的渲染。为了缓解这些问题,首先使用微调的SD2.1v模型采用了一个再生过程。随后,为了进一步细化输出,我们应用一个isothermal 西格玛值为3的二维高斯模糊核来模糊图像。这个模糊的步骤有助于消除缺陷和减少噪音。在模糊后,我们将图像缩小了3倍;然后利用Upscale 扩散模型将图像放大四倍,其中采用强噪声增强来提高图像的质量和细节,如图7所示。我们实现了从第6000次迭代到第18000次迭代的模糊和升级过程,并结合了基本的引导技术。需要注意的是,图7中描述的情况只代表了第6000次迭代时的场景。随着引导通过这些迭代的继续,图像中的细节变得越来越细粒度和自然。Upscale扩散模型是原始的SD-x4-upscaling,没有进一步的微调。

在这里插入图片描述
  在高档扩散模型中加入显著的噪声增强确实可以导致已经训练良好的部分图像的改变;为防止这些改变可能导致的质量下降,训练过程中,等式8将项N的数量调整为8。该调整包含了6张由SD2.1v生成的Bootstrap图像,并添加了2个由高档扩散模型生成的额外图像

四、GauStudio: A Modular Framework for 3D Gaussian Splatting and Beyond

  GauStudio,一种新的模块化框架,用于建模3D高斯溅射(3DGS),为用户提供标准化的、即插即用的组件,以轻松地定制和实现3DGS管道。是一种具有前景和skyball背景模型的混合高斯表示方法。实验表明,这种表示法减少了无界户外场景中的伪影,并改进了新的视图合成。最后,我们提出了高斯溅射表面重建(GauS),这是一种新的渲染然后融合方法,用于3DGS输入的高保真网格重建,不需要微调。总的来说,我们的GauStudio框架、混合表示和GauS方法增强了3DGS建模和渲染能力,实现了更高质量的新视图合成和表面重建。

  


五、Gaussian Grouping:分割和编辑任何高斯

在这里插入图片描述

标题:《Gaussian Grouping: Segment and Edit Anything in 3D Scenes》
项目地址:https://ymq2017.github.io/gaussian-grouping/

1.摘要

  Gaussian Splatting实现了高质量和实时的三维场景合成,但它只专注于外观和几何建模,而缺乏对细粒度的对象级场景的理解。Gaussian Grouping扩展了GS,在开放世界的三维场景中联合重建和分割任何东西:用一个紧凑的ID编码增强每个GS,根据它们的对象实例/隶属度进行分组,具体是利用SAM的二维mask预测,并引入三维空间一致性正则化,在可微渲染过程中监督ID编码。与隐式NeRF表示相比,离散的三维高斯模型具有高视觉质量、高粒度和高效率。在高斯分组的基础上,进一步提出了一种局部高斯编辑方案,该方案在三维对象去除、inpaint、着色和场景重构等多功能场景编辑应用中显示出了良好的效果。

  高斯分组继承了SAM强大的zero shot二维场景理解能力,并通过产生一致的新视图合成和分割,将其扩展到三维空间。为进一步提高分组精度,引入了一种利用三维空间一致性的非监督三维正则化损失:使最近个k的三维高斯的ID编码,在特征距离上非常接近。这有助于三维物体内部的高斯分布或严重遮挡在渲染时更充分的监督。

  

2.任何掩码输入和一致性

  保留了高斯模型的所有属性(如它们的数量、颜色、不透明度和大小),同时添加了新的身份编码参数(类似于颜色建模的格式)。这允许每个高斯分布被分配给其在3D场景中所表示的实例或东西。

  为了模拟开放世界场景,我们采取了一组多视图捕获,以及由SAM自动生成的二维分割,以及通过SfM [40]校准的相应相机。

在这里插入图片描述

  为了实现跨视图的二维mask的一致性,我们使用了一个训练有素的zero-shot tracker[7]来传播和关联mask。这还提供了3D场景中的mask id 的总数。图2 (b)可视化了关联起来的2D mask标签。相比于[39]提出的基于cost的线性分配方法,简化了训练难度,同时避免了每次渲染迭代中重复计算匹配关系,加速超过60×,并具备更好的性能,特别是在SAM的密集和重叠mask下。

  

  

3.三维高斯渲染和分组

  ID 编码。为了将属于同一实例的三维高斯分组,除了现有的高斯性质,我们还在每个高斯分布中引入了一个新的参数:身份编码是一个长度为16的可学习的、紧凑的向量,足以以计算效率区分场景中的不同对象/部分。与场景的依赖于视图的外观建模不同,实例ID在各种渲染视图中是一致的。因此,我们将身份编码的SH degree设置为0,只对其 direct-current component进行建模。

  通过渲染来分组。为了优化ID编码,图2(c)将ID 向量以可微的方式渲染为二维图像。从原始GS中提取可微的三维高斯渲染器,并将渲染过程类似于gs中的颜色(SH系数)优化。

  GS采用神经点的 α ′ α' α 渲染[18,19],进行深度]排序和混合N个与像素重叠的有序点,计算所有高斯分布对单个位置像素的影响:

在这里插入图片描述

其中,每个像素的最终二维mask身份特征 E i d E_{id} Eid 是,每个高斯长度16的身份编码 e i e_i ei 的加权和,由该像素上的高斯影响因子 α i ′ α_i' αi加权。参考[55],通过测量二维高斯的协方差 Σ 2 D Σ^{2D} Σ2D,乘以每个点学习到的不透明度 α i α_i αi,来计算 α i ′ α_i' αi;其中 Σ 3 D Σ^{3D} Σ3D为三维协方差矩阵, Σ 2 D Σ^{2D} Σ2D为平面2D版本。J是3D-2D投影的仿射近似的雅可比矩阵,W是 world-to-camera的变换矩阵。

  

  group损失

  1.二维ID损失。给定公式1中渲染的2D特性 E i d E_{id} Eid作为输入,使用一个线性层 f f f,将特征维数恢复到K+1,然后取 s o f t m a x softmax softmax( f f f( E i d E_{id} Eid))进行ID分类(K是3D场景中的mask总数),采用标准的交叉熵损失 L 2 d L_{2d} L2d进行K+1类别分类。

  2.三维正则化损失。除了间接的二维监督,还引入无监督的三维正则化损失来约束ID编码 e i e_i ei的学习:利用三维空间一致性,通过最近的 k个三维高斯分布的ID编码与其特征距离拉近。这允许3D对象内部的三维高斯分布,或在基于点的渲染期间被严重遮挡(在几乎所有的训练视图中都不可见)得到更充分的监督。公式3的 F F F表示为与线性层(在计算二维身份损失时共享)相结合的softmax操作。用m个采样点将KL散度损失形式化为:

在这里插入图片描述其中P包含三维高斯分布的ID编码 e e e,集合Q={ e 1 ′ e_1' e1 e 2 ′ e_2' e2,…, e k ′ e_k' ek}是三维空间中的k个最近邻。结合原始GS的损失 L o r i L_{ori} Lori,总损失为:

在这里插入图片描述

4.局部高斯编辑

  图3用分组的三维高斯,来表示整个三维场景。基于解耦的场景表示,冻结大多数训练好的高斯,只调整相关的或新添加的高斯。对于三维对象的去除,只需删除编辑目标的三维高斯分布;对于三维场景的重新组合,在两个高斯群之间交换三维位置。过程没有参数调优。

  对于三维inpaint,先删除高斯,然后添加新高斯,渲染由LAMA [41]的二维inpaint结果监督。对于三维对象着色或风格迁移,只调整相应高斯群的颜色(SH)参数,同时固定它们的三维位置和大小,以保留学习到的三维场景几何

在这里插入图片描述

5.实验

  数据集。实验改进了现有的 LERF-Localization[14]评估数据集,并提出了LERF-Mask数据集,在该数据集中,我们使用精确的掩模手动注释了LERF本地化中的三个场景,而不是使用粗糙的边界框。对于每个3D场景,我们平均提供了7.7个文本查询和相应的GT mask标签。

  定性评估。在Mip-Nerf360中部9组场景中的7组上进行了高斯分组测试,LLFF [28]、Tanks&Temples[16]和Instruct-NeRF2NeRF[10]中获取了不同的3D场景案例来进行视觉比较。还采用了边界度量mBIoU来更好地进行分割质量测量。

  实施细节。ID编码为16维,实现了类似于rgb特征的前向和后向的cuda栅格化。分类线性层有16个输入信道和256个输出信道。训练中, λ 2 d λ_{2d} λ2d = 1.0和 λ 3 d λ_{3d} λ3d = 2.0。Adam优化器,ID编码的习率为0.0025;线性层学习率为0.0005。三维正则化损失的k = 5和m = 1000。A100 GPU上进行30K迭代训练。

  三维对象的删除,我们得到了对所选实例id进行分类的三维高斯分布。后处理包括首先去除异常值,然后使用凸包得到与删除对象对应的所有高斯函数三维对象的inpaint,在删除区域附近初始化高斯分布,使用与SPIn-NeRF相同的LPIPS损失微调。

  与现有的开放词汇表三维分割方法的对比,如LERF [14]。见表1,以及图5(我们的方法的分割预测具有清晰的边界,而基于LERF的相似度计算方法只提供了一个粗略的定位区域)。由于SAM不支持语言提示,我们采用Grounding DINO ]先识别2D图像中的框,然后根据框选择相应的掩码(右边第二列)。

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

  3D对象删除是从3D场景中完全删除一个对象,其中删除的实例/东西后面的背景可能会有噪声或因为没有观察而有一个洞。图6比较了GaussianGroup与蒸馏特征场(DFFs)[17]的去除效果。对于具有大对象的挑战性场景案例,我们的方法可以清晰地将三维对象从背景场景中分离出来。而DFFs的性能受到其clip蒸馏特性的质量的限制,这导致了完整的前景去除(列车箱)或不准确的区域去除与明显的伪影(卡车箱)

在这里插入图片描述

  3D对象inpaint在物体去除的基础上,要进一步填充由于缺少观测值而导致的“空洞”,使其成为一个逼真的、视觉一致的自然三维场景。我们首先检测删除后所有视图中不可见的区域,然后在内部绘制这些“不可见区域”,而不是整个“二维对象区域”。在每个渲染视图中,我们采用二维inpaint图像来指导新引入的三维高斯图像的学习。在图7中,与SPIn-NeRF [31]相比,更好地保留了空间细节和多视图相干性。

在这里插入图片描述

六、GaussianEditor

标题:GaussianEditor: Swift and Controllable 3D Editing with Gaussian Splatting
作者:南洋理工、清华
项目:https://buaacyw.github.io/gaussian-editor/

1.摘要 / 引言

  摘要。传统的3D编辑方法依赖于网格和点云等表示,在现实描绘复杂场景方面往往不足。隐式三维表示方法,如NeRF,可以有效地渲染复杂的场景,但处理速度慢,对特定场景区域的控制有限。GaussianEditor通过高斯语义跟踪器,提高了编辑的精度和控制能力,该跟踪器在整个训练过程中跟踪编辑目标。此外,分层高斯溅射(HGS),在二维扩散模型的随机生成引导下获得稳定和精细的结果。我们还开发了编辑策略来有效删除和集成的编辑策略。

  引言。编辑GS的挑战:主要问题是缺乏有效的方法来准确地识别目标高斯分布,在[Text-to-3d GS、Dreamgaussian、 Gaussian dreamer]中观察到,使用高随机生成引导优化 GS带来了重大挑战。一种可能的解释是,与神经网络缓冲的隐式表示不同,GS直接受到损失的随机性的影响。这种直接暴露会导致不稳定的更新,因为高斯分布的性质在训练过程中会直接改变。此外,GS的每个训练步骤都可能涉及到对大量高斯点的更新。这一过程没有受到神经网络式缓冲机制的调节影响。因此,3D GS场景的过度流动性阻碍了其在生成引导训练下收敛到隐式表征等精细详细结果的能力。

  GaussianEditor的一个关键特点是 引入了高斯语义跟踪:训练过程中,随着三维模型的几何形状和外观的发展,将二维分割 mask反投影到三维高斯中,并为每个高斯值分配一个语义标签。随着高斯函数在训练过程中的发展,这些语义标签能够跟踪目标编辑的特定高斯函数,确保只有目标区域被修改,实现精确和可控的编辑。另外,分层高斯喷溅(HGS)在训练过程中的序列被组织成世代。早期稠密化阶段的高斯受到严格限制,保持其原始状态,降低流动性;后期形成的被认为是年轻一代,受到更少或没有限制,允许更多的适应性。HGS的设计通过对老一代施加限制,同时保持新一代的灵活性,有效地调节了GS的流动性。这种方法能够连续优化以获得更好的结果,从而模拟通过神经网络在隐式表示中实现的缓冲函数

在这里插入图片描述

2.准备知识

  

  为了渲染新视角,用GS方法在相机平面上定位高斯分布:包括一个由W和投影变换的仿射近似的雅可比矩阵J表示的视角变换。相机坐标中的协方差矩阵 Σ ′ Σ' Σ 被确定如下:

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

  每个高斯的属性:位置表示为 x x x R 3 R^3 R3,颜色由球谐系数 c c c R k R^k Rk(k表示自由度),其不透明度α∈R,旋转四元数 q q q R 4 R^4 R4,和比例因子 s s s R 3 R^3 R3。每个像素,所有高斯分布的颜色和不透明度都是根据等式1来计算。N个排序好的高斯点,重叠成一个像素的混合过程可公式为:

在这里插入图片描述

  二维扩散-to-3D。总体可以分为两类。第一种[8,27,31,36,42,57],以Dreamfu sion引入SDS损失为例,包括将当前3D模型的噪声渲染以及其他条件输入二维扩散模型。由扩散模型生成的分数,然后指导模型更新的方向。第二种类型的[ Instruct-nerf2nerf , Dream booth3d,Control4d等]侧重于基于给定的对3D模型的多视图渲染的提示进行2D编辑。该方法创建了一个多视图的二维图像数据集,然后将其作为训练目标,为三维模型提供指导。

  为简单起见,本文将引导统一表示为 D D D;三维模型的参数 Θ Θ Θ,以及渲染的相机姿态 p p p 和提示 e e e,二维扩散先验的编辑损失可以表述如下:
在这里插入图片描述

3.算法

  GS 的编辑任务定义如下:给定一个提示 y y y,和一个用Θ表示的高斯,每个 Θ i Θ_i Θi= { x i x_i xi, s i s_i si, q i q_i qi, α i α_i αi, c i c_i ci} 表示第i个高斯参数。得到一个编辑好的三维高斯分布,称为 Θ y Θ_y Θy,符合或遵循提示y的规范。

3.1 高斯语义跟踪

  具体地说,我们通过添加一个新的属性m来增强三维高斯Θ, m i j m_{ij} mij表示第i个高斯点的语义高斯mask和语义的第j个语义标签。稠密化过程中,新的点继承了其父点的语义标签。这确保了我们在整个训练过程中的每一刻都有一个准确的3D语义面具。

  对于一组三维高斯Θ,我们从多个视点渲染生成一系列渲染 I I I,然后使用SAM处理得到二维分割mask M M M M j M_j Mj代表第j个语义标签。为了获得每个高斯的语义标签,将二维标签反投影回三维高斯。具体,为每个高斯分布保持一个权重和一个计数器。对于分割区域上的像素p,将语义标签重新投影回影响它的三维高斯:

在这里插入图片描述

  其中, w i j w_i^j wij 表示第i个高斯对第j个语义标签的权重,而 o i o_i oi( p p p)、 T i j T_i^j Tij( p p p)和 M j M^j Mj( p p p)分别表示第i个高斯语义标签的不透明度、像素p的透光率和像素p的语义掩码。在更新所有高斯权值和计数器后,根据高斯的平均权值是否超过手动设置的阈值来确定高斯是否属于第j个语义类

  整个标签过程非不到一秒钟。下游操作包括更改颜色、移动特定类别的属性以及删除某些类别。二维扩散引导经常难以有效地编辑复杂场景中的小物体。高斯语义跟踪能实现更精确的监督。

3.2 分层 GS

  普通GS 受益于SFM的点云,提供了高质量的初始化,以及Groudtruth数据集的稳定监督。之前的text-to-3D和image-to-3D工作中,GS作为一种点云样表示的性质,它在面对生成引导的随机性时表现出了局限性。与基于神经网络的隐式表征不同,GS的这种不稳定性主要是由于它们直接暴露于损失函数的随机性中。GS模型在每个训练步骤中都会更新大量的高斯点,缺乏神经网络的记忆和调节能力。这导致了不稳定的更新,并阻止了GS实现在基于神经网络的隐式表示中所看到的详细结果,因为GS的过度流动性阻碍了其在生成训练中的收敛。

  HGS是一种GS的结构化表示,根据产生特定高斯点的稠密化轮,将GS分为不同的世代。初始高斯Θ是第0代,第k轮稠密化过程中生成的点被标记为第k代。对不同世代的高斯分布施加不同的约束,以控制它们的灵活性程度。年龄越早,应用的约束就越强anchor loss被用于强制执行这些约束条件。训练开始时,HGS将所有高斯的属性记录为锚点。然后这些锚被更新,以反映每个稠密化过程中高斯分布的当前状态。在训练过程中,使用锚定状态和当前状态之间的MSE损失,以确保高斯分布不会偏离它们各自的锚点:

在这里插入图片描述
n表示高斯分布的总数,P表示当前高斯分布的一定性质(x、s、q、α、c)。在这里, P ^ \hat{P} P^指 anchor state 中记录的相同属性。λi表示应用于第i高斯的锚损失强度,根据它的产生而变化。总体训练损失的定义为:

在这里插入图片描述

  HGS中的这种世代设计防止了GS在面对随机损失时的过度灵活性的问题。随着每一次致密化,前几代高斯分布的锚损失重量λi都增加。这种方法确保了在随机损失下稳定的几何形成,依赖于来自新密度的几乎无约束的高斯分布来开拓细节。例如,为了限制原始GS中的变化,可以增加第0代的锚定损失重量。类似地,如果在编辑过程中不想改变颜色或几何形状,则可以对这些特定属性应用更强的锚定损失。

  此外,我们根据百分比标准来调节稠密化的阈值。在每步中,只选择性地对那些三维位置梯度在前k%内的高斯分布进行稠密。

3.3 3D Inpainting

  目标删除。简单地去除由掩模识别的高斯函数可能会导致伪影,特别是在物体与其他高斯函数相交的界面上。采用二维 Inpainting技术来为填充这些区域提供指导。然而,有效的二维inpaint需要精确的mask来提供更好的指导。为了生成这些mask,在删除后,我们使用KNN算法来识别最接近被移除的高斯,这很可能是在界面上。然后将它们投影到各种视图上。随后,我们扩张mask并固定所有空洞,以准确地表示界面区域,从而为边界区域创建一个细化的mask。整个对象删除过程通常只需要两分钟。

  Object Incorporation。任务定义如下:在三维高斯θ中,给定一个摄像机姿势p和相应的渲染图 I I I用户在 I I I上提供一个2D掩模M,表示他们希望绘制的区域。此外,还提供了一个提示y来指定内画的内容。然后,我们更新了θ,以完成Incorporation请求。

  给定I、M和y,这个过程首先使用Sdxl,生成一个二维inpaint 图像 I M y I_{My} IMy,随后,将 I M y I_{My} IMy前景对象分割并输入到[ Wonder3d]中引用的 image-to-3D方法中,生成粗糙的三维mesh。然后将这个粗糙的网格转化为三维高斯 θ y θ_y θy,并使用HGS进行细化。为了使 θ y θ_y θy的坐标系与θ对齐,首先使用Vision transformers for dense prediction]的技术估计 I M y I_{My} IMy的深度然后使用最小二乘法将这个深度与θ在相机姿势p处渲染的深度图对齐。通过这种对齐,我们可以准确地确定在θ的坐标系中已绘制的前景对象的坐标和比例。在将θy转换为θ的坐标系后,我们简单地将它们连接起来,生成最终绘制的三维高斯分布。整个对象合并过程可以在大约5分钟内完成。

4 实验

  实验是在一个RTX A6000 GPU上进行的。详见第二节。4.1,一旦从SAM中得到分割mask,将三维高斯函数分割只需要大约1秒。为了编辑大型场景,在编辑过程中使用的相机姿态是从最初用于重建的多视图图像数据集的一个子集中选择的。在编辑目标对象的情况下,通过GS的分割,我们生成一组相机姿态紧密地围绕着分割的物体。采用这种方法是为了提高在渲染过程中对象的分辨率,从而提高了编辑过程的有效性。此外,当目标对象与场景的关联程度较低时,我们选择只渲染目标对象,以减少计算负荷。

  根据场景的复杂性,实验中使用的相机pose的数量从24到96不等。编辑过程,受到指定的提示和场景的复杂性的影响,通常需要优化500-1000个步骤,总共大约需要5-10分钟。关于物体合并的3Dinpaint,生成一个三维网格大约需要3分钟,将该网格转移到三维高斯并细化它大约需要2分钟,而两个高斯的合成过程需要不到1秒

在这里插入图片描述

  在instruct-Nerf2Nerf中,静态掩模的有效性随着三维模型的几何形状和外观的发展而降低。

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

5.代码

一、安装步骤
  

# CUDA version 11.8(其他版本cuda可以替换)
pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt

# Install forked viser [Required by WebUI)
mkdir extern && cd extern
git clone https://github.com/heheyas/viser 
pip install -e viser
cd ..

# Download Wonder3D checkpoints [Required by Add]
sh download_wonder3d.sh

二、运行代码

# 1.首先跑colmap位姿,然后训练原始GS

# 2.对colmap结果做畸变校正 (校正过的table2文件夹中,spase中的三个文件,要新建一层名为“0”的文件夹来保存)

colmap image_undistorter  --image_path 'table/input'  --input_path 'table/sparse/0'   --output_path 'table2'

# 3.运行editor,最终结果会在web端出现
python webui.py --gs_source '/home/xzz/gs/output/table/point_cloud/iteration_20000/point_cloud.ply'    --colmap_dir  '/home/xzz/gs/data/table2' 

运行后会启动web服务,可以再浏览器中查看,效果如下:
在这里插入图片描述


  

  

  

  

  

七、InstantSplat:无界稀疏视图的40秒无位姿高斯泼溅

标题:《InstantSplat: Unbounded Sparse-view Pose-free Gaussian Splatting in 40 Seconds》
作者:得克萨斯大学、英伟达研究院、厦门大学、格鲁吉亚理工学院







d \sqrt{d} d 1 0.24 \frac {1}{0.24} 0.241 x ˉ \bar{x} xˉ x ^ \hat{x} x^ x ~ \tilde{x} x~ ϵ \epsilon ϵ
ϕ \phi ϕ

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值