NeRF: Representing Scenesas Neural Radiance Fieldsfor View Synthesis 论文阅读

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