中国科学技术大学特聘研究员,北京北斗星在线教育科技有限公司创始人,NeRF/3DGS & Beyond社区发起者。曾担任沪江集团技术副总裁兼CCtalk联合创始人和CTO、盛大创新院多媒体院技术负责人、Thomson Corporate Research高级研究员等职务,在计算视觉、图形学、多媒体音视频技术等领域,拥有多年研究与研发经验,所负责业务均达到年10亿元以上营收规模。成功申请十余项国内、国外专利,在国际知名学术会议和期刊上发表数篇论文。
本书系统地阐述了计算机视觉中NeRF(神经辐射场)技术与 3DGS(三维高斯喷溅)技术的背景、原理与细节。为了深入解读这两种技术如何在速度优化、质量优化、动态场景生成、弱条件生成等方面实现技术创新,本书对它们的核心技术问题与解决方案进行了分类讲解。另外,针对NeRF与3DGS在实际应用过程中可能遇到的挑战进行了深入的分析与讨论。本书旨在帮助读者全方位地理解与认识这两种正在快速发展的技术,并为其进一步的学习、研究以及三维视觉应用的实践提供坚实的基础。
中国科学技术大学特聘研究员,北京北斗星在线教育科技有限公司创始人,NeRF/3DGS & Beyond社区发起者。曾担任沪江集团技术副总裁兼CCtalk联合创始人和CTO、盛大创新院多媒体院技术负责人、Thomson Corporate Research高级研究员等职务,在计算视觉、图形学、多媒体音视频技术等领域,拥有多年研究与研发经验,所负责业务均达到年10亿元以上营收规模。成功申请十余项国内、国外专利,在国际知名学术会议和期刊上发表数篇论文。
NeRF&3DGS领域开山之作|构建沉浸式视觉体验的基石|NeRF/3DGS&Beyond社区创始人杨继珩力作|解决新手入门难的问题|线上线下持续交互|配代码库|计算机视觉|三维重建|3D视觉
前 言
为什么写这本书
近年来,NeRF和3DGS作为三维视觉领域的新技术方向,以其独特的优势推动了新视角生成、基于图像的三维重建等视觉基础问题的突破,为该领域带来了重要的进步。当亲眼看到 对沉浸式媒体体验的追求突然变为现实时,笔者感到震撼无比。
随着技术的突破和新机遇的出现,越来越多的研究人员投入技术优化和迭代的工作,使得技术发展速度大幅提升。并且,NeRF和3DGS改变了基础的三维表达方式和逻辑,其影响逐渐扩展到动态场景建模、现实世界仿真、三维场景理解等更加复杂的问题的解决方案中。因此,近年来,在这两个方向上出现了大量新的研究成果,且尚无减速的趋势,对新进入该领域的研究人员、从业人员以及技术爱好者来说,跟上技术的发展变得充满挑战。
笔者一直认为,技术发展的一个核心要素就是该技术背后的研究人员和他们在该研究方向上的长期积累。正是他们在这些技术问题上不断深入思考和沉淀,才赋予了技术强大的生命力,才可能在某些时刻实现技术突破。因此,深度理解和跟进技术,不仅需要了解技术本身,更需要了解从事这些技术的研究人员,以便更好地理解和预判未来的发展。考虑到这些因素,笔者在过去一年的时间里,尝试搜集和归纳行业的进展,并将这些信息开放供大家参考。在这个过程中,笔者结识了大量领域专家和相关实验室人员,并且创建了专业社区(NeRF/3DGS & Beyond),便于交换信息。回头来看,笔者发现这对于从业人员是有一定价值的,也为构建这个社区所做出的贡献感到无比兴奋。然而,随着技术的不断发展和社区的不断成长,笔者发现,NeRF与3DGS的知识体系在不断成熟的同时,也变得日益碎片化。对于大部分实验室或公司中的新手来说,由于缺乏良好的引导,跟上技术发展的步伐变得越来越困难。一次偶然的机会,电子工业出版社的郑柳洁老师联系笔者,询问是否可以在这个方向编写一本入门书,以填补这个领域的空白。起初笔者对此有些犹豫,毕竟个人的精力和能力都是有限的,可能无法抽出足够的时间把这个项目做得完美。然而,在一次与产业决策者的讨论中,笔者发现了非常严重的信息差和认知差,内心无比烦躁,于是决定着手编写这本书。希望通过这本书和社区平台,能够解决新手入门困难和从业人员存在信息差与认知差的问题,让优秀的技术更易于在行业中得到应用。同时,笔者也想借此机会,向所有在这些技术背后默默付出的技术专家表示感谢,正是你们的努力,让这个领域充满了活力和激情。 本书特色本书在满足出版要求的前提下,力求保留涉及的各项工作的原始形态,其中包括但不限于关键的图片、表格及核心代码,这是为了避免读者在后续阅读相关文献及实现代码的过程中需要二次适应。此外,本书尽量对各个发展方向的技术路线进行分类,以利于读者进行结构化思考。值得一提的是,书中提到的很多工作的作者都活跃于社区中,因此,若读者在阅读过程中遇到相关问题,或产生独特的想法,都可以通过社区进行联系和反馈,以获取最准确的信息。期望本书不仅能帮助读者在线下了解行业与技术的最新进展,也可以在线上提供后续的衍生知识,发挥更高的价值。
致谢
本书得以顺利出版,首先应向电子工业出版社的郑柳洁老师和张晶老师表示深深的感谢。若非郑老师的悉心引导和协助,我可能无法鼓起勇气完成本书。她们细致、严谨、专业的工作态度,令我深感敬仰。感谢在本书完成的过程中,为我提供宝贵意见的中国科学技术大学的陈志 波教授、腾讯AI实验室的胡文博博士以及新加坡国立大学的颜志文博士等。 同时,衷心感谢在NeRF/3DGS & Beyond社区中无私奉献的各位朋友和老师们,包括中国科学院的高林老师、清华大学AIR的赵昊老师、自动驾驶资深专家赵京伟老师、贝壳集团资深专家李臻老师、香港中文大学的叶崇杰博士、香港大学的黄熠华博士、上海AI实验室的鲁涛 博士、浙江大学的杨子逸博士、深圳大学的周星辰先生。此外,特别感谢声网的创始人赵斌先生和我的挚友杨松先生,以及所有曾经关心和帮助过我的师长和朋友们。若没有你们的支持和帮助,这一切都没有可能。特别感谢我的爱人刘利霞、我们的孩子杨瓒和杨珝,以及四位宽容的父母。多年来,家庭的支持一直是我前进的基石和动力源泉,你们的陪伴让我战胜了所有的困难,并享受了人生的幸福。我对你们的爱,胜过一切。
第一部分 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