IBRNet:基于IBR的NeRF

渲染某个target view时,会使用与其在空间位置上相邻的N个input views作为参考。另外还使用了Transformer Ray,即将cast ray上的采样点视为序列点。

IBRNet: Learning Multi-View Image-Based Rendering

针对问题:使NeRF具有泛化能力

如何做:主要还是针对颜色和密度的预测进行改进(三维重建部分),和NeRF一样,使用的是volume rendering(渲染部分)。

原始NeRF:

IBRNet:

密度和颜色的预测

成果:

  1. Unlike neural scene representation work that optimizes per-scene functions for rendering, we learn a generic view interpolation function that generalizes to novel scenes. 原始NeRF针对每个scene都需要优化(重头训练),而本文方法学习一个通用的view插值函数能够泛化到新的scenes。
  2. Experiments show that our method outperforms recent novel view synthesis methods that also seek to generalize to novel scenes. Further, if fine-tuned on each scene, our method is competitive with state-of-the-art single-scene neural rendering methods. 实验表明,在寻求泛化到新scenes时,我们的方法比其它好。更进一步,如果fine-tuned每一个scene,可以实现和目前SOTA的NVS任务相当的表现。

主要:

  1. 还是使用volume rendering。即通过网络预测出颜色和密度,再通过体渲染。
  2. 在Volume density prediction时,将每条ray上的多个sampled point视为一个序列,然后使用自注意力机制预测最终的density(Ray Transformer)。好处:可以利用long-range contextual information。Ray Transformer的输入是density features序列(density features可以认为是PE的结果,类比)
  3. 用source views预测target view的颜色时,不是使用source views的绝对方向,而是与target view的差值,即Δd,源于这样的事实:d 和 di 之间较小差异通常意味着目标视图处的颜色与视图 i 处的相应颜色相似的可能性更大,反之亦然。所以使用Δd。

steps:

  1. 对于一个target view,会找到与其在空间上最邻近的N个source views(在一个大的source views pool中随机选取N个);

    同时,通过ResUNet网络得出source views的特征Fi∈(Hi,Wi,d)

  2. target view的每一个像素发出一条射线r(t)=o+td,且在射线上有一些采样点

  3. 对于每个query point,计算出其在N个source views上的投影点,并通过双线性插值【因为投影到source views时可能没在一个完整的像素点,可能在相邻点的中间,这时就需要用插值的方法得出投影点的Ci和fi】计算出投影点的颜色Ci和特征fi,fi∈Fi,i=1-N。

  4. 计算fi的均值和方差,拼接后(1x3d)输入到MLP中得到fi‘和wi。注:此处是为了check consistency,论文中的Multi-view feature aggregation这一小节有说到。

  5. fi'和wi输入到MLP得到fδ,通过Ray transformer预测得到density δ

    fi’和Δdi拼接后输入到MLP中预测Ci的权重w_i^c,Ci和W_ic的加权得出query point的最终颜色

  6. 利用volume density,渲染得到该ray对应的像素颜色。

网络结构:

ResUNet用于提取Fi

IBRNet用于预测density δ和color c。(IBRNet包括一个Ray transformer)

原始NeRF对每个scene都需要重新优化建模,即一个scene对应一个模型,没有泛化能力,该篇论文提出的IBRNet就是解决NeRF的泛化问题,实现在一些训练集上训练得到的模型,能够直接应用到其它scene上。并且还可以通过fine-tuned实现更好的结果。

原始NeRF可大致分为2个步骤:三维重建(2D-3D的建模过程,用MLP隐式表达scene),渲染(3D-2D,volume rendering)

原始NeRF为什么不具泛化性:个人认为是在三维重建时没有充分利用信息(渲染view时,都是孤立的点,且与其它view没有联系),直接从5D到颜色和透明度的映射。

IBRNet的工作主要针对三维重建这一步,即5D映射到颜色和透明度这一步。

渲染target view时,

  1. 会基于与自己相邻的N个source views,
  2. 充分利用信息,包括image color,view direction,image feature
  3. 相邻view在scene表面更光滑,所以使用Δd作为view direction
  4. 预测density时,不是孤立的点,而是将ray上的所有sampled point视为一个序列,使用transformer的self-attention预测density,利用空间信息;
  5. 图像特征用UNet提取,骨干网络使用ResNet
  6. 用类似PointNet检验图像特征一致性
赞赏