24年6月来自欧洲Naver实验室的论文“Grounding Image Matching in 3D with MASt3R”。
图像匹配是 3D 视觉中所有算法和流水线的核心组件。然而,尽管匹配从根本上来说是一个 3D 问题,与相机姿势和场景几何有着内在联系,但它通常被视为 2D 问题。这是有道理的,因为匹配的目标是在 2D 像素场之间建立对应关系,但这似乎也是一种潜在的危险选择。
这项工作采取了不同的立场,将匹配视为 3D 任务,基于 DUSt3R,一个基于 Transformers 功能强大的 3D 重建框架。基于点图回归,该方法在匹配具有极端视点变化的视图时表现出稳健性,但准确度有限。本文目标在保持稳健性的同时提高匹配能力。因此,附加一个新的头部来增强 DUSt3R 网络,输出密集的局部特征,并使用额外的匹配损失进行训练。进一步解决密集匹配的二次复杂度问题,其对于下游应用非常慢。本文引入一种快速相互匹配(reciprocal match)方案,它不仅可以将匹配速度提高几个数量级,而且还具有理论保证,最后可以产生更好的结果。大量实验表明, MASt3R 在多个匹配任务上的表现明显优于最先进的方法。特别是在极具挑战性的无地图定位数据集上,它在 VCRE AUC 方面比最好的方法高出 30%(绝对的改进)。
如图所示密集对应的示例。MASt3R 扩展 DUSt3R,因为它可以预测密集对应,即使在相机运动显著降低视觉相似性的区域中也是如此。焦距可以从预测的 3D 几何形状中得出,这使该方法独立运行相机校准、相机姿势估计和 3D 场景重建,在几个极具挑战性的基准上达到并提高了最先进的性能。
能够在同一场景的不同图像之间建立像素之间的对应关系(称为图像匹配)是所有 3D 视觉应用的核心组件,涵盖制图 [14,61]、定位 [41,72]、导航 [15]、摄影测量 [34, 64] 和一般的自主机器人技术 [63,87]。例如,最先进的视觉定位方法在离线地图绘制阶段(例如使用 COLMAP [75])以及在线定位步骤(通常使用 PnP [30])中主要依赖于图像匹配。
过去,匹配方法通常被归结为一个三步流程,首先提取稀疏且可重复的关键点,然后用局部不变特征描述它们,最后通过比较它们在特征空间中的距离来配对离散的关键点集。该流程有几个优点:关键点检测器在低-到-中等照明和视点变化下非常精确,关键点的稀疏性使问题在计算上易于处理,只要在类似条件下查看图像,就可以在几毫秒内实现非常精确的匹配。这解释了 SIFT [52] 在 COLMAP [75] 等 3D 重建流程中的成功和持久性。
不幸的是,基于关键点的方法通过将匹配简化为关键点袋(BoK)问题,丢弃了对应任务的全局几何上下文信息。这使得它们在具有重复模式或低纹理区域的情况下特别容易出错,而这些区域实际上对于局部描述符来说是不适定的。解决此问题的一种方法是在配对步骤中引入全局优化策略,通常利用一些关于匹配的先验知识,SuperGlue 和类似方法已成功实现 [51,72]。但是,如果关键点及其描述符尚未编码足够的信息,则在匹配过程中利用全局上下文可能为时已晚。因此,另一个方向是考虑密集的整体匹配,即完全避免关键点,并一次匹配整个图像。最近,随着全局注意机制的出现,这已成为可能 [96]。因此,诸如 LoFTR [82] 之类的方法将图像视为一个整体,并且得到的对应集是密集的,并且对重复模式和低纹理区域更具鲁棒性 [43,68,69,82]。这导致了在最具挑战性的基准测试(例如无地图定位基准测试 [5])上取得新的最先进结果。
尽管如此,即使是像 LoFTR [82] 这样表现最好的方法,在无地图定位基准上也只获得了 34% 的 VCRE 精度,令人失望。主要是几乎所有的匹配方法都将匹配视为图像空间中的 2D 问题。实际上,匹配任务的表述本质上和根本上是一个 3D 问题:对应的像素是观察同一个 3D 点的像素。事实上,2D 像素对应关系和 3D 空间中的相对相机姿态是同一枚硬币的两面,因为它们通过外极线矩阵 [36] 直接关联。另一个证据是,目前在无地图基准上表现最好的是 DUSt3R [102],这种方法最初设计用于 3D 重建而非匹配,对于它来说,匹配只是 3D 重建的副产品。然而,从这个 3D 输出中简单获得的对应关系,目前优于无地图基准上所有其他基于关键点和匹配的方法。
虽然 DUSt3R [102] 确实可以用于匹配,但它相对不精确,尽管对视点变化具有极强的鲁棒性。
为了弥补这个缺陷,该工作连接第二个头部,回归密集的局部特征图,并使用 InfoNCE 损失进行训练。由此产生的架构称为 MASt3R(代表“匹配和立体 3D 重建”),在多个基准测试中均优于 DUSt3R。为了获得像素级的精确匹配,采用一种从粗到细的匹配方案,匹配在多尺度上进行。每个步骤从密集特征图中提取相互匹配(reciprocal match),这也许与直觉相反,比计算密集特征图本身要耗费更多时间。提出的解决方案是一种更快的寻找相互匹配的算法,其速度几乎提高两个数量级,同时提高了姿态估计质量。
如图所示MASt3R方法概述。给定两个要匹配的输入图像,网络会为每个图像和每个输入像素回归一个 3D 点、一个置信度值和一个局部特征。将 3D 点或局部特征插入快速相互 NN 匹配器 (3.3) 可产生稳健的对应关系。与 DUSt3R 框架相比,MASt3R的贡献以蓝色突出显示。
DUSt3R [102] 仅从图像中联合解决标定和 3D 重建问题的方法。基于 Transformer 的网络根据给定两幅输入图像预测局部 3D 重建,输入图像为两个密集 3D 点云 𝑋1,1 和 𝑋2,1,即定义的点图。
为了从点图中获得可靠的像素对应关系,标准解决方案是在某些不变特征空间中寻找相互匹配 [26,78,102, 106]。尽管这种方案即使在存在极端视点变化的情况下也能很好地处理 DUSt3R 的回归点图(即在三维空间中),得到的对应关系相当不精确,导致准确率不理想。这是一个相当自然的结果,因为 (i) 回归本质上受噪声影响,以及 (ii) DUSt3R 从未明确接受过匹配训练。
出于这些原因,添加第二个头,输出两个密集特征图 𝐷1 和 𝐷2,维度为 𝑑:
将头部实现为一个简单的 2 层 MLP,其中交错一个非线性 GELU 激活函数 [39]。最后,将每个局部特征归一化为单位范数。
鼓励一幅图像中每个局部描述符与表示场景中相同 3D 点的另一幅图像中最多一个描述符匹配。为此,利用 infoNCE [95] 损失在一组真值对应关系 M = {(𝑖, 𝑗)|𝑋i1,1= 𝑋j2,1}:
此匹配目标本质上是交叉熵分类损失:与DUSt3R的回归相反,网络只有在正确获得正确像素而不是附近像素时才会获得奖励。这强烈鼓励网络实现高精度匹配。最后,将回归和匹配损失结合起来得到最终的训练目标:
给定两个预测特征图𝐷1、𝐷2,工作目标是提取一组可靠的像素对应关系,即彼此的相互最近邻:
不幸的是,简单的相互匹配实现具有较高的计算复杂度,为 𝑂(𝑊2𝐻2),因为必须将图像中的每个像素与另一图像中的每个像素进行比较。虽然可以优化最近邻 (NN) 搜索,例如使用 K-d 树 [1],但这种优化在高维特征空间中通常变得非常低效,并且在所有情况下,都比 MASt3R 输出 𝐷1 和 𝐷2 的推理时间慢几个数量级。
提出了一种基于子采样的更快方法。该方法基于一个迭代过程,从初始稀疏的 𝑘 像素集 𝑈0 开始,通常在第一幅图像 𝐼1 的网格上定期采样。然后将每个像素映射到 𝐼2 上的 最近邻(NN),得到 𝑉1,并将得到的像素以相同的方式再映射回 𝐼1:
然后收集一组相互匹配(形成一个循环的匹配,即 Mk𝑡 = {(𝑈n𝑡,𝑉n𝑡) | 𝑈n𝑡 = 𝑈n𝑡+1})。对于下一次迭代,已经收敛的像素将被过滤掉,即更新 Ut+1 = Ut+1 \ Ut。同样,从 t=1 开始,还验证和过滤 Vt+1,并以类似的方式将其与 Vt 进行比较。如图(左)所示,然后重复此过程固定次数,直到大多数对应关系收敛为稳定(相互)对。在图(中)中,表明未收敛点 |𝑈𝑡| 的数量在几次迭代后迅速减少到零。最后,输出对应关系集由所有相互对 Mk = ⋃t Mk𝑡 的连接组成。快速匹配的总体复杂度为 𝑂(𝑘𝑊𝐻),比简单方法快 𝑊𝐻/𝑘 ≫ 1 倍,如图(右)所示。值得指出的是,快速匹配算法提取全集 M 的一个子集,其大小受 |M𝑘 | ≤ 𝑘 的限制。
由于注意相对于输入图像区域 (𝑊 × 𝐻 ) 的二次复杂度,MASt3R 仅处理最大尺寸为 512 像素的图像。较大的图像需要更多的计算能力来训练,并且 ViT 尚未推广到更大的测试时间分辨率 [62,65]。因此,需要缩小高分辨率图像(例如 1M 像素)才能进行匹配,然后将得到的对应关系放大回原始图像分辨率。这可能会导致一些性能损失,有时足以导致定位精度或重建质量的大幅下降。
粗-到-细匹配是一种标准技术,可以保留使用低分辨率算法匹配高分辨率图像的优势 [66, 86]。因此,MASt3R 探索了这个想法。程序从对两幅图像的缩小版本进行匹配开始。将通过子采样 𝑘 获得的一组粗对应关系表示为 M 。接下来,在每个全分辨率图像上独立生成一个重叠窗口裁剪 𝑊1 和 𝑊2 的网格。每个窗口裁剪的最大尺寸为 512 个像素,相邻窗口重叠 50%。然后,可以枚举所有窗口对 (𝑤1, 𝑤2) 的集合,从中选择一个子集,覆盖大多数粗对应关系 M 。具体来说,以贪婪的方式逐个添加窗口对,直到覆盖 90% 的对应关系。最后,独立地对每个窗口对进行匹配:
从每个窗口对获得的对应关系最终被映射回原始图像坐标并连接起来,从而提供密集的全分辨率匹配。
模型架构以公开的 DUSt3R 模型 [102] 为基础,并使用相同的主干(ViT-Large 编码器和 ViT-Base 解码器)。为了最大限度地发挥 DUSt3R 的 3D 匹配能力,将模型权重初始化为公开的 DUSt3R 检查点。在每个 epoch 中,随机抽取 650k 对,这些对均匀分布在所有数据集之间。用余弦时间表对网络进行 35 个 epoch 训练,初始学习率设置为 0.0001。与 [102] 类似,在训练时随机化图像的长宽比,确保最大图像尺寸为 512 像素。将局部特征维度设置为𝑑 = 24,将匹配损失权重设置为𝛽 = 1。网络在训练时看到不同的尺度很重要,因为由粗到细的匹配从缩小图像开始,然后放大细节。因此,在训练期间以随机裁剪的形式进行积极的数据增强。图像裁剪使用单应性变换来保留主点的中心位置。
从无地图重定位基准 [5] 开始实验,这是一个极具挑战性的数据集,旨在给定单个参考图像而不使用任何地图在度量空间中定位相机。它包含训练集、验证集和测试集,分别包含 460、65 和 130 个场景,每个场景包含两个视频序列。按照基准,根据虚拟对应重投影误差 (VCRE) 和相机姿势精度进行评估 [5]。
不对该数据集采用由粗到细的匹配,因为图像分辨率已经接近 MASt3R 工作分辨率(分别为 720 × 540 和 512 × 384)。即使用优化的最近邻搜索代码,计算密集相互匹配的速度也非常慢。因此,采用对相互对应关系集进行子采样,从完整集合 M 中保留最多 𝑘 个对应关系(等式 (13))。上图(右)显示了子采样对 AUC(VCRE)性能和时间的影响。令人惊讶的是,中间子采样值的性能显著提高。使用 𝑘 = 3000,可以将匹配速度提高 64 倍,同时显著提高性能。实验中保持 𝑘 = 3000。
以下两个表分别是在验证集和测试集的性能比较:
如图所示是使用密集相互匹配(基线)和快速相互匹配(𝑘 = 3000)时匹配密度差异的说明。快速相互匹配对大收敛盆地的对应关系进行采样,从而实现更均匀的图像覆盖。覆盖率可以根据每个密度图中点匹配的平均值和标准偏差𝜎来衡量,绘制为彩色椭圆(红色、绿色和蓝色分别对应 1𝜎、1.5𝜎 和 2𝜎)。