NeRF 深入:从 5D 坐标到逼真新视图合成

FreeGuideOnline 最新 2026-06-20

NeRF 神经辐射场深入:从 5D 坐标到逼真新视图合成

神经辐射场(Neural Radiance Fields,简称 NeRF)是一类颠覆性的三维场景表示方法,它仅通过一组二维图像,就能学习出连续体积场景函数,从任意新视角渲染出照片级真实感的图像。本教程将带你深入理解 NeRF 的工作原理,解开从 5D 坐标到逼真新视图合成的全过程。

什么是神经辐射场

NeRF 本质上是一个连续的场景表示,它将整个场景建模为一个连续的 5D 函数。该函数的输入是 3D 位置 (x, y, z) 和 2D 视角方向 (θ, φ),输出则是该位置处的颜色 (R, G, B)体积密度 σ。这个函数用一个多层感知机(MLP)网络来近似,因此称为“神经”辐射场。

核心思想对比

传统三维表示方法存在明显的局限:

  • 点云、网格:离散、内存消耗大,难以处理复杂的几何细节和半透明物体。
  • 体素网格:受分辨率限制,高分辨率占用大量内存。
  • 多视图重建:常要求输入视角稠密、纹理丰富,且难以生成任意新视图。

NeRF 的优势在于:

  • 连续性:场景由神经网络表示,可以无限分辨率查询任意位置的颜色和密度。
  • 紧凑性:仅用一个 MLP 保存整个场景,模型大小远小于等效精度的体素网格。
  • 可微渲染:整个流程完全可微,可以从多视角图像端到端地优化,无需3D监督。

5D 输入:位置与方向的分离

NeRF 的输入是 5 维:(x, y, z, θ, φ),但网络结构将这些维度进行了分段处理,以更好地解耦几何与外观。

三维位置编码 (x, y, z)

位置决定了体积密度的分布。密度 σ 代表在某个空间点处光线终止的概率,它理应与观察方向无关 —— 一个不透明物体的内部密度不应因视角改变而改变。因此 NeRF 的设计是:位置首先经过 MLP,输出密度和中间特征,方向信息直到后半部分才注入。

二维观察方向 (θ, φ)

方向影响颜色输出。许多真实材质存在视角依赖效应,例如镜面反射、高光、金属光泽。为了实现逼真的视图合成,NeRF 让方向信息与位置计算出的特征拼接,再通过全连接层预测 RGB 颜色。这使得相同空间点在沿着不同方向观察时,可以产生合理的颜色变化。

高频位置编码

直接将 (x, y, z) 坐标输入 MLP,渲染结果往往过于平滑,丢失高频细节。NeRF 借鉴 Transformer 中的位置编码思想,对输入坐标应用谐波特征映射

γ(p) = (sin(2^0 πp), cos(2^0 πp), ..., sin(2^{L-1} πp), cos(2^{L-1} πp))

分别对位置 (x, y, z)(通常 L=10)和方向 (θ, φ)(通常 L=4)进行编码。这一操作将低维输入映射到高维空间,使 MLP 更容易拟合高频函数,从而生成锐利的纹理和几何细节。

体积渲染:从辐射场生成图像

核心渲染方程基于经典体积渲染中的吸收与发射模型。对于一条相机光线 r(t) = o + t d,其期望颜色 C(r) 由沿光线路径的累积透射率和局部辐射度积分得到:

C(r) = ∫_{t_n}^{t_f} T(t) σ(r(t)) c(r(t), d) dt

其中:

  • σ(r(t)):位置 r(t) 处的体积密度。
  • c(r(t), d):该点沿方向 d 观察的辐射颜色。
  • T(t) = exp(-∫_{t_n}^{t} σ(r(s)) ds):从 t_nt 的累积透射率,表示光线未击中任何粒子的概率。

离散化近似

现实中,上述连续积分需要通过分层采样近似。沿光线在近平面 t_n 和远平面 t_f 之间采样 N 个点 {t_i},则离散化累积颜色为:

Ĉ(r) = Σ_{i=1}^{N} w_i c_i

权重 w_i 定义为:

w_i = T_i (1 - exp(-σ_i δ_i))
T_i = exp(- Σ_{j=1}^{i-1} σ_j δ_j)
δ_i = t_{i+1} - t_i

权重 w_i 直观上表示光线在位置 i 处终止的概率。训练时,将上式和真实像素颜色计算 L2 损失,梯度通过体积渲染过程回传至 MLP。

分层采样与精细网络

为了更高效地在空间分布样本,NeRF 使用两阶段采样策略:

  1. 粗网络(Coarse):在光线上均匀分层采样 N_c 个点,计算权重。
  2. 精细网络(Fine):根据粗网络权重分布进行重要性采样,在密度较高的区域采样更多点 N_f,然后用更精细的点集重新计算颜色。

两个网络都输出颜色和密度,但最终渲染使用精细网络的输出。损失函数同时优化两个网络:

L = Σ_r [ ||Ĉ_c(r) - C_gt(r)||_2^2 + ||Ĉ_f(r) - C_gt(r)||_2^2 ]

这种设计大幅提升了样本效率,避免在空白区域浪费计算。

训练 NeRF:从多视角图像学习

数据准备

NeRF 要求已知的相机内参和外参。通常使用运动恢复结构(SfM)工具(如 COLMAP)估计每张图像的相机位姿,并计算场景的近远平面边界。图像像素被视为训练样本,每条光线产生一个颜色监督。

训练过程

  1. 批量生成光线:随机从训练图像中抽取一批像素,计算与之对应的世界坐标系光线。
  2. 分层采样:在光线上采样粗点 N_c 和细点 N_f
  3. 网络查询:对每个采样点计算位置编码,输入 MLP 获取密度与颜色。
  4. 体积渲染:按离散公式合成像素颜色。
  5. 损失计算与反向传播:计算粗网络和精细网络输出的均方误差之和,更新 MLP 参数。

经过数小时的训练(通常 100k~300k 迭代),模型便能收敛,可从任意新视角生成图像。

注意事项

  • 输入规范化:将场景平移缩放到立方体空间内,位置坐标最好在 [-1, 1] 之间。
  • 背景处理:NeRF 密度对远距离天空等区域易产生半透明伪影,可使用背景模型或在损失中添加稀疏性正则。
  • 视角依赖:方向输入只在颜色分支加入,保证密度与视角无关,有助于几何的一致性。

架构解析与细节

原始 NeRF MLP 结构如下:

  • 输入层:位置 x 经位置编码后的 60 维向量(L=10 → 60 维)。
  • 密度分支:8 层全连接,每层 256 单元,每层后接 ReLU,第 5 层将特征与编码后的位置残差连接。
  • 密度输出:该分支输出标量密度 σ 和一个 256 维特征向量。
  • 方向联合:将视角方向编码后的 24 维向量(L=4 → 24 维)与特征向量拼接,传入后续全连接层。
  • 颜色分支:一层 128 单元全连接 + ReLU,最后输出 3 维 RGB 颜色(经 sigmoid 激活)。

这一设计确保了:

  • 密度仅由位置决定。
  • 外观由位置和方向共同决定。
  • 跳跃连接缓解梯度消失,帮助恢复细节。

为什么 NeRF 如此有效

  1. 连续表示:消除了体素离散化,场景能呈现任意分辨率。
  2. 隐式正则:MLP 偏向于学习平滑函数,而位置编码为该平滑先验提供了拟合高频的途径,两者组合实现了精美的几何与纹理重建。
  3. 可微渲染:端到端方式,直接从图像信号学习 3D 结构,无需深度数据或 3D 标注。
  4. 高效采样:分层采样使模型集中注意力于物体表面,渲染质量高且相对样本量小。

NeRF 的局限与挑战

尽管效果惊人,原始 NeRF 仍有若干限制,为后续变体提供了改进方向:

  • 推理速度慢:每帧需要查询数百万个采样点,实时渲染困难。
  • 训练时间长:每个场景需单独训练数小时,无泛化能力。
  • 动态场景受限:只能处理静态场景,任何微小移动都会导致模糊。
  • 对相机位姿敏感:错误的内外参会导致训练失败。
  • 无多尺度抗锯齿:单条光线渲染可能引入混叠。

经典变体与进化方向

1. 加速推理:Instant NGP

引入多分辨率哈希编码和高效的小型 MLP,将渲染速度提升数个数量级,可在几秒内训练、实时渲染,同时保持极高保真度。

2. 可泛化 NeRF:PixelNeRF、IBRNet

利用图像特征作为条件,使模型跨场景泛化,仅需少量几张图像即可推理出新视图。

3. 无界场景:Mip-NeRF 360

用圆锥台体采样代替光线采样,抗混叠并自然处理背景;结合收缩函数适应无界场景。

4. 动态场景:D-NeRF、HyperNeRF

将变形场与规范 NeRF 结合,处理非刚性运动;HyperNeRF 利用高维隐空间模拟拓扑变形。

5. 表面重建强化:NeuS、VolSDF

通过将有符号距离函数(SDF)融入体积渲染,从 NeRF 恢复高精度表面,适用于需要完整网格提取的应用。

6. 快速编辑与分解:NeRF-W、Panoptic NeRF

解除光照、外观与几何的耦合,允许对场景进行单独编辑和重光照。

实践建议

若你想自己实现 NeRF,可参考如下流程:

  • 框架选择:PyTorch / JAX 均可,使用自动微分方便体积渲染求导。
  • 数据:选用经典合成数据集(如 Lego、Ship)测试,或自采照片用 COLMAP 估计位姿。
  • 超参数:初始学习率 5e-4,随迭代指数衰减;每条光线粗采样 64 个点,精细采样 128 个点;位置编码 L=10,方向编码 L=4。
  • 评估:计算 PSNR、SSIM、LPIPS,并与真实图像对比。

总结

神经辐射场通过将场景建模为一个连续的 5D 函数,并利用可微体积渲染直接从多视角图像学习,实现了前所未有的新视图合成质量。它的核心在于巧妙分离几何与外观、引入位置编码以恢复高频细节,以及通过分层采样高效分配计算资源。尽管原始 NeRF 存在速度与泛化性等短板,但后续研究已大幅推进了这些方面,使得 NeRF 成为三维视觉和图形学领域内一个持续活跃且充满潜力的基础技术。

本教程梳理了 NeRF 的原理脉络,希望对你的深入理解和实际应用有所帮助。如果你渴望继续探索,可以尝试阅读 Mip-NeRF、Instant NGP 等论文,并在小规模数据上复现和体会这一方法的力量。