文章:NeRFs: The Search for the Best 3D Representation
作者:Ravi Ramamoorthi
编辑:点云PCL
公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。侵权或转载联系微信cloudpoint9527。
摘要
神经辐射场(NeRF)已成为多视图合成或基于图像的渲染等问题的首选表示方法,同时也广泛应用于计算机图形和视觉等多个领域,甚至更多领域。本质上NeRF描述了一种新的3D场景或几何表示方法。与网格、视差图、多平面图像甚至体素网格不同,它将场景表示为一个连续的体积,体积参数如视角相关辐射和体积密度通过查询神经网络获得。NeRF方法现已被广泛使用,每年有数千篇论文在其基础上进行扩展或构建,有多个作者和网站提供概述和调查,以及众多工业应用和初创公司。在这篇文章中,我们简要回顾了NeRF表示方法,并描述了长达三十年的寻找多视图合成和相关问题的最佳3D表示方法的探索,最终达到NeRF。然后描述了NeRF表示方面的新发展,并对3D表示的未来提出了一些观察和见解。
引言和基本的 NeRF 算法
NeRF 被引入作为一种方法,迄今为止在视图合成或基于图像的渲染任务上取得了最高质量的视觉和定量结果。虽然这个问题很容易陈述,但在解决方面却是非常困难的。给定一个感兴趣的3D场景的多个输入图像,然后试图优化某种内部表示,然后可以合成新颖的视图。实现这一目标使我们能够通过拍摄物体或场景的少数手持图像来感知它的3D形式,而不是作为平面2D图像。在沉浸式虚拟现实和增强现实中有许多应用。因此,视图合成使我们能够将标准的2D图像或照片提升为完整的3D表示方法,还实现了数字孪生和元宇宙等新应用。例如,NeRF 已经在谷歌的地图和街景中被使用,用于根据城市、建筑和街道的源照片创建沉浸式渲染,以及在 Luma AI 移动应用中,通过拍摄感兴趣的对象的几张图像生成引人入胜的飞越效果。

图1:经典的多视图合成问题。给定一组输入图像(这里是在周围半球上随机捕获的合成的架子鼓场景的100个视图),我们首先优化了一个NeRF表示,然后使用它进行体积渲染,合成两个新颖的视图,包括视角相关的镜面效果和反射。在过去的三十年里,视图合成或基于图像的渲染的探索一直是寻找3D场景的“最佳”中间表示方法,以实现最高质量的视图合成;这个图示通用地代表了该领域中许多先前的论文。
NeRF 使用一个全连接的神经网络来表示3D场景,这个网络被称为多层感知器或MLP。与最近几年来在人工智能领域取得许多进展的卷积神经网络或CNN相反,这种表示是非卷积的,而且在最近的研究中通常甚至不是一个特别深的网络,这使得算法更简单、更高效,更容易训练,并更适合手头的问题。特别是输入是一个连续的5D坐标,涉及空间位置(x、y、z)和视角方向(θ、ϕ),输出是体积密度σ和视角相关的辐射或松散的颜色c。通过沿着相机射线查询5D坐标并使用在计算机图形学和其他领域中广泛使用的标准体积渲染技术,将这些输出颜色和密度投影到图像上,可以合成视图。深度学习或优化的一个关键方面是能够对相关函数进行微分以运行梯度下降优化器。体积渲染是自然可微的(没有不连续性),因此唯一需要的输入是具有已知相机姿态的图像集(通常从COLMAP等系统中获得)。优化只需通过比较重建值与“真值”输入图像。在许多方面,这比以前的方法要简单得多。我们在图1和图2中展示了问题的设置和优化的过程。

图2:优化神经辐射场只需计算使用体积渲染计算的重建图像与保留视图之间的简单损失或误差。中介参数由一个多层感知器(MLP)确定,该MLP以5D坐标为输入,并输出依赖于视图的辐射发射率(RGB)和体积密度(σ)。
体积散射或辐射传递的理论在天体物理学和计算机图形学等许多领域都很有名。NERF仅采用了其中的一部分,完全省略了散射,但保留了吸收和发射。此外大多数真实场景实际上并不发光,在许多情况下甚至不是真正的体积(而是表面)。然而体积表示方法是至关重要的,即使场景不发光实际上是通过照明/光照与物体的反射特性相互作用获得的,如果我们固定照明,这种照明并有效地将场景视为发光。但是这应当理解为这些是数学上的便利,而不是正确的物理模型。最后原始论文引入了位置编码,这对于 MLP 恢复高频函数并产生高质量结果至关重要,这是我们在一项相关工作中更深入研究的主题。更具体地说,输入被映射到更高维的空间,本质上是在许多更高频率上的傅里叶函数,使网络更容易学习这些更高频率。考虑实数 R 中的单个输入 p,通过编码,将此输入提升到更高维的空间 R2L,将所有这些放在一起,原始 NeRF 论文中用于真实场景的视图合成的一些结果显示在图 3 中,其中质量与实际情况(输入图像)非常相似。

图 3:原始 NeRF 算法获得的真实结果,与实际情况非常相似。图示左侧为真实情况,右侧为 NeRF 算法。
原始 NeRF 算法在训练和渲染时间方面存在许多限制,只能优化一个场景/对象,需要数十到一百个视图,仅限于静态有界场景,仅进行视图合成而不进行照明变化或恢复材料参数等等。至少到截至2023年7月的目前为止,全球研究团队已经在原始 NeRF 方法基础上进行了3000多篇论文的研究,解决了几乎所有图形、视觉等领域的应用,涉及机器人学、摄影和天文学等应用。
NVIDIA 的后续方法 InstantNeRF在渲染和训练时间方面解决了许多缺陷,通常能够在一分钟内完成训练并以实时帧速率进行渲染,被 Time Magazine 评为2022年最佳发明之一。这使得许多应用成为可能,包括由普通用户创建 NeRF;一些艺术家的创作在 Instant NeRF AI Gallery 网站上展示。《纽约时报》使用 NeRF 拍摄肖像,Meta/Facebook 的首席执行官马克·扎克伯格提到 NeRF 和逆向渲染作为元宇宙的关键技术。鉴于 NeRF 的流行,已经开发了许多软件框架;NeRFStudio就是一个开源的例子。已经发表了一些关于 NeRF 的调查,我们将读者引向这些综述,甚至连通俗出版物也强调了该方法。我们的目标不是复制这些写作,事实上在几页内不可能对所有优秀的后续工作进行充分的介绍。本文的其余部分提供了三十年来寻找“正确”的三维场景表示以进行视图合成或基于图像的渲染的历史背景。然后讨论了核心 NeRF 表示的新发展,并将其与早期的光传输表示和实时渲染的相关工作联系起来。我们的目标不是详尽无遗,而是在 NeRF 算法中确定一些核心挑战和解决方案。
基于图像渲染的场景表示
NeRF故事始于至少30年前,早于NeRF论文作者的研究生涯。在SIGGRAPH 93中,Chen和Williams首次提出了图像合成的多视图插值概念。这篇论文几乎独一无二地包含在SIGGRAPH为其25周年和50周年会议制作的开创性图形论文的两个卷册中。尽管Chen和Williams使用了合成的z缓冲图像,但这篇论文被广泛认为是定义视图合成问题,并在20世纪90年代引领了计算机图形和视觉中的基于图像的渲染(IBR)领域。当时,计算机图形渲染或图像合成已经实现了引人注目的逼真图像,但受到几何、照明和材质输入模型质量的限制。基于图像的渲染或视图合成提供了一种替代方法,即通过定义实际上是照片般逼真的输入图像并将它们组合起来创建新图像。
在计算机视觉中,这是一个令人兴奋的新问题方向,与传统的3D重建或识别问题形成对比。实际上早期图像合成的许多早期期望完全绕过容易出错的3D重建。Tomaso Poggio的小组在基于图像的方式上开创了人脸分析和合成的工作,但由于这些出版物不在主流图形社区中,往往未能得到应有的赞誉。与NeRF的工作一样,关于视图合成和基于图像的渲染的工作也迅速增长,包括关于光滑建模、光场渲染、光栅图、分层深度图等的经典论文,以及我们在本文无法涵盖的成千上万篇其他论文。事实上,SIGGRAPH 2023年50周年会议的经典图形论文卷册包括从1990年代中期到2000年代中期的至少十几篇IBR论文。SIGGRAPH技术奖计划和委员会在这些进展中做出了杰出的工作,至少给予了上述论文中的一个作者主要的计算机图形技术奖。随后的发展尤其受到光场和光栅图的启发,这两者显示了如何通过对射线进行重新采样和组合来实现视图合成,并更重要地为从稀疏图像重构光场提供了基础。
事实上,我对最终导致NeRF的项目的兴趣始于来自共同作者Ren Ng创办的Lytro公司的光场相机的深度重建和视图插值。层深图像或LDI是NeRF方法之前广泛使用的多平面图像或MPI的先导者之一。这些以及后续的工作中的一个关键问题是图像渲染的正确3D场景表示。一些早期论文,如原始光场工作,主张我们不需要场景表示;我们只是在插值图像。通过这种方式,容易出错的3D重建步骤可以完全跳过。然而,在SIGGRAPH 2000年的一篇开创性论文中,Chai等人正式演示了一种光场采样理论,表明深度信息可以实现更稀疏的采集,实际上深度精度和采样率之间存在权衡。光栅图已经探讨了构建近似几何表示的可能性。最终,尽管名称为“基于图像的渲染”,但关键元素是中间3D场景表示。
在本质上,大多数算法遵循图1的流程,其中通过优化中间的3D场景表示,从而可以渲染最终的视图。受传统计算机图形学和视觉的启发,场景表示自然是近似的3D几何形状,如粗略的网格或者可能是视差图。但是,这些表示对于高质量的视图合成来说可能非常具有挑战性。例如,考虑Seitz和Dyer的经典体素着色方法。一旦错误发生,形状中的可见关系就会受到影响,最终恢复的3D结构将不准确且可见性不正确。此外,如果几何形状不正确,则诸如镜面反射之类的视角相关效果通常也是不正确的。然而,早期的基于图像的渲染工作在接下来的二十年中取得了一定程度的成功,使用了越来越复杂的算法。实际上,沿着给定的射线,我们不考虑单一的表面或交点,而是考虑交点的概率分布。这是一个非常重要的观点,NeRF在某种意义上将其推向了自然的结论。在2012年,Krizhevsky等人通过深度卷积网络在分类问题中取得了巨大的进展,引发了计算机视觉中深度学习工作的热潮。有一段时间,似乎图像合成不会受到这些进展的影响。然而,完全卷积网络和U-net使得高分辨率图像的创建成为可能,结果迅速应用于立体重建。我们的工作考虑了来自光场相机的视图合成,从而获得了一种从仅四个角视图获取完整光场的快速算法。
我们的论文在三维几何表示的传统中取得了显著突破。首先场景的表示是一个体积而不是一个表面。其次它是一个连续的体积而不是一个离散的体素网格。连续体积表示这一核心见解很可能是 NeRF 论文的持久见解,尽管在具体学习算法方面也有许多贡献。当然,研究不是在真空中进行的,有许多重要的前导工作。体积渲染在图形学中有着悠久的历史,复杂材料越来越以体积的方式表示。事实上,我在2010年获得了一项大型的NSF(美国国家科学基金会)资助,提出了一种基于体积的全新材料表示法;十年后的 NeRF 论文确实使体积成为场景表示的一流基元。我们受到神经体积工作的启发,该工作使用离散的体素网格,具有一些其他限制,通过使用深度3D CNN进行预测,但是 NeRF 在许多方面概括了这个想法,尤其是连续而不是离散的体积表示。顺便说一下,与其仅仅存储体积密度,不如存储反射性以恢复光照和视角相关的属性,这是我的团队同时进行的工作。
在深度学习算法方面,我们的 NeRF 论文也开创了新的领域。与当时的主导范式CNN不同,我们优化了一个简单的MLP;原始工作仅需要5MB的权重来表示整个场景的这个全连接网络。再次强调,这个想法并非全新,建立在深度有符号距离函数和场景表示网络的先驱工作之上。最后NeRF引入了高频特征的位置编码的概念。这利用了学习社区关于神经网络中谱偏差的工作。值得注意的是,许多新的 NeRF 表示已经修改了学习方法,仅使用没有位置编码的浅层 MLPs,而在最新的工作中甚至不使用神经表示。然而连续体积表示的核心概念,即由 NeRF 引入,已经渗透到随后的所有工作中。
神经辐射场的表示方法
原始的 NeRF 论文引发了许多新的表示方法的爆发,我们在这里简要讨论。尽管很少被引用,但这与二十年前光传输和预计算辐射传递(PRT)的紧凑表示的发展相似,我在这个领域发挥了重要作用。例如,球谐函数和基于反射的重新参数化通常被使用。PRT文献中的一个早期方法是对场景进行聚类或将图像分成块。类似地,KiloNeRF将场景分成区域,每个区域都适应小的MLP。然而,迄今为止对于适当的块和集群大小或所涉及的权衡的分析或理解很少。
许多最近的方法基于特征场的概念。这使得回到离散体积表示的步骤,其中显式存储了抽象特征的粗体积网格。然后,可以在沿着射线遍历的任何点上对这个网格进行插值,以获取特征,随后将其馈送到一个小型的MLP中以解码颜色和密度值,之后渲染就像在原始的 NeRF 算法中一样进行。虽然这比标准的 NeRF 要占用更多的内存,但由于所需的较小的 MLP,训练更容易,评估速度也大大加快。那么一个挑战是适当表示和压缩特征场本身。在这个领域的两个最近的代表性作品是 Instant Neural Graphics Primitives ,它使用多分辨率哈希网格,以及 TensorRF ,它对特征网格进行张量分解。请注意,TensorRF 与 PRT 中的聚类张量逼近有很强的相似之处,我们鼓励未来的作者更仔细地研究聚类的潜力并分析这种表示所需的术语数量。还可以将 TensorRF 用于因子分解和 InstantNGP 用于表示较低维分量的多分辨率哈希网格相结合;这个想法已经被用于动态全身人体模型和我们自己的静态PRT工作。无论如何,这种新表示、分解和压缩的爆发表明,在深度学习-NeRF时代,数学表示和信号处理仍然是关键。EG3D本质上将一个3D点投影到较低维的2D平面。由于2D平面是较低维的,因此可以将更高分辨率的信息明确地表示为简单的纹理映射,而CNN或基于变压器的算法甚至可以直接预测这些表示。可以使用 Kplanes 将这种方法扩展到更高的维度,甚至可以在没有任何神经层或MLP的情况下运行。
NeRF 取得的突破是通过利用旧的计算机图形学概念,即体积渲染。在过去的一年中,通过甚至更古老的图形技术-基于点的渲染-取得了进一步的突破。Point-nerf 提出了基于点的 NeRF 表示的概念,更容易训练。Kerbl等人提出了一种使用3D高斯斑点作为其点基元的激进新方法。从视觉质量、渲染时间和性能方面来说,这目前是最先进的方法,但内存要求更高。在某种程度上,这项工作在内存速度权衡方面实现了全面显式体积表示。最引人注目的是,这项技术完全是经典的,没有神经基元,连续的体积基本上是用高斯斑点或斑点自适应表示的,这些斑点用作点采样。在过去的十年中,这或许是第一次主要的神经算法被非神经的经典等效物所取代。再次强调,研究不是在真空中进行的,关于在可视化上的不同形状和相关问题的从形状和相关问题的区别在前一年由 Keselman 和 Hebert 提出,这在可微分渲染中使用高斯斑点表示表面和体积的一种相似的方法。
这让我们回到上一节提到的一个关键点:尽管 NeRFs 通常被认为是基于人工智能技术在解决几十年来问题上取得显著进展的又一次重大胜利,但关键的洞察可能实际上只是关于连续体积表示的想法,而不是表面或离散体素网格,而不是任何特定的学习表示或算法。实际上,可能根本不需要任何神经组件,我们真正关心的只是辐射场。我们已经花了几段时间讨论了在过去三年中涉及数百篇或数千篇论文的一个主题。NeRF 表示领域正在迅速发展,未来几年将会有许多新的篇章。因此,NeRFs 可以被看作是一个里程碑,但绝不是图像渲染中“最佳” 3D 场景表示的最终结论。
总结
NeRF 作为新的几何基元 在计算机图形学中,三维几何模型的表示至关重要。实际上,标准的图形管线包括三维场景几何模型,以及灯光、材质、动画和渲染算法,以创建图像。几何也可以通过平滑、模拟、网格化或将其用作感知、识别或编辑的表示来进行操作。迄今为止,在计算机图形学中,对三维几何的最成功表示可能就是三角形网格。但是计算机图形学的历史上有许多丰富的替代方案,包括样条片、细分表面、隐式表面和点。
总之,我们认为 NeRF 是新的几何基元,基于体积而不是表面,基于神经而不是显式表示(尽管我们已经看到在最后一段中的一些工作可以在没有任何神经基元的情况下实现最先进的性能)。因此,NeRF 和神经隐式函数通常可以作为任何需要三维几何表示的问题的插件替代。这导致了它们的巨大受欢迎,因为这些想法几乎可以应用于任何领域。关于计算机图形管线中的操作,例如历史上应用在有限元模型、网格和四面体上的物理模拟和几何处理,是否应该扩展到 NeRF 领域,或者从 NeRF 中提取显式网格表示是否更简单,这仍然是一个悬而未决的问题。不管怎样,将 NeRF 视为新的三维几何基元是一个有价值的观点,它使得我们可以在任何寻求三维(或更高维)几何模型的地方使用它们。这为我们提供了一个庞大的应用领域,并且我们预计对核心辐射场表示和 NeRF 应用的研究将在未来的许多年里持续进行。