第一部分 NeRF入门
1 NeRF简介 2
1.1 何谓NeRF 2
1.1.1 光栅化渲染与可微渲染 3
1.1.2 人工建模与自动建模 4
1.1.3 离散表示法与连续表示法 5
1.2 三维表达方式演化史与对比 7
1.2.1 点云 7
1.2.2 三维网格 8
1.2.3 体素网格 9
1.2.4 占据网络 10
1.2.5 NeRF 11
1.3 NeRF的行业现状和推动者 12
1.3.1 国外主要实验室 12
1.3.2 国内主要实验室 14
1.4 如何阅读本书 15
1.4.1 本书的结构 15
1.4.2 本书面向的读者 16
1.4.3 代码要求 16
1.4.4 写作风格 17
2 NeRF基础知识 18
2.1 三维空间基础 18
2.1.1 坐标系、点与向量 18
2.1.2 刚体运动的欧氏变换 22
2.1.3 变换矩阵与齐次坐标 24
2.1.4 四元数 25
2.1.5 小结 26
2.2 三维视觉与图形学基础 27
2.2.1 相机模型 27
2.2.2 辐射测量基础 31
2.2.3 光源 33
2.2.4 简单材质建模与着色 34
2.2.5 复杂材质建模与着色 38
2.2.6 光线追踪 40
2.3 深度学习基础 42
2.3.1 神经网络基础 44
2.3.2 基于神经网络学习的核心 45
2.3.3 小结 50
2.4 质量评价方法基础 50
2.4.1 二维平面空间质量评价 50
2.4.2 三维立体空间质量评价 52
2.5 总结 53
3 NeRF的技术细节 54
3.1 NeRF解决的问题 54
3.1.1 辐射场 55
3.1.2 神经辐射场 55
3.2 小试牛刀:NeRF原理介绍与代码实现 57
3.2.1 数据准备 57
3.2.2 环境准备 58
3.2.3 数据加载 60
3.2.4 生成射线 64
3.2.5 位置编码 66
3.2.6 MLP的结构 68
3.2.7 分层采样 72
3.2.8 体渲染技术 76
3.2.9 射线渲染 78
3.2.10 训练过程 81
3.2.11 模型渲染过程 85
3.2.12 小结 86
3.3 NeRF的开源项目:nerfstudio 87
3.3.1 nerfstudio的安装 88
3.3.2 nerfstudio的架构 90
3.3.3 nerfstudio的运行方法 92
3.3.4 nerfstudio的调试方法 96
3.3.5 整合自定义的算法模型 99
3.3.6 小结 103
3.4 NeRF常用的数据集 104
3.4.1 公开的数据集 104
3.4.2 构造自定义的数据集 113
3.5 总结 113
第二部分 NeRF进阶探索
4 优化NeRF的生成与渲染速度 115
4.1 基于多MLP的加速方法 116
4.1.1 kiloNeRF的架构 116
4.1.2 采样优化方法加速训练和推理 117
4.1.3 蒸馏方法提升重建质量 118
4.2 取代神经网络的方法 119
4.2.1 PlenOctrees 119
4.2.2 Plenoxels 124
4.3 体素网格与MLP混合表达的方法 126
4.3.1 DVGO场景表达方法 126
4.3.2 DVGO快速优化方法 128
4.4 基于多分辨率网格的速度提升方法 130
4.4.1 多分辨率网格表达方法 130
4.4.2 哈希存储 131
4.4.3 Instant-NGP的实现 132
4.5 基于张量分解的速度提升方法 133
4.5.1 张量分解方法 133
4.5.2 基于张量分解方法的神经场TensoRF 135
4.5.3 TensoRF的实现 136
4.6 基于烘焙方法的超实时渲染方法 136
4.6.1 开山之作:SNeRG 137
4.6.2 进一步优化的MERF 141
4.6.3 支持超高速渲染的MobileNeRF 143
4.7 NeRF结合点云的速度提升方法 148
4.7.1 Point-NeRF场景表达方法 149
4.7.2 Point-NeRF神经点云的重建方法 149
4.7.3 非Point-NeRF生成点云的优化方法 150
4.8 基于硬件的NeRF加速的方法 151
4.8.1 当前NeRF训练算法的性能分析 152
4.8.2 Instant-3D算法的设计 153
4.8.3 Instant-3D硬件加速器的设计 154
4.8.4 性能结果 155
4.9 总结 155
5 提升NeRF的生成与渲染质量 157
5.1 反走样类提升方法 157
5.1.1 反走样的开山之作Mip-NeRF 158
5.1.2 应对无界场景锯齿效应的Mip-NeRF360 167
5.1.3 快速反走样算法Zip-NeRF 171
5.1.4 基于三平面的反走样算法Tri-MipRF 174
5.2 提升几何重建质量的方法 177
5.2.1 神经隐式曲面生成算法 178
5.2.2 NeuS2:NeuS的加速与动态支持升级 184
5.2.3 重建质量再次升级的Neuralangelo 187
5.3 飘浮物去除方法 189
5.3.1 NeRFBuster:消除场景中的鬼影 190
5.3.2 Bayes’Rays:不确定性即飘浮物 192
5.4 总结 195
6 动态场景NeRF的探索和进展 196
6.1 基于变形场的方法 197
6.1.1 早期基于变形场的动态方法D-NeRF 197
6.1.2 动态自拍场景的方法Nerfies 199
6.1.3 基于超空间的动态场景重建方法HyperNeRF 202
6.2 基于动静分离建模的方法 204
6.2.1 动态场景解耦方法D2NeRF 204
6.2.2 更通用的动静分离方法NeRFPlayer 208
6.3 基于三平面的方法 210
6.3.1 四维空间建模方法Hex-Plane 210
6.3.2 更通用的多维平面建模方法K-Planes 213
6.4 基于流式动态建模的方法 216
6.4.1 OD-NeRF的框架 217
6.4.2 基于投影颜色引导的动态NeRF 218
6.4.3 占据网络的转移与更新 218
6.5 总结 219
7 弱条件NeRF生成 220
7.1 稀疏视角的NeRF重建方法 220
7.1.1 基于策略优化与正则化的生成方法 221
7.1.2 基于图像特征提取的生成方法 224
7.1.3 基于几何监督的生成方法 235
7.2 无相机位姿的NeRF重建方法 242
7.2.1 静态无相机位姿重建方法 242
7.2.2 动态场景弱相机位姿重建方法RoDynRF 245
7.3 弱图像采集条件NeRF重建方法 250
7.3.1 采集图像偏暗的重建方法 250
7.3.2 采集图像模糊的重建方法 255
7.4 总结 257
第三部分 NeRF实践
8 NeRF的其他关键技术 259
8.1 将NeRF导出为三维网格的方法 259
8.1.1 传统导出三维网格模型的方法 260
8.1.2 基于NeRF的三维网格导出方法NeRF2Mesh 261
8.2 NeRF的逆渲染与重照明技术 264
8.2.1 经典的基于NeRF的逆渲染方法Nerfactor 265
8.2.2 TensoIR等后续逆渲染方法 268
8.3 基于文本的NeRF交互式搜索、编辑与风格化 269
8.3.1 使用文本风格化的NeRF-Art 269
8.3.2 基于反馈式学习的InstructNeRF2NeRF 272
8.3.3 使用文本语义搜索三维场景的LERF 273
8.4 NeRF物体分割、去除、修复、操控和合成方法 274
8.4.1 基于少量交互的编辑方法SPIn-NeRF 274
8.4.2 将二维分割提升至三维的方法Panoptic-Lifting 276
8.5 基于NeRF的动画方法 279
8.5.1 基于笼体控制的动画方法CageNeRF 280
8.5.2 基于物理规则的 NeRF 动画方法 282
8.6 NeRF压缩与传输方法 284
8.6.1 ReRF 的设计框架和思路 284
8.6.2 运动估计与残差估计 286
8.6.3 压缩算法的设计与常用表达技巧 286
8.7 NeRF其他方向的一些技术 288
8.7.1 NeRF 用于开放曲面建模的技术 288
8.7.2 使用特殊场景线索引导NeRF 重建的技术 290
8.7.3 其他相关工作 291
8.8 总结 291
9 NeRF的落地与应用场景探索 292
9.1 NeRF在基于拍摄的三维生成中的落地 293
9.2 NeRF在文本生成三维模型中的应用 294
9.2.1 文本生成三维模型的一些关键技术 294
9.2.2 文本生成三维模型的部分产品 298
9.3 NeRF在数字人中的应用 302
9.3.1 NeRF生成数字人的主要技术 303
9.3.2 NeRF生成数字人的应用说明 307
9.4 NeRF在大规模场景中的应用 307
9.4.1 大规模场景 NeRF的建模技术 308
9.4.2 大规模场景 NeRF建模技术的商业产品 314
9.5 NeRF在自动驾驶场景中的应用 315
9.5.1 自动驾驶闭环仿真方案UniSim 316
9.5.2 开源的高度模块化的自动驾驶仿真框架MARS 320
9.5.3 自动动静分离的自动驾驶方案EmerNeRF 323
9.5.4 NeRF在自动驾驶中的现状和未来 324
9.6 NeRF在SLAM中的应用 324
9.6.1 NICE-SLAM的总体架构 325
9.6.2 NICE-SLAM的场景表示方法 326
9.6.3 NICE-SLAM的场景渲染方法 327
9.6.4 NICE-SLAM的地图构建与轨迹跟踪方法 327
9.6.5 另一种SLAM思路NerfBridge 328
9.7 NeRF在电商场景中的应用 329
9.7.1物品展示类的应用 329
9.7.2基于NeRF的虚拟试衣应用 330
9.8 NeRF在游戏中的应用 331
9.9 NeRF在其他领域的应用 332
9.9.1 NeRF在卫星图像中的应用 332
9.9.2 NeRF在医疗中的应用 334
9.9.3 NeRF在动物与植物建模中的应用 336
9.9.4 NeRF在工业监控中的应用 337
9.9.5 NeRF与地理信息系统的结合应用 338
9.10总结 338
10 NeRF面临的问题和突破点 340
10.1 硬件资源消耗的问题 341
10.2 隐式表达的格式标准化 341
10.3 与现有图形管线整合的问题 342
10.4 上下游工具链的问题 343
10.5 NeRF导出几何的质量问题 343
10.6 总结 344
第四部分 3DGS技术
11三维高斯喷溅,开启新纪元 346
11.1 3DGS原理与方法 347
11.1.1 3DGS的建模原理 347
11.1.2 3DGS流程的数学表达 347
11.1.3 3DGS的算法流程 349
11.2 3DGS在重建效果和效率上的提升 351
11.2.1 3DGS混叠效应优化 351
11.2.2 视角适应的渲染方法 354
11.3 3DGS在动态场景中的方法 355
11.3.1 动态3DGS 356
11.3.2 可支持运动编辑的动态稀疏控制高斯喷溅方法 357
11.4 3DGS在弱条件下的重建方法 358
11.4.1 联合学习位姿的CF-3DGS 358
11.4.2 实时的稀疏视角3DGS合成FSGS 359
11.5 3DGS在应用层的进展 360
11.5.1 3DGS在大规模场景和自动驾驶中的进展 360
11.5.2 3DGS在数字人重建方向上的进展 361
11.5.3 3DGS在文本生成三维模型上的进展 362
11.5.4 3DGS后期编辑 364
11.5.5 3DGS在游戏中的应用 365
11.6 总结 365
后记 367