【论文笔记】MV-DUSt3R+:两秒重建一个3D场景

这是一篇来自Meta的DUSt3R改进工作,baseline是DUSt3R和spann3r,有一定的提升效果,大家还可以看看我最后的实测感受

1 abstract

最近的稀疏多视图场景重建进展(例如 DUSt3R 和 MASt3R)不再需要相机校准和相机姿态估计。 然而,它们一次仅处理一对视图来推断像素对齐的点图。 当处理两个以上的视图时,大量容易出错的成对重建通常会伴随着昂贵的全局优化,这通常无法纠正成对重建错误

为了处理更多视图、减少错误并缩短推理时间,我们提出了快速单级前馈网络 MV-DUSt3R。 其核心是多视图解码器块,它在考虑一个参考视图的同时跨任意数量的视图交换信息。 为了使我们的方法对参考视图选择具有鲁棒性,我们进一步提出了 MV-DUSt3R+,它采用交叉参考视图块来融合不同参考视图选择之间的信息。 为了进一步实现新颖的视图合成,我们通过添加和联合训练GS头来进行扩展。

2 Introduction

最近,出现了诸如 DUSt3R(Wang 等,2024)和 MASt3R(Leroy 等,2024)等新的多视图场景重建方法,这些方法可以直接处理一组无序且未定位的 RGB 视图,即相机内参数和姿态未知。这些方法每次处理两个视图,即一个选定的参考视图和另一个源视图,并直接在参考视图的相机坐标系中推断像素对齐的 3D 点图。为了处理更大数量的输入视图,这些方法首先进行组合数量的两两推断,然后通过全局优化的第二阶段将局部两两重建对齐到单一的全局坐标系中

虽然这些方法在以物体为中心的 DTU 数据集(Aanæs 等,2016)上的评估结果很有前景,但在重建场景时存在效率问题,因为两视图输入中的立体线索信息可能是模糊的。此外,尽管每个两视图输入的重建结果看起来合理,但在将它们对齐到全局坐标系时,往往会引发冲突。这些冲突通过全局优化难以解决,因为全局优化只旋转两两预测结果,而不会纠正错误的两两匹配。因此,场景重建会出现点图错位的问题。图 2 中展示了一个例子。

为了解决上述问题,我们提出了一种单阶段网络------多视图密集无约束立体 3D 重建(MV-DUSt3R),该网络能够在一次前向传递中联合处理大量输入视图,并完全去除先前方法中使用的级联全局优化。为了实现这一目标,我们采用了多视图解码器模块,这些模块不仅联合学习选定的参考视图与所有其他源视图之间的所有两两关系,还恰当地处理所有源视图之间的两两关系。此外,我们的训练方法鼓励预测的每视图点图遵循相同的参考相机坐标系,从而避免了后续的全局优化需求

效果与主要贡献

我们在三个基准场景级数据集 HM3D (Ramakrishnan 等,2021)、ScanNet (Dai 等,2017)和 MP3D (Chang 等,2017)上展示了 MV-DUSt3R 在多视图立体(MVS)重建和多视图姿态估计(MVPE)任务上取得了显著更好的结果,同时比 DUSt3R 快 48 至 78 倍 。此外,MV-DUSt3R+ 能够在更难的设置下进一步提高重建质量,同时仍然比 DUSt3R 快一个数量级

为了将我们的方法扩展到新视图合成(NVS)任务,我们进一步附加了轻量级的预测头,这些预测头回归到 3D 高斯属性。预测的每视图高斯原语在基于 splatting 的渲染(Kerbl 等,2023)之前会转换到目标视图的坐标系中。通过这种方法,我们还展示了我们的模型在标准光度评估协议下,超越了使用启发式设计的 3D 高斯参数的 DUSt3R。这一提升主要归功于我们方法对高斯位置的更准确预测。

3 Method

我们的目标是基于一组稀疏的 RGB 图像,且相机内参和姿态未知的情况下,密集地重建一个场景。类似于 DUSt3R,我们的模型为每个视图预测与 2D 像素对齐的 3D 点图。与 DUSt3R 不同的是,我们的模型能够在一次前向传递中联合预测任意数量的输入视图的 3D 点图 。具体来说,给定一个场景的 N 个输入图像视图,我们从这些视图中选择一个参考视图,目标是预测每个视图在参考视图坐标系中的 3D 点图​。在第 3.1 节中,我们介绍了多视图密集无约束立体 3D 重建(MV-DUSt3R)网络,该网络能够高效地在一个前向传递中处理所有输入视图,而无需后续的全局优化,并且考虑一个选定的参考视图。在第 3.2 节中,我们介绍了 MV-DUSt3R+,该方法进一步改进了 MV-DUSt3R,特别是在处理复杂场景和相机姿态显著变化时,通过引入跨参考视图注意力模块(Cross-Reference-View attention blocks)来实现有效的长程信息传播。

3.1 MV-DUSt3R

A Multi-View Model Architecture如图3所示,MV-DUSt3R 包含一个编码器,用于将图像转换为视觉tokens;解码器模块,用于在不同视图之间融合这些tokens;以及回归头,用于预测与2D像素对齐的每视图3D点图 。与 DUSt3R 不同,我们的网络使用解码器模块在所有视图之间融合tokens ,而不是每次仅独立融合两个视图的标记。具体来说,首先在一个共享权重的 ViT编码器(记为 Enc)上输入所有视图进行编码,然后得到:。注意,编码器输出特征的分辨率比输入图像小16倍,然后被展平成token序列。

为了融合这些标记,使用了两种类型的解码器,一种用于选定的参考视图,另一种用于剩余的源视图。它们共享相同的架构,但权重不同。每个解码器包含 D 个解码器block,分别称为 。它们的区别在于:专门用于更新参考视图的token ,而更新来自所有其他源视图的tokens 每个解码器block的输入是当前来自图片的主要token和来自其他视图的一组次要token。在每个block中,自注意力层仅应用于主要token,然后使用交叉注意力层将主要token与次要token进行融合 。最后主要token输入MLP的head得到输出结果,在自注意力层、交叉注意力层和 MLP 之前还应用了层归一化。通过这些机制,解码器计算出最终的token表示

其中,表示视角v之外其他视角的tokens。

如图3,我们使用了两个head预测最终的 3D点图 和置信图是参考视图的部分,是其他源视图的部分。每个head包含一个线性投影层和一个放大倍数为16的像素size恢复层:

这里,我们可以看到,当视图数量 N = 2 时,DUSt3R 是 MV-DUSt3R 的一个特例 。然而,对于多视图,MV-DUSt3R 将使用更大数量的次token来更新主token。因此,它能够从更多的视图中受益。重要的是,由于我们的架构组件和结构与 DUSt3R 只有轻微的差异(增加了跳过连接和卷积网络),因此我们只有略微多一点的可训练参数。因为 MV-DUSt3R 的参数数量与 DUSt3R 几乎相同,所以可以使用预训练的 DUSt3R 权重来初始化 MV-DUSt3R,从而获得高效的初始化

训练方法:我们保持了与DUSt3R一致的loss:

表示视图 v 中的有效像素。β 控制正则化项的权重。点图回归损失 是归一化后的预测 3D 点与GT 3D 点之间的差异,这是解决预测与地面真实之间尺度模糊所必需的。,是参考视图 r 中,视图 v 的GT pointmap。尺度归一化因子 分别计算为在所有视图中有效 3D 点到坐标原点的平均距离。通过这种方式,归一化保证了预测的3D点与地面真实的3D点在尺度上的一致性,从而使得模型在训练过程中能够更准确地学习空间映射关系。

3.2 MV-DUSt3R+

如图4所示,对于不同的参考视图选择,MV-DUSt3R 重建场景的质量在空间上有所不同。当输入源视图与参考视图之间的视角变化较小时,预测的点图通常更好;随着视角变化的增大,预测质量会下降。然而,要使用稀疏的输入视图集重建一个范围较大的场景,单个参考视图与所有其他源视图之间只有中等视角变化的情况几乎不存在。因此,使用单一选定的参考视图很难在每个地方都同样地好地重建场景几何。

为了解决这一问题,我们提出了 MV-DUSt3R+,它选择多个视图作为参考视图,并在每个选定的参考视图的相机坐标系中联合预测所有输入视图的点图我们的假设是:对于某些输入视图,虽然在一个参考视图下点图预测可能较为困难,但在另一个参考视图下则可能更容易(例如,视角变化较小,匹配模式更显著)。为了全面改善所有输入视图的点图预测,我们在 MV-DUSt3R+ 中引入了一个新的 Cross-Reference-View 块

A Multi-Path Model Architecture如图5,设是从无序输入视角中选择的M个参考视角,我们采用了一个多路径架构,即按照前述设置多个reference view输入(path1到pathM), ****可以看作是前面的MV-DUSt3R架构往深处叠了M个不同的reference view

**首先encoder不变,图片被编码成为token以后,进入decoder blocks,**即,对于任意的视角v,以及参考视角m

其中,,我们先不去管这里的,只需要知道这是固定参考视角为m,其余任意视角v变化,的中间量即可,也就是视角v沿着竖着的view1到viewN这一排变化。

然后:

其中,,这是固定了源视角v,而变化参考视角,也就是单个的一"列",m沿着path1到pathM的方向变化。

然后,follow公式2,在每一个reference视角我们依旧得到pointmap与confidence map

通过这样的设计,我们可以看到,对于任意的视角(无论是reference还是source),它的token都与设置的所有的reference视角,以及其余的source视角做了cross-attention,全局信息得到了补充,一定程度上也解决了前述的,当reference视角与source视角差别很大时,推理效果差的问题

与 MV-DUSt3R 相比,MV-DUSt3R+ 仅通过交叉参考视图块添加了少量额外的可训练参数(参见附录)。 在训练期间,选择 M 个输入视图的随机子集作为参考视图。 我们对所有参考视图的等式(3a)中的点图回归损失进行平均

在推理时 ,我们统一选择M个输入视图的子集作为参考视图,而始终选择第一个输入视图。使用具有M条路径的模型,但是使用第一条路径中的头部来计算最终的每视图点地图预测

3.3 MV-DUSt3R(+) for Novel View Synthesis

接下来,我们扩展我们的网络,以支持具有高斯基元的NVS(Kerbl等人,2023)。为清楚起见,下面我们以MV-DUSt3R+为例。MV-DUSt3R可以类似地进行扩展。

GS head : 我们添加一组单独的头来预测每个像素的高斯参数,包括缩放因子 。 对于参考和其他视图,我们添加高斯头 Headref 3DGS 和 Headsrc 3DGS 。

对于其他高斯参数,我们使用预测点图作为中心,像素颜色作为颜色,并将球谐阶数固定为0。

在训练期间,对于选定的参考视图,我们执行GS渲染,生成输入视图和新视图的渲染预测。 然后遵循先前的方法使用的pixel loss和LPIPS作为GS的loss,最后的loss定为

4 Experiments

4.1 配置

训练数据包括 ScanNet、ScanNet++、HM3D和 Gibson。 DUSt3R也 使用这些数据集。对于评估,我们使用了 MP3D、HM3D和 ScanNet数据集。使用与 DUSt3R 相同的训练/测试分割,我们的训练数据是 DUSt3R 训练数据的子集。

我们以 224 × 224 的分辨率处理输入视图。模型训练使用了 64 个 Nvidia H100 GPU。初始化使用了 DUSt3R 模型的权重。我们使用每条轨迹的前 N = 8 个视图作为输入视图,并随机选择 1 个视图作为 MV-DUSt3R 的参考视图以及 M = 4 个视图作为 MV-DUSt3R+ 的参考视图。为了评估多视图立体重建(MVS)的性能,我们报告了输入视图数量从 4 到 24 个视图的结果,以评估每种方法在重建不同大小场景时的性能。对于新视图合成(NVS)评估,我们使用剩余的 6 个视图作为新视图。下面是所有评估数据集中所有输入视图数量选择的結果,仅使用一个 MV-DUSt3R 模型和一个 MV-DUSt3R+ 模型。

4.2 MVS

我们将其与从输入RGB视图重建场景,并且pose free。我们使用全局优化算法(GO)对输入分辨率为224×224的DUSt3R模型和Spann3R(Wang and Agapito,2024)模型在进行了评估。

如表2所示,在监督设置下,我们在 HM3D 和 ScanNet 上比较了 DUSt3R 和我们的方法。在 HM3D(多房间场景)中,随着场景尺寸的增大和更多输入视图的采样(从4到24个视图),MV-DUSt3R 一致地优于 DUSt3R。这证实了:随着可用输入视图数量的增加,单阶段的 MV-DUSt3R 能够比仅利用成对立体线索的 DUSt3R 更好地利用多视图线索来推断3D场景几何。

此外,MV-DUSt3R+ 在 MV-DUSt3R 的基础上显著改进,特别是在场景尺寸较大和使用更多输入视图时。多路径架构使 MV-DUSt3R+ 能够更有效地在不同参考视图选择之间融合多视图线索,从而全面改善所有输入视图中的场景几何重建。对于定性比较,请参见图6。在具有挑战性的 MP3D 数据集上的零样本评估中,所有方法的结果都较差,但我们的两种方法在不同数量的输入视图下始终优于 DUSt3R。

在所有设置中,Spann3R 的性能都比所有其他方法都要差,并且通常无法从稀疏视图重建场景,这种设置比原始论文中用于评估的连续视频帧更具挑战性

4.3 Multi-View Pose Estimation

我们从一组给定的输入视图中估计输入视图对的相对pose。我们使用Weiszfeld算法来估计相机内参,使用RANSAC以及PNP来估计相机pose。

我们与其他无姿态方法进行了比较,包括DUSt3R和PoseDiffimation(这是一种最新的基于扩散的摄像机姿态估计方法)。

与 DUSt3R 的比较结果如表3所示,而与 PoseDiffusion 的比较结果则包括在附录中,我们的方法在处理不同规模和复杂度的场景时都具有显著优势。

4.4 NVS

我们与基于 DUSt3R 的基线进行比较,该基线生成每像素高斯参数,如下所示。

如表4所示,MV-DUSt3R 在所有输入视图选择下,在所有评估数据集上都优于 DUSt3R 基线。这些改进也在图6中通过定性结果得到了验证:MV-DUSt3R 合成的新视图能够更好地推断出物体和背景(例如,墙壁、天花板)的3D几何结构。MV-DUSt3R+ 在更具挑战性的场景中进一步改进,例如包含多个外观相似的近距离物体的场景(例如,椅子)。以图6中的一个包含20个视图的 ScanNet 场景为例,使用多个参考视图并融合在不同模型路径中计算的特征有助于解决输入视图之间空间关系的不确定性。

MV-DUSt3R 通过利用多视图线索,能够更准确地重建场景的几何结构,特别是在处理复杂场景时。MV-DUSt3R+ 通过多路径架构进一步增强了这一点,能够在更多复杂的场景中提供更高质量的重建结果。这些改进不仅体现在数值指标上,还通过定性比较在视觉效果上得到了验证

4.5 Scene Reconstruction Time

与 DUSt3R 相比,当考虑 4 至 24 个输入视图时,我们的 MV-DUSt3R 的运行速度比 DUSt3R 快 48 倍至 78 倍,而性能更高的 MV-DUSt3R+ 的运行速度快 8 倍至 14 倍。 MV-DUSt3R+ 在 2 秒内重建 HM3D 上平均大小 17.9 m2 和 MP3D 上 37.3 m2 的场景的 24 视图输入

5 Conclusion

我们提出了MV-DUSt3R和MV-DUSt3R+,可以在一次前馈过程中从多达24个输入视点重建场景,并且pose free。我们广泛评估了3个数据集在监督和零镜头设置下的结果,并确认了与现有技术相比令人信服的结果和效率。

实测效果:我自己输入了十几张图片,使用的是s2.pth ,但是效果并没有论文中写的那么好。。。不过作者在discusssion中间也写到,如果mast3r两两重建的不好那么warp到规范坐标系下效果必然也不好,MV-DUSt3R和MV-DUSt3R+就可以解决这个问题;如果mast3r两两重建效果好,,,可能也不用考虑这个方法了,哈哈哈!个人观点,作者最后还提到这些方法选择可以和mast3r-sfm的pipeline一起灵活使用。

https://github.com/facebookresearch/mvdust3r/discussions/7https://github.com/facebookresearch/mvdust3r/discussions/7

相关推荐
m0_743106463 小时前
【论文笔记】TranSplat:深度refine的camera-required可泛化稀疏方法
论文阅读·深度学习·计算机视觉·3d·几何学
Coovally AI模型快速验证6 小时前
MMYOLO:打破单一模式限制,多模态目标检测的革命性突破!
人工智能·算法·yolo·目标检测·机器学习·计算机视觉·目标跟踪
AI浩7 小时前
【面试总结】FFN(前馈神经网络)在Transformer模型中先升维再降维的原因
人工智能·深度学习·计算机视觉·transformer
可为测控7 小时前
图像处理基础(4):高斯滤波器详解
人工智能·算法·计算机视觉
IE068 小时前
深度学习系列75:sql大模型工具vanna
深度学习
不惑_8 小时前
深度学习 · 手撕 DeepLearning4J ,用Java实现手写数字识别 (附UI效果展示)
java·深度学习·ui
CM莫问9 小时前
python实战(十五)——中文手写体数字图像CNN分类
人工智能·python·深度学习·算法·cnn·图像分类·手写体识别
余炜yw10 小时前
深入探讨激活函数在神经网络中的应用
人工智能·深度学习·机器学习
old_power10 小时前
【PCL】Segmentation 模块—— 基于图割算法的点云分割(Min-Cut Based Segmentation)
c++·算法·计算机视觉·3d