【论文简述及翻译】MVSNet:Depth Inference for Unstructured Multi-view Stereo(ECCV 2018)

news2024/11/15 21:25:51

 一、论文简述

1. 第一作者:Yao Yao

2. 发表年份:2018 Oral

3. 发表期刊:ECCV 

4. 关键词:MVS、端到端网络、代价体、深度图、可微分单应变换

5. 探索动机:传统方法存在一些常见的局限性,很难处理场景的低纹理、高光和反射区域,从而导致重不完全建。基于体的学习方法,如SurfaceNet和LSM网络由于体表示的缺点,只能进行小规模的重建。

6. 工作目标:是否可以将学习的两视图立体视觉的思路扩展到多视图场景中?

7. 核心思想:参考基于两张图像的代价体的双目立体匹配的深度估计方法,扩展到从多张图片中进行深度估计,提出了一种端到端的深度学习架构。MVSNet的核心不是直接把3D模型建出来,而是端到端的学习深度图。

  • 网络的输入是一张参考图像(reference image)和一系列的源图像(source image),每次计算一个参考图像的深度图,而不是立即计算整个三维场景,这样的思路保证了大规模三维重建的可行性。
  • 通过使用可微的单应性矩阵变换,将2D的图像特征转换到基于相机视锥的特征体,并将基于方差的N个特征体合并成一个代价体,实现了将相机的几何信息编码到网络中,并能适应不同数目的多视角图像输入,保证了深度学习中端到端的训练。

8. 实现方法:

  • 特征提取:输入一张reference image(参考图) 和N张source images(待映射图),然后使用8个2D卷积提取特征图,最后,下采样得到原图1/4分辨率的32通道的特征图。
  • 特征体构造:将N张source images的特征利用单应性变换( homography warping),类似极线搜索,转换到reference image前的视锥体上构建N个三维特征体。
  • 代价体构造:将N个特征体通过计算方差,聚合至一个代价体,因此提出了一个N-视图的相似性度量的代价指标。方差越小,说明在该深度上概率越高。
  • 代价体正则化:使用多尺度的UNet结构的3D CNN进行正则化,将32通道的代价体正则化为1通道,将代价体变成概率体。
  • 深度图:使用softmax 操作得到初始的深度图。
  • 概率图:每个点的值表示该位置深度估计的有效性,概率越高,越可能为正确的深度估计,对概率空间,沿深度维度计算每四个邻域的概率和,再沿深度维度取最大的概率和。
  • 深度图改进:由于正则化过程中的大的感受野,导致了重建的边缘过于平滑,这里使用了深度图的残差学习网络,把初始深度图和参考图连接组成4个通道的特征图,经过卷积的到最后的结果。
  • 回归:使用混合监督的方式 ,真实值与初始深度图及改进后的深度图分别计算损失,具体使用L1 smooth做回归估计。
  • 深度图滤波:通过光度一致性和几何一致性对不符合条件的深度值进行滤波。
  • 点云融合:依照MVS传统方法,利用多张图片之间的重建约束来选择预测正确的深度信息,重建成三维点云。

9. 实验结果:MVSNet在大规模室内数据集DTU上进行验证,通过简单的后处理,MVSNet不仅显著优于以前的先进技术,而且运行时速度快了几倍。在复杂的户外Tanks和Temples数据集上评估MVSNet,无需任何微调,MVSNet在排行榜上位列第一,证明了网络具有很强的泛化能力。

10.论文&代码下载:

https://arxiv.org/abs/1804.02505

https://github.com/YoYo000/MVSNet

https://github.com/xy-guo/MVSNet_pytorch

二、论文翻译

MVSNet: Depth Inference for Unstructured Multi-view Stereo

摘要

我们提出了一个端到端深度学习结构,用于从多视图图像进行深度图推断。在该网络中,我们首先提取深层的视觉图像特征,然后通过可微分的单应变换,基于参考视图的相机视锥体构建3D代价体。然后我们使用3D卷积对初始深度图进行正则化和回归得到初始的深度图,初始的深度图通过参考图像改进得到最后的深度图。我们的框架可以灵活地处理任意数量视图,因为基于方差的代价指标可将多个特征映射为一个代价特征。MVSNet在大规模室内数据集DTU上进行验证。通过简单的后处理,我们的方法不仅显著优于以前的先进技术,而且运行时速度快了几倍。我们还在复杂的户外Tanks和Temples数据集上评估MVSNet,无需任何微调,MVSNet在排行榜上位列第一,证明了网络具有很强的泛化能力。

关键词:多视图立体匹配;深度图;深度学习

1 介绍

Multi-view stereo (MVS)从重叠图像中估计出密集表示,是计算机视觉几十年来广泛研究的核心问题。多视图立体匹配重建可以当做对确定场景进行拍摄照片的逆过程。拍照通过相机把三维场景映射为二维,而多视图立体匹配重建则刚好相反,其目的是通过不同视点拍摄的图像,恢复出真实的三维场景。传统方法使用手工设计的相似性度量指标和工程正则化(如归一化互相关和半全局匹配)来计算稠密对应关系和恢复三维点。虽然这些方法在理想的朗伯场景下显示了良好的效果,但它们也存在一些常见的局限性。例如,场景的低纹理、高光和反射区域使稠密匹配变得难以处理,从而导致不完全重建。在最近公布的MVS基准中,虽然目前最先进的算法在精度上表现很好,但重建完整性仍有很大的提升空间。

近年来卷积神经网络(CNNs)研究的成功也引发了人们对提高立体重建的兴趣。在概念上,基于学习的方法可以引入全局语义信息,如高光先验和反射先验,从而提高匹配的鲁棒性。目前已经有一些两视图立体匹配的尝试,用神经网络替换手工设计的相似性度量或正则化方法。这些方法展现出更好的结果,并且逐步超过立体匹配领域的传统方法。事实上,立体匹配任务非常适合应用基于CNN的方法,因为图像对是预先校正的,因此问题变成了不需要考虑相机参数的水平方向上逐像素的视差估计。

然而,直接将学习的两视图立体视觉扩展到多视图场景并非易事。虽然可以简单地对所有选择的图像进行立体匹配预校正,然后将所有成对重建的图像合并到全局点云中,但这种方法不能充分利用多视图信息,导致结果的准确性较差。与立体匹配不同,输入到MVS的图像可以是任意的相机几何图形,这给学习方法的使用带来了一个棘手的问题。只有很少的工作意识到该问题,并尝试将CNN应用于MVS重建:SurfaceNet预先构造了彩色体素立方体,将所有图像像素颜色和相机信息单独的构成一个3D代价体,所构成的3D代价体即为网络的输入。相比之下,学习立体机器(LSM)[15]直接利用可微投影/不投影来实现端到端训练/推断。然而,这两种方法都利用了规则网格的体表示。然而受限于3D代价体巨大的内存消耗,他们的网络规模难以扩大:LSM只处理低体地分辨率的合成目标,而SurfaceNet采用启发式的分治策略,大规模重建耗时较长。目前,现代MVS基准的主要板块仍被传统方法占据着。

为此,我们提出了一种用于推断深度图的端到端深度学习结构,该结构每次只计算一个深度图,而不是一次计算整个3D场景。类似于其他基于深度图的MVS方法,本文提出的网络MVSNet以一张参考图像和几张源图像作为输入,推断出参考图像的深度图。网络的关键之处在于可微分的单应变换操作,在从2D特征图构建3D代价体的过程中,网络将相机参数隐式地将编码入网络,并实现端到端训练。为使网络能够适应任意数目的输入源图像,我们提出基于方差的指标,该指标将体中的多个特征体映射为一个代价特征。对代价体进行多尺度的3D卷积可以回归出一个初始的深度图。最后使用参考图像对深度图进行优化以提升边界区域的精度。最后,利用参考图像对深度图进行细化,提高边界区域的精度。我们的方法与之前基于学习的方法有两个明显的不同。首先,为了进行深度图推断,我们的3D代价体的构建是基于相机视锥体而不是规整的欧式空间。其次,我们的方法将MVS重建分解为逐视图的深度估计问题,使大规模重建成为可能。

我们在大规模DTU数据集上对所提出的MVSNet进行训练和评估。大量的实验表明通过简单的后处理,MVSNet在完整度和整体质量上都要比其他方法要好。除此之外,还在室外数据集Tanks and Temples基准测试上验证了网络的泛化性能,MVSNet在榜单上排名第一(截止至2018年4月18号),无需任何微调,MVSNet的效果比开源MVS方法(例如,COLMAP和OpenMVS)和商业软件(Pixel4D)要好。同样值得注意的是,在运行速度方面MVSNet比之前最好的方法要快几倍甚至几个数量级。

2 相关工作

MVS重建。根据输出表示,MVS方法可分为1)直接点云重建2)体重建3)深度图重建。基于点云的方法直接对三维点进行操作,通常依靠传播策略来逐步稠密化重建。由于点云的传播是顺序进行的,这些方法很难完全并行化,处理时间长。基于体的方法将三维空间划分为规则的网格,然后估计每个体素是否附着在表面上。这种表示的缺点是空间离散化误差和高内存消耗。相比之下,深度图是最灵活的表示方法。它将复杂的MVS问题分解为逐视图的深度估计问题,,即一次只关注一幅参考图像和少数源图像。此外,深度图可以很容易地融合到点云或体重建。根据最近的MVS基准,目前最好的MVS算法都是基于深度图的方法。

学习的立体几何。与传统的手工设计的图像特征和匹配指标不同,最近的立体视觉研究将深度学习技术用于更好的成对图像块匹配。Han等首先提出了一个深度网络来匹配两个图像块。Zbontar等人和Luo等人使用学习的特征进行立体匹配,并使用半全局匹配(SGM)进行后处理。除了成对匹配代价外,学习技术还应用于代价正则化。SGMNet学习调整SGM中使用的参数,而CNN-CRF在网络中加入条件随机场优化,用于端到端立体学习。近期最先进的方法是GCNet,它使用3D CNN来正则化代价体,并用soft argmin操作来回归视差。根据KITTI基准的公布,基于学习的立体方法,特别是那些端到端学习算法,显著优于传统的立体方法。

学习的MVS。很少有方法尝试学习的MVS。Hartmann等人提出了学习的多图像块相似性来代替传统的MVS重建代价指标。针对MVS问题,首先基于学习的管道机制是SurfaceNet,它通过复杂的体素视图选择预先计算代价体,并使用3D CNN进行规则化和推断表面体素。与我们最相关的方法是LSM,其中相机参数在网络中被编码作为投影操作,形成代价体,使用3D CNN对体素是否属于曲面进行分类。然而,由于体表示的普遍缺点,SurfaceNet和LSM的网络只能进行小规模的重建。他们要么采用分治策略,要么只适用于低分辨率输入的合成数据。相比之下,我们的网络专注于每次生成一个参考图像的深度图,这允许我们自适应地直接重建一个大场景。

3 MVSNet

本节对所提出的MVSNet进行详细的描述,MVSNet的设计遵循了相机几何原理,并且借鉴了传统MVS方法的一些观点。在接下来的部分,将网络中的每个模块与传统的MVS方法进行对比,以此验证基于深度学习MVS方法的优势。MVSNet的完整网络结构如图1所示。

图1. MVSNet的网络设计。输入图像经过二维特征提取网络和可微分的单应变换生成代价体。最后回归正则化的概率体输出深度图,并用参考图像进行改进。

3.1 图像特征

MVSNet的第一步是对N个输入图像提取深度特征进行稠密匹配。我们使用了一个8层的二维CNN,将第3层和第6层的步长设置为2,将特征塔划分为3个尺度。在每个尺度内,两个卷积层用来提取更高层次的图像表示。除了最后一层,每个卷积层后面跟着一个批归一化(BN)层和一个整流线性单元(ReLU)。此外,与常见的匹配任务相似,参数在所有特征塔之间共享,以提高学习效率。

2D网络的输出是N个32通道的特征图,与原图相比,在每个维度上缩小了4倍。值得注意的是,虽然特征提取后图像帧被缩小,但被保留下来像素的邻域信息已经被编码保存至32通道的特征描述子中,防止稠密匹配丢失有用的上下文信息。与简单地对原始图像进行稠密匹配相比,使用所提取的特征图显著提高了重建质量(见第5.3节)。

3.2 代价体

接下来是基于提取的特征图和输入相机参数构建一个3D代价体。之前的空间划分的方法是基于规整的网格,但是对于深度预测的任务而言,我们是基于参考相机视锥体进行代价体的构建。为简单起见,下面我们将参考图像表示为I1,Ii为源图像,{Ki,Ri,ti} 对应于特征图的相机内参、旋转和平移。

可微分的单应矩阵。将所有特征图变化到参考相机不同的正面平行的平面,形成N个特征体Vi。从变化特征图Vi(d)到深度d的Fi的坐标映射由平面变换确定x`~ Hi(d)·x,其中‘~’表示投影等式,Hi(d)表示深度d处第i个特征图和参考特征图在的单应矩阵。设n1为参考相机的主轴,单应矩阵用3×3矩阵表示:

 不失一般性,参考特征图F1的单应矩阵本身是一个3×3的单位矩阵。变化过程与经典的平面扫描立体视觉相似,不同之处是使用可微双线性插值从特征图{Fi} 中采样像素而不是图像{Ii}。变化操作作为连接二维特征提取和三维正则化网络的核心步骤,以可微的方式实现,实现了深度图推理的端到端训练。

代价指标。然后我们聚合多个特征体{Vi}到1个代价体C。为了适应任意数量的输入视图,我们提出了一个基于变量的代价指标M来度量n视图的相似性。令W , H , D , F为输入图像宽度,高度,深度样本数和特征图的通道数,V表示特征体大小,我们的代价指标定义为映射:

其中~Vi是所有特征体的平均体,上面的所有操作都是逐元素的。

大多数传统的MVS方法以启发式的方式将参考图像和所有源图像的代价成对聚合。相反,我们的度量设计遵循这样一种理念,即所有视图都应该对匹配代价做出相同的贡献,并且不优先于参考图像。我们注意到,最近的工作对多个CNN层使用均值操作来推断多图像块的相似度。这里我们选择“方差”操作,因为“均值”操作本身不提供关于特征差异的信息,而且它们的网络需要CNN前后的层来帮助推断相似性。相反,我们基于差异的代价度量明确地测量了多视图特征的差异。在随后的实验中,我们将证明这种显式的差异测量方法提高了验证的准确性。

代价体正则化。从图像特征计算出的原始代价体可能会受到噪声污染(例如,由于非朗伯曲面的存在或物体遮挡),因此应该结合平滑约束来推断深度图。我们的正则化步骤旨在改进上述代价体C,以生成用于深度推断的概率体P。受最近基于学习的立体和MVS方法的启发,我们采用多尺度3D CNN进行代价体正则化。这里的四尺度网络类似于一个3D版本的Unet,它使用编码器-解码器结构从一个较大的感受野聚集邻近的信息,而内存和计算成本相对较低。为了进一步降低计算需求,我们在第一个3D卷积层之后将32通道的代价体减少到8通道,并改变每个尺度内的卷积从3层到2层。最后的卷积层输出一个1通道的体。最后,在深度方向上应用softmax运算进行概率归一化。

所得到的概率体在深度图推断中是非常可取的,因为它不仅可以用于逐像素深度估计,而且可以用于估计置信度的测量。我们将在3.3节说明,通过分析深度重建的概率分布,可以很容易地确定深度重建的质量,从而在4.2节给出一个非常简洁而有效的离群值滤波策略。

图2. 推断深度图、概率分布和概率图的图示。(a) scan 114的参考图像一张,DTU数据集;(b)推断深度图;(c)内点(正确点)像素点(上)和外点(离群值)像素点(下)的概率分布,其中x轴为深度假设指标,y轴为概率,红线为soft argmin结果;(d)概率图。如(c)所示,离群值的分布是分散的,导致(d)的低概率估计。

3.3 深度图

初始估计。从概率体P中检索深度图D的最简单方法是找到像素上的最大值 (即argmax),然而由于argmax操作的不可微性,不能产生亚像素估计,也不能用反向传播进行训练。相反,我们沿深度方向计算期望值,即对所有假设的概率加权求和:

其中P(d)是所有像素点深度为d的概率估计。注意,该操作在[17]中也称为soft argmin操作。它是完全可微的,可以近似argmax结果。在代价体构建期间,深度假设在范围内均匀采样[d min,d max],这里的期望值可以产生连续的深度估计。输出的深度图(Fig.2 (b))与二维图像特征图大小相同,与输入图像相比各维度缩小4倍。

概率图。沿深度方向的概率分布也反映了深度估计的质量。虽然多尺度3D CNN有很强的能力将概率归一化为单一模态分布,但是我们注意到对于那些误匹配的像素点,其概率分布是分散的,不能集中到一个峰值(见Fig.2 ©)。基于此观察,我们将深度估计ˆd的质量定义为真实深度在估计值附近的一个小范围内的概率。当深度假设沿着相机截锥体被离散采样时,我们只需取四个最近的深度假设的概率和来衡量估计质量。请注意,这里也可以使用其他统计度量,如标准差或熵,但在我们的实验中,我们没有观察到这些用于深度图过滤的度量方法有显著改进。此外,我们的概率和公式可以更好地控制离群值滤波的阈值参数。

深度图改进。虽然从概率体中检索到的深度图是一个合格的输出,但由于正则化涉及到较大的感受野,重建边界可能存在过平滑问题,类似于语义分割和图像抠图的问题。请注意,参考图像自然包含边界信息,因此我们使用参考图像作为改进深度图的指导。受最近的图像抠图算法的启发,我们在MVSNet的末端应用了一个深度残差学习网络。初始深度图和调整大小的参考图像连接为4通道输入,然后通过输入3个32通道的二维卷积层,接着1个1通道的卷积层,学习深度残差。然后将初始深度图添加回去,以生成改进的深度图。最后一层不包含BN层和ReLU单元的负残差。此外,为了防止在某个深度尺度上出现偏差,我们预先将初始深度大小预缩放为[0,1]区间,并在改进后将其转换回来。

3.4 损失

同时考虑了初始深度图和改进深度图的损失。我们使用真实深度图和估计深度图之间的平均绝对差作为我们的训练损失。由于真实的深度图在整个图像中并不总是完整的(见第4.1节),我们只考虑那些有有效真实标签的像素:

式中pv为有效真实的像素点集合,d(p)为像素点p的真实深度值,di(p)初始深度估计,dr(p) ​为改进深度估计。在实验中,参数λ被设置为1.0。

实现

4.1 训练

数据准备。目前MVS数据集提供的真实数据是以点云或网格的格式呈现的,所以我们需要自己产生深度图。DTU数据集是一个大型MVS数据集,包含100多个不同光照条件下的场景。由于它为真实的点云提供了法线信息,我们使用经过筛选的泊松曲面重构(SPSR)生成网格曲面,然后将网格渲染到各个视点,生成深度图用于我们的训练。为获取更好质量的网格结果,我们将参数depth-of-tree设为11;同时,为减轻表面边缘区域的人工伪影,我们将修剪因子(trimming-factor)设为9.5。为了公平地与其他深度学习的方法进行对比,我们选择与SurfaceNet相同的训练、验证和评估集。考虑到每次扫描包含具有7种不同光照条件的49张图像,通过将每张图像作为参考,DTU数据集总共提供了27097个训练样本。

视图选择。我们的训练使用一个参考图像和两个源图像(N = 3)。根据稀疏点,我们为每个图像对计算一个分数s(i;j) =PpG(θij(p)),其中p是视图i和视图j中的公共轨迹,θij(p) = (180\π) arccos((ci−p)·(cj−p))为p的基线夹角,c是相机光心。G是分段高斯函数[40],它倾向于某一基线角θ0:

在实验中,θ0、σ1和σ2分别设为5、1和10。

注意到图像尺寸在特征提取阶段会被缩小,再加上3D正则化部分的4层编码-解码结构,输入的图像尺寸必须能被32整除。同时考虑到GPU显存的限制,我们将图像分辨率从1600×1200降至800×600,然后在图像中心处截取640×480大小的图像块作为网络训练的输入。输入的相机参数也随之改变。深度假设在425mm~935mm范围内以2mm的分辨率均匀采样(采样数D=256)。我们使用TensorFlow实现了MVSNet,并在一张Tesla P100显卡上进行网络训练,大约100000次迭代。

4.2 后处理

深度图过滤。经过上述步骤,我们为参考图像的每个像素估计一个深度值。在将结果转为稠密点云之前,非常有必要过滤背景区域和遮挡区域的离群值。我们提出了两个评判标准,即光度和几何一致性的鲁棒深度图滤波。

光度一致性衡量了匹配质量,如3.3节所提及的,我们计算概率图来衡量深度估计的质量。在实验中,我们将概率值低于0.8的像素视为离群值。几何约束用于衡量多视图之间的深度一致性。与立体匹配中左右视差校验相似,将参考图像像

素点p1处的深度值d投影至邻域视图的pi点处,然后将pi处的深度值d重投影至参考图像。如果重投影的坐标preproj和和重投影的深度dreproj满足|preproj-p1|<1并且|dreproi-dl/d<0.01,我们称像素p1处的深度估计值d是两视图连续的。在实验中,所有深度应该至少有三个视图一致。简单的两步过滤策略在滤除不同类型的离群值中显现出很强的鲁棒性。

深度图融合。与其他多视图立体重建方法类似,我们运用深度融合步骤将多视图的深度图融合为统一的点云表示。在重建过程中使用基于可见性的融合算法,使得不同视图间的深度遮挡和违规最小化。为进一步抑制重建噪声,在过滤步骤中,为每个像素计算可见视图,将所有重投影深度的平均值d作为像素的最终深度估计。融合的深度图被反投影回3D空间生成点云。MVS重建图示如图3。

图3. scan 9,DTU数据集的重建。从左上到右下:(a)从MVSNet推断出的深度图;(b)经光度和几何滤波后的滤波深度图;(c)由真实网格绘制的深度图;(d)参考图像;(e)最终融合点云;(f)真值点云

5 实验

5.1 DTU数据集基准测试

我们首先在DTU数据集的22个评估扫描上评估我们的方法。输入视图数,图像宽度,图像高度和深度采样数分别设置为N=5,W=1600,H=1184,D=256。对于定量评价,我们计算了距离度量和百分比度量的准确性和完整性。在DTU数据集提供的距离度量的matlab代码的同时,我们自己实现了百分比的计算。请注意,百分比度量也度量准确性和完整性的总体性能,如f分(f-score)。为了给距离度量一个相似性度量,我们定义总分(overall),取平均精度和平均完整性的平均值作为重建质量。

定量结果见表1。虽然Gipuma在准确性方面表现最好,但我们的MVSNet在完整性和整体质量方面都优于所有方法,具有显著的优势。如图4所示,MVSNet生成的点云最完整,特别是在那些无纹理和反射的区域,这些区域通常被认为是MVS重建中最难恢复的部分。

表1. DTU评价集的定量结果。我们分别使用1mm和2mm阈值的距离度量(越低越好)和百分比度量[18](越高越好)来评估所有方法。

图4. DTU数据集scans 9、11和75的定性结果。我们的MVSNet生成最完整的点云,特别是在那些无纹理和反射区域。屏幕上的最佳观看效果。

5.2 Tanks and Temples数据集泛化性

DTU扫描是在控制良好的室内环境下,相机轨迹固定的情况下获得。为了进一步证明MVSNet的泛化能力,我们在更复杂的Tanks and Temples数据集上测试了提出的方法,使用在DTU上训练的模型,没有任何微调。对于所有重建,我们选择N = 5, W = 1920, H = 1056, D = 256,根据稀疏点云和相机位置确定参考图像的深度范围和源图像集,利用开源SfM软件OpenMVG恢复参考图像。

根据在线基准(表2),我们的方法在2018年4月18日之前的所有提交的intermediate集中排名第一。尽管模型是在非常不同的DTU室内数据集上训练的,MVSNet仍然能够在这些室外场景产生最好的重建,证明该网络具有较强的泛化能力。intermediate集的定性点云结果如图5所示。

表2. Tanks and Temples基准的量化结果。MVSNet在没有任何微调的情况下,在所有提交的工作中获得了最好的f-score结果。

5.3 消融

本节对MVSNet网络中的若干组成部分进行分析,在接下来的实验中,我们使用验证集的深度值损失来衡量重建质量。18个验证扫描(见第4.1节)被预处理作为训练集,我们设N = 3, W = 640, H = 512, D = 256用来验证损失的计算。

视图数量。我们首先研究了输入视图数N的影响,并证明我们的模型可以应用于任意输入视图。虽然第4.1节中的模型是使用N=3个视图训练,但我们分别使用N = 2,3,5进行测试。正如预期的,如图6 (a)所示,增加输入视图可以降低验证损失,这与我们对MVS重建的认识保持一致。值得注意的是,使用N=5的测试比使用N = 3的测试执行得更好,即使模型是用3个视图设置训练的。这种非常理想的特性使MVSNet具有足够的灵活性,可以应用不同的输入设置。

图6. 消融研究。(a)不同输入视图数量的验证损失。(b)二维图像特征、代价度量和深度图改进的消融。

图像特征。我们研究发现,基于深度学习的特征可以显著提升MVS重建质量,为了在MVSNet建模出传统的基于图像块的图像特征,我们将网络中原始的2D特征提取替换为一个32通道的卷积层。卷积核的大小设定为7×7,步长为4。由图6可知,在验证损失上2D特征提取的网络比单层网络效果更好。

代价指标。我们还比较了基于平均的代价指标和基于方差的代价指标。将公式2中的元素方差操作替换为均值操作来训练新模型。如图6所示,逐元素的方差操作可以达到更快的收敛速度,验证损失更低,同时也验证了使用显式差分度量方法计算多视图特征相似度更合理。

深度图改进。最后,对有深度图改进、没有深度图改进的MVSNet两种情况进行训练。模型还在第5.1节所述的DTU评价集上进行了测试,我们使用百分度量来定量比较两个模型。由图6 (b)可知,深度图改进基本上对验证集损失没有影响,但是深度图改进步骤可以提高点云重建结果。在小于1mm条件下f-score从75.58提高为75.69;2mm条件下f-score从79.98提高为80.25。

5.4 讨论

运行时间。我们使用DTU评估集将MVSNet的运行速度与Gipuma、COLMAP和 SurfaceNet进行比较。其他方法都是根据源代码编译的,所有的方法都在同一台机器上进行测试。MVSNet的效率要高得多,重建一次扫描大约需要230秒(每张图需要4.7秒)。运行速度比Gipuma快5倍,比 COLMAP 快100倍,比 SurfaceNet 快160倍。

GPU内存。MVSNet 需要的 GPU 内存与输入图像的大小和深度采样数量有关。为了测试Tanks and Temples的原始图像分辨率和足够的深度假设,我们选择Tesla P100显卡(16 GB)来实现我们的方法。值得注意的是,在DTU数据集上的训练和验证可以使用一个消费者级别的 GTX 1080ti 显卡(11 GB)。

训练数据。如第4.1节所述,DTU 提供了带有法线信息的真实点云,因此我们可以将它们转换成网格表面,用于深度地图渲染。然而,目前Tanks and Temples数据集不提供法线信息或网格表面,所以我们无法在Tanks and Temples数据集上微调 MVSNet 实现更好的性能。

虽然使用这种渲染的深度图已经取得了令人满意的效果,但是仍然存在一些局限性: 1)所提供的真实网格不是100% 完整的,因此前景后面的一些三角形将被错误地渲染为深度图的有效像素,这可能会影响训练过程。2)如果一个像素在所有其他视图中被遮挡,则不应该用于训练。然而,没有完整的网格表面,我们不能正确识别被遮挡的像素。我们希望未来的 MVS 数据集能够提供完整的遮挡和背景信息的真实深度图。

结论

我们提出了一种用于 MVS 重建的深度学习结构。提出的 MVSNet 采用非结构化图像作为输入,并以端到端的方式推断出参考图像的深度图。MVSNet 的核心贡献是将相机参数编码为可微单应矩阵,在相机椎体上构建代价体,将二维特征提取和三维代价正则化网络连接起来。DTU 数据集表明,MVSNet 不仅性能明显优于以往的方法,而且在速度上也比以前提高了数倍。此外,MVSNet 在没有任何微调的情况下,在Tanks and Temples数据集上产生了最先进的结果,这表明它具有很强的泛化能力。

三、参考

MVSnet 论文笔记 上https://blog.csdn.net/weixin_44088305/article/details/121321997?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~OPENSEARCH~Rate-1-121321997-blog-127779163.pc_relevant_recovery_v2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~OPENSEARCH~Rate-1-121321997-blog-127779163.pc_relevant_recovery_v2&utm_relevant_index=1

理解MVSnethttps://blog.csdn.net/qq_43027065/article/details/116641932?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-15-116641932-blog-121321997.pc_relevant_recovery_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-15-116641932-blog-121321997.pc_relevant_recovery_v2&utm_relevant_index=16

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/30741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1100亩烟台深耕水稻 国稻种芯·中国水稻节:山东盐碱地水稻

1100亩烟台深耕水稻 国稻种芯中国水稻节&#xff1a;山东盐碱地水稻 &#xff08;YMG全媒体记者 庞磊 通讯员 包刚先 李敏 摄影报道&#xff09;新闻中国采编网 中国新闻采编网 谋定研究中国智库网 中国农民丰收节国际贸易促进会 国稻种芯中国水稻节 中国三农智库网-功能性农业…

LinuxHadoop环境

Hadoop环境Hadoop集群拓扑1、集群拓扑2、角色分配一、虚拟机安装二、虚拟机克隆1、克隆类型&#xff08;1&#xff09;完整克隆&#xff08;2&#xff09;链接克隆2、克隆步骤&#xff08;1&#xff09;克隆出master虚拟机&#xff08;2&#xff09;克隆出slave1虚拟机&#xf…

线性回归实战---Abalone鲍鱼年龄预测

线性回归实现Abalone鲍鱼年龄预测 文章目录线性回归实现Abalone鲍鱼年龄预测一、环境准备数据集简介二、线性回归基础知识什么是线性回归?“最小二乘法” 求解线性回归问题三、Python代码四、结果分析前面我们使用手动编写,后面通过sklearn第三方库来与我们手写的模型进行对比…

Mysql——使用字符集以及校对

一、字符集 1、查看mysql支持的所有字符集 show character set; 2、查看指定数据库的字符集 show variables like ‘character%’; 这八种情况分别对应&#xff1a; 1&#xff09;设置客户端使用的字符集 2&#xff09;设置链接数据库时的字符集 3&#xff09;设置创建数据库…

2、Pinpoint-Server端安装

0、本章节简介 安装Pinpoint服务端 采用Docker安装所以需要提前安装 docker和 docker-compose 本文使用的版本是Pinpoint:2.1版本 ps 由于Pinpoint依赖了很多的基础镜像&#xff0c;所以推荐不要在已经部署了程序的机器上部署&#xff0c;以免造成端口号冲突&#xff0c;推荐使…

HTML5期末大作业——HTML+CSS+JavaScript平遥古城旅游景点介绍(6页)

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…

【笔试强训】Day2

&#x1f308;欢迎来到笔试强训专栏 (꒪ꇴ꒪(꒪ꇴ꒪ )&#x1f423;,我是Scort目前状态&#xff1a;大三非科班啃C中&#x1f30d;博客主页&#xff1a;张小姐的猫~江湖背景快上车&#x1f698;&#xff0c;握好方向盘跟我有一起打天下嘞&#xff01;送给自己的一句鸡汤&#x…

Vue常用知识点汇总

1. Vue常见的指令有哪些&#xff0c;有什么用 &#xff08;1&#xff09;v-text&#xff1a; 会替换掉元素里的内容&#xff1b; &#xff08;2&#xff09;v-html&#xff1a; 可以渲染html界面&#xff1b; &#xff08;3&#xff09;v-clock&#xff1a; 防止界面闪烁&…

[附源码]java毕业设计学校缴费系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Activity的启动模式

文章目录Activity的启动模式standardsingleTopsingleTasksingleInstanceActivity的启动模式 在实际的项目当中,我们应该根据特定的需求给每个Avtivity指定恰当的启动模式启动模式一共包含四种:standard,singleTop,singleTask,singleInstance指定启动模式的方法:在AndroidManif…

SELECT 1 FROM DUAL ,未找到要求的 FROM 关键字

1. 解决方案 背景描述&#xff1a; 项目需要将mysql数据库换成Oracle数据库&#xff0c;配置好数据源后&#xff0c;启动报错&#xff1a; 解决方案&#xff1a; application.yml 中修改&#xff08;配置了多数据源&#xff09;&#xff1a; spring:datasource:dynamic:dr…

web前端网页制作课作业:使用HTML+CSS技术制作中华传统文化网站【文房四宝】学生网页设计作品 简单静态HTML网页作品

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Linux上:安装、网络配置

文章目录第一章&#xff1a; Linux概述1.1 操作系统1.2 操作系统的发展史1.3 Linux发行版第二章WSL安装linux2.1 WSL简介2.2安装Ubuntu2.3 Ubuntu功能设置2.4 ubantu环境设置第三章&#xff1a; 使用VM安装Linux3.1安装VMware3.2 配置安装系统环境3.3 安装Centos系统3.4 基本配…

C++入门基础05:表达式(表达式基础、算术运算符与赋值运算符、逻辑关系运算符、成员访问运算符与条件运算符、位运算符、移位运算符与类型转换)

C入门基础05&#xff1a;表达式(表达式基础、算术运算符与赋值运算符、逻辑关系运算符、成员访问运算符与条件运算符、位运算符、移位运算符与类型转换) 一、表达式基础 #include <iostream> //系统定义头文件一般是尖括号 #include<fstream> #include<string…

Linux从入门到精通(九)——Linux编程

文章篇幅较长&#xff0c;建议先收藏&#xff0c;防止迷路 文章跳转Linux从入门到精通&#xff08;八&#xff09;——Linux磁盘管理goLinux从入门到精通&#xff08;九&#xff09;——Linux编程goLinux从入门到精通&#xff08;十&#xff09;——进程管理goLinux从入门到精…

教程一 Energy 构建简单的Windows、Linux、MacOSX桌面应用

Golang的Energy使用命令行工具安装开发环境&#xff0c;并运行一个应用。 环境安装 Energy 命令行工具 使用命令行工具自动安装Energy框架的所有依赖(CEF)&#xff0c;支持Window、Linux、MacOSX 安装过程从网络下载CEF和Energy库 获取命令行工具 一、预编译命令行工具 下载地…

银行业国产数据库现状

数据库发展历程 数据库经历了单机数据库、集中式数据库、非关系型数据库、新型数据库四阶段。 单机数据库&#xff1a;单机数据库就是只能运行在单机上&#xff0c;不提供网络功能的数据库。 集中式数据库&#xff1a;数据库是一种经典、传统的数据库结构&#xff0c;多台机…

js内容整理

js内容整理 定时器 JavaScript 提供定时执行代码的功能&#xff0c;叫做定时器&#xff08;timer&#xff09;&#xff0c;主要由setTimeout()和setInterval()这两个函数来完成。 setTimeout() setTimeout函数用来指定某个函数或某段代码&#xff0c;在多少毫秒之后执行。它…

公益是书籍是什么,公益书籍变现模式有哪些

最近&#xff0c;我看到很多人在朋友圈里做公益书籍。 什么是公益书籍&#xff0c;公益书籍又是怎么进行变现的呢&#xff1f; 公益书籍主要是借助公益的逻辑&#xff0c;分发给各种家长。家长每次根据书单给孩子选择相应的书&#xff0c;15元左右就能拿到一套。 公益书籍实…

Linux进程地址空间

哪有明知明天会死今天就会上吊的傻瓜&#xff1f; -要乐观喔 本次博客的分享呢可能比较抽象&#xff0c;博主尽力画图分析&#xff0c;力图给老铁阐明清楚。 目录 ⚽一、进程地址空间区域划分 &#x1f453;Ⅰ区域划分 &#x1f453;Ⅱ虚拟地址和物理地址 ⚽二、页表和映…