要解决的问题
从一台从未架设过的相机位置去生成某个场景的图像,是图形学与视觉中由来已久的任务,通常称为新视图合成(view synthesis)。常见做法是先重建几何——点云、网格、体素——再把它渲染出来。NeRF 这篇论文走的是另一条路:它通过优化一个连续的体积场景函数,用一组稀疏的输入视图,在合成复杂场景的新视图上取得了领先的结果[1]。
把场景写成一个连续函数
它的表示是一个全连接(非卷积)深度网络。网络的输入是一个连续的 5 维坐标,输出是该位置处的体密度(volume density)与依赖视角的辐射亮度(radiance)[1]。
把这 5 个数字拆开看:其中 3 个是空间位置,另外 2 个是观察方向。也就是说,对空间中任意一点、任意一个看过去的方向,网络要回答两件事——这个点上有多「实」(密度),以及从这个点朝这个方向发出多少光(辐射亮度)。由于方向本身是输入的一部分,网络给出的颜色可以随观察角度而变化,那些依赖视角的外观就能被同一个函数表达出来。
从函数到图像
要生成一张图,方法沿相机光线查询 5 维坐标,并用经典的体积渲染(volume rendering)技术把网络输出的颜色和密度投影成图像[1]。具体到每个像素,就是穿过场景投射一条光线,在光线上的若干位置查询网络;每个查询点按它的密度、以及光线走到它那里还剩多少未被遮挡的比例,贡献自己的颜色。沿光线把这些贡献累加起来,就得到该像素的颜色。渲染这一步是固定的、有明确公式的流程,被学到的只是被查询的那个函数。
怎么训练
体积渲染天然是可微的(differentiable),因此优化这一表示所需的唯一输入,就是一组相机位姿(camera pose)已知的图像[1]。实际操作是:取一张照片和它的相机位姿,让网络渲染出对应位置的像素,把渲染出的颜色与真实照片比对,再把差异沿着渲染过程反传回网络的权重。除此之外不需要别的东西——不需要深度图,不需要分割标注,也不需要显式的三维模型。场景的几何与外观,就是网络为了让这些照片从各自记录的视角被重现出来而最终收敛到的样子。
结果
论文给出的结果超过了此前神经渲染与视图合成的工作[1]。作者为 Ben Mildenhall、Pratul P. Srinivasan、Matthew Tancik、Jonathan T. Barron、Ravi Ramamoorthi 和 Ren Ng,2020 年 3 月 19 日提交到 arXiv[1]。
为什么重要
关键的变化在于「存下来的是什么」。在此前的流程里,场景是一堆显式的图元——三角面片、体素、纹理——工作量花在构建和更新它们上。这里场景是一个函数,被优化的是函数的参数。这个设计带来两个直接后果。其一,监督信号就是普通照片加上相机位姿,而这恰好是拍摄者本来就会产生的东西。其二,输入的坐标是连续的,函数可以在任意位置被查询,而不限于某个固定网格上的格点。
设计上的代价
从公式本身就能看出两条限制。方法假定相机位姿是已知的[1],所以它本身并不承担从运动恢复结构的任务,位姿需要由别处提供。另外,渲染一个像素要沿它的光线在网络里查询许多点,因此生成一张图的代价随每条光线的采样数增长。这篇论文的贡献在于提出问题的方式:把视图合成写成对一个可微渲染流程的优化,而其中唯一可学习的部件是一个连续的场景函数——「神经辐射场」这个名字说的正是这件事。
注释与来源
- NeRF: Representing Scenes as Neural Radiance Fields for View Synthesishttps://arxiv.org/abs/2003.08934
引用本页: 《NeRF:将场景表示为用于视图合成的神经辐射场》. TellWorld, https://www.tellworld.net/zh/papers/nerf-2020. 更新于 2026-11-08