基于NERF技术重建学习笔记

     NeRF(Neural Radiance Fields)是一种用于3D场景重建的神经网络模型,能够从2D图像生成逼真的3D渲染效果。它将场景表征为一个连续的5D函数,利用了体积渲染和神经网络的结合,通过学习光线穿过空间时的颜色和密度来重建场景。以下是NeRF的原理和数据流程总结:

(1)原理

3D场景表示为隐函数:NeRF的核心思想是将3D场景表示为一个隐式的神经网络模型。具体来说,它将空间中的每个点 (x,y,z) 的颜色和密度作为函数输出。给定一个输入的3D坐标和观察方向,NeRF通过神经网络预测该点的RGB颜色 (r,g,b) 和体积密度 σ。

体积渲染(Volumetric Rendering):NeRF使用体积渲染公式将这些颜色和密度组合在一起,生成最终的2D图像。具体步骤是模拟光线在3D空间中的传播,通过沿着光线采样多个点的颜色和密度,对这些点进行加权平均来计算最终的像素颜色。公式如下:

视角一致性:NeRF的一个优势在于,它能够学习到场景的3D结构和细节,并生成不同视角下的真实感图像。通过训练,NeRF可以从少量的2D视角图像中推断出整个场景的3D形状和材质。

(2)数据流程

  • 输入数据

    • 2D图像:NeRF通常从多张从不同视角拍摄的2D图像开始,这些图像可以是从一个静态场景中拍摄的。
    • 相机参数:每张2D图像都需要知道相应的相机参数(如位姿、焦距等),以确定光线的方向。
  • 光线采样:对于每个像素,NeRF通过相机位姿计算出光线方向,并在光线上均匀采样多个点。每个点的3D坐标(x,y,z) 和光线方向 d作为输入喂给NeRF模型。

  • 神经网络预测

    • 神经网络接收每个采样点的3D坐标和光线方向,并输出该点的RGB颜色(r,g,b) 和体积密度 σ。
    • 这些输出值用于对每条光线的颜色进行体积渲染。
  • 体积渲染:NeRF将所有采样点的颜色和密度结合起来,计算出每条光线的最终像素颜色,进而生成图像。

  • 损失函数和优化:NeRF生成的2D图像与真实输入图像进行比较,通过均方误差(MSE)损失来优化神经网络权重。训练的目标是最小化生成图像和实际图像之间的差异,使得NeRF能够准确地重建3D场景。

(3)训练过程

      NeRF 在训练时的输入确实是每个3D空间点的坐标(x,y,z) 和光线方向 ddd,对应的输出是该点的颜色(RGB)和体积密度 σ。为了理解这些输入数据如何生成以及训练过程中的模型真值(ground truth)是什么,我们可以从数据处理的流程和目标损失函数的角度来探讨。

》数据生成过程

  1. 相机参数和图像采集

    • NeRF 的输入来自多张从不同角度拍摄的 2D 图像。每张图像伴随的相机内外参(内参:焦距、传感器尺寸,外参:相机位置和朝向)用来确定图像中每个像素射线的出发点和方向。
    • 这些相机参数将帮助我们确定每条光线的方向 d,并能够从图像中的像素位置推算出光线在3D空间中的位置。
  2. 光线采样

    • 对于每张图像,NeRF 会从相机光心发射出一条条光线,每条光线对应图像中的一个像素。通过相机外参可以计算出每条光线的方向 d,并沿着光线均匀采样多个3D坐标点(x,y,z)。
    • 每条光线通常采样几十个点。通过这些点的坐标 (x,y,z) 和光线方向 d,这些信息被输入到NeRF的神经网络中进行颜色和密度的预测。

》模型的真值(Ground Truth)

NeRF 的训练目标是从3D坐标和光线方向预测出每条光线上的颜色(即对应图像中的像素值)。模型的真值为:

  1. 真值颜色

    • 每条光线最终射入相机的那一部分颜色信息就是真值。在2D图像中,光线的最终颜色是该光线在3D场景中穿过的所有点的颜色与体积密度的加权平均。每条光线的最终颜色值 C(r) 对应图像中的某个像素值。
    • 因此,真值颜色就是每张图像中像素的真实RGB值,这些像素值可以直接从输入的2D图像中获得。
  2. 体积渲染公式

    • NeRF 使用体积渲染公式来合成沿光线的颜色:

通过这种体积渲染计算,NeRF 合成出预测的光线颜色,然后通过与该光线在真实图像中的像素颜色进行对比,来计算损失。

》损失函数

在训练过程中,NeRF 使用的损失函数通常是均方误差(MSE)损失,来衡量模型预测的颜色与真实图像中对应像素颜色之间的差异:

(4)与其他建图方式相比

NeRF(Neural Radiance Fields)V-SLAM激光SLAM 都涉及到场景的重建与感知,但它们的目标、方法和应用场景有显著的区别。

维度 NeRF V-SLAM 激光SLAM
核心目标 高质量3D场景渲染与重建 实时定位与2D/3D地图构建 实时定位与精确地图构建
输入数据 多视角2D图像及相机参数 单目/双目/RGB-D相机图像 激光雷达点云或距离数据
精度 高,适用于小规模、静态、细节丰富场景 中等,取决于光照和特征丰富度 高,适用于大规模、复杂环境的精确定位和建图
实时性 计算量大,通常离线运行 可实时运行,依赖图像处理 高效实时,特别适合大规模场景
环境适应性 静态场景,光照变化大或动态场景表现差 依赖光照和视觉特征,动态物体影响大 适应性强,几乎不受光照和环境特征影响
计算成本 高,需高性能硬件 中等,图像处理计算量大但硬件成本低 中等,硬件成本高但计算需求较低
应用场景 虚拟现实、3D建模、影视制作 移动机器人、无人机、AR/VR 自动驾驶、工业机器人、仓储导航

还有一个不得不提的3D Gaussian Splatting,它是一种 显式表示 方法,它将场景表示为稀疏的 3D 高斯分布。每个3D点在空间中通过一个高斯核来表示,定义了其位置、形状(协方差矩阵)、颜色和密度。高斯分布直接表示物体在空间中的范围,而不是像 NeRF 那样通过神经网络去隐式学习场景。同样使用 体积渲染 方法,高斯核的形状和密度分布直接影响渲染效果,无需像 NeRF 一样依赖神经网络去预测大量点的属性,因此渲染速度要快得多。这种表示形式使得 渲染过程更直接,无需通过复杂的神经网络去预测所有点的特征。

上一篇:谷歌新政来袭!涉及社交、通信、实用工具等类型应用


下一篇:COD 论文二次阅读 TPAMI_2024_ZoomNeXt