NERF领域动向(持续更新)

1、数据集

数据集简介
LLFF由手持手机摄像头捕获的 24 个现实生活场景组成。视图向前朝向中心物体。每个场景由 20-30 张图像组成。这些场景对于任何特定的 NeRF 模型来说都不是太具有挑战性,并且数据集经过良好的基准测试可以轻松地与已知方法进行比较
DTU使用安装有相机和结构光扫描仪的 6 轴工业机器人捕获的多视图立体数据集。原始论文的数据集由 80 个场景组成,每个场景包含在中心物体周围半径 50 厘米的球体上采样的 49 个视图。其中21个场景额外采样了15个相机位置,半径为65厘米,总共64个视图。整个数据集包含了额外的44个场景,这些场景被旋转并以90度间隔扫描了四次。场景的照明通过16个LED以七种不同的照明条件进行变化。图像分辨率为1600×1200。与之前的数据集相比,这个数据集通过其更高的分辨率和仔细校准的相机运动与姿态而有所不同。
ScanNET一个大规模的真实 RGB-D 多模态数据集,包含 250 多万个室内场景视图,并标注了摄像机姿势、参考 3D 表面、语义标签和 CAD 模型。深度帧以 640 × 480 像素捕获,RGB 图像以 1296 × 968 像素捕获。姿势是通过 BundleFusion [31] 和生成网格的几何对齐估算出来的。
ShapeNet一个大规模的简易合成3D数据集,包含被分类到3135个类别中的3D CAD模型。最常用的是包含12个常见对象类别的子数据集。
Matterport-3D一个现实生活数据集,由 10800 幅全景图组成,这些全景图来自 194400 幅 RGB-D 全局注册图像,包含 90 个建筑规模的场景。每张全景图片提供 18 个视点、分辨率为 1280x1024 的彩色和深度图像。
Replica一个真实的室内数据集,由 18 个场景和 35 个室内房间组成,使用定制的 RGB-D 设备和红外投影仪进行拍摄。
Tanks and Temples一个视频三维重建数据集。它由 14 个场景组成,包括 "坦克 "和 "火车 "等单个物体,以及 "礼堂 "和 "博物馆 "等大型室内场景.该数据集包含大尺度场景,其中一些是室外场景,这对某些 NeRF 模型提出了挑战。室外场景适合希望挑战无边界背景的模型
KITTI著名的城市规模 2D-3D 计算机视觉数据集套件,用于自动驾驶视觉算法的训练和基准测试。该套件包含立体三维语义 + 二维语义分割、流动、里程测量、二维三维物体检测、跟踪、车道检测和深度预测/完成的标记数据集。深度预测/完成数据集是迄今为止最大的数据集,包含超过 9.3 万张深度图以及相应的 RGB 图像和原始激光雷达扫描图像。然而,该数据集对 NeRF 训练提出了挑战,因为与 NeRF 特定数据集相比,该数据集的相机覆盖范围相对稀疏,因此在设计模型时需要考虑稀疏视图。最近对数据集套件进行的 Kitti-360 [56] 扩展包括一个新颖的视图合成基准,其中列出了许多 NeRF 模型。
Waymo Open最近发布的 KITTI 的替代数据集。该数据集覆盖 72 平方公里,由基于汽车设置的五个激光雷达传感器和五个高分辨率针孔摄像头采集的点云和视频数据创建.除了匹配的点云和视频数据,数据集还包含用于二维和三维物体检测和跟踪的注释标签。该数据集包含 1150 个独立场景(而 KITTI 只有 22 个场景),具有更高的激光雷达和相机分辨率。其对象注释的范围也更大,达到两个数量级(8 万对 1200 万)。
Nerfies专注于人脸的单摄像机数据集,通过移动连接到杆上的两台相机相对于主体产生运动。包含五个保持静止的人类主题,以及四个场景中移动的人类主题,以及一条狗和两个移动物体。
HyperNerf专注于人脸的单摄像机数据集,通过移动连接到杆上的两台相机相对于主体产生运动。关注于拓扑变化,包括诸如人类主题张开和闭上眼睛与嘴巴、剥香蕉、3D打印鸡玩具和扫帚变形等场景。
ZJU-MOCap LightStage一个多视角(20 多台摄像机)动作捕捉数据集,由 9 个类似运动的动态人体序列组成。这些视频使用 21 台同步摄像机捕获,序列长度在 60 到 300 帧之间。
NeuMan由 6 段视频组成,每段视频长 10 到 20 秒,由手机摄像头拍摄,视频中行走的在做其他简单动作,如旋转或挥手。

2、NERF算法的改进

2.1、视图合成的改进

(1)【ICCV2021】《Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields》 Mip-Nerf主要解决原始nerf中的锯齿问题,能生成更加平滑的效果,去除混叠效应。
在这里插入图片描述
Mip-Map就是所谓的近大远小,一个像素观看近处和远处的目标时,获得的视场也不同,如右图卫星,若距离相机仅1米,则可以占满整个画面,若离相机100米,则只有整个画面的很小一部分。
在这里插入图片描述
NeRF渲染是要基于ray的,然而Mip-NeRF是基于conical frustums(圆锥)的。
在这里插入图片描述
请添加图片描述
当使用圆锥体替换光线后,采样的不再是离散的点集,而是一个连续的圆锥截台(conical frustum),这能够解决NeRF中忽略了光线观察范围体积与大小的问题。

为了计算的简便,我们使用3D Gaussian来近似 conical frustum(圆锥截台),并提出使用IPE代替PE。IPE被定义为高斯分布的positional encoding的期望值。

----------------------------3D高斯分布知识补充-----------------------------
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
-------------------------------------------------------------------------------
Gaussian分布的优点很多,其中之一便是线性变换。将positional encoding改写为矩阵形式后,输入高斯分布进行运算,等价于对高斯分布的均值与协方差进行变换。

首先,PE的矩阵形式为:
请添加图片描述
上面的通过P计算r(X)实际上是将原始nerf中的位置编码的公式改写了。X是空间位置,d是观察方向,我们定义μt为采样点t对应的圆锥截体到相机的平均距离(沿着光线的平均距离),另外, σ t 2 \sigma_{t}^{2} σt2 为沿着光线的距离方差, σ r 2 \sigma_{r}^{2} σr2 为垂直于光线的距离方差。Σ 是协方差矩阵,描述了点在光锥内的分布范围。它由两部分组成:沿光线方向的扩散 σ t 2 ( I − d d 2 ) \sigma_{t}^{2}(I-dd^{2}) σt2(Idd2)和垂直于光线方向的扩散 σ r 2 ( I − d d T d d 2 2 ) \sigma_{r}^{2}(I-{dd^{T}\over dd_2^2}) σr2(Idd22ddT)
请添加图片描述
这个公式描述了如何将多元高斯分布的均值和协方差通过位置编码P转换为编码后的均值 μ γ \mu_\gamma μγ和编码后的协方差 Σ γ \Sigma_\gamma Σγ。在这里,P 就像是一个滤波器,它强调了一些频率,并减弱了其他频率。
请添加图片描述
下面一组公式计算高斯分布中一个随机变量的正弦和余弦的期望值。这些期望值是编码后的均值 μ γ \mu_\gamma μγ的正弦和余弦函数,调整(或衰减)了由编码后的协方差 Σ γ \Sigma_\gamma Σγ 的对角元素(方差)确定的幅度。
请添加图片描述
将上面这组公式概念扩展到整个编码后的三维坐标。它们计算了编码后的坐标 μ γ \mu_\gamma μγ 在编码后的协方差 Σ γ \Sigma_\gamma Σγ 描述的分布下,其所有维度正弦和余弦的期望值。这基本上是通过在多元高斯分布中积分正弦和余弦函数来实现的,结果是 γ ( μ , Σ ) \gamma(\mu,\Sigma) γ(μ,Σ)——一个包含了所有维度调整后的正弦和余弦值的向量。
请添加图片描述
综合来看,这一系列公式描述了如何将空间中的一个点(具有一定的不确定性或扩散,由 (μ和Σ 表示)转换为神经网络可以使用的一组特征(由 γ ( μ , Σ ) \gamma(\mu,\Sigma) γ(μ,Σ)表示),这些特征在编码高频细节时减少了混叠现象。

2.2、训练与推理速度的改进

(1)【SIGGRAPH2022】《Instant Neural Graphics Primitives with a Multiresolution HashEncoding》
instant-ngp在训练速度和模型大小上进行了优化,优化部分仍然集中在位置编码。
原始nerf论文中使用sin、cos的位置编码叫频率编码,也叫固定编码
这就对应着另一种编码,即可学习编码。顾名思义编码方式的参数是可以学习迭代的。instant-ngp就是使用可学习编码。因为三维空间的坐标是连续的,不可能对连续空间的所有位置进⾏学习,所以通常采⽤Dense Grid的⽅式,对Dense Grid上顶点坐标的编码进⾏学习,这⾥⼜分为Single resolution和Multi resolution两种。
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
为了减少参数量,使用哈希表来映射存储每个分辨率下的网格。
请添加图片描述
而分辨率最小的情况下,哈希表只需要学习 2 24 2^{24} 224的参数量。
请添加图片描述
在这里插入图片描述

2.3、少样本训练

(1)【CVPR2021】《pixelNeRF: Neural Radiance Fields from One or Few Images》
本文是针对NeRF的优化,NeRF中往往需要同一个场景中非常多的图片才能很好地生成新的视角,而pixelNeRF就提出了一种方式来让模型在仅有几张甚至一张图的情况下也能生成新视角。

文中提出,NeRF之所以无法在一张图基础上生成新视角的原因是没有先验信息。因此本文预先通过resnet对输入图片提取了基于每个像素的信息,然后在生成新视角时通过查询对应像素上的信息从而获得先验,辅助NeRF生成新视角的图像。
请添加图片描述

上图就是在网络仅有一张图片作为输入时网络的运行流程,最中间绿色的那个f其实就是NeRF,因此与NeRF唯一的区别其实就是CNN Encoder。

网络运行流程如下:

1.首先给定一张图片,然后使用预训练好的CNN Encoder(ResNet34)提取出图像中每个像素的特征,构建出W,即特征图。

2.然后给出一个想要生成的新视角的相机内参d,按照NeRF中描述的方式往空间中发射一道光线,将交点x投射到输入图所对应的平面上,并从特征图中提取对应的特征。

3.然后将提取出的特征和x,d一起输入NeRF,从而得到最终的颜色和密度信息。

4.最后通过体渲染来的到最终结果,与Ground truth做损失函数来优化整个网络。

上面说的是输入一张图时的做法,但其实这个模型也可以处理输入多张图的情况,具体做法就是从每张图中都提取一个特征图,然后将交点x投射到每个平面上,进而从每个特征图中都提取一个特征。最后将每个特征都分别送入NeRF,对结果做聚合再得到最终的颜色核密度。

具体的流程就是上面所说的那样,但有些点需要详细说一下:

1.在提取特征的时候为了获取局部和全局的信息,作者同时提取了resnet中四个池化层的特征,因此每个像素中都包含了局部和全局的信息

2.特征输入NeRF的方式是通过类似residual的方式来引入的,并不是直接和x,d合并

设想一下,如果没有这个预先提取的特征图,直接按照文中描述的方式训练能得到什么样的结果?如果不提取特征图那输入nerf的额外信息就只有对应像素上的一个RGB值,nerf无法知道这个像素周围都有什么东西,因此像素之间无法建立起关联。因此,所谓的先验肯定都是从feature中获得的。

但是,文中的feature是使用预训练的resnet提取的,这提取的feature真的适用于这个任务吗?如果使用一个网络来专门学习特征提取会不会更好?

2.4、室外无边界场景的场景构成

(1)【CVPR2021】《NeRF in the Wild: Neural Radiance Fields for Unconstrained Photo Collections》
Nerf要求在相同位置、视角拍摄的照片完全一样,也就是必须在尽可能短的时间内拍的照片,因为这种情况下光线变化等影响会很小;nerf-wild放松了限制,通过解决光照变化以及移动遮挡的问题,来使得输入的照片不一定完全一样,同一个位置、同一个视角上午拍的或者下午拍的都可以作为输入。

2.5、表面重建

3、NERF的评估方法

对于NERF的评估指标,目前存在评估有(完全参考)或无(无参考)地面实况图像的单个图像的质量。峰值信噪比(PSNR)、结构相似性指数测量(SSIM)、学习感知图像补丁相似性(LPIPS)是 NeRF 文献中最常用的指标。

3.1、PSNR

请添加图片描述
PSNR通常用于信号处理和图像处理,它提供了一个衡量图像质量的客观标准。是全参考的方法
通过一个简单的例子来理解这个公式:
假设有两张图像:一张是原始图像,另一张是你经过某种处理(比如压缩或者经过神经网络处理)后的图像。想知道处理后的图像质量有多好。
首先需要知道图像中可能的最大像素值。对于标准的8bit图像,这个值是255(因为每个颜色通道的像素值范围是0到255),即MAX(I)是255。
接下来,计算原始图像和处理后图像之间的误差,也就是它们的像素值差异误差越小,意味着两张图像越相似,质量也就越高通过计算均方误差(MSE)来做这件事,这是原始图像和处理后图像相应像素差的平方的平均值。
请添加图片描述
最后,使用PSNR公式来计算分贝(dB)值,这是一个对数单位,用于描述信号的强度。PSNR越高,表示图像质量越好。
如果MSE很小,分母就小,PSNR就会很高,这意味着处理后的图像与原始图像非常接近,质量很高。相反,如果MSE很大,分母也大,PSNR就会低,这意味着图像质量较差。

3.2、SSIM

结构相似性指数(SSIM)是用于比较两幅图像相似度的一种全参考质量评估指标。它不仅比较像素值的差异,还考虑了图像的结构信息,亮度和对比度。SSIM的值介于-1和1之间,1代表两幅图像完全相同
SSIM可以用来衡量图像处理算法(比如压缩、去噪等)保留原始图像质量的能力。
请添加图片描述
μx是图像x待评估区域的亮度平均值,μy同理。

标准差σx的计算方法:
步骤1: 计算平均亮度 μx
步骤2: 对每个像素,计算它的亮度值与平均亮度 μx之差的平方。
步骤3: 将这些平方值相加,然后除以像素总数。
步骤4: 计算步骤3得到的结果的平方根,这就是标准差 σx 。

计算协方差σxy需要两个图像区域的数据。协方差是度量两个变量如何一起变化的指标。在图像处理中,如果我们有两个图像区域 x和 y,它们的协方差可以告诉我们这两个区域的像素值变化趋势是否相似。
在这里插入图片描述
在图像处理中,如果协方差是正数,那么这两个图像区域可能在相应位置上有相似的亮度变化趋势;如果是负数,那么它们在那些位置上的亮度变化趋势是相反的;如果协方差接近零,如本例,意味着它们之间没有明显的相似性或者相反性。

公式中的C1和C2是为了避免分母为零而添加的小常数,K1和K2是作者选择的用来调整亮度和对比度比重的常数。L是图像可能的最大亮度值(对于8位图像,这个值通常是255)。请添加图片描述

3.3、LPIPS

请添加图片描述
评价两个图像之间相似性的一个度量,但是它使用的是通过学习得到的卷积特征,而不是基于像素的简单比较。

请添加图片描述

通俗解释这个公式的步骤:
(1)特征提取:首先,使用深度学习模型(如SqueezeNet, VGG, AlexNet)提取两个图像(参考图像和被评估图像)的特征。这些模型能够从图像中提取出描述其内容的信息,比如边缘、纹理、形状等。
(2)特征比较:然后,对每一层提取出的特征图(feature maps),计算两个图像在这些特征上的差异。差异是通过计算所谓的加权像素级均方误差(MSE)来得到的,这意味着比较的不仅是原始像素值,而是图像在某一层特征表示上的差异。
(3)加权:比较时会给特征图中的每个像素赋予一个权重,这个权重决定了该像素在总误差中的重要性。权重是学习得到的,意味着它们是基于训练数据自动优化的,以反映哪些特征对于人类的视觉感知更为重要。
(4)汇总:对所有层的误差进行汇总,得到一个总的质量评分。总分是通过对所有层的加权误差取平均得到的,不同层的贡献可能不同,因为不同层代表了不同的视觉信息。

LPIPS得分越低,表明两个图像在视觉上越相似,图像质量越接近。

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值