【CVPR2022】NeRF:通过2D-3D相互学习实现三维场景程式化NeRF

文章目录

  • Abstract
  • 一、Preliminaries
  • 二、方法
    • 1. 2D Stylization Network
    • 2. Stylized NeRF
    • 3. Mutual Learning
  • 三、结果


Paper:https://openaccess.thecvf.com/content/CVPR2022/papers/Huang_StylizedNeRF_Consistent_3D_Scene_Stylization_As_Stylized_NeRF_via_2D-3D_CVPR_2022_paper.pdf

【CVPR2022】NeRF:通过2D-3D相互学习实现三维场景程式化NeRF_第1张图片

Abstract

3D场景程式化的目的是根据给定的样式示例,从任意的新视图生成场景的程式化图像,同时确保从不同视图渲染时的一致性。将图像或视频风格化的方法直接应用于三维场景中,并不能达到这种一致性。由于最近提出的神经辐射场(NeRF),我们能够以一种一致的方式表示一个3D场景。通过对相应的NeRF进行样式化,可以有效地实现一致的三维场景样式化。然而,在二维图像和隐式体积表示的NeRF之间存在着显著的域差距。为了解决这一问题,我们提出了一种新的三维场景程式化相互学习框架,该框架结合了二维图像程式化网络和NeRF,将二维程式化网络的程式化能力与NeRF的三维一致性相结合。我们首先对三维场景的标准NeRF进行程式化的预训练,并将其颜色预测模块替换为样式网络以获得一个程式化的NeRF。然后通过引入一致性损失,将空间一致性的先验知识从NeRF提取到二维程式化网络中。我们还引入了一个模拟损失来监督NeRF风格模块的相互学习,并微调二维风格化解码器。为了进一步使我们的模型处理二维程式化结果的歧义,我们引入了服从基于风格的概率分布的可学习潜在码。它们被附加到训练样本中作为条件输入,以更好地学习我们的新程式化NeRF中的样式模块。实验结果表明,该方法在视觉质量和长期一致性方面都优于现有的方法。


一、Preliminaries

NeRF[35]使用mlp将一个场景建模为一个具有不透明度和亮度的连续体积场。MLPs以3D位置x∈R3和观察方向d∈R2作为输入,预测不透明度σ(x)∈R+和辐射颜色radiance color c(x,d)。在渲染过程中,沿着通过像素的方向投射光线(t)=或+。像素的颜色由积分决定:
【CVPR2022】NeRF:通过2D-3D相互学习实现三维场景程式化NeRF_第2张图片
为了便于模型的拟合能力,NeRF使用位置编码γ(·)将网络x和d的输入映射到包含多尺度频率信号的傅里叶特征[47]:
在这里插入图片描述
其中,L是一个控制光谱带宽的超参数。

二、方法

【CVPR2022】NeRF:通过2D-3D相互学习实现三维场景程式化NeRF_第3张图片

我们的方法使用一个预先训练的和固定的NeRF来呈现一些视图{Ii}作为相互学习的增强数据。VGG提取的风格图像的风格特征通过预先训练的VAE编码器嵌入到潜在分布中。提取的内容特征{Fic}和样式特征{Fjs}一起被输入到一个AdaIN层和一个解码器中,以获得程式化的颜色Ca。另一方面,样式模块采用可学习的潜在码{li,j}和坐标x来预测程式化的辐射颜色cs,从而形成程式化的NeRF。通过沿原始不透明度σ的采样点,可以得到渲染的程式化颜色Cn。目标函数Ld、Lmimic、Ls、Lc和Lco用于相互学习优化(详见正文)。

1. 2D Stylization Network

Lco是根据NeRF的几何形状,将不同视图的风格图像扭曲成固定的:
在这里插入图片描述

2. Stylized NeRF

训练一个普通的NeRF[35]来建模不透明度场σ(x)和原始辐射色场co(x,d),这在接下来的相互学习过程中是固定的。为了实现NeRF的风格化功能,在NeRF中添加了一个MLP网络作为风格模块,代替原来的颜色模块,对场景的程式化辐射颜色进行建模。在查询训练阶段场景的程式化辐射颜色时,该模块除了需要输入位置坐标外,还需要输入可学习的潜在代码。与NeRF-w中模拟场景的随机外观和瞬变的潜在模型不同,这里的潜在代码都学习了2D风格化结果的风格和歧义,避免了程式化NeRF结果的模糊,并使其能够有条件地风格化场景。

在特定风格的不同视图上的二维方法的程式化可以看作是条件分布的样本。这些样本由于其不一致而是不同的。我们通过一个预先训练过的VAE[23]来参数化二维程式化结果的条件分布。VAE编码风格特征{Fjs}由VGG提取为高斯分布{N(µj,σj)}。将二维程式化结果的条件分布参数化为嵌入式高斯分布,并以风格特征为条件。对于第i个视图和第j个风格的二维程式化结果,通过对N(µj,σj)进行采样来初始化的潜在代码li,j。在相互学习的过程中,对潜码进行了优化。为了约束潜在码li,j服从分布{N(µj,σj)},使用了一个负对数似然损失Ld:
【CVPR2022】NeRF:通过2D-3D相互学习实现三维场景程式化NeRF_第4张图片

样式模块采用嵌入的µ和3D位置坐标,以获得程式化的颜色cs(x,l)。样式模块和预训练的NeRF的不透明度预测模块形成了我们的程式化的NeRF。渲染过程遵循等式中的步骤1,它使用原始的不透明度字段。

3. Mutual Learning

相互学习首先从NeRF的空间一致性先验知识提取到二维程式化网络。然后是可学习风格模块的协同训练,这是一个在线的预先训练的解码器,用于微调和潜在代码。为了扩充训练数据集,使用普通的NeRF将一系列视图{Ii}作为训练数据呈现。我们将样式图像表示为样式。一个训练视图和一个给定的风格一起形成一个训练实例,其中的潜在代码li,j在上面描述。使用原始的不透明度,通过沿着光线的采样点和近似的等式来渲染程式化的NeRF的图像1通过数值求积,如[32]中所述:
【CVPR2022】NeRF:通过2D-3D相互学习实现三维场景程式化NeRF_第5张图片
其中Cn(r,l)是像素r的预测程式化颜色,δk是第k个样本点和(k+1)个样本点之间的欧拉距离。模拟损失定义为风格化结果Cn(ri,li,j)与NeRF和二维风格化方法的Ca(Ii,Sj)ri之间的L2距离:
在这里插入图片描述
引入模拟损失mimic loss是为了最好地交换NeRF和二维程式化方法之间不同强度的知识。感知内容损失Lc(Ca(II,Sj),Ii)和风格损失Ls(Ca(II,Sj),Sj)[20]是由解码器Ca(Ii,Sj)的结果决定的,它允许在有限的GPU内存中使用更大的补丁。NeRF样式模块和潜在码的相互学习过程的目标函数为:

在这里插入图片描述
对二维程式化解码器进行微调的目标函数可以写为
在这里插入图片描述
其中,λp、λc、λs是控制项影响的超参数。

三、结果

【CVPR2022】NeRF:通过2D-3D相互学习实现三维场景程式化NeRF_第6张图片


你可能感兴趣的:(3d,学习,人工智能)