NeRF神经辐射场ECCV2020

fig1

NeRF前置内容:渲染和观察方向

渲染可以看作:将三维场景投影到像素图像。对于同一个三维场景,在不同视角下,渲染的结果是不同的。

当固定在某个位置的相机或者人眼在看三维场景时,场景中的一些点是不在相机光线上的,我们描述这个点的位置可以使用场景下的绝对位置 ( x , y , z ) (x,y,z) (x,y,z),为了得到渲染的合理结果(该位置处相机的成像),还需要知道相机光线和该点的关系,比如观察方向 ( θ , φ ) (θ,φ) (θ,φ)
fig001
比如上图人眼或相机固定,光线为黑色实线,点G与相机的关系即为 ( θ , ϕ ) (\theta,\phi) (θ,ϕ)


场景中某个点的渲染结果,取决于相机观察场景的位置,以及该点与相机光线的位置关系。


摘要

我们提出了一种通过使用稀疏的输入图集优化底层连续体积场景函数(continuous volumetric scene function)来实现复杂场景新视图合成的最新结果的方法。我们的算法使用一个全连接深度网络来表示场景,该网络的输入是一个连续的5D坐标(空间位置( x x x y y y z z z)和观察方向( θ θ θ φ φ φ)),其输出是该空间位置的体积密度(volume density)和视景相关的发射辐射度(view-dependent emitted radiance)。我们通过沿相机光线查询5D坐标来合成视图,并使用经典的体渲染技术将输出颜色和密度投影到图像中。因为体渲染是自然可微的,所以优化场景表示所需的唯一输入是一组具有已知相机外参和内参的图像。我们描述了如何有效地优化神经辐射场,以渲染具有复杂几何和外观的场景的新视图,并展示了优于先前神经渲染(neural rendering)和视图合成(view synthesis)工作的结果。视图合成结果最好以视频形式查看,因此我们推荐查看我们的补充视频,以便进行令人信服的比较。

1.Introduction

fig2

  • 图1:我们提出了一种从一组输入图像中优化连续5D神经辐射场的表示(任何连续位置的体积密度和视角相关颜色)的方法。我们使用体渲染技术沿光线累积此场景表示的采样点信息,以从任何视角渲染场景。在这里,我们可视化了在半球区域上随机捕获的合成鼓(Synthetic Drums)场景的100个输入视图集,并显示了从优化后的NeRF表示中渲染的两个新视图。

在这项工作中,我们以一种新的方式解决了长期存在的视图合成问题,通过直接优化连续5D场景表示的参数来最小化渲染图像和输入图像的error。

我们将静态场景表示为一个连续的5D函数,该函数输出空间中每个点 ( x , y , z ) (x,y,z) (x,y,z)在每个方向 ( θ , φ ) (θ,φ) (θ,φ)上发射的辐射(radiance,即颜色),以及每个点上的体密度(其作用类似于微分不透明度,控制光线通过 ( x , y , z ) (x,y,z) (x,y,z)累积的辐射量)。我们的方法通过从单个5D坐标 ( x , y , z , θ , φ ) (x,y,z,θ,φ) (x,y,z,θ,φ)回归到体积密度以及视角相关的RGB颜色,优化了一个没有任何卷积层的深度全连接神经网络来表示此函数。

为了从特定视角使用NeRF(neural radiance field)进行渲染,我们:

  • 1.延申相机在场景中的光线rays,以生成一组采样的三维点;
  • 2.使用这些点及其相应的二维观察方向作为神经网络的输入,以生成每个点的颜色和密度;
  • 3.使用经典的体渲染技术将这些颜色和密度积分(求和)到2D图像中。

因为这个过程是自然可微的,我们可以使用梯度下降来优化这个模型:最小化输入集合中的图像和从我们的表示中渲染的相应图像之间的误差。通过在多个视图中最小化误差,可以鼓励网络通过为包含真实场景内容的位置分配高体积密度和精确的颜色来预测场景的其他视图。图2显示了整个pipeline。

fig3

  • 图2:NeRF场景表示和可微分渲染过程。我们通过沿着相机的光线采样5D坐标(位置和观察方向,采样点为图a的黑点),将这些信息输入 F Θ F_{\Theta} FΘ生成颜色和体积密度(图b的采样点),使用体渲染技术将这些值合成图c即2D图像。该渲染函数是可微的,因此我们可以通过最小化合成图像和GT观测图像之间的error来优化场景表示(图d)。

我们发现,对于复杂场景,优化神经辐射场表示的基本实现没有收敛到足够高的分辨率表示,并且在每个摄影机光线所需的采样数方面效率低下。我们通过使用位置编码输入的5D坐标来解决这些问题,位置编码使MLP能够表示更高频的函数,并且我们提出了一种分层采样过程,以减少对这种高频场景表示进行充分采样所需的查询数(即需要更少的输入视图)。

我们的方法继承了体表示(volumetric representations)的优点:两者都可以表示复杂的真实世界几何和外观,并且非常适合使用投影图像进行基于梯度的优化。重要的是,我们的方法克服了在高分辨率下建模复杂场景时,离散化体素网格的高昂存储成本。总之,我们的技术贡献是:

  • 一种将具有复杂几何和材质的连续场景表示为5D神经辐射场的方法,参数化为基本MLP网络。
  • 一种基于经典体渲染技术的可微分渲染过程,我们使用它的渲染结果与标准RGB图像优化场景的表示。这包括分层采样策略,用于将MLP的容量更多分配给场景中的可见内容。
  • 将每个输入5D坐标映射到更高维空间的位置编码,使我们能够成功优化神经辐射场以表示场景中的高频内容。

我们证明,我们得到的神经辐射场方法在数量和质量上都优于最先进的视图合成方法,包括将神经3D表示与场景相匹配的工作,以及训练深度卷积网络以预测体表示的工作。据我们所知,本文首次提出了连续的神经场景表示方法,它能用自然捕获的RGB图像渲染真实场景的高分辨率新视图。

2.Related Work

计算机视觉中最近一个很有前景的方向是用MLP对场景进行编码,MLP直接从三维空间位置映射到场景形状的隐式表示。然而,到目前为止,这些方法无法以与使用离散表示(如三角网格triangle meshes或体素网格voxel grids)表示场景的技术相同的保真度再现具有复杂几何体的真实场景。在本节中,我们将回顾这两项工作,并将其与我们的方法进行对比,我们的方法增强了神经场景表示的能力,以产生用于渲染复杂真实场景的最新结果。

2.1.Neural 3D shape representations

最近的工作研究了通过优化将 x y z xyz xyz坐标映射到有符号距离函数的深层网络。然而,这些模型受到访问ground truth三维几何体的要求的限制,这些几何体通常是从ShapeNet等合成三维形状数据集获得的(对标签要求高,受限于三维数据标签)。随后的工作通过制定可微的渲染函数放宽了对GT 3D形状的要求,该函数允许仅使用2D图像优化神经隐式形状表示。

虽然这些技术可以表示几何体,但迄今为止,它们仅限于几何复杂度较低的简单形状,并且渲染过度平滑。我们表明,优化网络以编码5D辐射场(具有2D视图相关外观的3D体积)的替代策略可以表示更高分辨率的几何体和外观,以渲染复杂场景的照片级真实感新视图。

2.2.View synthesis and image-based rendering

给定视图的密集采样,可通过简单的光场采样插值技术(light field sample interpolation techniques)重建照片级真实感新视图。对于具有稀疏视图采样的新型视图合成,计算机视觉社区通过从观察图像预测传统几何和外观表示取得了重大进展。然而,现有策略要求在优化之前提供具有固定拓扑的模板网格作为初始化,这通常不适用于无约束的真实场景。

另一类方法使用体表示(volumetric representations)来解决从一组输入RGB图像合成高质量照片级真实感视图的任务。体积方法(volumetric approaches)能够真实地表示复杂的形状和材料,适合基于梯度的优化,并且与基于网格的方法相比,产生的视觉干扰较小。早期的体积方法使用观察到的图像直接为体素网格着色。最近,有几种方法使用多个场景的大型数据集来训练深层网络。虽然这些体积技术在新视图合成方面取得了令人印象深刻的成果,但由于其离散采样,其缩放到更高分辨率图像的能力从根本上受到时间和空间复杂性差的限制-渲染更高分辨率图像需要更精细的3D空间采样。我们通过在深度全连接的神经网络的参数范围内编码连续的体积来避免这个问题,这不仅产生比以前的体积方法更高质量的渲染,而且只需要采样体积表示的存储成本的一小部分就能实现。

3.Neural Radiance Field Scene Representation

我们将连续场景表示为5D向量值函数,其输入是3D位置 x = ( x , y , z ) \textbf{x}=(x,y,z) x=(x,y,z)和2D视角方向 ( θ , ϕ ) (\theta,\phi) (θ,ϕ),输出是发射颜色 c = ( r , g , b ) \textbf{c}=(r,g,b) c=(r,g,b)和体积密度 σ \sigma σ。在实践中,我们将视角方向表示为3D单位向量 d \textbf{d} d。我们用MLP网络 F Θ : ( x , d ) → ( c , σ ) F_{\Theta}:(\textbf{x},\textbf{d})\rightarrow(\textbf{c},\sigma) FΘ:(x,d)(c,σ)近似这种连续的5D场景表示,我们优化其权重 Θ Θ Θ,以从每个输入5D坐标映射到其相应的体积密度和观察方向的发射颜色。

我们通过限制网络预测体积密度 σ σ σ作为位置 x \textbf{x} x的函数,同时允许预测RGB颜色 c \textbf{c} c作为位置和观察方向的函数,鼓励学习到的场景表示具有多视图的一致性。为了实现这一点,MLP F Θ F_{\Theta} FΘ首先用8个全连接层处理输入3D坐标 x \textbf{x} x,输出 σ \sigma σ和256维的特征向量。然后将该特征向量与相机光线的观察方向连接,并传递到另一个全连接层,该层输出与视角相关的RGB颜色。

参见图3,以获取我们的方法如何使用输入的观察方向来表示非朗伯效应的示例。如图4所示,在没有视图依赖性的情况下训练的模型(只有 x \textbf{x} x作为输入)很难表示镜面反射。

fig4

  • 图3:依赖于视角的发射辐射的可视化。我们的神经辐射场表示输出RGB颜色(使用空间位置 x \textbf{x} x和观察方向 d \textbf{d} d的5D函数)。在这里,我们在Ship场景的神经表示中可视化了两个空间位置的示例方向的颜色分布。在a和b中,我们显示了来自两个不同相机位置的两个固定3D点的外观:一个在船的侧面(橙色插图),一个在水面(蓝色插图)。我们的方法预测了这两个3D点的镜面反射外观的变化,在c中,我们展示了这种行为如何在整个观察方向的半球上持续推广。

fig5

  • 图4:在这里,我们可以直观地看到,我们的完整模型是如何从表示依赖于视图方向的发射辐射以及通过高频位置编码传递输入坐标中获益的。移除视图相关性可防止模型在推土铲踏板上重新创建镜面反射。删除位置编码会大大降低模型表示高频几何体和纹理的能力(细节表示能力),从而导致过度平滑的外观。

4.Volume Rendering with Radiance Fields

我们的5D神经辐射场将场景表示为空间任意点的体积密度和定向发射辐射。我们使用经典体渲染的原理渲染穿过场景的任何光线的颜色。体密度 σ ( x ) \sigma(\textbf{x}) σ(x)可以被解释为光线在 x \textbf{x} x处终止的概率。相机光线 r ( t ) = o + t d \textbf{r}(t)=\textbf{o}+t\textbf{d} r(t)=o+td的预期颜色 C ( r ) C(\textbf{r}) C(r)为(我们可以设置光线的近界 t n t_{n} tn和远界 t f t_f tf): C ( r ) = ∫ t n t f T ( t ) σ ( r ( t ) ) c ( r ( t ) , d ) d t , w h e r e : T ( t ) = e x p ( − ∫ t n t σ ( r ( s ) ) d s ) C(\textbf{r})=\int_{t_{n}}^{t_{f}}T(t)\sigma(\textbf{r}(t))\textbf{c}(\textbf{r}(t),\textbf{d})dt,where:T(t)=exp(-\int_{t_{n}}^{t}\sigma(\textbf{r}(s))ds) C(r)=tntfT(t)σ(r(t))c(r(t),d)dt,where:T(t)=exp(tntσ(r(s))ds)函数 T ( t ) T(t) T(t)表示沿光线从 t n t_n tn t t t的累积透射率,即光线从 t n t_n tn t t t传播而不撞击任何其他粒子的概率。这个衰减的 T T T可以避免渲染时过度引入对象背面的信息。

我们使用数值估计这个连续积分。我们将 [ t n , t f ] [t_n,t_f] [tn,tf]划分为 N N N个均匀间隔的区域,然后从每个区域内均匀随机抽取一个采样点。

5.Optimizing a Neural Radiance Field

在上一节中,我们已经描述了将场景建模为神经辐射场和从该表示中渲染新视图所需的核心组件。然而,我们观察到,这些组件不足以达到最先进的质量。我们引入了两项改进,以支持表示高分辨率复杂场景。第一种是输入坐标的位置编码,有助于MLP表示高频函数,第二种是分层采样过程,允许我们有效地对高频表示进行采样。

5.1.位置编码

尽管神经网络是通用函数逼近器,但我们发现,如果网络 F Θ F_Θ FΘ直接操作 x y z θ ϕ xyzθ\phi xyzθϕ输入坐标,则会导致渲染在表示颜色和几何体的高频变化方面表现不佳。因此,在将输入传递到网络之前,使用高频函数将输入映射到更高维空间,可以更好地拟合包含高频变化的数据。


插入一个内容:回忆曾经的树突网络,其表现良好也许在于使用哈达姆积强行对输入信息做了高频编码处理,所以能间接拟合高频函数。

当然,树突网络确实没有非线性映射,高频函数确实近似了非线性,并且是可学习的非线性。


我们在神经场景表示的背景下利用这些发现,并表明将 F Θ F_Θ FΘ重新表示为两个函数的组合 F Θ = F Θ ′ ∘ γ F_{\Theta}=F_{\Theta}'\circ\gamma FΘ=FΘγ γ \gamma γ是从 R R R空间到 R 2 L R^{2L} R2L空间的函数, F Θ ′ F_{\Theta}' FΘ还是一个MLP。形式上,位置编码函数为: γ ( p ) = ( s i n ( 2 0 π p ) , c o s ( 2 0 π p ) , . . . , s i n ( 2 L − 1 π p ) , c o s ( 2 L − 1 π p ) ) \gamma(p)=(sin(2^{0}\pi p),cos(2^{0}\pi p),...,sin(2^{L-1}\pi p),cos(2^{L-1}\pi p)) γ(p)=(sin(20πp),cos(20πp),...,sin(2L1πp),cos(2L1πp))函数 γ γ γ分别应用于 x \textbf{x} x中的三个坐标值中的每一个(注意值已经被标准化到 [ − 1 , 1 ] [-1,1] [1,1])和观察方向 d \textbf{d} d。对于 γ ( x ) , L = 10 \gamma(\textbf{x}),L=10 γ(x),L=10,对于 γ ( d ) , L = 4 \gamma(\textbf{d}),L=4 γ(d),L=4

在流行的Transformer架构中也使用了类似的映射,在这里它被称为位置编码。然而,Transformers将其用于一个不同的目标,即提供序列中token的离散位置,作为不包含任何顺序概念的架构的输入。相反,我们使用这些函数将连续输入坐标映射到更高维空间,以使我们的MLP更容易逼近更高频的函数。

5.2.分层volume sampling

我们的渲染策略是在每个相机光线的 N N N个查询点处密集评估神经辐射场网络,这种策略效率低下:对渲染图像没有贡献的自由空间和遮挡区域仍然重复采样。我们从早期的体渲染工作中汲取了灵感,并提出了一种分层表示法,通过按最终渲染的预期效果按比例分配采样点来提高渲染效率。

我们不只是使用单个网络来表示场景,而是同时优化两个网络:一个“coarse”,一个“fine”。我们首先使用基本的分层采样对一组 N c N_c Nc个位置进行采样,并评估这些位置对应的“coarse”网络。考虑到这个“coarse”网络的输出,然后我们沿着每条光线生成一个更合理的点采样,其中采样点偏向于体积存在的相关部分。为此,我们首先从coarse网络 C ^ c ( r ) \widehat{C}_{c}(\textbf{r}) C c(r)生成合成颜色,然后我们在光线上采样体密度大的点,采样 N f N_{f} Nf个作为第二组采样点,在第一组和第二组采样的并集上计算“fine”网络,并计算光线的最终渲染颜色 C ^ f ( r ) \widehat{C}_{f}(\textbf{r}) C f(r)

5.3.实现细节

我们为每个场景优化一个单独的神经连续体积表示网络。这只需要该场景的RGB图像数据集,相应的相机外参和内参,以及场景边界。在每次优化迭代中,我们从数据集中的所有像素集合中随机采样一批相机光线,然后按照第5.2节中描述的分层采样。5从coarse网络查询个 N c N_c Nc样本,从fine网络查询 N c + N f N_c+N_f Nc+Nf个样本。然后,我们使用体渲染过程,渲染每条光线的颜色。我们的损失只是coarse和fine的渲染像素和真实像素颜色之间的平方误差: L = ∑ r ∈ R [ ∣ ∣ C ^ c ( r ) − C ( r ) ∣ ∣ 2 2 + ∣ ∣ C ^ f ( r ) − C ( r ) ∣ ∣ 2 2 ] L=\sum_{r\in R}[||\widehat{C}_{c}(\textbf{r})-C(\textbf{r})||_{2}^{2}+||\widehat{C}_{f}(\textbf{r})-C(\textbf{r})||_{2}^{2}] L=rR[C c(r)C(r)22+C f(r)C(r)22]其中, R R R为batch中的光线集, C ( r ) , C ^ c ( r ) , C ^ f ( r ) C(\textbf{r}),\widehat{C}_{c}(\textbf{r}),\widehat{C}_{f}(\textbf{r}) C(r),C c(r),C f(r)为GT,coarse网络预测,fine网络预测的RGB颜色。

6.结果

6.1.数据集

Synthetic renderings of objects
我们首先展示了两个合成渲染数据集的实验结果(“Diffuse Synthetic 360°”和“Realistic Synthetic 360°”)。DeepVoxels数据集包含四个具有简单几何体的Lambertian对象。从上半球采样的视点(479个视点作为输入,1000个视点用于测试)以512×512像素渲染2D图像。此外,我们还生成自己的数据集,其中包含八个对象的路径跟踪图像,这些对象显示复杂的几何体和真实的非朗伯材质。六个从上半球采样的视点渲染,两个从整个球体采样的视点渲染。我们渲染每个场景的100个视图作为输入,200个视图用于测试,所有视图均为800×800像素。

Real images of complex scenes
我们展示了使用大致前向图像捕获的复杂真实场景的结果(“Real ForwardFacing”)。该数据集由手持手机拍摄的八个场景组成,共拍摄了20到62幅图像,其中八分之一的图像用于测试。所有图像均为1008×756像素。

6.2.实验结果

fig6

  • 图5:比较合成数据集中场景的测试视图。

fig7

  • 图6:比较真实场景的测试视图。

猜你喜欢

转载自blog.csdn.net/qq_40943760/article/details/125189835
今日推荐