NeRF开篇-论文翻译

 NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

摘要:我们提出了一种方法,通过使用稀疏的输入视图优化基于连续的体积场函数的方法,来实现合成复杂场景的新视图的最新结果。我们的算法使用一个全连接(非卷积)深度网络来表示场景,其输入是一个连续的5D坐标(空间位置(x,y,z)和视角方向(θ,φ)),其输出是该空间位置的体密度和视角相关的辐射强度。我们通过查询沿着相机光线的5D坐标来合成视图,并使用经典的体绘制技术将输出的颜色和密度投影到图像中。由于体积渲染本质上是可微分的,因此优化我们的表示所需的唯一输入是一组具有已知相机姿态的图像。我们描述了怎样有效优化神经辐射场,以呈现具有复杂几何和外观的场景的逼真新视图,并展示了优于神经渲染和视图合成先前工作的结果。视图合成结果最好作为视频查看,因此我们建议读者查看我们的补充视频以获得令人信服的比较。

图1,我们提出了一种方法,通过一组输入图像,优化连续的5D神经辐射场表示(场景的体密度和任意连续位置的视角相关颜色),从而呈现场景。我们使用体渲染技术沿着射线累积这个场景表示的样本,以从任意视角渲染场景。在这里,我们展示了合成鼓场景的100个输入视图的集合,这些视图是在周围半球上随机捕获的,并展示了从我们优化的NeRF表示渲染的两个新视图。

1 介绍

在这项工作中,我们通过直接优化连续的5D场景表示的参数来解决视图合成的长期问题,以最小化渲染一组捕获图像的误差。

 我们将静态场景表示为一个连续的5D函数,该函数在空间的每个点(x,y,z)处输出在每个方向(θ,φ)发射的辐射,并在每个点处具有密度,其作用类似于控制通过(x,y,z)的射线累积多少辐射的微分不透明度。我们的方法通过优化一个没有卷积层的深度全连接神经网络(通常称为多层感知器或MLP)来表示这个函数,从一个单一的5D坐标(x,y,z,θ,φ)回归到一个单一的体密度和视角相关的RGB颜色。为了从特定视角渲染这个神经辐射场(NeRF),我们1)沿着相机射线穿过场景生成一组采样的3D点,2)使用这些点及其对应的2D视角方向作为输入,通过神经网络产生一组输出颜色和密度,3)使用经典的体渲染技术将这些颜色和密度累积成一个2D图像。由于这个过程是自然可微的,我们可以使用梯度下降来优化这个模型,通过最小化每个观察图像从我们的表示中渲染的相应视图之间的误差来实现。在多个视图上最小化这个误差,鼓励网络通过将高体密度和准确的颜色分配给包含真实场景内容的位置来预测一个连贯的场景模型。图2展示了这个整体流程。

图2,我们的神经辐射场场景表示和可微渲染过程概述如下。我们通过沿着相机光线采样5D坐标(位置和视线方向)来合成图像(a),将这些位置输入MLP(多层神经网络)以产生颜色和体密度(b),并使用体渲染技术将这些值合成为图像(c)。这个渲染函数是可微的,因此我们可以通过最小化合成图像和真实观察图像之间的残差来优化我们的场景表示(d)。

我们发现,对于复杂场景,优化神经辐射场表示的基本实现无法收敛到足够高分辨率的表示,并且在每个相机光线所需的样本数量上效率低下。我们通过使用位置编码来转换输入的5D坐标使MLP能够表示更高频率的函数,并提出了一种分层采样过程,以减少必要的查询数量,从而充分采样这种高频场景表示。

我们的方法继承了体积表示法的优点:两者都能够表示复杂的真实世界几何形状和外观,并且非常适合使用投影图像进行基于梯度的优化。关键是,我们的方法克服了在高分辨率下建模复杂场景时离散化体素网格的存储成本过高的问题。总之,我们的技术贡献包括:

1)一种将具有复杂几何形状和材料的连续场景表示为5D神经辐射场的方法,其参数化为基本的MLP网络。

2)基于经典体积渲染技术的可微渲染过程,我们使用它从标准RGB图像中优化这些表示。这包括一种分层采样策略,将MLP的容量分配到具有可见场景内容的空间中。

3)一种位置编码,将每个输入的5D坐标映射到更高维度的空间中,这使我们能够成功地优化神经辐射场以表示高频场景内容。

2、相关工作

计算机视觉中一个有前途的研究方向是将物体和场景编码到一个有权重的多层感知器(MLP)中,该MLP直接从3D空间位置映射到该位置的形状的隐式表示,例如有符号距离[6]。然而,这些方法迄今为止无法像使用三角形网格或体素网格等离散表示场景的技术一样以相同的保真度再现具有复杂几何形状的逼真场景。在本节中,我们回顾了这两个研究方向,并将他们与我们的方法进行对比,我们的方法增强了神经场景表达的能力,以产生呈现复杂逼真场景的最先进结果。

使用MLP将低维坐标映射到颜色的类似方法也用于表示其他图形函数,例如图像、纹理材料和简介照明值。

Neural 3D shape representations:最近的研究探讨了将连续的三维形状表示为水平集的隐式表示方法,通过优化将xyz坐标映射到带符号距离函数[15,32]或占据场[11,27]的深度网络。然而,这些模型受到其需要访问ground truth三维几何形状的限制,通常从ShapeNet[3]等合成三维形状数据集中获得。随后的工作通过制定可微分渲染函数放宽了ground truth三维形状的要求,从而只使用2D图像来优化神经隐式形状表示。Niemeyer等人[29]将表面表示为3D占据场,并使用数值方法找到每条射线的表面交点,然后使用隐式微分计算精确导数。每个射线交点位置作为输入提供给神经3D纹理场,该场预测该点的漫反射颜色。Sitzmann等人[42]使用不太直接的神经3D表示,仅在每个连续的3D坐标处输出特征向量和RGB颜色,并提出了一个可微分渲染函数,由一个递归神经网络沿着每条射线前进以确定表面的位置。

尽管这些技术潜在地可以表示复杂和高分辨率的几何形状,但迄今为止它们仅限于具有低几何复杂度的简单形状,导致过度平滑的渲染效果。我们展示了一种替代策略,即优化网络以编码5D辐射场(具有2D视角相关外观的3D体积),可以表示更高分辨率的几何形状和外观,以渲染复杂场景的逼真新视角。

View synthesis and image-based rendering 

给定密集的视角采样,可以通过简单的光场采样插值技术[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合成[34]或沿射线学习合成来渲染新视角。其他作品为每个特定场景优化了卷积网络(CNN)和采样的体素网格的组合,使得CNN可以补偿低分辨率体素网格的离散化伪影[41],或者允许预测的体素网格根据输入时间或动画控制而变化[24]。虽然这些体积技术已经实现了令人印象深刻的新视角合成结果,但它们扩展到更高分辨率的图像的能力在本质上受到其离散采样的时间和空间复杂度的限制——渲染更高分辨率的图像需要对3D空间进行更细致的采样。我们通过在深度全连接神经网络的参数中编码连续体积来避免这个问题,这不仅产生比以前的体积方法更高质量的渲染,而且只需要那些采样体积表示的一小部分存储成本。

3、神经辐射场场景表示

我们将一个连续的场景表示为一个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 Θ首先使用8个全连接层(每层使用ReLU激活和256个通道)处理输入的3D坐标x,并输出σ和一个256维的特征向量。然后将该特征向量与相机光线的视角方向连接起来,并传递给一个额外的全连接层(使用ReLU激活和128个通道),输出视角相关的RGB颜色。

请参见图3,了解我们的方法如何使用输入视角来表示非Lambertian效应的示例。如图4所示,仅使用x作为输入训练的模型难以表示镜面反射。

图3:视角相关发射辐射的可视化。我们的神经辐射场表示将RGB颜色作为空间位置x和视角方向d的5D函数输出。在这里,我们展示了船舶场景神经表示中两个空间位置的方向颜色分布示例。在(a)和(b)中,我们展示了从两个不同相机位置观察的两个固定3D点的外观:一个在船的侧面(橙色插图)和一个在水面上(蓝色插图)。我们的方法预测了这两个3D点的变化镜面外观,并在(c)中展示了这种行为如何在整个视角半球上连续推广。

4、辐射场体绘制

我们的5D神经辐射场将场景表示为空间中任意点的体密度和方向性发射辐射。我们使用经典体渲染原理[16]来渲染通过场景的任何光线的颜色。体密度σ(x)可以解释为光线在位置x处终止于无穷小粒子的微分概率。相机光线r(t) = o + td的预期颜色C(r),其中t的取值范围为近端界限tn到远端界限tf,为:

函数T(t)表示从t n到t的光线沿途累积透射率,即光线在不撞击任何其他粒子的情况下从t n到t行进的概率。从我们的连续神经辐射场中渲染视图需要估计通过所需虚拟相机的每个像素跟踪的相机光线的积分C(r)。

我们使用数值积分来估计这个连续积分。确定性积分通常用于渲染离散化的体素网格,但这将有效地限制我们表示的分辨率,因为MLP只会在固定的离散位置查询。相反,我们使用分层采样方法,将[t n,t f ]分成N个均匀间隔的区间,然后从每个区间内均匀随机抽取一个样本:

虽然我们使用离散的样本来估计积分,但分层采样使我们能够表示连续的场景表示,因为它导致 MLP 在优化过程中在连续位置进行评估。我们使用这些样本使用Max [26]在体绘制回顾中讨论的求积规则来估计C(r):

其中,δ i = t i+1 − t i 表示相邻样本之间的距离。从一组 (c i , σ i ) 值计算 Ĉ(r) 的函数是显然可微的,并且可以通过传统的 alpha 合成来减少 alpha 值 α i = 1 − exp(−σ i δ i)。

图4:我们展示了完整模型如何从表示视角相关的发射辐射和通过高频位置编码传递输入坐标中受益。去除视角相关性会防止模型重新创建推土机履带上的镜面反射。去除位置编码会大大降低模型表示高频几何和纹理的能力,导致过度平滑的外观。

5、优化神经辐射场

在前面的部分中,我们描述了将场景建模为神经辐射场并从该表示中渲染新视角所需的核心组件。然而,我们观察到这些组件并不足以实现最先进的质量,正如第6.4节所示。我们引入了两个改进来实现高分辨率复杂场景的表示。第一个是输入坐标的位置编码,它有助于MLP表示高频函数,第二个是分层采样过程,使我们能够有效地采样这种高频表示

5.1 位置编码

尽管神经网络是通用的函数逼近器[14],但我们发现直接在xyzθφ输入坐标上操作网络FΘ会导致渲染效果较差,无法很好地表示颜色和几何形状的高频变化。这与Rahaman等人最近的研究结果[35]一致,该研究表明深度网络倾向于学习低频函数。他们还表明,在将输入通过高频函数映射到更高维空间后再传递给网络,可以更好地拟合包含高频变化的数据。我们利用这些发现,将FΘ重新构造为两个函数FΘ = FΘ0 ◦ γ的组合,其中一个是学习的,另一个不是,可以显著提高性能(见图4和表2)。这里γ是从R到更高维空间R2L的映射,而FΘ0仍然是一个普通的MLP。形式上,我们使用的编码函数为:

函数γ(·)分别应用于x的三个坐标值(这些值被归一化为[-1,1])和笛卡尔视线方向单位向量d的三个分量(根据构造,这些分量也在[-1,1]范围内)。在我们的实验中,我们将γ(x)的L设置为10,将γ(d)的L设置为4。

在流行的Transformer架构[47]中使用了类似的映射,被称为位置编码。然而,Transformer将其用于提供序列中令牌的离散位置作为输入,以便于架构中不包含任何顺序概念。相比之下,我们使用这些函数将连续的输入坐标映射到更高维度的空间中,以便于我们的MLP更容易逼近更高频率的函数。同时,关于从投影中建模3D蛋白质结构的相关问题的并行工作[51]也利用了类似的输入坐标映射。

5.2 分层体积采样

我们的神经辐射场网络在每个相机射线上密集评估N个查询点的渲染策略效率低下:自由空间和不贡献于渲染图像的遮挡区域仍然被重复采样。我们从体积渲染的早期工作中汲取灵感[20],提出了一种分层表示方法,通过按比例分配样本来增加渲染效率,以反映它们对最终渲染的预期影响。

我们不仅使用单个网络来表示场景,而是同时优化两个网络:一个“粗略”的网络和一个“精细”的网络。我们首先使用分层采样对一组Nc个位置进行采样,并按照Eqns.2和3中所述在这些位置处评估“粗略”网络。给定这个“粗略”网络的输出,我们然后在每个射线上产生更多的采样点,其中样本偏向于体积的相关部分。为了做到这一点,我们首先将Eqn.3中的粗略网络的alpha合成颜色重写为沿着射线采样的所有样本颜色ci的加权和:

归一化这些权重在射线沿着的方向上产生一个分段常数概率密度函数。

我们使用反演变换采样第二组大小为Nf的位置,将“fine”网络在第一组和第二组样本的并集处进行评估,并使用所有Nc + Nf个样本计算射线的最终渲染颜色Ĉf(r),使用公式3,但使用所有Nc + Nf个样本。这个过程将更多的样本分配给我们预期包含可见内容的区域。这解决了与重要性采样类似的目标,但我们将采样值用作整个积分域的非均匀离散化,而不是将每个样本视为整个积分的独立概率估计。

5.3 实现细节

我们为每个场景优化一个单独的神经连续体表示网络。这仅需要场景的捕获RGB图像数据集、相应的相机姿态和内部参数以及场景边界(我们对于合成数据使用真实的相机姿态、内部参数和边界,对于真实数据使用COLMAP结构从运动包[39]来估计这些参数)。在每次优化迭代中,我们从数据集中的所有像素中随机采样一个相机射线批次,然后按照第5.2节中描述的分层采样方法查询Nc个粗糙网络样本和Nc + Nf个精细网络样本。然后,我们使用第4节中描述的体积渲染过程从粗糙和精细渲染中渲染每个射线的颜色。我们的损失仅是粗糙和精细渲染的渲染像素颜色与真实像素颜色之间的总平方误差。

其中,R 是每个批次中的射线集合,C(r)、Ĉ c (r) 和 Ĉ f (r) 分别是射线 r 的真实 RGB 颜色、粗略体积预测的 RGB 颜色和精细体积预测的 RGB 颜色。需要注意的是,即使最终渲染来自于 Ĉ f (r),我们也会最小化 Ĉ c (r) 的损失,以便将粗略网络的权重分配到精细网络中的样本中。

在我们的实验中,我们使用一个批次包含 4096 条射线,每条射线在粗略体积中采样 N c = 64 个坐标,在精细体积中采样额外的 N f = 128 个坐标。我们使用 Adam 优化器 [18],学习率从 5 × 10 −4 开始指数衰减到 5 × 10 −5(其他 Adam 超参数保持默认值,即 β 1 = 0.9、β 2 = 0.999 和  = 10 −7)。在单个 NVIDIA V100 GPU 上,单个场景的优化通常需要约 100-300k 次迭代才能收敛(大约需要 1-2 天)。

6、实验

7、结论

我们的工作直接解决了以前使用多层感知器(MLPs)将对象和场景表示为连续函数的缺陷。我们证明,将场景表示为5D神经辐射场(一个MLP,它输出体密度和视角相关的发射辐射作为3D位置和2D视角方向的函数)比以前主导的方法——训练深度卷积网络输出离散化体素表示——产生更好的渲染效果。虽然我们提出了一种分层采样策略,使渲染更加高效(对于训练和测试),但在有效地优化和渲染神经辐射场方面仍有许多进展需要进行。未来工作的另一个方向是可解释性:像体素网格和网格这样的采样表示允许推理渲染视图的预期质量和故障模式,但是当我们将场景编码为深度神经网络的权重时,如何分析这些问题尚不清楚。我们相信,这项工作在基于真实世界图像的图形管道方面取得了进展,其中复杂的场景可以由从实际对象和场景的图像优化的神经辐射场组成。

 

posted on   gary_123  阅读(182)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2018-07-13 CMakeLists.txt里面的调试
2016-07-13 STM32F4库函数里面的RCC_DeInit(void)函数分析

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示