MVSNeRF

MVSNeRF: Fast Generalizable Radiance Field Reconstruction from Multi-View Stereo:基于多视图立体的快速可推广辐射场重建(ICCV 2021)
摘要中的主要思想:通过将附近输入视图的2D图像特征(由2D CNN推断)扭曲到参考视图的平截头体中的扫描平面上,在输入参考视图处构建成本体积。该网络对场景几何和外观进行推理,并输出神经辐射场利用3D CNN,重建(从成本体积)神经场景编码体积,该体积由编码关于局部场景几何和外观的信息的每体素神经特征组成。然后,我们使用多层感知器(MLP),使用编码体积内的三线插值神经特征对任意连续位置处的体积密度和辐射进行解码。本质上,编码体积是辐射场的局部神经表示;一旦估计,该体积可直接用于(丢弃3D CNN)通过可微分光线行进进行最终渲染。
本质上为MVS+NeRF,提高泛化能力。
主要思想:利用平面扫描3D成本体积进行几何感知场景理解
流程图
在这里插入图片描述

1、代价体构造

1.这里的操作与MVSNet类似,首先进行特征提取,得到原图长宽均为1/4,channel为C的特征图,有i张图输入,通过T卷积网络,得到Fi特征图
在这里插入图片描述
2.将所有特征图变换到参考相机的锥形立体空间,形成N个特征体Vi(四维向量)。论文中输入的图像是3张,所以将另外两张reference img的特征图经过单应性变换,投影到resource img相机的锥形立体空间中,得到3个特征体。这里选择128个深度值。关于MVSNet的理解,可以看以下博客

https://blog.csdn.net/qq_43027065/article/details/116641932
https://zhuanlan.zhihu.com/p/370952108

单应性变换公式,求的是从视图i到深度z处的参考视图的矩阵扭曲公式
在这里插入图片描述
这里先求出源视图的世界坐标,将这个世界坐标通过参考视图的相机外参转换到参考图的相机坐标系中,再通过内参投影到参考图中的像素坐标,经过转换可以得到源图中某点与参考图中的对应点,进而得到对应该点在参考图的相机下的的特征图,将所有点扭曲过来,再投影到对应深度处(相机锥体中的若干平行平面),就能得到该图在参考相机坐标系下的特征体Vi

每个特征图Fi可以通过以下方式扭曲到参考视图,u,v是参考图视角下的坐标系,z是对应的深度,这里得到的就是参考图中(u,v)坐标的像素对应的源图相机锥体中深度为z处的特征图
在这里插入图片描述
3.构造代价体,上一步操作得到的是三个特征体,接下来需要将三个特征体构造为一个代价体,代价体指的就是该点在此深度处的可能性大小,使用基于方差的代价指标衡量差距的大小(特征的相似性度量可以判断深度假设接近实际深度值的程度)将N+1个特征体在同一空间位置的相似性进行代价度量

在这里插入图片描述
Var为方差计算,下图为MVSNet中的公式,这里可以消去i这个特征体数量的自变量,变回四维。
在这里插入图片描述
我们就得到了代价体。
论文中为什么使用代价体的解释:
这种基于方差的成本体积编码了不同输入视图之间的图像外观变化;这解释了由场景几何体和视图相关着色效果引起的外观变化。虽然MVS工作仅将这样的体积用于几何重建,但我们证明它也可以用于推断完整的场景外观,并实现逼真的神经渲染。

2、辐射场重建

3D卷积:首先需要将代价体进行一个3D CNN卷积网络
Neural encoding volume:使用深度神经网络来有效地将构建的代价体转换为辐射场的重建,用一个3D CNN卷积网络 B来重建神经编码体S,S包含每体素的局部场景几何和表面。
在这里插入图片描述
B是一个具有下采样和上采样卷积层和跳过连接的3D UNet,它可以有效地推断和传播场景外观信息,从而产生有意义的场景编码体积S,该编码体积是以无监督的方式预测的,并在端到端训练中使用体积渲染进行推断。网络可以学习在每体素神经特征中编码有意义的场景几何体和外观;这些特征随后被连续内插并转换为体积密度和视景相关辐射。

Regressing volume properties:给定任意3D位置x和观看方向d,使用MLP 从神经编码体积S回归相应的体积密度σ和视相关辐射率r。网络还输入了来自原始图像Ii的像素颜色c=[I(ui,vi)]作为附加输入;这里(ui,vi)是将3D点x投影到视图i上时的像素位置,并且c将来自所有视图的颜色i(ui,vi)作为向量连接起来。MLP表示为:
在这里插入图片描述
f=S(x)是从位置x处的体积S三线插值的神经特征

3、体渲染

MVSNeRF重建神经编码体积,并回归场景中任意点处的体积密度和视颜色。这允许应用可微分体积渲染来回归图像颜色。体渲染给出的公式与NeRF中离散化的公式是类似的
在这里插入图片描述

使用L2损失函数进行网络训练,这里比较的就是得到的颜色与真实颜色的差距。
在这里插入图片描述

4、优化神经编码体积

论文中介绍神经编码体中回归密度和颜色的解码器具有很强的泛化性。NeRF是通过逐场景优化解决这个泛化性问题,但是花销很高,本文的做法是先只用3个生成,然后多余的图像可以用来fine-tune(微调)。
1.添加颜色,上文中输入的是像素的颜色,这里的改进是:通过将体素中心的每视图颜色作为附加通道附加到编码体积来实现独立的神经重建,这些颜色作为特征在每场景优化中也是可训练的。
2.优化:进一步微调体素特征以及MLP解码器,以在密集图像可用时执行快速的每场景优化。注意,只优化代价体的编码器(encoding volume)和MLP,而不是整个网络。这为神经优化提供了更大的灵活性,以在优化时独立地调整每体素局部神经特征;这比在体素上优化共享卷积运算更容易。

MVSNERF是一个基于多视角数据集的神经网络架构,旨在进行三维物体重建和深度图预测。要搭建MVSNERF的环境,需要进行以下几个步骤。 首先,需要安装Python的运行环境。MVSNERF是使用Python编写的,因此需要确保您已经安装了Python。建议使用Anaconda来管理Python环境,这将方便您安装和管理所需的依赖库。 其次,您需要安装深度学习框架PyTorch。MVSNERF是基于PyTorch开发的,因此需要确保您已经安装了PyTorch。您可以通过PyTorch的官方网站获取安装指南和对应版本的安装文件。 接下来,您需要安装MVSNERF的依赖库,如NumPy、Matplotlib等。您可以使用pip命令来安装这些库。 然后,您需要下载MVSNERF的源代码。MVSNERF的源代码可以在其官方GitHub仓库中找到。您可以通过git命令克隆或下载该仓库,并将其保存到您希望的位置。 在搭建好环境并获取源代码后,您就可以开始使用MVSNERF了。如果您希望重建三维物体,您需要准备一个多视角图像数据集。根据MVSNERF的要求,您的数据集应包含多个视角的图像和对应的相机参数。您可以将这些数据集放在指定的文件夹中,并按照MVSNERF的文档进行配置。 配置完成后,您可以使用MVSNERF提供的命令行工具来进行三维物体重建和深度图预测。根据您的具体需求和数据集的规模,您可以选择使用不同的参数和配置文件。 总而言之,搭建MVSNERF的环境需要安装Python、PyTorch以及相关的依赖库,并下载源代码。然后,根据MVSNERF的文档配置数据集和参数,并使用命令行工具进行三维物体重建和深度图预测。希望这些信息对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值