NeRF 深入:从 5D 坐标到逼真新视图合成
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_n到t的累积透射率,表示光线未击中任何粒子的概率。
离散化近似
现实中,上述连续积分需要通过分层采样近似。沿光线在近平面 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 使用两阶段采样策略:
- 粗网络(Coarse):在光线上均匀分层采样
N_c个点,计算权重。 - 精细网络(Fine):根据粗网络权重分布进行重要性采样,在密度较高的区域采样更多点
N_f,然后用更精细的点集重新计算颜色。
两个网络都输出颜色和密度,但最终渲染使用精细网络的输出。损失函数同时优化两个网络:
L = Σ_r [ ||Ĉ_c(r) - C_gt(r)||_2^2 + ||Ĉ_f(r) - C_gt(r)||_2^2 ]
这种设计大幅提升了样本效率,避免在空白区域浪费计算。
训练 NeRF:从多视角图像学习
数据准备
NeRF 要求已知的相机内参和外参。通常使用运动恢复结构(SfM)工具(如 COLMAP)估计每张图像的相机位姿,并计算场景的近远平面边界。图像像素被视为训练样本,每条光线产生一个颜色监督。
训练过程
- 批量生成光线:随机从训练图像中抽取一批像素,计算与之对应的世界坐标系光线。
- 分层采样:在光线上采样粗点
N_c和细点N_f。 - 网络查询:对每个采样点计算位置编码,输入 MLP 获取密度与颜色。
- 体积渲染:按离散公式合成像素颜色。
- 损失计算与反向传播:计算粗网络和精细网络输出的均方误差之和,更新 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 如此有效
- 连续表示:消除了体素离散化,场景能呈现任意分辨率。
- 隐式正则:MLP 偏向于学习平滑函数,而位置编码为该平滑先验提供了拟合高频的途径,两者组合实现了精美的几何与纹理重建。
- 可微渲染:端到端方式,直接从图像信号学习 3D 结构,无需深度数据或 3D 标注。
- 高效采样:分层采样使模型集中注意力于物体表面,渲染质量高且相对样本量小。
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 等论文,并在小规模数据上复现和体会这一方法的力量。