【三维生成】MVSAnywhere:零样本的多视立体重建

发布于:2025-06-15 ⋅ 阅读:(32) ⋅ 点赞:(0)

在这里插入图片描述

图1.MVSA模型重建高质量的带位姿图像,优于现有的单目和MVS方法。与Depth Pro (单目方法)比较,其可以生成清晰美观的深度图,但深度缩放可能不一致,这是生成良好mesh所必需的。我们还加入了一个经过真实位姿增强的MAST3R 变体。MVSA模型生成的深度图清晰准确,三维一致性良好,在零样本环境中也能产生高质量的网格


标题:《MVSAnywhere:Zero-Shot Multi-ViewvStereo》
来源:Niantic;爱丁堡大学;I3A,萨拉戈萨大学;UCL
项目:https://nianticlabs.github.io/mvsanywhere/


摘要

  从多视角计算准确的深度是计算机视觉中一个基本且长期存在的挑战。然而,现有的大多数方法在不同领域和场景类型(如室内与室外)之间泛化能力较差。训练通用多视图立体模型具有挑战性,并引发了一些问题,例如如何最好地利用基于Transformer的架构,当输入视图数量变化时如何整合额外的元数据,以及如何估计有效深度范围,这一范围可能因不同场景而异,通常事先未知?MVSA是一种新的多功能的多视图立体架构,旨在通过泛化不同域(domains)和深度范围(depth range)来实现“随处可用”。MVSA结合了单目和多视图线索,并采用自适应成本体积(cost volume)来处理尺度相关问题。我们在鲁棒多视图深度基准上展示了最先进的零样本深度估计,超越了现有的多视图立体和单目基线。

一、引言

  从多张RGB图像中准确估计深度是三维视觉的核心挑战,也是下游应用如三维重建和自动驾驶的基础。最近基于学习的多视图立体(MVS)方法能够生成[6,95,96]的精确深度。然而,现有方法通常难以推广到与训练数据显著不同的场景和相机设置。因此,迫切需要更加稳健的通用MVS方法,以应对训练和测试分布之间的差异。

  我们从近期(场景无关)单视图深度模型的爆发中汲取灵感,这些模型仅使用单张图像作为输入,就能预测出合理的[2,26,30,56,81,98]或按比例缩放的[39,59,93,94]深度。这些模型通常是在大量精心整理的合成和/或真实RGB-D数据集上训练的,这赋予了它们在未见过的数据上的出色泛化性能。然而, 单视图模型本质上受到其输入的限制:输入限制为仅一张图像,迫使模型使用单视图几何线索(例如消失点)和学习到的模式[15],而失去了更强的多视图信号。虽然这些单视图模型有时间扩展版本[55,68,80,85,90],但它们的重点在于时间感知一致性,而不一定是多视图一致性 。在推理时可以提供多个视图的应用场景中,这些方法理应导致显著更准确的深度估计[36,49,70]。

  然而,开发一种通用的MVS方法面临着两个重大挑战

  • 首先,它应该能够处理任意深度范围。现有的MVS方法通常需要一个已知的深度范围来沿极线“搜索”,这对应于用于构建成本体积的一组离散深度区间。这些深度通常是固定的(从训练数据中的深度范围内选择)[62]或者在测试时为每张图像提供[76,95,96]。
  • 其次,使用ViT的优势,在大量且多样化的数据集上进行训练[17],“升级”标准MVS架构中仍使用CNN的部分。

  主要技术贡献:

  • 一种新颖的Transformer架构:处理多视角成本体积,同时融入单特征。提出了一种成本体积patch化方法,在不丢失细节的情况下对tokenizes成本体积,同时结合单目ViT的特征。
  • 提出了一种与视图数量、尺度都无关的机制,利用给定任意数量输入源帧的几何元数据构建成本体积。这与已建立的做法[62]不同,后者是将固定数量帧的几何元数据连接起来以构建成本体积。

二、相关工作

2.1 多视立体几何(MVS)

  MVS算法利用极线几何从多视角图像中估计深度[77]。在相机校准的情况下,早期方法通过匹配图像块来估计深度[22,65]。随后,引入了深度学习方法,最初用于立体匹配[100],后来通过端到端学习得到改进,通常使用平面扫描成本体积[11,25,34,35,40,73,79,96,101]。后续方法在架构上有所进步[6,7,16],增强了对遮挡和移动物体的鲁棒性[47,88,103],整合了时间信息[18],提高了模型效率[62,99],联合估计相机姿态[43,82],并利用先验几何估计来改善深度[63]。

  除了少数例外[102]、早期的立体和多视图方法传统上都是在同一数据集或领域内进行训练和测试的, 这限制了它们对分布外数据的泛化能力。这种领域泛化问题源于大多数高效的基于学习的多视图方法对数据的需求量大。例如,在合成[50,104]或伪标记深度[31]上进行训练可以有效,但到目前为止,这些方法难以涵盖多种场景类型和尺度。自监督方法可以在没有深度监督的情况下进行训练,但目前的方法产生的深度图像质量不如完全监督的方法[14,41,92]。与我们的工作同时进行,[27,86]在大型合成数据集上训练了大规模双目立体模型。

2.2 自适代价体

代价体Cost Volume的定义
   代价体是一个三维张量,其中每个元素表示某个像素在不同深度假设下的匹配代价 。这个代价通常反映了参考图像中的像素与源图像中对应像素的匹配程度。代价体的维度通常包括:

  • 图像宽度(Width)、图像高度(Height):与输入图像的尺寸相同。这是因为代价体积需要保存每个像素在不同深度假设下的匹配代价。
  • 深度层数(Depth Levels):深度层数表示不同的深度假设。每个深度层对应一个可能的深度值,通常从前景到背景递增。

在立体视觉中,代价体积的构建过程如下

  • 1.特征提取

  从参考图像和源图像中提取特征。这些特征可以是图像的像素值、纹理信息、边缘等,通常通过卷积神经网络(CNN)进行提取。

  • 2.深度假设

  对于每个像素,考虑不同的深度假设。即假设场景中该像素在不同的深度平面上可能的位置。这些假设构成了代价体积的深度维度。

  • 3.匹配代价计算

  对于每个深度假设,计算参考图像中每个像素与源图像中对应像素的匹配代价。代价通常基于像素的颜色差异、特征相似度等计算。例如,使用像素的绝对差异、均方误差(MSE)或其他距离度量来计算代价。代价越低,表示两个像素在该深度假设下的匹配程度越高。

  • 4.深度预测

  对深度估计结果进行平滑、去噪等处理,以获得更高质量的深度图。

具体来说,代价体中位置 ((x, y, d)) 对应于参考图像中位置 ((x, y)) 的像素在第 (d) 个深度假设下的代价。它通常是一个非负值,值越低表示匹配越好

   开发通用领域无关的MVS方法的挑战是,不同场景的深度范围相差甚远。例如,室内场景的深度通常只有几米,而室外场景的深度则可以覆盖更广的区域。这成为一个问题,因为传统的代价体模型需要一个已知的深度范围。在自监督学习中,[85]通过预测的深度的指数移动平均值,在训练时估计bin range。另一种方法从粗到细的迭代预测bin 中心,利用前一次迭代的输出来确定下一次[25,51,105]的范围。或者,可以通过可学习网络[12]或从估计的深度不确定性[10,44]来预测bin偏移。我们估计代价体的深度范围,以便适应任何深度范围,而先前的研究在测试时间范围已知的情况下已经实现了这一点,但他们的目标是减少计算量或提高细节。

2.3 单视图深度

  单目深度方法通过监督学习训练,推理时无法访问多视角图像[19-21,46]。基于高度先进且有效的图像骨干网络[54],做到了通用深度估计,对于各种场景[9,59]。真实和/或合成数据的组合进行训练[93,94],以及更强图像级先验[28,39]。然而只能实现相对深度预测,而无法提供度量(例如以米为单位)的深度预测
正如[1,84,89]中所述,我们通过将从单目深度模型中提取的特征与多视角代价体相结合,以更好地利用单目和多视角的信息。

2.4 SimpleRecon: 使用3D 卷积的三维重建(ECCV 2022)

  一种多视图深度估计模型,主要包含两个部分:(1) 2D CNN模块,利用图像先验以及平面扫描特征量和几何损失。(2)使用多层感知器(MLP)将关键帧和几何元数据集成到代价体中。

  模型架构:

在这里插入图片描述

  参考视图 I 0 I^0 I0 , 其余源视图记为 I N ∈ I^N∈ IN{ 1 , . . . , N − 1 1 , . . . , N − 1 1,...,N1} ,以及相机内参和外参(相机位姿)。使用图像编码器从参考图像和源图像中提取特征图用于构建代价体。代价体的输出使用 2D CNN 编码-解码器模块进行处理,并在代价聚合阶段使用参考视图的提取到的多层级特征图进行融合。核心点为将元数据与深度特征图一起构建代价体,使得模型能从几何和相对相机姿势信息中挖掘更多的潜在有用信息,如下图:

在这里插入图片描述

  代价体的维度为 C × D × H × W C × D × H × W C×D×H×W ,代价体的索引值 ( k , i , j ) (k, i, j) (k,i,j) 代表在像素坐标 ( i , j ) (i, j) (i,j)位置,第 k k k个深度平面的特征向量的维度为 C C C,此特征向量包含外观可视特征、元数据特征两部分的内容:

在这里插入图片描述
在这里插入图片描述

pose distance的推导:

在这里插入图片描述

  

三、通用MVS

  模型以 H × W H×W H×W的参考图像 I r I_r Ir及其相邻的带pose的原始帧 I i ∈ [ 1... N ] I_{i∈[1...N]} Ii[1...N]作为输入;测试阶段为 I r I_r Ir预测一个密集深度图 D ^ r \hat{D}_r D^r。通用MVS目标为:

  • 1.泛化到任何领域。目前大多数MVS方法通常是在类似领域(如室内或驾驶)的数据上进行训练和测试的。
  • 2.泛化到任何深度范围。预测的深度图需要对附近的表面(如机器人)或更远的表面(如无人机和自动驾驶)准确。在某些场景中,如SfM,深度和相机姿态位于非度量的等比例坐标系中。因此,通用的MVS系统应能适应不同尺度的坐标系。
  • 3.对原始帧的数量和选择具有鲁棒性。传统MVS系统在源帧与参考帧重叠较少时会遇到困难。
  • 4.预测3D一致的深度。一个视角下的深度应与从不同视角预测的深度一致。将一致的深度图融合,可以生成具有准确3D表面估计的网格。

3.1 MVSAnywhere

  MVSAnywhere(MVSA),采用了基于大型Transformer架构的设计,能够从多样化的数据集中学习,从而应用于任何领域,输入为:(1) 参考图像和源图像的多视角信息,以及 (2) 通过单目参考图像编码器直接从参考图像中提取的单视角信息。整体架构见图3和补充材料,由五个关键组件构成:

在这里插入图片描述

  特征提取器。将源图像和参考图像编码为深度特征图,再用成本体积处理。具体使用ResNet18 [29]的前两个block作为编码器,特征图分辨率H/4×W/4。

  Cost volume。根据[7,34,40,79]的方法,使用一组假设的深度值(bin) D D D将每个源视图的特征图 F i F_i Fi变形到参考视图。然后将变形后的特征与 F r F_r Fr,以及适当的元数据连接起来。

  参考图像编码器。提取 I r I_r Ir的深度单目特征:采用了Depth Anything V2 [94]中的ViT Base 编码器,有助于提高在源帧和参考帧重叠有限时的鲁棒性。 由于ViT Base处理14×14的图像块,因此参考图像被调整为 14 H 16 \frac {14H}{16} 1614H × 14 W 16 \frac {14W}{16} 1614W的分辨率,以便输入到ViT Base中,从而提取出 H 16 \frac {H}{16} 16H × W 16 \frac {W}{16} 16W的特征。

  单/多目 线索组合器(Cue Combiner)。该组件将patchified的成本体积和参考图像特征转换为一系列特征,传递给depth decoder。

3.2.与视图数量和尺度无关的元数据

  SimpleRecon [62] 将元数据(几何和相机姿态信息)整合到代价体中,以提高深度精度。对于 I r I_r Ir中的每个像素位置 ( u r , v r ) (u_r,v_r) (ur,vr) D D D中的深度 bin k k k,我们将该像素反投影到一个3D点P上,然后将其重新投影到每个源视图 I i I_i Ii中。成本体积中坐标为 ( u r , v r , k ) (u_r,v_r,k) (ur,vr,k)的 bin 的具体元数据(见2.2节图片)包括:特征向量 F r ( u r , v r ) F_r(u_r, v_r) Fr(ur,vr) F i ( u i , v i ) F_i(u_i,v_i) Fi(ui,vi)中相应像素之间的点积,从源和参考原点到点P的射线方向,参考和源视图中的深度值,参考和源视图中射线的角度,参考和源相机之间的相对姿态,以及深度有效性掩码(当点P超出源视图的范围时)

  SimpleRecon[62]的代价体将所有八个源帧的元数据连接起来,并运行MLP,以在每个空间位置和深度假设下生成一个single cost(匹配分数)。尽管这种方法能获得良好的评分,但其局限性在于每个训练和测试参考图像都需要恰好八个源帧,传统的多视图拼接方法却已经不依赖于视图数量。 改进:对每个source frame 运行一个MLP,其接收来自参考帧和source frame 的元数据,并预测两个值:一个分数和一个权重。这样就产生了N个分数和N个权重。在N个权重经过softmax函数处理后,计算出N个分数的加权和。这个加权和被用作每个像素位置 ( u , v ) (u,v) (u,v)和深度假设 k k k的代价体中的值。新模块能够聚合每个source frame 的匹配分数和置信度,同时允许每个 I r I_r Ir有不同数量的 source frame

  源相机的姿态可能接近参考姿态,也可能远离参考姿态。为了提高对这种尺度范围的不变性,使元数据场景不受尺度影响。 因此使用所有源帧的最大值来归一化元数据的相对位姿测量。此外,还使用深度假设元数据的最大值和最小值来进行归一化。

  由于场景尺度信息未提供给网络,我们对深度预测进行了重新缩放,以匹配输入位姿的尺度,根据成本体积的深度范围对sigmoid输出进行了缩放:

在这里插入图片描述

3.3 单目/多目 线索组合器(Cue Combiner)

  代价体的维度为 ∣ D ∣ × H 4 × W 4 |D|× \frac {H}{4}×\frac {W}{4} D×4H×4W,参考图像编码器的特征形状 C × H 16 × W 16 C×\frac {H}{16}×\frac {W}{16} C×16H×16W,为了有效结合这些特征,以提供给decoder,使用ViT-Base网络处理这些特征,通过Mono/Multi Cue Combiner 生成一系列token。

  为了有效实现这一目标,需要:i)将成本体积转换为tokens,同时不损失信息;ii)结合单目线索,以帮助解码出sharp的深度。对于第一步,一个简单的做法是应用代步幅的卷积,将图像投影(或者说是patchfy)到ViT令牌的维度上。这种方法缺乏上下文信息来指导这种下采样的过程。因此, 提出了一种cost volume patchifier模块

  该方法利用参考图像编码器前两个块的信息来指导降采样过程。首先,我们将代价体通过两次步幅卷积转换为token,token与前两个块的单目特征连接起来(分别以输入分辨率的1/4和1/8进行转置和投影的特征)。模块的输出是一个 H 16 × W 16 \frac {H}{16}×\frac {W}{16} 16H×16W的token序列,与单目特征的序列长度相匹配。随后,这些token被输入到一个使用DINOv2权重初始化的ViT-B模型中(见图4)。

  对于ii)部分,我们将代价体中的token与参考图像编码器的token相加,通过线性层投影。我们将在ViT的第2、5、9和11块重复这一过程,以整合多层级的单目线索。这种简单的机制使网络能够借助参考图像结构来优化和正则化成本体积

在这里插入图片描述

3.4.泛化到任何深度范围

  在构建代价体时,会使用一组深度假设(bins) D D D ,来将特征图 F i F_i Fiwrap到 I r I_r Ir。由于不同数据集中的深度范围差异巨大,选择固定的深度范围D,难以适应任何深度范围。

  本文采用了一种级联代价体的方法来解决问题 (最初在3D立体匹配[25,51,105]中提出,基于已知的‘真实’深度范围) 利用已知的内参和外参来推断 I r I_r Ir与每个 I i I_i Ii之间可能匹配的最小和最大深度。我们在这一范围内以对数方式划分初始深度区间,然后进行初步的深度预测。根据这一初步估计的最小和最大值,重建成本体积以进行最终的深度预测。这一迭代过程仅在测试时执行;训练中使用已知的深度范围。

  此外,为了使深度范围的粗略估计,与实际有效深度对齐,在训练过程中通过随机扰动来增强真实范围。

3.5 其他细节

  损失。使用SimpleRecon损失,包括:L1损失(真实深度值的对数与预测深度值的对数),以及梯度和法线损失。训练时,损失应用于解码器的四个输出尺度。在推理阶段,仅使用最终的最大尺度预测。我们以640×480的图像作为输入,并在同一分辨率下生成深度图。在D中,我们在对数空间中采样了64个深度区间。

  关键帧。对于密集序列,采用[DeepVideoMVS、SimpleRecon]的策略来选择参考帧和源帧。为了增强对稀疏帧集的鲁棒性,我们还根据几何重叠选择tuples元组,从而获得不一定连续的帧。

  数据集。为了使MVSA在不同领域中泛化,合成数据集大型且多样化,见表1。这些训练数据集中的一部分包含移动物体。DAV2是从一个预训练的DINOv2 [54]网络初始化的,该网络基于互联网图像预训练。

四、实验

  本文评估了其他未在多MVS基准上报告性能的基线方法,包括:(i)以DAV2 [94]形式呈现的单目基线。为了应对未知的仿射变换,我们使用最小二乘法将预测与真实值对齐。(ii)MAST3R[43](原始深度估计),该方法通过将参考图像和另一张源图像作为输入,并取点云的z分量作为深度预测。(iii)MAST3R(加上我们的三角测量),这是对MAST3R的一个创新扩展,当有提供的外参和内参时,可以利用这些信息。对于每张可用的源图像,我们使用MAST3R描述符将点与参考图像匹配。然后,我们从这些匹配中进行三角测量,调整原始深度预测,并通过预测置信度加权的总和来聚合不同视角下的点云。请注意,此方法需要对每个源视图进行一次前向传播和数千次三角测量,这会显著降低其速度。MAST3R在ScanNet [13]和MegaDepth[46](后者包含Tanks和Temples数据集[42]的一个子集)上进行训练。
  

  Benchmark。‘零样本’深度估计性能,使用RMVDB benchmark[67]中的五个多视角数据集,其他数据集包括KITTI [24] ScanNet [13]、ETH3D [66]、DTU [37]和Tanks and Temples [42],涵盖了多种评估场景,如驾驶序列、房间扫描、建筑扫描和桌面物体等。我们采用了[67]中的评估程序和源视图选择程序,以便与先前的方法进行直接比较。方法根据提供的信息被分为四种类型(a-d),例如,如果提供了GT相机或GT深度范围等信息。MVSA自然属于类型(d),因为所有方法都提供了GT姿态,因此需要直接在公制尺度上预测深度,无需对齐或了解GT深度范围。

在这里插入图片描述

  
在这里插入图片描述

  
在这里插入图片描述

  

在这里插入图片描述

上图展示了多个数据集(包括KITTI、ScanNet、ETH3D、DTU和Tanks & Temples)的深度预测结果的定性对比。各行分别对应不同的方法:depth Pro [67]、rMVD基线[67]、MAST3R(三角测量)[43]以及本文MVSA模型,同时展示了RGB输入(Ir)和真实深度(GT)。depth Pro虽然能够提供清晰的边缘,但常出现深度比例失准的问题;而我们的MVSA模型在细节捕捉上优于MAST3R和rMVD。为了确保可视化的一致性,深度图已归一化至真实深度范围;有关未归一化,补充材料强调了depth Pro在深度比例上的差异。

  

在这里插入图片描述
  
以上指标计算公式为:

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到