目录

  • NeRF前置内容:渲染和观察方向
  • 摘要
  • 1.Introduction
  • 2.Related Work
    • 2.1.Neural 3D shape representations
    • 2.2.View synthesis and image-based rendering
  • 3.Neural Radiance Field Scene Representation
  • 4.Volume Rendering with Radiance Fields
  • 5.Optimizing a Neural Radiance Field
    • 5.1.位置编码
    • 5.2.分层volume sampling
    • 5.3.实现细节
  • 6.结果
    • 6.1.数据集
    • 6.2.实验结果

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

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

渲染是对图像中的某个像素而言的。

当固定在某个位置的相机或者人眼在看三维场景时,渲染后的图像中的一些像素点是不在相机中心光线(与成像平面垂直)上的,我们描述场景中某个3D点的位置可以使用场景下的绝对位置(x,y,z)(x,y,z)(x,y,z),为了得到渲染的合理结果(该3D点在图像中的像素点的值),还需要知道相机中心光线和该像素点的关系,比如观察方向(θ,φ)(θ,φ)(θ,φ):

比如上图人眼或相机固定,中心光线为黑色实线,像素点G与相机的关系即为(θ,ϕ)(\theta,\phi)(θ,ϕ)。


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


摘要

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

1.Introduction

  • 图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。

  • 图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

最近的工作研究了通过优化将xyzxyzxyz坐标映射到有符号距离函数的深层网络。然而,这些模型受到访问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作为位置和观察方向的函数,鼓励学习到的场景表示具有多视图的一致性。为了实现这一点,MLPFΘF_{\Theta}FΘ​首先用8个全连接层处理输入3D坐标x\textbf{x}x,输出σ\sigmaσ和256维的特征向量。然后将该特征向量与相机光线的观察方向连接,并传递到另一个全连接层,该层输出与视角相关的RGB颜色。

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

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

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

4.Volume Rendering with Radiance Fields

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

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

5.Optimizing a Neural Radiance Field

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

5.1.位置编码

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


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

注意,高频和高次是不同的概念,高频代表抖动剧烈。


我们在神经场景表示的背景下利用这些发现,并表明将FΘF_ΘFΘ​重新表示为两个函数的组合FΘ=FΘ′∘γF_{\Theta}=F_{\Theta}'\circ\gammaFΘ​=FΘ′​∘γ,γ\gammaγ是从RRR空间到R2LR^{2L}R2L空间的函数,FΘ′F_{\Theta}'FΘ′​还是一个MLP。形式上,位置编码函数为:γ(p)=(sin(20πp),cos(20πp),...,sin(2L−1πp),cos(2L−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(2L−1πp),cos(2L−1π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

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

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

5.3.实现细节

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

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

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

NeRF神经辐射场ECCV2020相关推荐

  1. 大汇总 | 9种基于神经辐射场NeRF的SLAM方法你都知道吗?

    作者 | 秦通  编辑 | 算法邦 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[SLAM]技术交流群 后台回复[SLAM综述]获取 ...

  2. 初识神经辐射场NeRF

    NeRF,即Neural Radiance Fields(神经辐射场)的缩写.研究员来自UCB.Google和UCSD. Title:NeRF: Representing Scenes as Neur ...

  3. [非卷积5D中文翻译及学习笔记] 神经辐射场 NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

    不使用3D建模,使用静态图片进行训练,用(非卷积)深度网络表示场景的5D连续体表示,再通过ray marching进行渲染. 本中文翻译使用"机器学习+人工校准/注解"的方式完成. ...

  4. 一文搞懂 神经辐射场(Neural Radiance Fields,NeRF)

    NeRF 简介 输入输出 优缺点 原理 结构 pytorch实现 第三方库进行 NeRF 的实现 自行实现 相关名词解释 辐射场 多层感知机(MLP) 点的密度 体积渲染 体积纹理 渲染方程 简介 神 ...

  5. [论文阅读-NeRF+SLAM]NeRF-SLAM:使用神经辐射场表征的实时稠密单目SLAM系统

    NeRF-SLAM NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 第一个结合稠密单目SLAM和层次化体素神 ...

  6. 神经辐射场(NERF)模型:一个令人惊叹的三维场景重建方法

    在计算机图形学.计算机视觉和增强现实等领域,三维场景重建一直是一个热门话题.近年来,神经网络模型的出现已经彻底改变了这个领域,而其中最引人注目的就是 NERF(神经辐射场)模型.在这篇文章中,我们将深 ...

  7. NERF++: ANALYZING AND IMPROVING NEURAL RADIANCE FIELDS分析和改进神经辐射场

    目录 NERF++: ANALYZING AND IMPROVING NEURAL RADIANCE FIELDS分析和改进神经辐射场 ABSTRACT 1 INTRODUCTION 2 PRELIM ...

  8. 神经辐射场 (NeRF) 概念

    神经辐射场 (NeRF) 概念 理论介绍   NeRF模型以其基本形式将三维场景表示为由神经网络近似的辐射场.辐射场描述了场景中每个点和每个观看方向的颜色和体积密度.这写为: F(x,θ,φ)→(c, ...

  9. 五问Nerf | 简单易懂的神经辐射场入门介绍

    作者 | lcltopismine3 编辑 | 汽车人 原文链接:zhuanlan.zhihu.com/p/597579341 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨 ...

最新文章

  1. AI硬件碎片化难题,英特尔想用“一个API”解决,还推出新的编程语言DPC++
  2. java回顾之继承 二
  3. springboot 跨域配置cors
  4. 数据结构:(2)什么是数据结构
  5. sessionStorage localStorage cookie
  6. Codeforces 1189B Number Circle
  7. 根据表格长度使td里的内容换行
  8. 心在哪裡行動力就在那裡 戴晨志
  9. 《码出高效:Java开发手册》百度网盘下载
  10. 用计算机三角函数公式,电脑是通过什么公式计算出三角函数的?
  11. 在腾讯轻量云上搭建 CS:GO 服务器
  12. 天津大学计算机学院王培懿,t即tboxa即abox-天津大学计算机科学与技术学院.ppt
  13. iOS自动化测试之基于模拟器的自动化测试
  14. HTML5期末大作业:游戏网站——网络游戏官网(悦世界) 6个页面 HTML+CSS+JavaScript ~ ~ 学生HTML个人网页作业作品下载...
  15. 互联网创业需要注意了!
  16. Type-C Layout 指南
  17. 低温导电油墨在汽车电子中的应用
  18. wps2013抢先版下如何删除轻办公
  19. Scale- and shift-invariant losses
  20. 目前电子计算机应用的最新发展,电子计算机产量有多少 电子计算机行业发展趋势及市场规模...

热门文章

  1. python生成一笔画_python实现欧拉路径查找算法与微信小游戏《一笔画完》(一)...
  2. 【Web前端学习系列01】—HTML
  3. 【C系列综合1】游戏达人I
  4. u盘自动打开html,如何快速禁用U盘自动弹出(播放)功能无需手动关闭弹出窗口
  5. 洛谷 P1714 切蛋糕
  6. Windows11桌面右键菜单恢复为win10操作方法
  7. 模板王-网页模板,网站模板素材免费下
  8. 信息安全知识分享—PKI技术
  9. flash绘制荷花多个图层_实例讲解Flash中如何绘制荷花图案 你值得一看的技巧
  10. 计算机网络系统厂商,【江海电子计算机网络系统价格_江海电子计算机网络系统厂家】- 网络114...