引言
近年来,在神经网络中嵌入 3D 图像的神经隐式表示法的发展取得了显著进展。这一进步使得只使用一组有限的训练视角就能从各个角度渲染图像成为可能。从使用简单的 MLP 网络训练的 NeRF 开始,人们提出了各种基于先进网络架构或改进编码的改进技术。
然而,由于 3D 编辑任务的限制,既要保持原始 3D 图像的完整性,又要进行符合要求的修改,所有根据特定条件编辑预训练的 3D 隐式网络仍然是一个悬而未决的问题。一些方法尝试根据文本条件编辑预训练的 NeRF 模型,利用预训练的 CLIP 模型微调 NeRF 模型的参数。然而,这些方法都存在明显的不足,包括 CLIP 模型本身的性能限制,以及在训练过程中需要渲染高分辨率图像,从而导致大量的时间消耗。
为了应对这些挑战,本文提出了一种新颖的 NeRF 编辑方法,仅使用文本提示就能高效地编辑 3D 场景。本方法中直接在 NeRF 隐空间中运行,这有助于减少时间和计算成本。然而,由于潜空间缺乏几何一致性,直接用 NeRF 渲染现实世界场景的隐空间特征可能会导致其视图合成性能大幅下降。为了解决这个问题,本文对隐空间生成过程进行了分析,并根据分析结果提出了一种新的细化层来提高性能。此外,为了解决现有基于 SDS 的编辑方法的缺点,我们提出了一种新的采样策略,将基于分数蒸馏采样的二维图像编辑技术 Delta Denoising Score (DDS) 扩展到三维领域。这一扩展使本方法能够实现高性能的编辑能力,同时保持低廉的计算成本。
方法
图1 整体框架
首先,本方法在 Stable Diffusion 的隐空间中优化 NeRF。使用预先训练好的 VAE 对所有图像进行编码以获得特征图,并指导 NeRF 直接预测隐空间特征图。此外,本方法还引入了一个额外的细化层,从而提高了 NeRF 的新颖视图合成性能。在推理阶段,通过解码 NeRF 渲染的隐空间特征图获得自然图像。在编辑阶段,使用 DDS 调整 NeRF 和细化过程的参数,使 3D 场景与所提供的目标文本保持一致。
ED-NeRF
对于给定的位置信息
和视角方向
,NeRF 通过 MLP 预测色彩
和密度
。通过位置编码
,
和
被映射为高频向量,然后输入 NeRF 的神经网络,得到两个输出:密度
和色彩
。
通过体渲染,NeRF 可以预测摄像机光线沿线的像素颜色
,其中
代表
范围内的深度,
代表摄像机位置,
代表视角方向:
优化 NeRF 来渲染隐空间扩散模型的特征图在文本引导的 3D 生成中有多个优势。由于空间维度的降低,减少了训练负担,并且增强了 NeRF 模型的可编辑性,因为渲染输出可以直接用作隐空间扩散模型的输入。将 NeRF 迁移到隐空间的概念是由 latent-NeRF 首次提出的,其中NeRF 直接用隐空间特征而非 RGB 颜色进行训练。因此,在使用隐空间扩散模型作为语义先验知识时,无需在优化过程中进行编码过程,即可渲染三维场景。
因此,ED-NeRF 基于一种新的隐空间 NeRF 训练 pipeline 实现,用于在隐空间中合成真实世界场景。当真实世界的图像数据集
包含多视角图像
时,可以通过编码器将所有图像编码到 Stable Diffusion 的隐空间以获得特征:
。在对所有图像编码之后,我们可以使用隐空间特征图
作为 ED-NeRF 的标签数据集,使用损失函数进行训练:
其中,
表示隐空间特征
的像素值,
由体渲染公式得到:
其中,
表示输入为
和
时,神经网络预测的特征值。
基于隐空间特征分析的细化层
在直接通过损失函数训练得到生成的隐空间特征时,发现重建性能明显下降。为了解决这个问题,我们分析了 Stable Diffusion 的编码器
和解码器
,并在此过程中发现了以下启示:
- 编码器和解码器由 ResNet 块和自注意力层组成。因此,在将图像映射到隐空间并生成特征图的过程中,像素值之间会出现干扰,这主要是由于 ResNet 和自注意力层造成的。因此,隐空间特征图和图像像素不能直接对齐。
- 当 NeRF 从隐空间特征图渲染单个像素值时,每条射线都会独立地通过一个 MLP 来确定特征图的像素值。因此,NeRF 为单个像素渲染的特征值是在不与其他像素交互的情况下确定的。
根据上述分析,我们发现静态 NeRF 的变形重建性能的原因在于没有考虑上述交互作用。因此,我们希望将 ResNet 和自注意力层引入的像素间交互作用引入 ED-NeRF 渲染阶段。在 Stable Diffusion 的编码器和解码器中,特征图以相同的维度通过自注意力层,因此可以直接将两个注意力层合并。利用这一点,我们可以加入细化层
,而无需改变输入和输出向量的维度。设
为细化特征图
的像素隐空间向量,由
得到。因此,可以设计一个如下的细化重构损失函数:
最终,我们可以将总训练 loss 表述为细化 loss
和重构 loss
的总和。
我们通过最小化总 loss
来更新 NeRF
和细化层
,以重建不同视角中的隐空间向量。为确保学习的稳定性,在训练的初始阶段,
设为 1.0,
设为 0.1。超过特定的迭代阈值后,我们将其设置为 0,以鼓励细化层更多地关注隐空间表示的匹配。
基于 DDS 的 NeRF 编辑
在 NeRF 编辑任务中,SDS 的更新规则经常出现一些问题,例如色彩饱和和模式搜索。由于目标噪声
是纯高斯噪声,因此分数差异不知道源图像的任何先验知识。因此,生成的输出只是幻觉对象的替换,而无需考虑源 NeRF。为了解决 SDS 的问题,本文研究了最近提出的 Delta Denoising Score 2D 编辑方法。SDS 与 DDS 的主要区别在于,其去噪分数是目标和源的去噪分数之差。DDS 可以由两个不同文本提示条件下的两个 SDS 分数之差构成:
本方法的目标是将 DDS 扩展到 3D 空间。由于以及对于第
个相机姿态编码了隐空间特征
,可以直接将它们用作 DDS 的源组件。为了微调模型,本方法渲染了编辑的输出
。利用配对的隐空间特征,
本方法将具有相同噪声尺度的采样噪声
添加到源隐空间特征和编辑的隐空间特征中,从而获得加噪的隐空间特征
。然后,对源图像和编辑图像使用不同的文本条件,应用扩散模型从加噪特征图中获得估计得分输出。可以使用两个输出之间的差异作为更新 NeRF 参数的梯度。在这一步中,本方法同时训练 NeRF 参数
和细化参数
。因此,对于随机的第
个相机姿态,3D DDS表示为:
图2 将DDS扩展至3D ED-NeRF
虽然 DDS 提高了性能,但使用普通的 DDS 会导致不需要的区域发生过多变化,并且会导致两个不同场景之间的不一致。本文提出一种额外的二值掩码,将二进制掩码
和 DDS 相结合的目标函数如下:
尽管使用了二进制掩码,掩码DDS loss
更新了 NeRF 的所有参数,甚至包括了不需要的区域。因此,仅依赖掩码 DDS 损失可能无意中导致超出掩码边界的更改。因此,本文引入了一个额外的重建损失,以减轻掩模以外的不希望的变形。
实验
实验结果
本方法显示出了编辑具有不同文本上下文的各种图像类型的能力。具体来说,在对 3D 场景进行变换时,ED-NeRF 可以在不影响其他部分的情况下实现特定对象的有效变换。
图3 NeRF 编辑实验结果
图4 与 baseline 模型定性对比
表1 与 baseline 模型定量对比
消融性实验
如果只使用 DDS 损失,模型无法保持非目标区域的属性,往往无法反映文本条件。如果不使用掩码重建正则化,目标对象以外的区域也会发生过度变化。如果从 DDS 中去除掩模,非目标区域会出现不必要的伪影。删除所提出的细化层后,结果变得模糊,因为主体 NeRF 不能完全嵌入真实世界的场景。所提出的设置可以修改 3D 场景中的特定区域,并遵循目标文本提示,而不会造成不必要的变形。
图5 消融性实验
为了进一步显示本方法所提出的细化层的效果,本文还比较了重建质量。我们可以观察到,与 baseline 相比,细化层的重建输出显示了精细的细节。细化层改善了隐空间 NeRF 训练,这在最终编辑输出中至关重要。
图6 细化层的消融性实验