NeRF 与 3D 生成

面向读者:深度学习与生成式模型科研人员 更新日期:2026-05-14 预备知识:神经渲染、体积渲染、扩散模型基础


1. NeRF(Neural Radiance Field)基础

1.1 神经渲染场的基本思想

NeRF 是一种神经渲染方法,它将场景表示为连续的颜色场密度场的隐式函数。给定三维空间位置 和观察方向 (三维单位方向向量,球坐标 只是其二维参数化表达),NeRF 用一个神经网络 来建模辐射场:

其中:

  • 是辐射颜色(RGB)
  • 是体积密度(也称为不透明度)

核心假设:场景被建模为连续的光场,密度 描述了在位置 处存在微小粒子的概率,颜色 描述了从方向 观察时该位置发出的光颜色。

网络架构:原始 NeRF 使用 MLP 网络,通常结构如下:

  1. 输入位置 通过多层全连接层(8层,256通道)输出 和中间特征
  2. 中间特征与观察方向 拼接后,通过额外的全连接层输出颜色

1.2 体积渲染方程(Volume Rendering Equation)

在离散化场景下,给定相机光线 ,其中 是相机原点, 是光线方向,NeRF 的体积渲染方程为:

其中 分别是近平面和远平面距离。

透射比(Transmittance) 表示光线从 路段上没有被任何粒子拦截的概率:

物理直觉

  • 当密度 较高时, 快速衰减,表示光束被遮挡
  • 当密度 时,,表示光线自由通过

离散近似:实际实现中,将光线在 区间划分为 个均匀网格:

其中 是区间长度, 是累积透射比。

更简洁的形式:令 ,则:

这与 alpha blending 的形式完全一致,其中 可视为第 个粒子的不透明度。

1.3 位置编码(Positional Encoding)与多分辨率

问题:MLP 直接输入 难以表达高频变化(如纹理、边缘)。低频偏差是神经网络在高维空间中学习的固有困难。

解决方案:将输入映射到高频空间:

对于位置 和方向 (球坐标 的单位向量表示):

  • 编码为 维向量(原始论文
  • 编码为 维向量(原始论文

直觉理解:位置编码等价于在傅里叶基下展开,能够用低维神经网络表示高频函数。这与核方法中的随机傅里叶特征(Random Fourier Features)有深刻联系。

多分辨率策略:Fourielocs 等工作探索了自适应选择编码频率的方法,对近处物体使用高频编码,对远处物体使用低频编码。


2. NeRF 的训练与优化

2.1 像素级重建损失

NeRF 的监督信号来自多视角图像重建。给定多条相机光线 和对应像素颜色 ,优化目标是均方误差损失

其中 是沿光线采样的体积渲染颜色。

训练流程

  1. 对每个像素,从相机原点发射光线
  2. 在光线沿线采样 个点,查询 NeRF 网络
  3. 体积渲染得到预测颜色
  4. 计算重建损失并反向传播

稀疏视角问题: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 直接处理坐标,大幅加速训练。

哈希编码:将输入坐标 映射到多分辨率网格,通过哈希表存储可学习的特征:

其中 是多层哈希表,三线性插值(三维坐标在 8 个角点间插值,而非简单的两点 lerp)。

关键优势

  • 网格分辨率随维度指数增长: 参数量 vs 内存访问
  • 绕过 MLP 的高频学习困难——网格插值天然提供高频建模能力
  • 端到端可微,梯度可通过哈希表反向传播

性能提升:从数小时缩短到秒级(百万倍加速)。

2.3.2 Mip-NeRF(Mipmap NeRF)

问题:NeRF 在抗锯齿和远距离场景中表现不佳,原因是像素对应的光锥被建模为无限细的光线。

解决方案:引入锥体渲染(Cone Rendering),每个像素对应一个视锥而非光线:

  • 像素 对应相机原点 和主方向 ,加上垂直于 的扩展向量
  • 采样点在椎体内呈高斯分布,用**集成位置编码(Integrated Positional Encoding)**描述

IPE(Integrated Positional Encoding)

对于高斯分布 ,IPE 可解析计算为:

其中 是频率向量(修正:原版无 常数)。


3. 3D 生成模型

3.1 DreamFusion:NeRF + 扩散模型

核心思想:利用预训练 2D 扩散模型作为监督信号,优化随机初始化的 NeRF,实现文本到 3D 的生成。

框架

  1. 随机初始化 NeRF 参数
  2. 从随机视角渲染 NeRF 得到图像
  3. 用扩散模型 评估渲染图像的质量
  4. 通过 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。

方法

  1. 收集大量 3D 物体数据集(如 Objaverse)
  2. 每个物体渲染多个视角的图像
  3. 训练条件扩散模型

其中 是源视角图像, 是相机位姿变化(相对位置和旋转)。

条件输入:将源视角图像和相机参数编码后与噪声拼接,输入 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 点 ,查询三平面特征:

其中 是三个 2D 特征图,通常用 CNN 或 MLP 编码。

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 混合:

其中 是 3D 高斯在 2D 屏幕空间的投影, 为像素坐标。

训练

  • 从随机初始化或 SfM 点云开始
  • 梯度反传更新
  • 定期高斯分裂(大高斯分裂为小高斯)和修剪(删除低不透明度高斯)

与 NeRF 对比

特性NeRFGaussian Splatting
表示类型神经网络(隐式)高斯分布(显式)
渲染速度慢(逐点 MLP)快(GPU splatting)
编辑能力困难容易(逐高斯控制)
训练收敛

3D Gaussian Scene Representation (3DGS)

  • 实时渲染可达 100+ FPS
  • 支持相机姿态估计
  • 是当前 3D 重建的主流方法之一

5. 与扩散模型的深度结合

5.1 Score Distillation Sampling (SDS) 的深入理解

SDS 是连接 3D 表示与扩散模型的核心技术。考虑如下优化目标:

变分下界(ELBO)视角

是 3D 场景的渲染图像, 是文本 条件下的生成分布。SDS 可视为最大化 的变分近似:

通过对 近似并应用拉斯维夫梯度,得到 SDS 梯度。

去噪分数匹配(DSM)视角

扩散模型的训练目标是最小化去噪分数匹配损失:

SDS 梯度是该损失对 的反向传播:

复合损失问题:SDS 存在过饱和、过平滑问题,原因是:

  1. 扩散模型倾向于生成”平均”图像
  2. 梯度方差大,需要小学习率
  3. 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 扩散模型的强先验可迁移
  • 潜在空间压缩维度,提高效率

两阶段方法

  1. 3D 编码器:将 3D 表示(如 NeRF、triplane)编码到潜在空间
  2. 潜在扩散:在 空间训练 DDPM

代表工作

  • latent-diffusion-3D:使用 triplane 作为潜在表示
  • Make-it-3D:两阶段:先估计深度图,再生成 3D

训练目标

其中 是带噪潜在变量, 是条件(如文本)。

5.4 3D 一致性问题与解决

问题描述

  • SDS 优化的 3D 场景常出现Janus 问题(多个人脸)
  • 纹理在不同视角下不一致
  • 几何形状与纹理不匹配

根因分析

  • 2D 扩散模型缺乏 3D 一致性约束
  • 每个视角独立优化,缺乏跨视角监督
  • 相机视角采样不足

解决方案

多视角一致性正则

其中 是 3D 表示(如 NeRF), 是渲染函数。

分数蒸馏多视角(Score Distillation Multi-View)

个视角的 SDS 梯度取平均,增加监督信号。

3D 一致性感知扩散模型

  • MVDiffusion:训练时使用真值多视角图像
  • SyncDreamer:通过 3D 感知特征聚合确保一致性

测试时优化(TTO)

  • 生成初始 3D 后,在测试时进行迭代优化
  • 对渲染图像再经过扩散模型去噪
  • 交替优化几何和纹理

6. 可编辑 3D 生成

6.1 3D 语义编辑(基于语言指令的 3D 编辑)

任务定义:给定 3D 场景和文本编辑指令,生成编辑后的 3D 场景。

输入:原始 3D 场景 + 编辑指令 输出:编辑后的 3D 场景

代表性方法

Instruct-NeRF2NeRF

  1. 使用 NeRF 表示场景
  2. 迭代优化:
    • 渲染当前 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):未编辑属性是否保持

编辑操作类型

  1. 几何编辑:拉伸、旋转、添加/删除部件
  2. 纹理编辑:颜色、材质、图案修改
  3. 语义编辑:改变物体类别(如猫→狗)

代表性工作

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 的前向过程:

训练目标(简化形式):

求梯度:

,链式法则:

去掉常数 得到 SDS 梯度。

C. 高斯 splatting 的投影推导

3D 高斯 投影到视角

  • 视角坐标系下的均值:
  • 协方差:

其中 是透视投影雅可比:

2D 高斯函数:


参考文献

  1. Mildenhall et al. “NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis” ECCV 2020
  2. Poole et al. “DreamFusion: Text-to-3D using 2D Diffusion” ICLR 2023
  3. Liu et al. “Zero-1-to-3: Zero-shot One Image to 3D Object” ICCV 2023
  4. Lin et al. “Magic3D: High-Resolution Text-to-3D Content Creation” CVPR 2023
  5. Kerbl et al. “3D Gaussian Scattering for Real-Time Rendering of Radiance Fields” ACM TOG 2023
  6. Chan et al. “EG3D: Efficient Geometry-Aware 3D Generative Adversarial Networks” CVPR 2022
  7. Müller et al. “Instant Neural Graphics Primitives with a Multiresolution Hash Encoding” ACM TOG 2022
  8. Barron et al. “Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields” ICCV 2021
  9. Haque et al. “Instruct-NeRF2NeRF: Editing 3D Scenes with Instructions” CVPR 2023

本笔记面向科研人员,重点阐述核心算法的数学推导与算法直觉。如有疏漏,欢迎指正。