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

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

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

<think>嗯,用户现在问的是关于NeRF的基本原理。首先,我需要回想一下NeRF是什么。NeRF全称是Neural Radiance Fields,也就是神经辐射场,这是近年来在计算机视觉图形学领域非常热门的一个技术,主要用于三维场景的重建新视角的合成。 用户之前已经询问过机器学习的基础知识,现在转向NeRF,可能是在学习过程中遇到了相关的内容,或者对三维重建、计算机视觉感兴趣。接下来,我需要确定用户对NeRF的了解程度。因为用户直接问基本原理,可能需要从基础讲起,但不需要太深入的技术细节,但要涵盖关键概念流程。 首先,NeRF的核心思想是什么?根据记忆,NeRF使用神经网络来表示三维场景的辐射场,通过输入空间中的位置视角方向,输出颜色密度,然后通过体素渲染技术将这些值合成为二维图像。这样,通过优化神经网络参数,可以重建出高质量的三维场景,并且能够生成任意视角下的图像。 接下来,需要分步骤解释NeRF的原理。可能需要包括输入输出、网络结构、体素渲染、优化过程这几个部分。同时,结合数学公式会更清晰,比如位置编码、体积渲染方程等,但要注意使用用户提到的格式,行内公式用$...$,独立公式用$$...$$。 用户之前的回答中提到了机器学习的各种数学表达式,所以用户可能对数学细节有一定的接受度。但也不能过于复杂,需要保持解释的易懂性。例如,位置编码部分,可以用公式$\gamma(v) = [\sin(2^0 \pi v), \cos(2^0 \pi v), ..., \sin(2^{L-1} \pi v), \cos(2^{L-1} \pi v)]$来说明如何将低维坐标映射到高维空间,以捕捉高频细节。 然后,体素渲染部分需要解释积分过程,即沿着光线采样点,计算每个点的颜色密度,再通过累积得到像素颜色。这里可以提到积分公式,如$C(r) = \sum_{i=1}^N T_i (1 - \exp(-\sigma_i \delta_i)) c_i$,其中$T_i$是透射率,$\sigma_i$是密度,$\delta_i$是步长,$c_i$是颜色。 优化过程需要提到损失函数,通常是渲染后的图像与真实图像之间的均方误差(MSE),即$L = \sum_{r} ||\hat{C}(r) - C(r)||^2$,以及使用梯度下降来调整网络参数。 此外,还要考虑用户可能的深层需求。用户可能不只是了解表面概念,而是希望掌握NeRF为什么有效,或者其创新点在哪里。比如,NeRF通过引入位置编码解决了传统方法在细节捕捉上的不足,或者通过可微分的体素渲染实现了端到端的优化,这些都是关键点。 可能的疑问点包括:为什么需要位置编码?体素渲染传统渲染的区别?如何从多张图片中重建三维场景?这些都需要在解释中简明扼要地提及。 另外,用户之前的问题涉及机器学习,所以可能需要将NeRF与机器学习联系起来,比如说明NeRF属于深度学习在三维重建中的应用,使用神经网络作为场景表示,并通过数据驱动的方式进行优化。 最后,应用部分可以简要提及NeRF在虚拟现实、影视特效等领域的应用,以及当前研究的挑战,如计算成本高、需要大量输入视图等。这样可以让用户对NeRF的实用性局限性有更全面的认识。 总结下来,回答的结构应该是:定义NeRF,核心思想,关键步骤(输入、网络结构、渲染、优化),数学公式,优势与挑战,应用场景。同时保持语言简洁,逻辑清晰,符合用户要求的格式中文回答。</think>#### NeRF(神经辐射场)基本原理分步解析 --- #### 1. **核心定义** NeRF(Neural Radiance Fields,神经辐射场)是一种**基于深度学习的3D场景表示方法**,通过神经网络隐式建模空间中每个点的颜色密度,实现**高质量新视角合成**(Novel View Synthesis)。其核心数学表示为: $$ F_\theta: (x, y, z, \theta, \phi) \rightarrow (c, \sigma) $$ 其中: - 输入为3D坐标$(x, y, z)$观察方向$(\theta, \phi)$(极角与方位角) - 输出为颜色$c=(r,g,b)$密度$\sigma$(反映光线通过该点时的衰减率) --- #### 2. **关键步骤** **(1) 位置编码(Positional Encoding)** 为解决神经网络难以捕捉高频细节的问题,对输入坐标进行高频映射: $$ \gamma(v) = \left[\sin(2^0 \pi v), \cos(2^0 \pi v), ..., \sin(2^{L-1} \pi v), \cos(2^{L-1} \pi v)\right] $$ 其中$L$为编码层数(通常$L=10$),将3D坐标视角方向映射到高维空间。 **(2) 网络架构** - **MLP(多层感知机)**:输入编码后的坐标,输出密度$\sigma$中间特征 - **视角依赖分支**:将中间特征与观察方向结合,输出颜色$c$ *结构示意图*: $$ \text{坐标} \xrightarrow{\gamma} \text{MLP} \rightarrow (\sigma, \text{特征}) \xrightarrow{+ \gamma(\text{方向})} \text{颜色} $$ **(3) 体素渲染(Volume Rendering)** 沿相机光线$r(t) = o + td$采样$N$个点,积分计算像素颜色: $$ C(r) = \sum_{i=1}^N T_i \left(1 - \exp(-\sigma_i \delta_i)\right) c_i $$ 其中: - $T_i = \exp\left(-\sum_{j=1}^{i-1} \sigma_j \delta_j\right)$ 表示光线到第$i$点的累积透射率 - $\delta_i$为相邻采样点间距 **(4) 可微分优化** - **损失函数**:渲染图像与真实图像的均方误差 $$ L = \sum_{r \in \text{光线}} \left\| \hat{C}(r) - C(r) \right\|^2 $$ - **优化策略**:使用梯度下降(如Adam)更新网络参数$\theta$ --- #### 3. **技术优势** | 优势 | 说明 | |------|------| | **隐式表示** | 无需显式3D网格/点云,直接建模连续辐射场 | | **高保真细节** | 通过位置编码捕捉复杂纹理与几何 | | **视角一致性** | 联合建模空间位置与观察方向 | --- #### 4. **典型流程示例** 1. **输入**:多张同一场景的2D图片 + 对应相机位姿 2. **采样**:对每条光线随机采样1024个点(粗采样+细采样) 3. **推理**:通过网络计算各点的$(\sigma, c)$ 4. **渲染**:通过可微渲染生成预测图像 5. **反向传播**:计算损失并更新网络参数 --- #### 5. **应用与挑战** - **应用**: - 虚拟现实(自由视角漫游) - 影视特效(动态场景重建) - 机器人导航(3D环境建模) - **挑战**: - 训练耗时(单场景需数小时) - 依赖精确相机位姿 - 动态场景支持有限 $$ \boxed{\text{NeRF通过神经网络隐式建模3D辐射场,实现逼真的新视角生成}} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值