论文地址
理解视频
我们提出了一种方法,通过使用一组稀疏的输入视图来优化底层连续的体积场景函数,从而获得合成复杂场景的新视图的最新结果。我们的算法使用全连接(非卷积)深度网络表示场景,其输入是单个连续的5D坐标(空间位置(x, y, z)和观看方向(θ, φ)),其输出是空间位置的体密度以及该位置的发射射线(这里射线是根据视角变化的)。我们通过沿着相机光线查询5D坐标来合成视图,并使用经典的体渲染技术将输出的颜色和密度投影到图像中。因为体成像是自然可微的,所以只需要一组知道相机坐标的图像作为输入就可以优化这个深度网络。在这篇文章里,我们会介绍怎样通过神经射线场去有效率的优化逼真的合成场景,在这样的场景里,可以有复杂的几何结构以及颜色。我们还将展示由于之前的神经渲染以及新视角合成领域工作的结果。由于新视角合成的效果在视频中观察效果最佳,我们建议读者参考补充的视频材料来比较成果。
在这项工作中,我们通过直接优化连续5D场景表示的参数来解决长期存在的问题,以最大限度地减少绘制一组捕获图像的误差。我们将静态场景表示为一个连续的5D函数,该函数输出在空间中每个点(x, y, z)的每个方向(θ, φ)发射的辐射度以及每个点处的密度,该密度类似于微分不透明度,控制光线通过(x,y,z)时累积的辐射量。我们的方法通过从单一的5D坐标(x,y,z,θ,φ)回归到单一的体积密度和视点相关的RGB颜色来优化没有任何卷积层(通常称为多层感知器)的深度全连接的神经网络来表示该函数。
为了从特定视角呈现该神经辐射场(NeRF),我们采用:
因为这个过程是自然可微的,所以我们可以使用梯度下降来优化这个模型,方法是最小化每个观察图像和根据我们的表示所呈现的相应视图之间的误差。通过将高体积密度和精确的颜色分配到包含真实底层场景内容的位置,使跨多个视图的误差最小化,鼓励网络预测场景的连贯模型。图2可视化了整个过程。
图2 我们的神经辐射场场景表示和可微渲染过程的概述。我们通过以下方法合成图像:沿着相机射线(a)采样5D坐标(位置和观看方向),将这些位置输入MLP以产生颜色和体积密度(b),并使用体积渲染技术将这些值合成到图像©。这个渲染函数是可微分的,因此我们可以通过最小化合成图像和真实观测图像之间的残差(d)来优化我们的场景表示。
我们发现,优化复杂场景的神经辐射场表示的基本实现不能收敛到足够高的分辨率表示,而且在每条相机射线所需的样本数量方面效率低下。我们通过使用位置编码转换输入5D坐标来解决这些问题,从而使MLP能够表示更高频率的函数,并且我们提出了分层采样过程来减少充分采样这种高频场景表示所需的查询数量。
我们的方法继承了体积表示的优点:两者都可以表示复杂的现实世界几何和外观,并且非常适合使用投影图像进行基于梯度的优化。至关重要的是,我们的方法克服了离散体素网格在高分辨率建模复杂场景时高昂的存储成本。总之,我们的技术贡献是:
我们证明,我们产生的神经辐射场方法在定量和定性上优于最先进的视图合成方法,包括将神经3D表示与场景相匹配的工作,以及训练深度卷积网络预测采样体表示的工作。据我们所知,本文提出了第一个连续的神经场景表示,它能够从自然环境中捕获的RGB图像中渲染出真实物体和场景的高分辨率真实感新视图。
最近计算机视觉的一个很有前途的方向是用MLP的权重编码对象和场景,该MLP直接从3D空间位置映射到形状的隐式表示,例如该位置的带符号距离[6]。然而,到目前为止,这些方法还不能再现具有复杂几何形状的真实场景,不能像使用三角网格或体素网格等离散表示方法再现场景相同的保真度。在本节中,我们将回顾这两种工作方式,并将它们与我们的方法进行对比,我们的方法增强了神经场景表示的能力,从而为渲染复杂的现实场景产生最先进的结果。
使用MLPs从低维坐标映射到颜色的类似方法也被用于表示其他图形功能,如图像[44]、纹理材质[12,31,36,37]和间接照明值[38]。
神经网络3D形状表示
最近的工作通过优化将xyz坐标映射到带符号距离函数[15,32]或占用域[11,27]的深度网络,研究了连续3D形状作为水平集的隐式表示。然而,这些模型受到真实3D几何数据访问的限制,通常从合成的3D形状数据集(如ShapeNet[3])获得。随后的工作通过制定可微渲染函数,允许仅使用2D图像来优化神经网络对3D形状的隐式表示,从而放宽了对真实3D形状的要求。Niemeyer等人[29]将曲面表示为3D占用场,并使用数值方法找到每条射线的曲面交点,然后使用隐式微分计算精确的导数。每个光线相交的位置作为神经3D纹理场的输入,预测该点的漫反射颜色。Sitzmann等人[42]使用不太直接的神经3D表示,其简单地在每个连续3D坐标上输出特征向量和RGB颜色,并提出由沿每条射线行进的递归神经网络组成的可微呈现函数,以确定表面的位置。
尽管这些技术可以潜在地表示复杂和高分辨率的几何图形,但迄今为止,它们还局限于几何复杂度低的简单形状,导致渲染过度平滑。我们证明了另一种优化网络的策略来编码5D辐射场(3D体积具有依赖于2D视图的外观)可以表示更高分辨率的几何和外观,以呈现复杂场景的照片级逼真的新视图。
视图合成和基于图像的渲染
在给定密集的视图样本的情况下,可以通过简单的光场样本插值技术[21,5,7]来重建逼真的新视图。对于稀疏视图采样的新型视图合成,计算机视觉和图形学领域通过从观测图像预测传统的几何和外观表示已经取得了重大进展。一种流行的方法使用基于网格的场景表示,具有漫反射[48]或视相关[2,8,49]的外观。可微光栅化器[4,10,23,25]或路径跟踪器[22,30]可以直接优化网格表示,以使用梯度下降来再现一组输入图像。然而,基于图像重投影的基于梯度的网格优化往往是困难的,可能是因为局部极小值或对丢失景观的不良调节。此外,该策略需要提供具有固定拓扑的模板网格作为优化前的初始化[22],这对于不受约束的真实世界场景通常是不可用的。
另一类方法使用体积表示来解决从一组输入RGB图像合成高质量逼真视图的任务。体积方法能够逼真地表示复杂的形状和材质,非常适合基于梯度的优化,并且往往比基于网格的方法产生的视觉干扰伪影更少。早期的体积测量方法使用观测图像直接给体素网格着色[19,40,45]。最近,几种方法 [9,13,17,28,33,43,46,52] 已经使用多个场景的大型数据集来训练深度网络,这些网络从一组输入图像中预测采样的体积表示,然后使用alpha-compositing [34] 或学习沿光线合成以在测试时渲染新视图。其他工作针对每个特定场景优化了卷积网络(CNN)和采样体素网格的组合,使得CNN可以补偿来自低分辨率体素网格的离散化伪影[41],或者允许预测的体素网格根据输入时间或动画控制而变化[24]。虽然这些体积技术在新视图合成方面取得了令人印象深刻的结果,但由于它们的离散采样,扩展到更高分辨率图像的能力从根本上受到时间和空间复杂性的限制——渲染更高分辨率的图像需要更精细的3D空间采样。我们通过在深度全连接神经网络的参数中编码连续体积来规避这个问题,这不仅产生比以前的体积方法更高质量的渲染,而且只需要那些采样体积表示的一小部分存储成本。
我们将连续场景表示为5D矢量值函数,其输入是3D位置x = (x, y, z)和2D观察方向(θ, φ),其输出是发射颜色c = (r, g, b)和体积密度σ。在实际应用中,我们将方向表示为3D笛卡尔单位向量d。我们用MLP网络FΘ:(X,d)→(c,σ)来逼近这种连续的5D场景表示,并优化其权重Θ,以从每个输入5D坐标映射到其相应的体积密度和定向发射颜色。
我们通过限制网络来预测仅作为位置x的函数的体积密度σ,同时允许RGB颜色c作为位置和观看方向的函数进行预测,从而鼓励表示多视点一致。为此,MLP网络FΘ首先处理输入 3D 坐标 x 与 8 个全连接层(使用 ReLU 激活和每层 256 个通道),并输出 σ 和 256 维特征向量。 然后将该特征向量与相机光线的观察方向连接起来,并传递给一个额外的全连接层(使用 ReLU 激活和 128 个通道),该层输出与视图相关的 RGB 颜色。
有关我们的方法如何使用输入观察方向来表示非朗伯效应的示例,请参见图 3。 如图 4 所示,在没有视图依赖性(仅 x 作为输入)的情况下训练的模型难以表示镜面反射。
图 3 与视图相关的发射辐射的可视化。 我们的神经辐射场表示输出 RGB 颜色作为空间位置 x 和观察方向 d 的 5D 函数。 在这里,我们在船舶场景的神经表示中可视化两个空间位置的示例方向颜色分布。 在 (a) 和 (b) 中,我们展示了来自两个不同相机位置的两个固定 3D 点的外观:一个位于船侧(橙色插图),一个位于水面(蓝色插图)。 我们的方法预测了这两个 3D 点不断变化的镜面外观,在 © 中,我们展示了这种行为如何在整个观察方向的半球上连续泛化。
图 4 我们可视化了完整模型如何从表示与视图相关的发射辐射以及从通过高频位置编码传递我们的输入坐标中受益。 移除视图相关性可防止模型在推土机踏板上重新创建镜面反射。 移除位置编码会大大降低模型表示高频几何和纹理的能力,从而导致外观过于平滑。
我们的 5D 神经辐射场将场景表示为空间中任意点的体积密度和定向发射辐射。 我们使用经典体渲染 [16] 的原理渲染穿过场景的任何光线的颜色。体积密度 σ(x) 可以解释为射线终止于位置 x 处的无限小粒子的微分概率。具有近边界和远边界 tn 和 tf 的摄像机光线 r(t) = o + td 的预期颜色 C® 为:
函数 T (t) 表示沿射线从 tn 到 t 的累积透射率,即射线从 tn 传播到 t 而不撞击任何其他粒子的概率。从我们的连续神经辐射场渲染视图需要估计通过所需虚拟相机的每个像素追踪的相机光线的积分 C®。
我们用求积的方法对这个连续积分进行数值估计。通常用于渲染离散体素网格的确定性求积法将有效地限制我们表示的分辨率,因为 MLP 只会在固定的离散位置集被查询。 相反,我们使用分层抽样方法,将 [tn, tf ] 划分为 N 个均匀间隔的箱,然后从每个箱中随机均匀地抽取一个样本:
尽管我们使用一组离散的样本来估计积分,但分层采样使我们能够表示连续的场景表示,因为它导致在优化过程中在连续位置对 MLP 进行评估。 我们使用这些样本通过 Max [26] 在体积渲染评论中讨论的求积规则来估计 C®:
其中 δi = ti+1 - ti 是相邻样本之间的距离。 这个从 (ci, σi) 值的集合中计算 ^C® 的函数是可微分的,并且可以简化为与 alpha 值 αi= 1 − exp(−σiδi) 的传统 alpha 合成。
在上一节中,我们描述了将场景建模为神经辐射场并从该表示中渲染新视图所必需的核心组件。 然而,我们观察到这些组件不足以实现最先进的质量,如第 6.4 节所示。 我们引入了两项改进以支持表示高分辨率复杂场景。 第一个是输入坐标的位置编码 ,有助于 MLP 表示高频函数,第二个是 分层采样过程,它允许我们有效地采样这个高频表示。
尽管神经网络是通用函数逼近器 [14],但我们发现让网络 FΘ 直接在 xyzθφ 输入坐标上运行会导致渲染在表示颜色和几何形状的高频变化方面表现不佳。 这与 Rahaman等人最近的工作一致。 文献[35]表明深度网络偏向于学习低频函数。他们还表明,在将输入传递到网络之前,使用高频函数将输入映射到更高维空间可以更好地拟合包含高频变化的数据。
我们在神经场景表示的背景下利用这些发现,并表明将 FΘ 重新定义为两个函数 FΘ = F‘Θ ◦ γ(一个是学习的,一个不是学习的)的组合,可以显着提高性能(见图 4 和表 2)。 这里 γ 是从 R 到更高维空间 R2L 的映射,而F‘Θ仍然是简单的常规 MLP。 形式上,我们使用的编码函数是:
该函数 γ(·) 分别应用于 x 中的三个坐标值(归一化为位于 [-1, 1] 中)和笛卡尔观察方向单位向量 d 的三个分量(通过构造位于 在 [−1, 1] 中)。 在我们的实验中,我们为 γ(x) 设置 L = 10,为 γ(d) 设置 L = 4。
流行的 Transformer 架构 [47] 中使用了类似的映射,它被称为位置编码。 然而,Transformers 将其用于不同的目标,即在序列中提供词的离散位置作为不包含任何顺序概念的架构的输入。相反,我们使用这些函数将连续输入坐标映射到更高维空间,以使我们的 MLP 更容易逼近更高频率的函数。通过投影[51]对3D蛋白质结构进行建模的并行工作也使用了类似的输入坐标映射。
我们在沿每条摄像机光线的 N 个查询点处密集评估神经辐射场网络的渲染策略效率低下:对渲染图像没有贡献的自由空间和遮挡区域仍然被重复采样。 我们从体积渲染 [20] 的早期工作中汲取灵感,并提出了一种分层表示,通过按比例分配样本以提高最终渲染的效果,从而提高了绘制效率。
我们不只是使用单个网络来表示场景,而是同时优化两个网络:一个“粗”和一个“精细”。 我们首先使用分层抽样对一组 Nc 位置进行抽样,并如等式(2,3)中所述评估这些位置的“粗略”网络。 给定这个“粗略”网络的输出,然后我们沿着每条射线产生更有信息的采样点,其中样本偏向体积的相关部分。 为此,我们首先在等式(3)中重写来自粗略网络 C^c® 的 alpha 合成颜色为沿射线的所有采样颜色 ci 的加权和:
将这些权重归一化为 w^i = wi /∑Ncj=1 wj 沿射线生成分段常数 PDF。 我们使用逆变换采样从该分布中采样第二组 Nf 个位置,在第一组和第二组样本的联合处评估我们的“精细”网络,并使用等式(3) 计算射线 C^f®的最终渲染颜色。但使用所有 Nc+Nf 样本。 此过程将更多样本分配给我们期望包含可见内容的区域。 这解决了与重要性采样类似的目标,但我们将采样值用作整个积分域的非均匀离散化,而不是将每个样本视为整个积分的独立概率估计。
我们为每个场景优化了一个单独的神经连续体积表示网络。 这只需要一个包含场景的捕获 RGB 图像、相应的相机位姿和内在参数以及场景边界的数据集(我们使用地面实况相机位姿、内在因素和边界来处理合成数据,并使用 COLMAP structure-from-motion [39] 为真实数据估计这些参数)。 在每次优化迭代中,我们从数据集中所有像素的集合中随机采样一批相机射线,然后按照5.2节所述的分层抽样,从粗网络中查询Nc样本,从细网络中查询Nc+Nf 样本。然后我们使用第4节中描述的体渲染程序来渲染两组样本中每条射线的颜色。我们的损失只是粗略和精细渲染的像素颜色和真实像素颜色之间的总平方误差:
其中R为每批射线的集合,C®、Cˆc®和Cˆf ®分别为射线R的地面真值、粗略体积预测和精细体积预测RGB颜色。注意,即使最终的渲染来自Cˆf ®,我们也会最小化Cˆc®的损失,以便可以使用来自粗略网络的权重分布来分配精细网络中的采样。
在我们的实验中,我们使用4096条光线的批次大小,每条光线在粗略体积中以Nc=64个坐标采样,在精细体积中以Nf =128个额外坐标采样。我们使用ADAM优化器[18],学习速率从5×10−4开始,在优化过程中以指数方式衰减到5×10−5(其他ADAM超参数保留为缺省值β1=0.9、β2=0.999和=10−7)。针对单个场景的优化通常需要大约100-300k次迭代才能在单个NVIDIA V100 GPU上收敛(大约1-2天)。
我们的定量(表1)和定性(图8和图6)表明我们的方法优于以前的工作,并提供广泛的消融研究来验证我们的设计选择(表2)。我们希望读者观看我们的补充视频,以便更好地理解我们的方法在渲染新视图的平滑路径时相对于基线方法的显著改进。
对象的合成渲染
我们首先给出了在两个对象合成渲染的数据集上的实验结果(表 1,“Diffuse Synthetic 360°”和“Realistic Synthetic 360°”)的实验结果。 DeepVoxels [41] 数据集包含四个具有简单几何形状的 Lambertian 对象。 每个对象从上半球采样的视点以 512 × 512 像素渲染(479 作为输入,1000 用于测试)。 我们还生成了我们自己的数据集,其中包含八个对象的路径跟踪图像,这些对象表现出复杂的几何形状和逼真的非朗伯材料。 六个是从上半球采样的视点渲染的,两个是从整个球体采样的视点渲染的。 我们渲染每个场景的 100 个视图作为输入,并渲染 200 个用于测试,全部为 800 × 800 像素。
表 1 我们的方法在数量上优于之前在合成图像和真实图像数据集上的工作。 我们报告 PSNR/SSIM(越高越好)和 LPIPS [50](越低越好)。 DeepVoxels [41] 数据集由 4 个具有简单几何形状的漫反射对象组成。 我们的真实合成数据集由 8 个几何复杂对象的路径跟踪渲染组成,这些对象具有复杂的非朗伯材料。 真实数据集由 8 个真实世界场景的手持前向捕获组成(无法在此数据上评估 NV,因为它仅重建有界体积内的对象)。 尽管 LLFF 实现了稍好的 LPIPS,但我们敦促读者观看我们的补充视频,其中我们的方法实现了更好的多视图一致性,并且产生的伪影比所有基线都少。
复杂场景的真实图像
我们展示了使用大致朝前的图像捕获的复杂真实世界场景的结果(表1,“Real Forward-Facing”)。该数据集包括用手持手机捕获的8个场景(5个来自LLFF论文,3个是我们捕获的),捕获了20到62张图像,其中1/8用于测试集。所有图像均为1008×756像素。
为了评估我们的模型,我们将与当前性能最好的视图合成技术进行比较,详细说明如下。除了局部光场融合[28]之外,所有方法都使用相同的一组输入视图来为每个场景训练单独的网络,该方法在大数据集上训练单个3D卷积网络,然后在测试时使用相同的训练网络来处理新场景的输入图像。
神经体积(NV) [24]
合成完全位于不同背景(必须在没有感兴趣的对象的情况下单独捕获)前面的有界体积内的对象的新视图。它优化了深度3D卷积网络,以预测包含1283个样本的离散化RGBα体素网格和包含323个样本的3D Warp网格。该算法通过在扭曲的体素网格中移动相机光线来渲染新的视图。
场景表示网络(SRN)[42]
将连续场景表示为不透明曲面,该曲面由将每个(x,y,z)坐标映射到特征向量的MLP隐式定义。他们训练递归神经网络,通过使用任何3D坐标的特征向量来预测沿着光线的下一步大小,从而沿着光线在场景表示中行进。来自最后一步的特征向量被解码为曲面上该点的单一颜色。请注意,SRN是同一位作者对DeepVoxels[41]的更好的后续研究,这就是为什么我们不包括与DeepVoxels的比较。
局部光场融合(LLFF)[28]
LLFF旨在为采样良好的前向场景生成逼真的新视图。它使用训练好的3D卷积网络直接预测每个输入视点的离散化平截采样RGBα网格(多平面图像或MPI[52]),然后通过Alpha合成和融合附近的MPI来呈现新视点。
图5 使用基于物理的渲染器生成的新合成数据集的场景的测试集视图的比较。我们的方法能够恢复几何和外观上的精细细节,如船舶的索具、乐高的齿轮和踏板、麦克风闪亮的支架和网格以及材料的非朗伯反射率。LLFF在麦克风和材料的对象边缘上显示条状伪影,并在船舶的桅杆和乐高对象内部显示重影伪像。SRN在每种情况下都会产生模糊和扭曲的渲染效果。神经体积无法捕捉麦克风的格栅或乐高齿轮上的细节,并且它完全无法恢复船舶索具的几何形状。
图6 真实世界场景的测试集视图的比较。LLFF是专门为这个用例(面向真实场景的正面捕获)设计的。与LLFF相比,我们的方法能够在渲染的视图中更一致地表示精细的几何体,如T-rex中的蕨叶以及骨架肋骨和栏杆所示。我们的方法还正确地重建了LLFF难以清晰渲染的部分遮挡区域,例如底部蕨类作物中叶子后面的黄色货架和底部兰花作物背景中的绿叶。多重渲染之间的混合也会导致LLFF中的边缘重复,如顶部兰花裁剪所示。SRN捕捉每个场景中的低频几何图形和颜色变化,但无法再现任何精细细节。
我们彻底超越了在所有场景中优化每个场景(NV 和 SRN)的单独网络的两个基线。此外,与 LLFF(除一个指标外)相比,我们产生了质量和数量上更优越的渲染,同时仅使用它们的输入图像作为我们的整个训练集。
SRN 方法产生高度平滑的几何和纹理,并且其视图合成的表示能力受限于每条摄像机光线仅选择单个深度和颜色。 NV 基线能够捕获相当详细的体积几何和外观,但它使用底层显式 1283 体素网格阻止它缩放以表示高分辨率的精细细节。 LLFF 特别提供了一个“采样指南”,输入视图之间的视差不超过 64 像素,因此它经常无法在包含高达 400-500 像素视差的合成数据集中估计正确的几何形状。此外,LLFF 混合了不同的场景表示以渲染不同的视图,从而导致在我们的补充视频中明显地分散注意力的不一致。
这些方法之间最大的实际权衡是时间与空间。所有比较的单场景方法都需要至少 12 小时来训练每个场景。相比之下,LLFF 可以在 10 分钟内处理一个小型输入数据集。但是,LLFF 会为每个输入图像生成一个大型 3D 体素网格,从而导致巨大的存储需求(一个“真实合成”场景超过 15GB)。我们的方法只需要 5 MB 的网络权重(与 LLFF 相比相对压缩了 3000 倍),这比我们任何数据集中的单个场景的单独输入图像的内存还要少。
我们通过表2中广泛的消融研究来验证我们的算法的设计选择和参数。我们给出了我们的“逼真的合成360◦”场景的结果。第9行显示了作为参考点的完整模型。第1行显示了我们的模型的极简版本,没有位置编码(PE)、视相关性(VD)或分层采样(H)。在第2-4行中,我们从完整模型中一次一个地移除这三个组件,观察到位置编码(第2行)和视点依赖(第3行)提供了最大的定量益处,其次是分层抽样(第4行)。第5-6行显示了我们的性能如何随着输入图像数量的减少而降低。请注意,当我们的方法只使用25个输入图像时,在所有指标上的性能仍然超过NV、SRN和LLFF,当它们提供100个图像时(请参阅补充材料)。在第7-8行中,我们验证了在x的位置编码中使用的最大频率L的选择(用于d的最大频率按比例缩放)。仅使用5个频率会降低性能,但将频率数从10增加到15不会提高性能。我们认为,一旦2L超过采样输入图像中存在的最大频率(在我们的数据中约为1024),增加L的好处就有限了。
表2 模型消融研究。指标是从我们的真实合成数据集中的8个场景进行平均的。参见6.4节详细说明。
我们的工作直接解决了以前使用MLP将对象和场景表示为连续函数的不足。我们证明,将场景表示为5D神经辐射场(输出作为3D位置和2D观察方向的函数的体积密度和依赖于视点的发射辐射的MLP)比以前占主导地位的训练深度卷积网络以输出离散体素表示的方法产生更好的渲染效果。虽然我们已经提出了一种分层采样策略来提高渲染的样本效率(对于训练和测试),但在研究高效地优化和渲染神经辐射场的技术方面仍有更多的进展。未来工作的另一个方向是可解释性:体素网格和网格等采样表示承认对渲染视图和故障模式的预期质量进行推理,但当我们在深度神经网络的权重中编码场景时,如何分析这些问题尚不清楚。我们相信,这项工作朝着基于真实世界图像的图形管道迈进了一步,在这种管道中,复杂的场景可以由从实际对象和场景的图像优化的神经辐射场组成。