摘要
神经辐射场(NeRFs)正在成为一种普遍的场景表示方法,能够实现新视角的合成。随着NeRF的应用越来越广泛,人们可能会希望与他人共享NeRF。然而,在共享NeRF之前,可能需要移除个人信息或不雅的物体。然而,当前的NeRF编辑框架难以实现这种移除。
我们提出了一个从RGB-D序列创建的NeRF表示中移除物体的框架。我们的NeRF修复方法利用了近期在2D图像修复领域的研究成果,并由用户提供的掩码进行引导。我们的算法基于一种置信度驱动的视图选择程序来实现。该程序选择哪些单个2D修复图像用于创建NeRF,以确保生成的修复后的NeRF在3D上是一致的。
我们展示了我们的方法在多视图一致性方面有效地合成了合理的修复结果,并优于现有的竞争方法。我们通过提出一个新的且仍具挑战性的数据集来验证我们的方法,该数据集专用于NeRF修复任务
1 引言
在某些环境中,移除物体可能是必要的,例如当NeRF是传统计算机视觉管道的一部分时,比如从用于重定位的扫描中移除停放的汽车。一些针对NeRF的编辑已经被探索过。例如,基于对象的表示方法可以将标记的对象与背景分离,这允许通过用户引导的变换来编辑已训练的场景,而语义分解则允许选择性地编辑场景中的某些语义部分并使其透明。然而,这些以前的方法仅增强了输入扫描中的信息,限制了其生成能力,即无法生成从任何视角都未观察到的元素。
在这项工作中,我们着手解决从场景中移除物体并现实地填补所产生的空洞的问题,如图1所示。解决这一问题需要:
a)利用多视角信息,当场景的部分在某些帧中被观察到但在其他帧中被遮挡时,
b)利用生成过程填补从未观察到的区域。
为此,我们将NeRF的多视角一致性与在大规模2D图像数据集上训练的2D修复模型的生成能力结合起来。这些2D修复在构建上并不具有多视角一致性,并且可能包含严重的伪影。直接使用这些修复会导致损坏的重建,因此我们设计了一种新的基于置信度的视图选择方案,逐步从优化中移除不一致的修复。我们在一个新数据集上验证了我们的方法,展示了我们在标准图像质量度量上的表现优于现有的视图合成方法,并且还能产生多视角一致的结果。
总结一下,我们做出了以下贡献:
1)我们提出了第一个通过利用单图像修复的能力来进行NeRF修复的方法。
2)我们引入了一种新的视图选择机制,该机制可以自动从优化中移除不一致的视图。
3)我们提出了一个新的数据集,用于评估室内和室外场景中的物体移除和修复。
2 相关工作
2.1 图像修复
*图像修复**:图像修复解决的是在单张图像中合理填充缺失区域的问题。一种典型的方法是使用带有对抗性损失的图像到图像网络,例如[22,53,79,82],或使用扩散模型[40]。不同的方法被提出用于编码输入图像,例如使用掩码[32]或傅里叶卷积[69]。图像修复也被扩展到深度图像的修复[14]。然而,这些方法无法在视频帧之间提供时间一致性,也不能合成新的视角。
**移除视频中的移动物体**:虽然视频修复是计算机视觉中一个研究较多的问题[75,81],但大多数工作都专注于移除移动物体。通常,这通过利用附近帧的引导来实现,例如通过估计光流[15,21,75],有时也使用深度信息[6,31]。而移动物体的存在使得任务变得更容易,因为它们的移动会使背景显现出来,使场景的大部分区域至少在一个帧中可见。
**移除视频中的静态物体**:当序列中的其他帧中可以看到被遮挡的像素时,这些像素可以用于修复区域[28,45,46]。例如,[37,38]从视频中移除静态的前景干扰物,如栅栏和雨滴。然而,通常仍然存在一些在其他视角中看不到的像素,对于这些像素,需要使用其他方法来填充它们。例如,[18]通过将可见像素的补丁传播到要修复的区域中进行修复,而[45,70]则通过PatchMatch来修复缺失的像素。Kim等人[24]依赖于每个场景的预先计算的网格进行物体移除。我们的方法与这些方法的主要区别在于,我们的修复结果可以外推到新的视角。
2.2. 新视角合成和NeRFs
NeRF [42] 是一种非常受欢迎的基于图像的渲染方法,它使用可微分的体渲染公式来表示场景;一个多层感知器 (MLP) 被训练来根据给定的3D坐标和光线的观察方向回归颜色和不透明度。这种结合工作在隐式3D场景表示[9,34,41,52,58-60],光场渲染[11] 和新视角合成[17,36,76]。扩展工作包括减少锯齿伪影[3],应对无边界场景[4],仅从稀疏视角重建场景[8,25,39,49],或者通过使用八叉树[71,78] 或其他稀疏结构[61] 使NeRFs更加高效。
**深度感知神经辐射场**。为了克服NeRF对密集视图的要求和在重建几何质量方面的局限,可以在训练中使用深度信息[12,57]。这些可以是从结构运动中获得的稀疏深度[63,64],或者是来自传感器的深度[55,67]。
**用于编辑的面向对象和语义的NeRFs**。NeRFs的一种进展方向是将场景分解为其组成部分[50,74,77]。这可以基于动态场景的运动[50],或静态场景的实例分割[77]。这两种方法还将场景的背景建模为一个单独的模型。然而,类似于视频修复,动态场景允许更好的背景建模,因为更多的背景是可见的。相比之下,在[74,77]的背景表示中可以看到视觉伪影,这些方法模型静态场景。基于语义分解的场景方法[26,84] 也可以用来移除物体。然而,当移除语义部分时,这些方法并不尝试完成场景,例如,[26] 讨论了“被删除物体后面的背景可能是嘈杂的或有洞,因为缺乏观察”。
**用于新视角合成的生成模型**。3D感知生成模型可用于从不同视点合成对象或场景的视图,以3D一致的方式[13,48,56,65]。与NeRF模型不同,NeRF模型仅具有测试时间组件,并且“过拟合”到特定场景,而生成模型可以通过在潜在变量空间中采样来幻化出新对象的视图。最近对适用于完整室内场景的3D生成模型也产生了一些兴趣[13,29,56]。然而,正如[13]的定性结果所示,它们拟合源视图(或记忆)的能力可能有限。为了训练生成模型,[13,29,56]需要一个包含RGB和相机姿态以及在某些情况下深度的室内场景的大型数据集[13,29]。相比之下,我 们使用的2D预训练修复网络可以在任何图像上进行训练,因此对训练数据的依赖性较小,并且不局限于室内场景。
**新视角合成中的修复**。修复通常用作新视角合成的一部分,以估计输入中未观察到的区域的纹理[66,72],例如用于全景生成[20,27]。Philip等人[54]允许从基于图像的渲染中移除物体,但前提是假设背景区域是局部平面的。与我们的方法类似,有两个同时进行的工作[33,43] 利用了单张图像的修复来从NeRF中移除物体。为了解决多视角不一致性,[33]手动选择在掩码内用于NeRF优化的单个视图,而[43]则使用感知损失。
3 方法
我们假设我们有一个带有相机姿态和内参的RGB-D序列。深度和姿态可以通过例如使用密集的结构运动(structure-from-motion)管线来获取[63, 64]。在我们的大多数实验中,我们直接使用Apple的ARKit框架[2]来捕捉具有姿态的RGB-D序列,但我们也展示了通过使用多视角立体方法来为RGB序列估计深度,从而放宽此要求的可能性。在此过程中,我们还假设可以访问要移除物体的每帧掩码。目标是从此输入中学习一个NeRF模型,该模型可以用于合成一致的新视图,其中每帧的掩码区域应被合理地修复。我们方法的概述如图3所示。
3.1. RGB和深度修复网络
我们的方法依赖于一个2D单图像修复方法来分别修复每个RGB图像。此外,我们还需要一个深度修复网络。我们将这两个网络视为黑盒子,并且我们的方法与选择的方法无关。单图像修复的未来改进可以直接转化为我们方法的改进。给定图像 I_n和对应的掩码 M_n,每图像修复算法生成一个新图像。同样,深度修复算法生成一个修复后的深度图
。我们在图2中展示了一些2D修复网络的结果。
3.2 基于置信度的视图选择
尽管大多数单独修复的RGB图像 看起来很逼真,但它们仍然存在两个问题:1)一些修复是不正确的,2)尽管单个图像看起来合理,但它们在多视角下并不一致,即在多个视图中观察到的相同区域并不一定以一致的方式完成(见图2)。因此,我们提出了一种基于置信度的视图选择方案,该方案自动选择在NeRF优化中使用的视图。我们为每个图像
关联一个非负的不确定性度量
。对应的每图像置信度
用于重新加权NeRF的损失。这个置信度值可以看作是损失衰减项,类似于[23]中的Aleatoric不确定性预测项。
我们的模型的RGB损失设置如下:
其中,像素 的颜色在掩码内部的像素由修复图像监督,而在掩码外部的像素由输入的RGB图像监督。请注意,这个损失的第二项仅在一组有限的图像P上计算,其中
。这在损失项
的上标P中有所表示。实际上,这意味着在NeRF优化中仅使用一些修复区域。我们在下面讨论如何选择集P。
对于深度损失,我们使用类似的掩码内外像素划分,因此:
最后,我们包括了两个正则化项。一个是关于不确定性权重的正则化),以防止出现
为0的简单解决方案。另一个是基于[4]中的失真正则化,使用在方程(4)中详细描述的损失,因此:
视角方向和多视图一致性。在优化NeRF时,我们观察到三点:
a) 网络使用视角方向来建模修补中的多视图不一致;
b) 通过移除视角方向作为输入,我们可以强制多视图一致性;
c) 当不使用视角方向作为输入时,不一致性在密度中引入了云状伪影。
为了避免a)和c)的问题,并正确优化捕捉修补不确定性的变量,我们提出了以下方案:
1) 在NeRF中添加一个辅助网络头 ,该头部不接受视角方向作为输入;
2) 阻止颜色修补和 对密度的梯度流动,将不确定性变量
作为唯一的视角依赖输入。这种设计强制模型将修补之间的不一致性编码到不确定性预测中,同时保持模型在不同视角间的一致性。
具有基于方程5的损失项
)。辅助头
的输出不会用于最终渲染中。相反,与这个额外头部相关的损失是一个正则化项。见图4以了解我们架构的示意图。
迭代精炼。 我们在一个迭代方案中使用每张图像预测的不确定性 ,该方案逐步移除在NeRF优化中不可靠的图像,即我们迭代更新贡献于掩膜区域损失的图像集 PPP。在优化
的 K 次梯度步骤后,我们找到中位数估计的置信值 m。然后,我们从训练集中移除所有2D修补区域,其置信度分数低于 m。接下来,我们使用更新后的训练集重新训练NeRF,并重复这些步骤 KK次外部迭代。需要注意的是,从 P 中排除的图像仍然参与优化,但仅针对未掩盖区域的光线,因为它们包含有关场景的有价值信息。这在算法1中进行了总结。
3.3 实施细节
去除对象的掩膜。 与其他修补方法类似,我们的方法需要每帧的掩膜作为输入。像其他修补方法 [30, 69, 75] 中那样手动标注每帧的2D掩膜是非常耗时的。因此,我们使用MeshLab [10] 手动标注一个包含目标的3D框,来可视化和标注3D点云。这只需要对每个场景进行一次。或者,我们也可以依赖于2D对象分割方法,例如 [16],或3D对象边界框检测器,例如 [1] 中的基线之一。
掩膜精炼。 实际上,我们观察到从标注的3D边界框中获得的掩膜可能相当粗糙,并且包含了大量背景区域。由于大型掩膜对修补质量有负面影响,我们提出了一个掩膜精炼步骤,以获得更紧密围绕目标的掩膜。如果输入掩膜已经足够紧密,则不需要此步骤。从直观上看,这个掩膜精炼步骤去除3D边界框中为空间的部分。我们首先取重建的3D点云中所有位于3D边界框内的点。然后,通过将这些点渲染到每张图像中,并与深度图进行简单比较以检查当前图像中的遮挡,来获得精炼的掩膜。通过使用二值膨胀和腐蚀来清理任何由传感器噪声造成的像素泄漏。掩膜精炼步骤的效果可以参见图5。
修补网络。 我们使用 [69] 进行RGB和深度的修补。RGB图像和深度图的修补是独立进行的,我们使用 [69] 作者提供的参考网络。我们的深度图通过将深度裁剪到5m并将[0m,5m]中的深度线性映射到[0,255]的像素值进行预处理。我们实证观察到这种方法效果良好,但专门针对深度图的修补方法可能会超越这个基准。
4 局限
我们的方法受限于2D修补方法的性能。当掩膜沿整个轨迹过大时,2D修补失败,无法选择到真实的视图。我们的渲染有时会受到模糊的影响,这主要是由于2D修补中的高频纹理闪烁造成的。此外,物体的 cast shadows 或反射处理不佳。我们将这些挑战的解决留待未来工作中解决。
5. 结论
我们提出了一个训练神经辐射场的框架,其中物体可以在输出渲染中被合理地去除。我们的方法借鉴了现有的2D修补工作,并引入了一种基于自动置信度的视图选择方案,以选择具有多视图一致性的单视图修补。我们通过实验验证了我们提出的方法在从3D修补场景中合成新视图方面优于现有工作,尽管存在模糊问题。我们还引入了一个用于评估这项工作的数据集,为该领域的其他研究人员设置了一个基准。