自学内容网 自学内容网

Nerf原理理解

神经辐射场是一个简单的全连接网络(权重约为 5MB),经过训练可使用渲染损失再现单个场景的输入视图。该网络直接从空间位置和观看方向(5D 输入)映射到颜色和不透明度(4D 输出),充当“体积”,因此我们可以使用体积渲染来以不同方式渲染新视图。 优化 NeRF 需要几个小时到一两天(取决于分辨率),并且只需要一个 GPU。从优化的 NeRF 渲染图像需要不到一秒到大约 30 秒的时间,这同样取决于分辨率。

 NeRF——Neural Radiance Fields(神经辐射场)的缩写,是来自2020年3月的一篇论文 Title:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis nerf论文:https://arxiv.org/pdf/2003.08934.pdf nerf代码:https://github.com/bmild/nerf

三维模型一般用网格,点云或者体素方式表现

希望通过反渲染还原出一个三维 模型

过往三维重建直接通过图片重建出网格,点云或者体素模型

NeRF是通过神经隐式方式建三维模型

神经隐式

我们可以简单地理解为:

我们使用一个NeRF神经网络采取体积雾(带不透明度的点云)的渲染方式,通过已知视角的图片进行训练,然后输入其它相机视角的参数,从而预测出未出现视角的图片。

此时三维模型的信息就储存在了NeRF神经网络之中!所以这是一种“隐式”的表示方法,而不是像点云、体素、网格这种显式的表示方式!

这里为了让视频一开始方便理解,在开头将输入的(x,y,z,θ,φ)认为是相机的位姿,而先避开采样点的概念。实际上在论文和代码中原作者是将这个(x,y,z)处理成了采样点的位置(x,y,z),而(θ,φ)就是采样点对应的观测角度。采样点是可以基于相机的位姿得到的,也就是:

采样点位置=相机原点+采样距离*相机观测方向

这个理解方式是将这个点处理成了空间中的点,每个空间中的采样点在不同的位置和观测角度能呈现不同的颜色,而采样点的不透明度只与采样点的位置有关。

一个NeRF神经网络模型只能存储一个三维场景 

以像素点这一层级作为训练资料,而不是整张图作为一个层级,1个batch就有很多来自不同地方像素点和不同地方相机参数作为训练资料。输出RGB和不透明值,先输出一段采样点上的RGBA的值,在射线方向上,对这些采样点进行特定积分,才得到像素点确切的颜色值。是一个体积雾渲染的过程。

第二

有在论文中提到位置编码信息,主要是为了将图像中的高频信息体现出来,能够大幅度提高图片的细节质量,不会受到周边像素平滑过后的影响

NeRF位置编码通过concat方式将这样的信息融合起来,每个位置编码由两项sin和cos合成,

空间坐标系中他用10项就是20维来表示xyz的位置编码

相机方向用4项,即8维来分别表示(x,y,z)的位置编码

是用一个全连接层,一直连最后得到最终结果

一个像素点对应有64个采样点,每个采样点基于光线的射线产生

最后我们只需要通过一组图片和对应的相机位姿去训练一个网络,网络就能储存对应的模型信息,我们再输入一个不一样视角的相机参数,就能把我们想要看到一个物体的角度呈现出来

NeRF: Representing Scenes as

Neural Radiance Fields for View Synthesis

"Bundle adjustment"(捆绑调整)是计算机视觉和摄影测量领域的一个重要概念,它是用于三维重建和摄影测量的一种优化技术。Bundle adjustment的目标是通过优化相机参数、特征点的三维坐标以及观测值,来提高相机位姿和三维点的估计精度。

具体来说,Bundle adjustment通常用于以下情境:

    1. 摄影测量:当使用多个照片来创建地图或测量物体的三维结构时,需要估计相机的内部参数(如焦距、畸变等)以及每个照片的位姿(相机的位置和方向)。Bundle adjustment可以通过同时考虑多个观测值(例如特征点在不同照片中的投影)来提高这些参数的估计精度。
    2. SLAMSimultaneous Localization and Mapping):在移动机器人、自动驾驶汽车和增强现实应用中,Bundle adjustment用于同时估计相机或传感器的位姿和周围环境的三维结构,以实现实时的定位和地图构建。
    3. 结构从运动(Structure from Motion):在计算机视觉中,Bundle adjustment被用于从多个图像中重建三维场景的几何结构。

Bundle adjustment的核心思想是最小化观测值与估计值之间的残差,通过调整参数来最小化这些残差。这是一个高度非线性的优化问题,通常使用数值优化方法(例如Levenberg-Marquardt算法)来解决。Bundle adjustment能够处理许多复杂情况,包括相机内外参数的变化、畸变校正、特征点匹配误差等。

总之,Bundle adjustment在计算机视觉和摄影测量中被广泛应用,用于提高三维重建和相机位姿估计的精度,从而在许多应用领域中发挥关键作用。


原文地址:https://blog.csdn.net/qq_36372352/article/details/136475530

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!