网络知识 娱乐 火爆科研圈的三维重建技术:Neural radiance fields (NeRF)

火爆科研圈的三维重建技术:Neural radiance fields (NeRF)

如果说最近两年最火的三维重建技术是什么,相信NeRF[1]是一个绝对绕不过去的名字。这项强到逆天的技术,一经提出,就被众多研究者所重视,对该技术进行深入研究并提出改进已经成为一个热点。仅仅过了不到两年的时间,NeRF及其变种已经成为重建领域的主流。由此可见,NeRF技术出色的实用性。今天,我们就来看一看NeRF是个啥,学习下该方法到底强在哪里。

1. 简介

NeRF全称为Neural Radiance Fields(神经辐射场),是一项利用多目图像重建三维场景的技术。该项目的作者来自于加州大学伯克利分校,Google研究院,以及加州大学圣地亚哥分校。NeRF使用一组多目图作为输入,通过优化一个潜在连续的体素场景方程来得到一个完整的三维场景。该方法使用一个全连接深度网络来表示场景,使用的输入是一个单连通的5D坐标(空间位置x,y,z以及观察视角θ,phi),输出为一个体素场景,可以以任意视角查看,并通过体素渲染技术,生成需要视角的照片。该方法同样支持视频合成。

整体来说,该方法是一个基于体素重建的方法,通过在多幅图片中的五维坐标建立一个由粗到细的对应,进而恢复出原始的三维体素场景。那么接下来,我们就看一下具体的实现。

2. 实现

NeRF大致可以分为三步:1.通过分析照相视角射线,从一组图片来生成一组采样点;2. 将获得的采样点以及与之对应的2D视角方向作为输入,来输出一组颜色和密度(原文中使用的是densities,我的理解应该就是体素表示的一个参数); 3. 利用体素渲染技术,利用之前得到的颜色和密度生成希望看到的任意视角照片。下图显示整个算法的pipeline:

值得注意的是,作者说直接输入5D坐标可能会造成算法不能收敛,在文章中,采用一个基于MLP(多层感知器,一种前向人工神经网络)的位置编码来表示高频函数,并提出一个分层抽样程序来减少用于场景重建的查询次数。

2.1 体素渲染

这里的体素渲染即表示在以某一个视角去观察体素模型的时候,根据视角发射的光线通过追踪累加到图像上,即得到了我们希望获得的指定视角下的渲染结果,其公式表示为:

C表示渲染结果的颜色,r表示为一条射线,射线经过的两端边界,由近到远,表示为tn于tf,sigma表示体素密度参数。由上述公式可以看到,颜色是经过射线的一组以tn和tf为边界的t累加而成的。T(t)表示的是这种累积的透光率。当我们希望从一个给定的视角看向目标场景的时候,其对应的颜色信息C(r)就要从neural radiance field中被重建出来。

文章提出使用正交法来解决。由于MLP需要使用固定的离散位置来查找,不同光线的tn到tf在提速上的长度肯定是不同的,因此文章提出使用分层抽样的方法,从tn到tf选出N个均匀间隔,之后再每个间隔随机算一个做累加:

使用间隔采样,能够表示一个连续的场景表示,因为经过MLP产生的结果是被验证的一个连续的位置表示。通过正交累加规则,基于射线的颜色被估计:

 表示相邻两个样本的距离。这个计算是可微的,并且降低了体素累加的结果,使最终结果更加准确。 

2.2 Neural Radiance Field优化

文章指出,只是通过上述步骤还是不能得到高分辨率渲染结果,如下图:

可以看到,在缺少优化的情况下,图像的高频信息会有损失。因此,作者给出两个提升的方法用来获取高分辨率渲染结果:positional encoding与hierarchical sampling procedure。

Positional encoding

直接使用五维坐标作为输入很难建立高分辨率结果。原因在于Deep learning更倾向于学习低频信息(以卷积神经网络为例,低频信息的学习能力决定了其在目标检测方面的优势,而高频更倾向于表达个性化的信息)。Rahaman [5] 提出使用高频函数将数据映射在一个高维空间中,能够在最终结果中保留更多的高频信息。基于此,NeRF提出利用一个positional encoding [6] 实现对高频信息的保持。网络表示为 ,其中,第一项通过学习获得,第二项表示为: 

注意,第二项分别应用于五维坐标中的x,y,z,并且被归一化到 [-1.1]. 一个类似的应用可以在[6]中看到。这里我觉得就是做了一个傅里叶变换变种,用于防止学习过程中对高频的平滑。因为分离了频段,所以可以保持细节信息。

Hierarchical sampling procedure

很显然,这一部分是为了提高体素渲染效率的。这个让我想起当年做光线追踪时,大家玩烂了的八叉树和包围盒什么的。就是用分级的分区结构来避免重复的渲染计算。整体上,Hierarchical sampling procedure 提出一个由粗到细的结构来训练体素网。首先采样一组位置信息,基于stratied sampling,然后训练一个“粗”网络。在此基础上,再训练一个"细"网络。这里就要重写C颜色积分的公式用于粗网络训练:

 

2.3 一些疑问

当我看完了整个框架,对于作者的基本思路有了一个宏观的看法。该方法基本上是利用体素来假定一个三维场景,之后通过多目图象,重建光线追踪中的射线在体素中的查询并累加颜色,最终渲染出指定视角下的一副结果图。网络做的事情就是需要清楚的学习到这个假定体素结构的一些信息,包括颜色以及密度。

让我产生疑问的地方是,作者提到在初始时,需要一些对应的点的五维坐标作为引导,来训练网络,那么对应点是如何获得的?至少在阅读文章后,我依然比较困惑。另一个比较困惑的是,事实上我们并没办法直接给出一个五维坐标,因为输入图片的视角以及三维坐标我们是不知道的。那么如果以五维坐标的形式作为输入,那输入又是从何而来呢?可以知道的是,我们有一组图,这组图由图像的二维坐标以及RGB值。但是深度信息以及视角信息是不知道的。这一部分还要再认真阅读文献以及相关文章进行确认。

3. 部分改进工作

这里只列出一些被媒体报道的部分改进性工作,分别为:

Plenoxels [2] 报道链接:本科生新算法打败NeRF

Block-NeRF [3] 报道链接: 为了自动驾驶,谷歌用NeRF在虚拟世界中重建了旧金山市_TechWeb

Instant Neural Graphics [4] 报道链接:

不可思议!英伟达新技术训练NeRF模型最快只需5秒,单张RTX 3090实时渲染,已开源_腾讯新闻

基本上这些改进工作都是针对原始的NeRF在网络训练阶段的效率问题。Plenoxels是直接拿掉网络训练,在保留体素渲染方程的前提下,使用一个更简单的模型来替换网络训练部分,以提高效率。Block-NeRF是一个分区方案吗,在超大规模场景重建时,使用合适的分区方式,将多个NeRF场景做组合,使得NeRF能够被用来重建超大规模场景。作者用该工具重建了旧金山。Instant Neural Graphics则是利用一种新的技术来加速NeRF训练。考虑到作者是Nvidia的研究者,该项技术应该使用了更好的并行技术。未来我们将对Instant Neural Graphics做深入的学习,有兴趣的同学可以持续关注我的博客。

4. 总结

NeRF一经提出就被众多学术界于工业界的研究者所重视。相关的改进技术被不断地提出。其对体素渲染方程的使用以及利用网络框架优化三维场景的想法,基本上奠定了未来一段时间三维重建的技术路线。这项技术的一些原理,非常像光线追踪技术。我甚至怀疑作者当初做过光线追踪,然后觉得似乎可以将其用作三维重建中,毕竟利用体素的累积形成指定视点的结果以及分层架构等概念,都跟光线追踪的一些经典技术保持了一致。由于很多工业界研究者已经开始尝试利用该项技术解决三维重建的问题,相信在不远的将来,此项技术将大放异彩,对于元宇宙概念落地,具有极大的帮助。按照科研技术落地的研究周期,一般为5-10年时间。NeRF是2020年提出的技术,那么,至少到2025年,对于该项技术的研究都属于前沿。因此,有志于三维重建技术学习的同学,可以尽早准备,入坑NeRF变种算法研究。

Reference

[1] Mildenhall B, Srinivasan P P, Tancik M, et al. Nerf: Representing scenes as neural radiance fields for view synthesis[C]//European conference on computer vision. Springer, Cham, 2020: 405-421.

[2] Yu A, Fridovich-Keil S, Tancik M, et al. Plenoxels: Radiance Fields without Neural Networks[J]. arXiv preprint arXiv:2112.05131, 2021.

[3] Tancik M, Casser V, Yan X, et al. Block-NeRF: Scalable Large Scene Neural View Synthesis[J]. arXiv preprint arXiv:2202.05263, 2022.

[4] Müller T, Evans A, Schied C, et al. Instant Neural Graphics Primitives with a Multiresolution Hash Encoding[J]. arXiv preprint arXiv:2201.05989, 2022.[]

[5] Rahaman, N., Baratin, A., Arpit, D., et al. On the spectral bias of neural networks. In: ICML (2018)

[6] Vaswani, A., Shazeer, N., Parmar, et al. Attention is all you need. In: NeurIPS (2017)