NeRF 与 3D 生成
面向读者:深度学习与生成式模型科研人员 更新日期:2026-05-14 预备知识:神经渲染、体积渲染、扩散模型基础
1. NeRF(Neural Radiance Field)基础
1.1 神经渲染场的基本思想
NeRF 是一种神经渲染方法,它将场景表示为连续的颜色场与密度场的隐式函数。给定三维空间位置
其中:
是辐射颜色(RGB) 是体积密度(也称为不透明度)
核心假设:场景被建模为连续的光场,密度
网络架构:原始 NeRF 使用 MLP 网络,通常结构如下:
- 输入位置
通过多层全连接层(8层,256通道)输出 和中间特征 - 中间特征与观察方向
拼接后,通过额外的全连接层输出颜色
1.2 体积渲染方程(Volume Rendering Equation)
在离散化场景下,给定相机光线
其中
透射比(Transmittance)
物理直觉:
- 当密度
较高时, 快速衰减,表示光束被遮挡 - 当密度
时, ,表示光线自由通过
离散近似:实际实现中,将光线在
其中
更简洁的形式:令
这与 alpha blending 的形式完全一致,其中
1.3 位置编码(Positional Encoding)与多分辨率
问题:MLP 直接输入
解决方案:将输入映射到高频空间:
对于位置
编码为 维向量(原始论文 ) 编码为 维向量(原始论文 )
直觉理解:位置编码等价于在傅里叶基下展开,能够用低维神经网络表示高频函数。这与核方法中的随机傅里叶特征(Random Fourier Features)有深刻联系。
多分辨率策略:Fourielocs 等工作探索了自适应选择编码频率的方法,对近处物体使用高频编码,对远处物体使用低频编码。
2. NeRF 的训练与优化
2.1 像素级重建损失
NeRF 的监督信号来自多视角图像重建。给定多条相机光线
其中
训练流程:
- 对每个像素,从相机原点发射光线
- 在光线沿线采样
个点,查询 NeRF 网络 - 体积渲染得到预测颜色
- 计算重建损失并反向传播
稀疏视角问题:NeRF 通常需要数十到数百张视角的图像进行训练。稀疏视角重建(Few-shot NeRF)是一个重要研究方向。
2.2 层级采样(Hierarchical Sampling)
问题:均匀采样效率低下——大部分空间密度接近零(空旷区域),仅在物体表面附近有高密度区域。
解决方案:采用两阶段粗细采样策略(coarse/fine sampling,沿用同一个 MLP 网络,并非两个独立网络)。
第一阶段(粗采样):沿光线均匀采样
其中权重
第二阶段(细采样):根据
具体实现:对权重归一化得到概率分布,在该分布上进行采样。
数值稳定性:实践中通常对权重进行最大值归一化,防止极端值主导:
2.3 训练效率问题与改进
2.3.1 Instant NGP(Instant Neural Graphics Primitives)
核心创新:用 Multi-Resolution Hash Encoding 替代 MLP 直接处理坐标,大幅加速训练。
哈希编码:将输入坐标
其中
关键优势:
- 网格分辨率随维度指数增长:
参数量 vs 内存访问 - 绕过 MLP 的高频学习困难——网格插值天然提供高频建模能力
- 端到端可微,梯度可通过哈希表反向传播
性能提升:从数小时缩短到秒级(百万倍加速)。
2.3.2 Mip-NeRF(Mipmap NeRF)
问题:NeRF 在抗锯齿和远距离场景中表现不佳,原因是像素对应的光锥被建模为无限细的光线。
解决方案:引入锥体渲染(Cone Rendering),每个像素对应一个视锥而非光线:
- 像素
对应相机原点 和主方向 ,加上垂直于 的扩展向量 - 采样点在椎体内呈高斯分布,用**集成位置编码(Integrated Positional Encoding)**描述
IPE(Integrated Positional Encoding):
对于高斯分布
其中
3. 3D 生成模型
3.1 DreamFusion:NeRF + 扩散模型
核心思想:利用预训练 2D 扩散模型作为监督信号,优化随机初始化的 NeRF,实现文本到 3D 的生成。
框架:
- 随机初始化 NeRF 参数
- 从随机视角渲染 NeRF 得到图像
- 用扩散模型
评估渲染图像的质量 - 通过 SDS Loss 反向传播优化
SDS(Score Distillation Sampling)损失:
其中:
是噪声时间步 是随机噪声 是 DDPM 的调度参数( ) 是权重函数(标准取值为 ,非默认置 1) 是预训练扩散模型预测的噪声
物理直觉:
预测 中的噪声 是朗之万梯度的方向,指向扩散模型认为”更可能”的样本- 通过 chain rule
将该梯度传递到 3D 生成器
核心原理:需要让渲染图像朝着扩散模型预测去噪方向更新,必须是「模型预测噪声 - 真实噪声」,符号反向会导致梯度反向、训练发散。
DreamFusion 流程:
Algorithm: DreamFusion
Input: 文本提示 y, 预训练扩散模型 ε_φ, NeRF 参数 θ
Output: 生成 3D 场景
1. θ ← 随机初始化
2. for iteration = 1 to N do
3. π ← 随机相机视角 (位置 + 方向)
4. g(θ) ← Render(NeRF(θ), π) // 渲染图像
5. t ∼ U(0,1), ε ∼ N(0,I)
6. x_t ← α_t · g(θ) + σ_t · ε
7. ε_φ ← ε_φ(x_t, t, y) // 文本条件
8. ∇_θ ← w(t) · (ε_φ - ε) · ∂g(θ)/∂θ
9. θ ← θ - η · ∇_θ // 梯度下降
10. end for
11. return θ
DreamFusion 的问题:
- Janus 问题:模型对同一物体生成多个正面
- 过度饱和、纹理模糊
- 每样本需要数十分钟优化
3.2 Zero-1-to-3:Novel View Synthesis
核心思想:训练一个条件扩散模型,直接预测新视角图像,而非优化 NeRF。
方法:
- 收集大量 3D 物体数据集(如 Objaverse)
- 每个物体渲染多个视角的图像
- 训练条件扩散模型
其中
条件输入:将源视角图像和相机参数编码后与噪声拼接,输入 U-Net。
应用场景:
- 给定单张图像,生成同一物体的新视角
- 通过新视角一致性实现 3D 重建(如 SparseFusion)
与 DreamFusion 对比:
- Zero-1-to-3 是前馈模型,无需迭代优化
- 但需要大量 3D 数据进行训练
- 泛化能力受限于训练数据分布
3.3 Magic3D:高分辨率 3D 生成
核心创新:两阶段生成框架,结合高分辨率扩散模型。
Stage 1(粗阶段):
- 使用低分辨率扩散模型(64×64)生成 NeRF
- 类似 DreamFusion,通过 SDS 优化
Stage 2(细阶段):
- 将 NeRF 转换为 DMTet(Differentiable Mesh Tetrahedron)表示
- 使用高分辨率扩散模型(512×512)进行纹理优化
DMTet:
- 将 3D 空间划分为四面体网格
- 通过可学习的顶点位置和符号距离场(SDF)表示 mesh
- 完全可微,支持端到端训练
优势:
- 保留 DreamFusion 的通用性(无需 3D 训练数据)
- 生成高分辨率纹理(vs DreamFusion 的模糊输出)
- 显著加速(分钟级 vs 小时级)
4. 3D 表示方法对比
4.1 Voxel(体素)
密集体素:将 3D 空间划分为均匀网格,每个格子存储占用概率或特征向量。
表示容量:
稀疏体素(Sparse Voxel):
- 仅在物体表面附近存储体素
- Octree 结构:非空节点递归细分
- 代表工作:Octree-SCNN、VoxelNet
存储复杂度:
| 分辨率 | 密集体素 | 八叉树(稀疏) |
|---|---|---|
| 262K | ~10K | |
| 16.7M | ~50K | |
| 134M | ~200K |
与 NeRF 对比:体素是离散表示,分辨率受限于内存;NeRF 是连续表示,可任意分辨率渲染。
4.2 Point Cloud(点云)
表示:3D 点集合
处理方法:PointNet 系列
- PointNet:共享 MLP 处理每个点,然后全局池化
- PointNet++:层次化聚合,捕获局部结构
优势:
- 直接处理原始传感器数据(LiDAR、RGB-D)
- 内存效率高(可变点数)
劣势:
- 无拓扑结构(点间无连接)
- 难以表示光滑表面
- 不适合 GPU 加速的光栅化渲染
3D 生成应用:Point-E、Cloud Diffusion
4.3 Mesh(神经网格)
三角网格:由顶点坐标和面索引构成,是计算机图形学的标准表示。
神经网格(Neural Mesh):
- MeshCNN:用图卷积处理 mesh 面片
- NKSR(Neural Kernel Surface Reconstruction):将 NeRF 监督转化为 mesh
Differentiable Mesh Rendering:
- Soft rasterization:可微渲染器,将 mesh 投影为图像
- 梯度可从 2D 图像反向传播到 mesh 顶点
DMTet(Differentiable Tetrahedral Mesh):
- 扩展的 tetrahedron 而非三角形
- 每个顶点的 SDF 值可学习
- 表面通过 marching tetrahedra 算法提取
4.4 Triplane(三平面表示)
核心思想:用三个正交的 2D 特征平面表示 3D 场景。
表示:给定 3D 点
其中
EG3D(Efficient Geometry-Aware 3D GAN):
- 使用 triplane 表示结合 StyleGAN2
- 可控的相机姿态和形状编辑
- 高效渲染:只需三个特征图采样 + MLP 解码
优势:
- 2D 卷积处理 3D 表示,效率高
- 与 2D 生成模型(如 GAN、扩散)兼容性好
- 支持高分辨率(1024×1024+)
劣势:
- 三平面交点处可能存在不一致
- 难以精确表示复杂拓扑
4.5 Gaussian Splatting(3D Gaussian Scatter)
核心思想:用一组 3D 高斯分布表示场景,每个高斯
高斯函数:
属性:
- 颜色
- 不透明度
渲染:通过tile-based splatting,将高斯投影到 2D,排序后 alpha 混合:
其中
训练:
- 从随机初始化或 SfM 点云开始
- 梯度反传更新
- 定期高斯分裂(大高斯分裂为小高斯)和修剪(删除低不透明度高斯)
与 NeRF 对比:
| 特性 | NeRF | Gaussian Splatting |
|---|---|---|
| 表示类型 | 神经网络(隐式) | 高斯分布(显式) |
| 渲染速度 | 慢(逐点 MLP) | 快(GPU splatting) |
| 编辑能力 | 困难 | 容易(逐高斯控制) |
| 训练收敛 | 慢 | 快 |
3D Gaussian Scene Representation (3DGS):
- 实时渲染可达 100+ FPS
- 支持相机姿态估计
- 是当前 3D 重建的主流方法之一
5. 与扩散模型的深度结合
5.1 Score Distillation Sampling (SDS) 的深入理解
SDS 是连接 3D 表示与扩散模型的核心技术。考虑如下优化目标:
变分下界(ELBO)视角:
令
通过对
去噪分数匹配(DSM)视角:
扩散模型的训练目标是最小化去噪分数匹配损失:
SDS 梯度是该损失对
复合损失问题:SDS 存在过饱和、过平滑问题,原因是:
- 扩散模型倾向于生成”平均”图像
- 梯度方差大,需要小学习率
- 2D 扩散先验与 3D 几何一致性冲突
改进方向:
- VSD(Variational Score Distillation):引入 3D 先验分布
,用 KL 散度正则化 - CLD(Consistent Loss Diffusion):添加一致性正则项
- DPM-Solver:使用高阶 ODE 求解器加速采样
5.2 MultiDiffusion:多条件引导的 3D 生成
核心思想:将多个条件的扩散采样过程约束到统一的几何表示上。
方法:
- 从不同视角渲染 3D 场景
- 每个视角对应一个扩散生成过程
- 通过全局优化确保多视角一致性
能量函数:
其中
应用场景:
- 多视角文本控制(“正面是猫,侧面是狮子”)
- 3D 语义编辑(指定不同区域的属性)
5.3 潜在 3D 扩散模型(Latent 3D Diffusion)
核心思想:在潜在空间(latent space)中训练 3D 扩散模型,而非直接处理 3D 数据。
优势:
- 3D 数据标注稀缺且存储成本高
- 2D 扩散模型的强先验可迁移
- 潜在空间压缩维度,提高效率
两阶段方法:
- 3D 编码器:将 3D 表示(如 NeRF、triplane)编码到潜在空间
- 潜在扩散:在
空间训练 DDPM
代表工作:
- latent-diffusion-3D:使用 triplane 作为潜在表示
- Make-it-3D:两阶段:先估计深度图,再生成 3D
训练目标:
其中
5.4 3D 一致性问题与解决
问题描述:
- SDS 优化的 3D 场景常出现Janus 问题(多个人脸)
- 纹理在不同视角下不一致
- 几何形状与纹理不匹配
根因分析:
- 2D 扩散模型缺乏 3D 一致性约束
- 每个视角独立优化,缺乏跨视角监督
- 相机视角采样不足
解决方案:
多视角一致性正则:
其中
分数蒸馏多视角(Score Distillation Multi-View):
对
3D 一致性感知扩散模型:
- MVDiffusion:训练时使用真值多视角图像
- SyncDreamer:通过 3D 感知特征聚合确保一致性
测试时优化(TTO):
- 生成初始 3D 后,在测试时进行迭代优化
- 对渲染图像再经过扩散模型去噪
- 交替优化几何和纹理
6. 可编辑 3D 生成
6.1 3D 语义编辑(基于语言指令的 3D 编辑)
任务定义:给定 3D 场景和文本编辑指令,生成编辑后的 3D 场景。
输入:原始 3D 场景
代表性方法:
Instruct-NeRF2NeRF:
- 使用 NeRF 表示场景
- 迭代优化:
- 渲染当前 NeRF 到 2D 图像
- 用 InstructPix2Pix 编辑 2D 图像
- 用编辑后的图像监督 NeRF 更新
语义编辑的空间对应:
- 3D 场景中的每个点
对应语义属性 ( 为语义类别数) - 通过分割模型或 3D 语义网络估计
损失函数设计:
其中:
保证渲染质量 拉近编辑后场景与目标文本的距离 保持未编辑区域不变
6.2 物理仿真与 3D 生成
问题:生成的几何形状可能违反物理约束(重力、碰撞、连通性)。
物理引导的 3D 生成:
方法一:后验物理优化
- 首先生成几何形状
- 通过物理仿真检测穿透、重叠等问题
- 迭代修复几何
方法二:物理先验集成
- 将物理约束编码到生成过程
- 如 Neural Physics:用可微物理层替代部分网络层
可微物理仿真:
其中
神经物理场(Neural Physics Fields):
- 用神经网络表示物理场(速度场、压力场)
- 端到端可微,支持反向传播
6.3 可编辑性、鲁棒性分析
6.3.1 可编辑性(Editability)
评估指标:
- 局部性(Locality):编辑操作是否精确作用于目标区域
- 一致性(Consistency):编辑后多视角是否一致
- 保真度(Faithfulness):未编辑属性是否保持
编辑操作类型:
- 几何编辑:拉伸、旋转、添加/删除部件
- 纹理编辑:颜色、材质、图案修改
- 语义编辑:改变物体类别(如猫→狗)
代表性工作:
ControlNeRF:
- 加入控制信号(如深度、边缘图)
- 实现条件化的几何编辑
EditableNeRF:
- 将场景分解为不变内容和可编辑内容
- 通过注意力掩码隔离编辑区域
6.3.2 鲁棒性(Robustness)
对抗鲁棒性:
- 3D 生成模型可能受到对抗攻击
- 对输入扰动(如噪声、遮挡)敏感
分布外鲁棒性:
- 训练数据分布与测试分布差异
- 稀有类别的生成质量差
评估方法:
其中
提升鲁棒性的方法:
- 对抗训练(Adversarial Training)
- 数据增强(随机视角、遮挡、噪声)
- 一致性正则(Consistency Regularization)
6.3.3 编辑保真度(Edit Fidelity)
身份保持(Identity Preservation):
其中
属性解耦(Attribute Disentanglement):
好的 3D 编辑系统应能解耦不同属性:
- 几何
纹理 - 姿态
形状 - 身份
表情
因果解耦表示:
独立控制每个因子,实现精确编辑。
7. 数学附录
A. 体积渲染方程的推导
给定光线
:从 到 的透射比 :体积密度 :颜色
光线在
未被拦截且携带颜色到达相机的贡献:
积分得到终颜色:
其中
B. SDS 梯度的详细推导
DDPM 的前向过程:
训练目标(简化形式):
对
令
去掉常数
C. 高斯 splatting 的投影推导
3D 高斯
- 视角坐标系下的均值:
- 协方差:
其中
2D 高斯函数:
参考文献
- Mildenhall et al. “NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis” ECCV 2020
- Poole et al. “DreamFusion: Text-to-3D using 2D Diffusion” ICLR 2023
- Liu et al. “Zero-1-to-3: Zero-shot One Image to 3D Object” ICCV 2023
- Lin et al. “Magic3D: High-Resolution Text-to-3D Content Creation” CVPR 2023
- Kerbl et al. “3D Gaussian Scattering for Real-Time Rendering of Radiance Fields” ACM TOG 2023
- Chan et al. “EG3D: Efficient Geometry-Aware 3D Generative Adversarial Networks” CVPR 2022
- Müller et al. “Instant Neural Graphics Primitives with a Multiresolution Hash Encoding” ACM TOG 2022
- Barron et al. “Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields” ICCV 2021
- Haque et al. “Instruct-NeRF2NeRF: Editing 3D Scenes with Instructions” CVPR 2023
本笔记面向科研人员,重点阐述核心算法的数学推导与算法直觉。如有疏漏,欢迎指正。