DUSt3R:轻松实现几何 3D 视觉

23年CVPR来自芬兰一所大学和欧洲Naver Labs的论文“DUSt3R: Geometric 3D Vision Made Easy”。

在实际应用中,多视角立体视觉重建 (MVS) 需要首先估算相机参数,例如内参数和外参数。这些参数通常很繁琐且难以获取,但它们对于在 3D 空间三角化,相应像素是必不可少的,而三角化是所有性能最佳的 MVS 算法核心。这项工作采取了相反的立场,引入 DUSt3R,这是一个用于任意图像集合的密集和无约束立体 3D 重建的全新范例,即无需事先了解相机标定或视点姿势即可进行操作。将成对重建问题视为点图的回归,从而放宽了通常投影相机模型的硬约束。这种公式可以顺利地统一单目和双目重建情况。在提供两张以上图像的情况下,进一步提出一种简单但有效的全局对齐策略,该策略在公共参考系中表达所有成对点图。该网络架构基于标准 Transformer 编码器和解码器,这能够利用强大的预训练模型。该公式直接提供了场景的 3D 模型以及深度信息,但有趣的是,可以无缝地从中恢复像素匹配、相对和绝对相机。对所有这些任务进行的详尽实验表明,所提出的 DUSt3R 可以统一各种 3D 视觉任务,并在单目/多视图深度估计以及相对姿势估计上设定新的 SoTA。总之,DUSt3R 使许多几何 3D 视觉任务变得简单。

如图是DUSt3R概述:给定一个不受约束的图像集合,即一组具有未知相机姿势和内在特性的照片,提出的方法 DUSt3R 输出一组相应的点图,从中可以直接恢复通常难以一次性估计的各种几何量,例如相机参数、像素对应关系、深度图和完全一致的 3D 重建。DUSt3R 也适用于单个输入图像(例如,在这种情况下实现单目重建)。展示的有在不知道相机参数的情况下获得的 DTU、Tanks & Temples 和 ETH-3D 数据集 [1, 50, 107] 上的定性示例。对于每个样本,从左到右:输入图像、彩色点云,并使用阴影渲染以更好地查看基础几何。

请添加图片描述

纵览

基于图像的多视角无约束密集三维重建是计算机视觉领域中几个长期研究的最终目标之一 [24, 71, 89]。简而言之,该任务旨在根据给定的一组特定场景照片估计该场景的三维几何形状和相机参数。它不仅具有众多应用,如制图 [13, 72]、导航 [15]、考古 [86, 132]、文化遗产保护 [38]、机器人技术 [78],而且也许更重要的是,它在所有 3D 视觉任务中占有特殊的地位。事实上,它涵盖了几乎所有其他几何 3D 视觉任务。因此,现代的 3D 重建方法汇集了各个子领域数十年的进步成果,例如关键点检测 [26, 28, 62, 96] 和匹配 [10, 59, 99, 119]、稳健估计 [3, 10, 180]、运动恢复结构 (SfM) 和集束调整 (BA) [20, 58, 105]、密集多视图立体视觉 (MVS) [106, 138, 157, 175] 等。

最后,现代 SfM 和 MVS 流程归结为解决一系列最小问题:匹配点、寻找基本矩阵、三角测量点、稀疏重建场景、估计相机并最终执行密集重建。考虑到最近的进展,这个相当复杂的链路当然在某些情况下是一种可行的解决方案 [31、70、76、142、145、147、162],但结果相当不能令人满意:每个子问题都不能完美解决,而且会给下一步添加噪音,从而增加整个流程的复杂性和工程工作量。在这方面,每个子问题之间缺乏沟通就很能说明问题了:如果它们互相帮助,似乎更合理,例如,密集重建应该自然受益于为恢复相机姿势而构建的稀疏场景,反之亦然。最重要的是,这个流程中的关键步骤很脆弱,在许多情况下容易中断 [58]。例如,SfM 中用于估计所有相机参数的关键阶段通常会在许多常见情况下失败,比如当场景视图数量较少时[108],对于具有非Lambertian表面的物体[16],在相机运动不够大的情况下[13],等等。这是令人担忧的,因为最终“ MVS 算法的好坏取决于输入图像的质量和相机参数” [32]。

定义一个3维点的密集2维场的表示为一个点图 X。与对应的分辨率为 W × H 的 RGB 图像 I 相关联,X 形成图像像素和3维场景点之间的一一映射,即 Ii,j ↔ Xi,j ,对于所有像素坐标 (i,j) ∈ {1…W} × {1…H}。假设每条相机光线都照射到一个三维点,即忽视半透明表面的情况。
给定相机内参矩阵 K,可以直接从真实深度图 D 获得观察场景的点图 X,即 Xi,j =K^-1 [iDi,j, jDi,j, Di,j]。这里,X 在相机坐标系中表示。将相机 n 看到的点图 Xn 在相机 m 的坐标系中表示为 Xn,m:

请添加图片描述

任务是希望建立一个网络,通过直接回归来解决广义立体视觉情况下的 3D 重建任务。为此,训练一个网络 F,它以 2 张 RGB 图像 I1 , I2 作为输入,并输出 2 个相应点图 X1,1 , X2,1 及其相关的置信度图。请注意,两个点图都以 I1 的同一坐标系表示,这与现有方法截然不同,但具有关键优势。为了清楚起见并且不失一般性,假设两幅图像具有相同的分辨率 W × H,但在实际操作中它们的分辨率自然会有所不同。
网络 F 的架构灵感来自 CroCo [149],因此很容易从 CroCo 预训练 [148] 中获益。如图所示,它由两个相同的分支(每个图像一个)组成,每个分支都包含一个图像编码器、一个解码器和一个回归头。两个输入图像首先由相同的权重共享 ViT 编码器 [27] 以 Siamese 方式编码,产生两个token表示 F1 和 F2:
请添加图片描述
请添加图片描述
然后,网络在解码器中对它们两者进行联合推理。与 CroCo [149] 类似,解码器是一个配备交叉注意功能的通用 Transformer 网络。因此,每个解码器块按顺序执行自注意(一个视图的每个token关注同一视图的token),然后执行交叉注意(一个视图的每个token关注另一个视图的所有其他token),最后将token提供给 MLP。重要的是,在解码器传递过程中,两个分支之间不断共享信息。这对于输出正确对齐的点图至关重要。也就是说,每个解码器块关注来自另一个分支的token:

请添加图片描述

这里,DecoderBlockvi (G1, G2) 表示分支 v ∈ {1, 2} 中的第 i 个块,G1 和 G2 是输入token,G2 是来自另一个分支的token。最后,在每个分支中,一个单独的回归头获取一组解码器token并输出一个点图和一个相关的置信度图:

请添加图片描述

输出点图 X1,1 和 X2,1 的回归带一个未知的比例因子。另外,应该注意的是,通用架构从未明确强制执行任何几何约束。因此,点图不一定对应于任何物理上合理的相机模型。相反,让网络学习来自训练集的所有相关先验,该训练集仅包含几何一致的点图。使用通用架构可以利用强大的预训练技术,最终超越现有任务特定架构所能实现的目标。

训练目标

模型训练中,视图 v ∈ {1, 2} 中有效像素 i ∈ Dv 的回归损失,简单定义为欧几里得距离:

请添加图片描述

为了处理预测和真实值之间的尺度模糊性,分别通过缩放因子 z = norm(X1,1,X2,1)和 z ̄ = norm(X ̄1,1,X ̄2,1)对预测和真实点图进行归一化,它们只是表示所有有效的点到原点的平均距离:

请添加图片描述

事实上,与假设相反,存在定义不明确的 3D 点,例如在天空中或半透明物体上。更一般地,图像中的某些部分通常比其他部分更难预测。因此,共同学习预测每个像素的分数,该分数表示网络对该特定像素的置信度。最终的训练目标是所有有效像素的置信度加权回归损失(来自等式 (2)):

请添加图片描述

以此目标训练网络 F 允许在没有明确监督的情况下估计置信度得分。如图显示了输入图像对及其相应输出的示例。
请添加图片描述

下游应用

输出点图的丰富属性,能够相对轻松地执行各种便捷的操作。

点匹配。通过在 3D 点图空间中进行最近邻 (NN) 搜索,可以轻松建立两个图像像素之间的对应关系。为了最大限度地减少错误,通常保留图像 I1 和 I2 之间的相互 (相互) 对应关系 M1,2,即有:

请添加图片描述

恢复内参。根据定义,点图 X1,1 在 I1 的坐标系中表示。因此,可以解决一个简单的优化问题来估计相机内参。在这项工作中,假设主点大致位于中心,像素为正方形,因此只需估计焦点 f1∗:

请添加图片描述

其中 i‘ =i−W/2 和 j’ =j−W/2。快速迭代求解器(例如基于 Weiszfeld 算法 [87])可以在几次迭代中找到最优 f1∗。对于第二台摄像机的焦点 f2∗,最简单的选择是对 (I2, I1) 对进行推断,并使用上述公式,其中 X2,2 代替 X1,1。

相对姿态估计。其可以通过多种方式实现。一种方法是执行 2D 匹配并恢复上述内参矩阵,然后估计外极矩阵并恢复相对姿态 [44]。另一种更直接的方法是使用 Procrustes 对齐 [63] 比较点图 X1,1 ↔ X1,2 (或等效地,X2,2 ↔ X1,2 ),获得相对姿态 P∗ = [R∗ |t∗ ]:

请添加图片描述

不幸的是,Procrustes 对齐对噪声和异常值很敏感。最终,一个更强大的解决方案是依靠 RANSAC [30] 和 PnP [44, 51]。

绝对姿态估计。这个也称为视觉定位,同样可以通过几种不同的方式实现。让 IQ 表示查询图像,IB 表示可获得 2D-3D 对应关系的参考图像。首先,可以根据 X 估计 IQ 的内参矩阵。一种可能性是获得 IQ 和 IB 之间的 2D 对应关系,进而产生 IQ 的 2D-3D 对应关系,然后运行 ​​PnP-RANSAC [30, 51]。另一种解决方案是获取 IQ 和 IB 之间的相对姿态。然后,根据 XB,B 和 IB 的真值点图之间的比例,通过适当缩放该姿态将其转换为世界坐标。

全局对齐

到目前为止介绍的网络 F 只能处理一对图像。介绍一种针对整个场景快速而简单的后处理优化方法,可以将从多幅图像预测的点图对齐到联合的 3D 空间中。这要归功于我们的点图的丰富内容,其设计包含两个对齐的点云及其相应的像素到 3D 映射。

成对图。给定一组给定场景的图像 {I1, I2, . . . , IN },首先构建一个连通图 G(V,E),其中 N 张图像形成顶点 V,每条边 e = (n, m) 表示图像 In 和 Im 共享一些视觉内容。为此,要么使用现有的现成图像检索方法,要么将所有图像对传递到网络 F(在 H100 GPU 上推理大约需要 40 毫秒)并根据两对的平均置信度测量它们的重叠,然后过滤掉低置信度的对。

全局优化。用连通图 G 来恢复所有相机 n = 1…N 的全局对齐点图 {χn}。为此,首先预测每个图像对 e = (n,m) 的成对点图 Xn,n 、Xm,n 及其相关的置信度图 Cn,n、Cm,m。为了清楚起见,定义 Xn,e := Xn,n 和 Xm,e := Xm,n。由于目标是在一个共同的坐标系中旋转所有成对预测,引入与每对 e 相关的一个成对姿势 Pe 和缩放 σe > 0。然后制定以下优化问题:

请添加图片描述

在这里使用符号:如果 e = (n, m),则将 v ∈ e 写为 v ∈ {n, m}。这个想法是,对于给定的一对 e,相同的刚性变换 Pe 应该将点图 Xn,e 和 Xm,e 与世界-坐标的点图 χn 和 χm 对齐,因为 Xn,e 和 Xm,e 按照定义都用相同的坐标系表示。为了避免 σe =0 的平凡最优值,就强制
∏e σe =1。

恢复相机参数。此框架直接扩展可以恢复相机参数。通过简单地替换 χni,j :=Pn^−1h(Kn−1[iDni,j;jDni,j;Dni,j])(即强制执行标准相机针孔模型),就可以估计所有相机姿势 {Pn}、相关内参矩阵 {Kn} 和深度图 {Dn}(n = 1…N)。

与传统的集束调整(BA)相反,这种全局优化在实践中执行起来既快又简单。事实上,不是像集束调整​​通常那样最小化 2D 重投影误差,而是最小化 3D 投影误差。优化是使用标准梯度下降进行的,通常在几百步后收敛,在标准 GPU 上仅需几秒钟。

实验中训练细节。

使用八个数据集的混合数据集训练网络:Habitat [103]、MegaDepth [55]、ARK-itScenes [25]、MegaDepth [55]、Static Sc​​enes 3D [68]、Blended MVS [161]、ScanNet++ [165]、CO3D-v2 [93] 和 Waymo [121]。这些数据集具有多种场景类型:室内、室外、合成、真实世界、以目标为中心等。当数据集没有直接提供图像对时,根据 [148] 中描述的方法提取它们。具体来说,利用现成的图像检索和点匹配算法来匹配和验证图像对。总而言之,总共提取了 8.5M 对。

在每个epoch,从每个数据集中随机抽取相同数量的对,均衡数据集大小差异。希望将相对高分辨率的图像输入到网络中,比如最大尺寸为 512 像素。为了降低与此类输入相关的高成本,按顺序训练网络,首先使用 224×224 图像,然后使用更大的 512 像素图像。随机选择每个批次的图像纵横比(例如 16/9、4/3),以便在测试时网络熟悉不同的图像形状。只需将图像裁剪为所需的纵横比,然后调整大小以使最大尺寸为 512 像素。

整体上使用标准数据增强技术和训练设置。网络架构包括用于编码器的 Vit-Large [27]、用于解码器的 ViT-Base 和 DPT 头 [90]。在训练之前,用现成的 CroCo 预训练模型 [148] 的权重初始化网络。跨视图补全 (CroCo) 是最近提出的一种预训练范例,灵感来自 MAE [45],它已被证明在各种下游 3D 视觉任务上表现出色,因此特别适合该框架。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值