nerf介绍(nerf入坑)

作者:电脑培训网 2024-04-27 18:11:21 782

NeRF总结

NeRF:RepsentingScenesasNeuralRadianceFieldsforViewSynthesis

NeRF的思想比较简单,就是通过整合输入视角下图像每个像素的密度来进行体素渲染,然后将该像素渲染的RGB值与真实价值为损失。

nerf介绍(nerf入坑)

任务介绍:

给定一个2D图像,源位姿。这里提供的是从相机坐标系到世界坐标系转换的矩阵,同时还提供了内参矩阵。对于相机坐标系到像素坐标系的转换,对于一个相机来说,内参矩阵通常是固定的,因此通常存储在intrinsic中,另外还有图像的视角d)在具体训练中,为以向量形式表达。这项工作可以用slam代替,目标位姿,渲染)生成相应的图像。

工作创新点:

提出5D神经辐射场表达复杂几何和材质连续场景的方法,并利用MLP网络进行参数优化

本文在经典加速渲染改进的基础上提出了一种可渲染方法,可以通过可微分渲染获得RGB图像,并以此作为优化目标。与原始采样不同,这部分采用分层采样加速策略,将MLP容量分配到可见内容区域。

提出了一种位置编码方法将5D坐标映射到更高维空间。这个在实验中会比较一下。由于神经网络更适合检测低频特征,因此该方法将神经辐射场优化得更加精确。高频细节的出色表达。

基于神经辐射(Radiance)场(Field)的场景表示

NeRF将场景表示为函数形式,通过训练函数参数得到结果,然后构建地图。

具体函数映射表示为:F:(x,d)(c,)。通过优化网络参数,我们学习获得从5D坐标输入到相应颜色和密度输出的映射。

函数输入:参数3D位置信息(x,y,z),2D视角信息(,),即内外参数矩阵

函数输出:体素体积的颜色和体积密度

传入网络时,原始参数并不是传入网络,而是转换为统一的世界坐标系,这解释了神经辐射场的概念。

这里介绍一下坐标变换的知识

二维视角表示的信息如下

由于我们最终想要得到的是三维的结果,这意味着我们最终可以从任何角度观察生成的物体。因此,为了让网络学习如何表示多个视角,我们有两个更合理的假设:体积密度仅与三维位置x有关,与观看方向d无关。显然,物体在不同位置的密度应该与视角无关。可以理解,无论从哪个角度观察像素点,其自身属性都保持不变。颜色c与三维位置x和观察方向d都有关。由于光线和其他影响,同一事物从不同角度观看时必然呈现出不同的颜色。从上面的网络流程图和两个假设可以看出,网络训练的参数中,用于预测体积密度的网络部分的输入只有输入位置x,而用于预测颜色的网络部分的输入c是视角和方向d。从具体实施来看:

MLP网络F首先使用8层全连接层处理3D坐标x以获得和256维特征向量。

了解通道数:取决于经过卷积核后我们要提取多少个特征。

Relu激活函数的理解:神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层。输入层神经元节点将属性值直接传递到下一层。在多层神经网络中,上层节点的输出与下层节点的输入之间存在函数关系。该函数称为激活函数。至于为什么要引入激活函数,如果没有激活函数,那么Zeng和Zeng是线性连接的,不存在隐藏层效应。这是最基本的认知。如果引入ReLU,那么网络不再只是线性组合,在负半轴区域,输出为0,增加了网络的稀疏性。

将256维的特征向量与观看方向\mathbf{d}d和观看方向拼接在一起,馈送到另一个全连接层,输出direction-相关的RGB颜色。

实验中我们对比一下,如果没有视角的参与,就无法获取到一些信息,如下图所示,缺乏高光效果。

基于辐射场的体素渲染

[外部链接图像传输失败。源站可能有防盗链机制。建议保存直接上传(img-7cGjrRAM-1669260362401)(学习//image-20221123103108072.png)]

其中最重要的是:可见光的颜色RGB是不同频率的光辐射作用在相机上的结果。因此,在NeRF中,辐射场被认为是颜色的近似建模。

这就引出了NeRF中的体素渲染方法。以下是体素渲染的方程:

其中r(t):r(t)=o+td

从角度o的方向为t,到达点为t时刻的r(t),这意味着它表达的是位置信息。

T(t):从tn到t的累积透明度,即不截止的概率

具体公式推理参见下图:由T(t+dt)=T(t)*(1-dt(t))

体素密度(x):可以理解为非牛顿流体的密度,越强则越强

这里的c(r(t),d)color不是需要学习的参数。

可微分学习

由于计算机时间断点计算,我们无法对射线上的点进行连续积分,所以我们采用离散点,引入均匀介质,以及透射率乘法

该方程基于下面讨论的基于分类采样的方程。

基于分段采样近似的体素渲染方法:

由于连续积分在计算机中是不可能实现的,所以我们采用连续积分的方式,通过分层采样的方式将[tn,tf]分成均匀分布的小区间,对每个区间进行均匀采样,于是就有了上式,同时我们也可以下采样

OptimizingaNeuralRadianceField(优化一个神经辐射场)

重建任务已经完成了吗?一般来说,通过输入位姿和2D图像就可以得到不同方向的3D体素和RGB。

但仍存在训练细节不足、训练速度慢等原因。为了进一步提高重建的精度和速度,引入以下两种策略:

位置编码:使得MLP学习到的函数nerf能够更好地表示高频信息,从而丰富细节信息。分层采样过程:通过这种策略,可以使训练过程更有效地采样高频信息。频率信息位置编码

最早用在NLP中,可以理解为先验地给不同位置的坐标加上不同的值。NeRF及其后续方法发现,在MLP的输入中添加位置编码可以提高性能,并且更容易在高频域中拟合函数。

示例:两个像素太相似而无法区分。我把它们分成了R、G、B三个通道,这样更容易区分。另外,MIPNERF现在提出了综合位置编码来解决远处模糊的问题。

对于位置信息x,L取10,对于方向信息d,L取4

是不是先编码,再转成向量?

分层抽样策略(PDF)

分层采样方案来自于经典渲染算法的加速工作。在前面提到的体素渲染方法中,如何对射线上的点进行采样会影响最终的效率。如果采样点太多,计算效率会太低,而采样点太少又不好近似。那么一个自然的想法就是在颜色贡献大的点附近进行密集采样,在颜色贡献小的点附近进行稀疏采样,这样问题就可以解决了。基于这个思想,NeRF自然而然地提出了从粗到细的分层采样方案。

实验步骤:

采集数据集:导入COLMAP,设置文件保存路径

提取特征点、匹配特征、重建系数图

导出相机位姿信息

转换为nerf需要的格式并开始训练

相关推荐