【论文笔记 - NeRFs - CVPR/ICCV2021】NeRF泛化相关工作——pixelNeRF,IBRNet,MVSNeRF

pixelNeRF: Neural Radiance Fields from One or Few Images

原论文

从标题中就可以看出,本文是将 NeRF 推广到少量甚至一张视图来建立神经辐射场(实验中还表明对于没有见过的类别中的对象也能做到)。作者指出NeRF是一种基于优化的方法,使用几何一致性作为唯一信号,类似于经典的多视图立体匹配。因此,每个场景都必须单独优化,场景之间不共享任何知识。这不仅费时,而且在单一或极其稀疏的视图的限制下,它无法利用任何关于世界的先验知识来完成或者加速重建。

本文提出将视图的特征作为 NeRF 的条件,使其融入到场景表征的模型中,而不是只作为监督信号,这样有助于学习到一个场景的先验知识。基于此,可以改变条件,通过前向传播的方式做新的视图合成。

坐标系的选择会带来一定影响。例如,在以观察者为中心的坐标中,对象的方向和位置可以根据观察者的视点而改变。相反,在以对象为中心的坐标中,对象的方向和位置是固定的,与观察者的视点无关。如果是密集重建任务,以对象为中心是更好的选择,本文是非常稀疏的重建任务,不足以构建良好的三维场景,要依赖视图中的信息。因此,本文以观察者为中心,确定坐标系为视图空间,对于没有出现过的物体类别能够有更好的重建效果。(不太理解坐标系的选择,文中提供的参考论文)

  • 以单张图片为例,首先对输入视图进行编码,得到特征 W \mathbf{W} W。对于目标视点发出的一条光线(上图中红色),采样一些点 x \mathbf x x(紫色,作为查询点),通过投影(三维空间中的点投影到二维图像)、双线性插值得到图像平面上一点 $\pi(\mathbf x) ,得到对应的特征向量 ,得到对应的特征向量 ,得到对应的特征向量 \mathbf{W}(\pi(\mathbf x)) $,这样就得到了 NeRF 的条件,可以用下式表示,

    f ( γ ( x ) , d ; W ( π ( x ) ) ) = ( σ , c ) f(\gamma(\mathbf{x}), \mathbf{d} ; \mathbf{W}(\pi(\mathbf{x})))=(\sigma, \mathbf{c}) f(γ(x),d;W(π(x)))=(σ,c)

    其中, d \mathbf d d 表示视角方向,在单张视图的情况下,作用不大。但在多视角的情况下,可以作为不同视角的相关性和定位信号。

    那其实会注意到一个问题,源图像某个特征其实对应场景空间中的多个坐标(都在一条从视点出发的光线上),这是因为没有考虑深度信息,GRF 中认为源图像中提取的像素特征是从相机中心发射到3D表面的光线的紧凑描述,所以用相同特征表示源视角光线上不同的点仍是可行的。

  • 对于多视图重建,取新视角下的相机光线,将查询点 x \mathbf x x 的坐标和视角方向 d \mathbf d d 变换到每个输入视图的坐标系中(坐标变换)。将整个模型 f f f 分为 f 1 f_1 f1 f 2 f_2 f2 两部分,分别用于单独处理每张视图以及根据聚合的特征预测最终结果。

IBRNet: Learning Multi-View Image-Based Rendering

原论文

NeRF must be optimized for each new scene, taking hours or days to converge. Concurrent work [GRF, PixelNeRF] tries to address this issue and generalize NeRF (with a focus on very sparse input views). However, their use of absolute locations as direct network inputs restricts their ability to generalize to arbitrary new scenes.

本文注意到 NeRF 每个场景都要单独训练的问题,认为先前的方法受限于绝对视角的影响没能很好的泛化。将 IBR、 NeRF 以及本文提出的新模块 ray transformer 整合到一起来做预测并渲染结果,其中用相对视角来取代原先相邻图的绝对视角。下图是本文提出的pipeline,可以分为三个部分,

  • 确定一组邻近的源视图作为输入,并从每个源视图中提取密集特征;
  • 通过 IBRNet(下图中黄色部分)预测不透明度 σ \sigma σ 和颜色 c c c
  • 进行体渲染。

具体来说,

  • 本文采用了IBR 的思想,通过对相邻的视图进行插值得到目标视图结果,首先就需要确定空间上邻近的视图以及对应的坐标变换矩阵。然后分别采用 U-Net 来提取密集特征。对于空间中一点 x \mathbf x x,可以通过相机参数找到任意视图中的对应点,每个点都有颜色 C i \mathbf {C_i} Ci、特征 f i \mathbf {f_i} fi 以及视角 d i \mathbf {d_i} di 属性,本文并没有直接采用绝对视角,而是采用了与预测视角之间的视角差 Δ d i \mathbf{\Delta d_i} Δdi(相对视角),越小就意味着越接近。

  • 接下来,就要为体渲染技术预测视角中每条光线上的不透明度 σ \sigma σ 和颜色 c c c,模型如下所示

  • 本文首先输入源图像中对应点的特征 f i \mathbf {f_i} fi 作为局部信息,并对所有的 f i \mathbf {f_i} fi 求均值 μ \mathbf \mu μ 和方差 v \mathbf v v 作为全局信息,每一组单独通过一个共享权重的 MLP 得到多视图感知特征 f i ′ \mathbf {f_i'} fi 和pooling权重 w i w_i wi

  • 对于体密度(不透明度) σ \sigma σ ,根据网络已经得到特征 f i ′ \mathbf {f_i'} fi 和pooling权重 w i w_i wi 做聚合得到密度特征 f σ \mathbf f_\sigma fσ,其中包含了相邻源视图的信息。虽然可以直接在接一个MLP来得到最终的预测结果,但是作者认为这样无法精确预测具有复杂几何关系的新场景中的体密度。因此本文提出要对同一光线上的所有采样点得到的密度特征建立上下文关系,采用了 ray transformer 计算自注意力来得到最终的体密度。(文中还对均值和方差进行了修正,对较近的视图进行升权重并对较远的视图进行降权来生成更合理的全局特征)

  • 对于颜色 c \mathbf c c,本文通过将多视图感知特征 f i ′ \mathbf {f_i'} fi 与相对视角 Δ d i \mathbf{\Delta d_i} Δdi 作为输入,通过 MLP 来预测相邻视图中对应点的颜色 C i \mathbf C_i Ci 的混合权重,最后进行加权和得到结果。

MVSNeRF: Fast Generalizable Radiance Field Reconstruction from Multi-View Stereo

原论文

(需要先了解 MVSNet )本文提出的模型可以有效地泛化到不同的场景。如下图所示,即使对于复杂的室内场景,也可以从三个输入图像重建神经辐射场,并从新的视角合成逼真的图像。最初的结果包含伪影,如果在更多图像上的微调重建结果,就可以有很大的改善,这达到了与 Nerf 相当的质量,但是两者的迭代次数相差巨大(4k次迭代 vs 100k次迭代)。

本文提出的框架如下所示,首先通过将2D图像特征扭曲到扫描平面上来构造cost volume。然后,利用 3DCNN 来重建神经编码体。从编码体提取特征,使用MLP来回归任意位置处的体密度和RGB。最后进行渲染。

构建 Cost Volume 和 3D卷积部分都和 MVSNet 中的方法类似。

处理好 cost volume 后,本文采用 3D 卷积为每个体素神经特征编码有意义的场景几何和外观。由于在对2D源视图的特征提取中有下采样,导致神经编码体的分辨率也相对较低,很难仅从这些信息回归出高频外观,因此在预测颜色和不透明度时还把源图中的颜色作为输入。这种设计是有效的,但会导致始终依赖于三个输入,因为MLP的输入维度在设计时就已经确定下来了,提出在编码体中的体素特征附加一个通道来表示颜色。

此外,一旦重建了场景编码体,则可以与 MLP 组合使用,而无需先前的一系列处理步骤(包括输入的图片也可以不要了,这和pixelNeRF 、 IBRNet 有很大的不同)。它们可以被视为辐射场的独立神经表示,输出不透明度和颜色,从而进行体渲染。此外,还可以固定卷积部分的参数,进一步微调,得到更好的结果。


不难发现,NeRF的泛化就是借助图像的特征来构建一个三维场景。最初的NeRF只将图片作为监督信号,显然没有充分利用已有的信息,导致每个场景都要重新训练、需要较为密集的采样、训练时间长等问题。以上三篇论文都采用了2DCNN来提取图像的特征,然后建立场景与特征图之间的联系,如 pixelNeRF 和 IBRNet 将三维坐标点投影到二维特征平面,这样每次预测空间中的点的属性,都会考虑到已有图像特征,一定程度上弥补了NeRF的缺陷。

猜你喜欢

转载自blog.csdn.net/qq_43491212/article/details/129094484