1. 神经辐射场技术综述:从Plenoxels到Mip-Splatting的演进
神经辐射场(Neural Radiance Fields, NeRF)作为近年来计算机视觉和图形学领域的重要突破,彻底改变了我们对3D场景表示和渲染的认知。这项技术通过将场景编码为神经网络权重,实现了前所未有的视角合成质量。然而,传统NeRF方法存在训练时间长、计算资源消耗大等固有缺陷,促使研究者们不断探索更高效的替代方案。
本文将深入剖析五种具有代表性的NeRF改进方法:Plenoxels、NeuS、InstantNGP、Mip-NeRF和Mip-Splatting。每种方法都针对NeRF的特定瓶颈提出了创新解决方案,从不同角度推动了神经渲染技术的发展。我们将重点解析这些方法的核心思想、技术实现细节以及它们之间的传承关系,帮助读者全面把握神经辐射场领域的最新进展。
特别提示:理解这些方法需要对传统NeRF有基本认识。建议不熟悉NeRF的读者先了解其基本原理——即使用多层感知机(MLP)建模5D辐射场(3D空间坐标+2D视角方向),通过体渲染积分生成新视角图像。
2. Plenoxels:无神经网络的辐射场表示
2.1 体素网格与球谐函数
Plenoxels的核心创新在于完全摒弃了神经网络,转而采用稀疏3D体素网格存储场景信息。每个体素节点存储两个关键参数:
- σ:体素密度(不透明度)
- 球谐系数:用于视角相关的颜色表示
对于空间中任意采样点,通过三线性插值计算其σ和颜色:
- 定位采样点所在的体素单元
- 找到该单元的8个顶点
- 根据采样点与各顶点的距离权重进行插值
球谐函数选择方面,Plenoxels使用2阶球谐展开(每个颜色通道9个系数),在表达能力和存储效率间取得良好平衡。下表展示了不同插值方法和网格分辨率的性能对比:
| 方法 | 分辨率 | PSNR ↑ | SSIM ↑ | LPIPS ↓ |
|---|---|---|---|---|
| 三线性插值 | 256³ | 30.57 | 0.950 | 0.065 |
| 三线性插值 | 128³ | 28.46 | 0.926 | 0.100 |
| 最近邻插值 | 256³ | 27.17 | 0.914 | 0.119 |
| 最近邻插值 | 128³ | 23.73 | 0.866 | 0.176 |
实验数据清晰表明:三线性插值优于最近邻插值,而更高分辨率带来质量提升但增加计算负担。
2.2 优化策略与正则化技术
Plenoxels采用了两阶段优化策略:
-
由粗到细的网格上采样:
- 初始使用较低分辨率网格(如128³)
- 训练收敛后对网格进行细分(每个体素分裂为8个子体素)
- 新体素值通过三线性插值初始化
- 重复此过程直至目标分辨率
-
自适应剪枝与膨胀操作:
- 基于体素重要性进行剪枝:$T_i(1-\exp(-σ_iδ_i))$ < 阈值
- 膨胀操作保留边界体素,避免上采样时的插值问题
- 特别处理外层体素,防止裁剪影响场景完整性
为防止优化过程中出现伪影,Plenoxels引入了全变分(TV)正则化:
$$
\begin{aligned}
\mathcal{L} &= \mathcal{L}{recon} + \lambda\mathcal{L}{TV} \
\mathcal{L} &= \frac{1}{|\mathcal{R}|}\sum_{\mathbf{r}\in\mathcal{R}}||C(\mathbf{r})-\hat{C}(\mathbf{r})||2^2 \
\mathcal{L} &= \frac{1}{|\mathcal{V}|}\sum_{\mathbf{v}\in\mathcal{V}}\sum_{d\in[D]}\sqrt{\Delta_x^2(\mathbf{v},d)+\Delta_y^2(\mathbf{v},d)+\Delta_z^2(\mathbf{v},d)}
\end{aligned}
$$
其中$\Delta_x^2$表示相邻体素在d维度参数的平方差。TV正则化强制相邻体素参数平滑变化,有效抑制了训练视角导致的失真问题。
对于无界场景,Plenoxels借鉴NeRF++的多球体表示法:
- 内部场景缩放到单位球体内
- 外部使用64层球壳,最外层接近无限远
- 外部区域采用0阶球谐(仅RGB值)
- 通过ERP投影实现背景的三线性插值
3. NeuS:基于SDF的神经隐式表面重建
3.1 有符号距离场表示
NeuS将场景表示为有符号距离场(SDF):
$$
f:\mathbb{R}^3 \rightarrow \mathbb{R}
$$
其中$f(\mathbf{x})$表示点$\mathbf{x}$到最近表面的距离(内部为负,外部为正)。表面定义为零水平集:
$$
\mathcal{S} = {\mathbf{x} \in \mathbb{R}^3 | f(\mathbf{x}) = 0}
$$
与传统NeRF的密度场不同,SDF具有明确的几何意义,更适合表面重建任务。NeuS的关键创新在于设计了新的体渲染权重函数,使SDF的零水平集自然对应重建表面。
3.2 基于SDF的体渲染改进
NeuS分析了传统方法的局限性:
- 表面渲染方法:仅考虑射线与表面的单个交点,无法处理复杂结构
- 经典体渲染:优化密度场难以提取高质量表面
NeuS提出权重函数$w(t)$应满足:
- 无偏性:当$f(\mathbf{p}(t))=0$时,$w(t)$达到峰值
- 遮挡感知:相同SDF值时,近点权重大于远点
通过数学推导,NeuS得到改进的密度表示:
$$
\rho(t) = \max\left(\frac{-\frac{d\Phi_s}{dt}(f(\mathbf{p}(t)))}{\Phi_s(f(\mathbf{p}(t)))}, 0\right)
$$
其中$\Phi_s(x) = (1+e^{-sx})^{-1}$是sigmoid函数,参数$s$控制表面锐度。
3.3 训练目标与实现细节
NeuS的损失函数包含三项:
$$
\mathcal{L} = \mathcal{L}{color} + \lambda\mathcal{L} + \beta\mathcal{L}_{mask}
$$
- 颜色损失$\mathcal{L}_{color}$:渲染图像与真实图像的L1差异
- 正则化损失$\mathcal{L}_{reg}$:强制SDF梯度模长为1,保证几何平滑性
- 掩码损失$\mathcal{L}_{mask}$:使用交叉熵监督前景/背景分割
实际训练中,NeuS采用与NeRF类似的分层采样策略,但在表面附近增加采样密度。网络架构方面,使用两个MLP分别预测SDF和颜色特征,通过可微渲染实现端到端训练。
4. InstantNGP:多分辨率哈希编码加速
4.1 哈希编码原理
InstantNGP的核心创新是多分辨率哈希编码:
- 构建L层(通常16层)不同分辨率的3D网格
- 每层网格顶点通过哈希函数映射到特征表
- 查询时进行三线性插值获取多尺度特征
- 拼接所有层级特征后送入小型MLP
哈希函数设计为:
$$
h(\mathbf{x}) = \left(\bigoplus_{i=1}^3 x_i\pi_i\right) \mod T
$$
其中$\pi_1=1$, $\pi_2=2654435761$, $\pi_3=805459861$为精心选择的大质数。
4.2 哈希冲突处理
当网格分辨率较高时,不同顶点可能映射到同一哈希槽(冲突)。InstantNGP的解决方案:
- 多分辨率补偿:冲突在某一层级发生,其他层级仍可区分
- 梯度主导:重要点(表面附近)的梯度自然主导优化过程
实验表明,即使设置较小的哈希表(如$T=2^{19}$),也能保持高质量重建。下表展示了典型参数配置:
| 参数 | 符号 | 典型值 |
|---|---|---|
| 层级数 | L | 16 |
| 哈希表大小 | T | $2^{14}$-$2^{24}$ |
| 特征维度 | F | 2 |
| 最粗分辨率 | $N_{min}$ | 16 |
| 最细分辨率 | $N_{max}$ | 512-524288 |
5. Mip-NeRF:抗锯齿的多尺度表示
5.1 圆锥追踪与积分位置编码
Mip-NeRF针对NeRF的锯齿问题提出改进:
- 将光线变为圆锥台,考虑像素实际覆盖区域
- 推导积分位置编码(IPE),自动抑制高频成分
圆锥参数计算:
- 半径:$r = \text{像素尺寸} \times 2\sqrt{2}$
- 圆台体积积分近似为高斯分布:
$$
\mu_t = \frac{t_0+t_1}{2}, \quad \sigma_t^2 = \frac{(t_1-t_0)^2}{12}
$$
5.2 位置编码改进
传统NeRF的位置编码直接应用于点坐标,而Mip-NeRF计算期望编码:
$$
\gamma^*(\mathbf{o},\mathbf{d},\dot{r},t_0,t_1) = \frac{\int \gamma(\mathbf{x})F(\mathbf{x},\mathbf{o},\mathbf{d},\dot{r},t_0,t_1)d\mathbf{x}}{\int F(\mathbf{x},\mathbf{o},\mathbf{d},\dot{r},t_0,t_1)d\mathbf{x}}
$$
通过高斯近似和线性变换,得到闭式解:
$$
\gamma(\boldsymbol{\mu},\boldsymbol{\Sigma}) = \begin{bmatrix}
\sin(\boldsymbol{\mu}\gamma) \circ \exp(-(1/2)\text{diag}(\boldsymbol{\Sigma}\gamma)) \
\cos(\boldsymbol{\mu}\gamma) \circ \exp(-(1/2)\text{diag}(\boldsymbol{\Sigma}\gamma))
\end{bmatrix}
$$
这种编码自动衰减高频成分,有效防止锯齿产生。
6. 技术对比与演进脉络
通过分析这五种方法,我们可以梳理出神经辐射场技术的三条改进路径:
-
表示效率提升:
- Plenoxels:显式体素网格
- InstantNGP:哈希编码特征
- 共同点:减少对MLP的依赖,加速训练
-
几何重建改进:
- NeuS:引入SDF表示
- 核心贡献:改进体渲染权重函数
-
渲染质量优化:
- Mip-NeRF:抗锯齿处理
- 关键技术:积分位置编码
这些方法不是相互排斥的,许多最新研究正尝试将它们有机结合。例如,将InstantNGP的哈希编码与NeuS的SDF表示结合,可以同时实现快速训练和精确几何重建。
在实际应用中,方法选择需权衡:
- 训练速度:Plenoxels/InstantNGP > NeRF
- 渲染质量:Mip-NeRF > NeRF
- 几何精度:NeuS > NeRF
- 内存消耗:Plenoxels > InstantNGP
7. 未来展望与实用建议
从这些技术的演进中,我们可以预见几个发展方向:
- 动态场景建模:现有方法主要处理静态场景,动态扩展是重要前沿
- 硬件协同设计:专用加速架构(如光线追踪硬件)将进一步提升实时性
- 数据效率提升:减少训练视图需求,拓宽应用场景
对于实践者,我的建议是:
- 快速原型开发首选InstantNGP,5分钟训练令人印象深刻
- 需要精确几何时考虑NeuS,但训练时间较长
- 抗锯齿需求高的场景选择Mip-NeRF变体
- 资源受限环境可尝试Plenoxels,但要注意内存消耗
神经辐射场技术仍在快速发展,本文讨论的方法只是这个激动人心领域的冰山一角。理解这些基础技术的设计思想和实现细节,将帮助我们更好地把握未来创新方向,开发出更强大的视觉计算系统。