NeRF基础知识点和研究方向

作者 | 乱想  编辑 | 汽车人

原文链接:https://zhuanlan.zhihu.com/p/622380174?

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【NeRF】技术交流群

NeRF(Neural Radiance Field)即神经辐射场

要解决的主要问题:从图像中得到三维模型

什么是三维模型?

抽象来说,三维模型主要分为形状(shape)和外观(appearance),外观又可以粗略分为材质(material)和光照(lighting),在我们得到这些基础信息后,我们只需要经过一定的渲染算法,就能够得到图像。这个从模型到图像的正向过程我们就称之为渲染(rendering),而从图像得到模型这个逆向过程,我们称为反渲染(Inverse rendering)。

3d59792b8b8cf0c480c07bdf91790c2e.png

那么显而易见,我们从模型得到渲染的这一过程,我们是通过一个渲染方程来完成的,相当于我们将一系列的参数输入这个渲染方程,最终渲染出的图片就是我们得到的解。

但我们是否可以根据这个方程的解来反向推导出初始参数呢?这就是NeRF要解决的问题,即从图像中得到模型的信息。我们先逐一介绍NeRF的表征方法。

形状的表示法:

主流的表示法有以下四种,即网格(Mesh),点云(Point Cloud),占据场(Occupancy field),有向距离场(Signed distance field)。

44868d4090c74e72298e1061d6982cd8.png

当然,还有一些表示法,例如体素(voxel),多视图等等,不过多罗列在此,有兴趣可以自行查阅相关资料。

NeRF使用的形状表征方式叫soft shape,即从一片什么都没有的三维空间中,通过图像的需要逐步的创建三维物体。NeRF是在一条Ray上分出许多点,如下图所示:

eff468726a3f6fa7a3e518c9da508f1b.png

这也是NeRF能从一众神经网络方法中脱颖而出的关键之一——以往的神经网络重建三维模型往往采用的是hard geometry而非soft geometry

用soft的方法有两大好处

  1. 不需要使用对象分割掩码(object segmentation masks)

  2. 没有边界不连续的(boundary discontinuity)问题,这意味着更易于做可微渲染

当然也有一些缺点,例如渲染成本高,编辑困难等等

对这种方法感兴趣的小伙伴可以自行阅读下列论文:

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

Sun C , Sun M , Chen H T . Direct Voxel Grid Optimization: Super-fast Convergence for Radiance Fields Reconstruction[C]// 2021.

外观的表示法:

如下图所示,最常见的肯定还是材质纹理贴图+环境光照这种表示法,这种方法易于编辑修改,在渲染工作中用途十分广泛。但缺点是表示方法十分繁琐,不仅要对贴图进行映射,还分不同的表面对不同的光线进行求交。

然后就是辐射场(Radiance Field)或叫表面光场(Surface light filed),这种方法给出每个表面点(x,y,z)处不同的观察角度(θ,φ)的颜色(r,g,b)。用这种方式可以很方便的描述物体表面的颜色,反射,和阴影等效果。但缺点是不易于修改和编辑。

有兴趣的小伙伴可以参考下述论文:

Wood D N ,Azuma D I ,Aldinger K , et al. Surface light fields for 3D photography[C]// SIGGRAPH conference. 2000.

8114a520179f577c74f9300591810492.png

综合两种方式各自的优缺点,NeRF最终选择使用的是第二种表示方式。

渲染的表示法:

因为NeRF的输入图片往往是真实的照片等等,因此我们主要需要了解到的渲染方法就是光线追踪(Ray tracing)了,光线追踪方法的具体细节我不在这里展开阐述,有兴趣的小伙伴可以移步到我的另一篇文章查看

https://zhuanlan.zhihu.com/p/618627358

以上三个部分,就是我们使用nerf进行反渲染需要用到的表征方法

接下来会介绍一下NeRF中有关神经网络的部分:

我们可以把每张图片都看作是一个函数,比如映射成颜色的函数,映射成是否occupy的函数,映射成光照密度(density)的函数等等。这些函数都可以用一个神经网络去表示。

但问题是神经网络表示的是有偏的(bias),通过神经网络可能无法得到高质量的结果,如下图所示,它更偏向于得到光滑(smooth)的结果,但我们期待的是得到锐利(sharp)的结果。因此NeRF提出了可以将图片映射成一种傅里叶特征(Fourier features)的函数,即用cos,sin的表示。下图可以看出来,结果相较之前有十分明显的提升。

我们把这种神经网络表示信号的方式称为神经场(Neural Fields),这种表示方式有三大好处

  1. 每个三维模型大约只需要10MB就可以表示,利于传输

  2. 场景不需要离散化(discretized)

  3. 更加灵活且易于优化:例如在正则化方面更方便,泛化能力更强

09546e467000169c3b9faa32d6cf736a.png

接下来介绍五类NeRF的拍摄场景,如下图所示:

  1. 物体在中央,相机在四周拍摄,往往用于重建主体

  2. 相机方向固定,在小范围移动

  3. 类似全景图拍摄,相机在中间,朝各个方向拍摄,通常用于重建背景

  4. 在固定空间内随机方向和分布拍摄

  5. 是1和3的结合,既重建物体主体,又重建背景

06b4e1f1f2db14dd265b36f7bdd83128.png

NeRF主要需要解决的问题就是,在空间内重建近景时远景会模糊,反之重建远景的时候近景会模糊,我们期待得到在远处和近处都能重建出清晰的结果。

为了解决这一问题,NeRF++方法提出了一种解决方案,即将NeRF进行分解和组合,在近景(Foreground)和远景(Background)处都分别使用一个NeRF来进行表征,最后再组合(combined)到一起,如下图所示:

3a10fcea1bcc930a4481debddafc5a06.png

这里就用到了上文提到的第五种拍摄场景了,最终得到的效果也是十分不错的,如下图所示:

055a9568b688dbb0bac492da17d1b26f.png

对具体细节感兴趣的小伙伴可以阅读下列论文:

Zhang K , Riegler G , Snavely N , et al. NeRF++: Analyzing and Improving Neural Radiance Fields[J]. 2020.

接下来介绍NeRF的抗锯齿(anti-aliasing)问题:

抗锯齿问题是图形学中涉及到的经典的问题,即因为采样率问题导致图片走样的问题,因此NeRF也需要进行反走样的处理。

但是我们又不希望如传统NeRF那样通过在低分辨率下对结果进行降采样的方法抗锯齿,影响到高分辨率下的图像质量导致PSNR降低。因此MipNeRF采用了Positional Encoding的方式来将图像映射为sin,cos表征的傅里叶特征。如下图所示:

721358dc43f07bdc1655588f9296e03f.png

同时因为在低分辨率下的频谱很高,但采样频率不够高,不满足奈奎斯特采样定理,因此在MipNeRF中引入了一个低通滤波器(lowpass-filter),即对傅里叶函数进行低通的滤波,这个滤波器的大小取决于pixel的大小。

想要学习详细细节的可以查阅以下论文:

Jonathan T. Barron, Ben Mildenhall, Matthew Tancik, Peter Hedman, Ricardo Martin-Brualla, and Pratul P. Srinivasan. Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields. In Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV), October 2021.

接下来介绍NeRF的可编辑(editable)问题:

使用NeRF技术可以将现实物体进行数字化,但在数字化的世界中,例如在VR/AR领域中,我们往往需要对三维物体进行进一步的编辑,例如编辑光照,编辑材质,甚至进行风格化或艺术化创作,这一问题一直是NeRF需要解决的。但是前文提到,NeRF采用的三维形状表征方式是不适用于编辑的,因此我们期待可以将其转化为易于编辑修改的Mesh进行表征。目前,一种名为IRON的神经反渲染管道被提出,它可以在光度图像上运行,并以三角形网格和材质纹理的格式输出高质量的3D内容,这些内容可以部署到现有的图形管道中。如下图所示:

4d2ffc9a0ddcfad0cc3c14d3dc7c389a.png

RION优化过程中采用了神经表示来表示几何形状和材料,让三维物体更加灵活和紧凑,并同时IRON优化了SDF(有向距离场):首先,使用体积辐射场方法进行优化,以恢复正确的拓扑结构,然后使用基于物理的边缘感知表面渲染进行进一步优化,以改善几何形状的细化和材料和照明的分离。

具体细节可以在arxiv查阅下列论文:

IRON: Inverse Rendering by Optimizing Neural SDFs and Materials from Photometric Images.

到今天为止对于NeRF的进一步研究仍旧十分火热,我们还面临着风格化的挑战,自动驾驶的挑战等等,相信在不远的未来,NeRF这一框架下能催生出更多有意思的技术,并且拥有更广阔的应用前景。

最后推荐一个学习NeRF的链接,都是顶会论文的作者在里面分享课程:

https://www.shenlanxueyuan.com/course/504

视频课程来了!

自动驾驶之心为大家汇集了毫米波雷达视觉融合、高精地图、BEV感知、传感器标定、传感器部署、自动驾驶协同感知、语义分割、自动驾驶仿真、L4感知、决策规划、轨迹预测等多个方向学习视频,欢迎大家自取(扫码进入学习)

3541f3480550ab04e872dbc28749e735.png

(扫码学习最新视频)

国内首个自动驾驶学习社区

近1000人的交流社区,和20+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、Occpuancy、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

0b5705df27116a1fa80ac0cd83fe4642.jpeg

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向;

75c673df99f28877651dbdcc68ad042c.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值