引言

从杂乱无章的 2D 照片集中重建 3D 世界是计算机视觉的“魔术”之一。这一过程被称为运动恢复结构 (Structure-from-Motion,简称 SfM) ,它支撑着从 Google Earth 3D 视图到自动驾驶汽车测绘以及数字遗产保护等各种应用。

虽然结果令人惊叹,但其过程在数学上却相当脆弱。被称为增量式 SfM 的传统方法是一次一张图片地构建 3D 模型。它们很精确但速度很慢,处理大型数据集通常需要数小时甚至数天。另一种选择是全局 SfM,它试图一次性解开整个谜题。全局方法速度快且可扩展,但它们有一个主要的“阿喀琉斯之踵”: 对噪声极其敏感。

当你试图同时对齐数千个相机时,几个糟糕的数据点——即连接图像的图中的“异常边 (outlier edges) ”——可能会导致整个数学结构崩溃,从而产生扭曲或破碎的 3D 模型。

在这篇文章中,我们将深入探讨一种名为 “Learning to Filter Outlier Edges in Global SfM” (学习过滤全局 SfM 中的异常边) 的新方法。研究人员提出了一种巧妙的解决方案,利用图神经网络 (GNN) 在这些糟糕的连接破坏重建之前识别并删除它们。通过使用“线图 (line graphs) ”重新构建问题并应用基于 Transformer 的注意力机制,他们实现了可以与较慢的增量式方法相媲美的鲁棒性。

背景: 全局 SfM 流程

要理解为什么过滤异常值如此关键,我们首先需要看看全局运动恢复结构是如何工作的。该流程通常是一系列估算过程,每一步都依赖于上一步的成功。

图 2. 在全局运动恢复结构中,流程从图像匹配转移到旋转平均,然后是平移平均。

如上图 2 所示,该过程始于初始化 。 系统找到重叠的图像,检测特征点 (如角点或边缘) ,并在不同的照片之间进行匹配。根据这些匹配,它估算相机对之间的相对几何关系。

这些相机及其成对关系的集合形成了一个位姿图 (Pose Graph) 。 在这个图中:

  • 节点 (顶点) 代表图像 (相机) 。
  • 代表两个相机之间的相对位姿 (旋转和平移) 。

两步平均问题

全局 SfM 分两个不同的步骤求解相机位姿:

  1. 旋转平均 (Rotation Averaging) : 系统首先确定每个相机的全局方向。这一步目前已经相当稳健且研究充分。
  2. 平移平均 (Translation Averaging) : 一旦旋转被固定,系统就会尝试确定每个相机的全局位置 (平移) 。

这正是容易出问题的地方。 虽然我们可以相当好地估算两个相机之间的运动方向,但在没有立体标定的情况下估算尺度 (距离) 是很困难的。此外,由于场景中的重复纹理或移动物体,相对平移估算通常充满了异常值。

如果位姿包含“异常边”——即相机之间的连接声称发生了某种实际上并未发生或极其不准确的运动——平移平均算法会试图满足这些不可能的约束,从而扭曲最终的 3D 结构。因此,在平均之前过滤掉这些异常值是稳健的全局 SfM 的“圣杯”。

核心方法: 学习过滤

研究人员提出了一种基于学习的过滤器。他们没有依赖手工设计的几何规则 (这些规则在复杂场景中经常失效) ,而是训练了一个神经网络来观察位姿图,并将每条边分类为 内点 (Inlier,保留)外点 (Outlier,丢弃)

然而,将深度学习应用于这种特定的图问题面临两个主要的结构性挑战:

  1. 实体不匹配: 标准图神经网络对节点进行分类,但在这里我们需要对进行分类。
  2. 内存爆炸: 大型场景的位姿图非常庞大。

作者利用 线图 (Line Graphs)图聚类 (Graph Clustering) 解决了这些问题。

1. 翻转图: 线图转换

标准 GNN 擅长节点分类。它们观察一个节点,观察它的邻居,并决定该节点应该有什么标签。但在 SfM 中,节点 (相机) 并不是“坏”的;边 (相对测量值) 才是。

为了解决这个问题,作者将原始位姿图 (\(\mathcal{G}\)) 转换为 线图 (\(L(\mathcal{G})\)) 。

在线图表示中:

  • 原始图的 变成新图的 节点
  • 如果原始边共享一个共同的相机,则新图中的两个节点相连。

这种转换在下面的系统概览中直观地展示了出来:

图 1. 该流程将位姿图 G 转换为线图 L(G),其中边变为节点。然后 GNN 预测内点/外点标签。

数学上,线图的边集 \(\mathcal{E}_L\) 定义为:

线图边集公式

这个公式表明,如果原始边 \((v_i, v_j)\) 和 \((v_k, v_l)\) 共享一个顶点 (即 \(v_i = v_k\),\(v_j = v_l\) 等) ,则两个新节点 (\(v_{ij}\) 和 \(v_{kl}\)) 之间存在连接。

通过执行此转换,原始空间中的“边分类”问题变成了线图空间中的标准“节点分类”问题,这是标准 GNN 架构可以原生处理的。

2. 特征工程: 网络看到了什么?

一旦图被转换,线图中的每个节点实际上包含什么信息?研究人员为每个节点 (请记住,它代表相对位姿) 附加了一个特征向量,包含两个关键信息:

  1. 几何数据: 估算的相对位姿 (旋转和平移) 。
  2. 视觉上下文: 使用 DINOv2 提取的深度图像嵌入。

视觉特征的包含至关重要。DINOv2 提供了图像内容的语义理解。如果几何计算表明两个相机看着同一面墙,但 DINOv2 特征表明一个看着墙,另一个看着树,网络就可以学习将这种几何连接标记为异常值。

3. Transformer 架构

为了处理这个图,作者采用了基于 Transformer 的架构。具体来说,他们使用了 TransformerConv 层。这允许网络使用注意力机制动态地权衡不同邻居的重要性。

节点 \(x_i\) (代表原始图中的一条边) 的更新规则聚合了来自其邻居 \(\mathcal{N}(i)\) 的信息:

节点更新公式

这里,\(x'_i\) 是更新后的特征。项 \(\alpha_{i,j}\) 代表注意力系数——即网络应该在多大程度上“听取”邻居 \(j\) 的信息。该系数是使用查询 (query) 和键 (key) 向量上的 softmax 函数计算的,这是 Transformer 架构的标准做法:

注意力机制公式

这种注意力机制对 SfM 至关重要。它允许网络学习一致性。如果一个相对位姿与其邻居一致 (即,“我向左移动了,我的邻居也说我向左移动了”) ,注意力权重将反映这种强关系。如果一个位姿与其邻居相矛盾,网络可以将其隔离。

为了防止网络在穿过多层时“遗忘”原始信息 (一种称为过平滑的现象) ,他们添加了一个门控残差连接:

门控残差连接公式

参数 \(\beta_i\) 充当一个学习到的门,控制保留多少旧信息以及接受多少来自邻居的新信息。

4. 扩展规模: 聚类解决方案

使用线图有一个陷阱。它们是内存吞噬者。线图中边的数量随着原始图中节点度数的增加呈二次方增长。如果你有一张热门图片连接到其他 100 张图片,那么这单个簇在线图中就会产生近 5000 条边。

线图边的大小计算如下:

线图大小公式

对于包含数千张图像的大规模场景,线图变得太大而无法放入 GPU 内存。

为了解决这个问题,研究人员引入了 图聚类 (Graph Clustering) 步骤。在转换为线图之前,他们将原始位姿图划分为更小、更易于管理的子图 (\(C_i\)) 。

他们使用归一化切分 (normalized cut) 目标来分割图,同时尽可能少地破坏强连接:

图聚类公式

每个簇由网络独立处理。因为一条边可能出现在多个簇中 (如果它位于边界上) ,系统可能会为单条边生成多个预测。作者使用简单的多数投票机制来做出最终的内点/外点决定。这使得该方法能够扩展到任意大的数据集,而不会耗尽内存。

实验与结果

作者将他们的过滤器集成到了两个主要的 SfM 库中: TheiaGLOMAP 。 他们将自己的方法与标准的“1DSfM”过滤器以及其他近期方法 (如针对退化几何结构而不仅仅是异常值的“Triangle”过滤器) 进行了比较。

训练是在单个场景 (Piazza San Marco) 上完成的,并在完全不同的数据集上进行了测试,展示了模型在无需重新训练的情况下的泛化能力。

1DSfM 数据集上的表现

1DSfM 数据集是互联网照片集的基准集合。下表 1 详细列出了使用 Theia 流程的结果。

表 1. 1DSfM 数据集上的结果。与基线相比,所提出的方法显著降低了平均位置误差。

表 1 的主要结论:

  • 误差大幅降低: 比较“w/o Filter” (无过滤器,154.29m 误差) 行与“Ours” (我们的方法,26.97m 误差) 。所提出的方法有效地清理了图。
  • 击败基线: 标准的“1DSfM”过滤器平均误差为 154.21m (它在特拉法加等复杂场景中失败得很惨) 。所提出的方法平均精确度大约是其 5 倍
  • 优势互补: 当与“Triangle”过滤器结合使用时 (Ours + Tri.) ,误差进一步下降到 21.15m,实现了最佳的整体性能。这表明 GNN 移除了“明显的”异常值,而 Triangle 过滤器处理了微妙的几何退化。

与 GLOMAP 集成

GLOMAP 是最先进的全局 SfM 系统。表 2 显示,即使在这个高度优化的流程中,所提出的过滤器也增加了价值。

表 2. 与 GLOMAP 集成显示中值位置误差和召回率均有改善。

该方法将位置召回率 (正确定位相机的百分比) 从 59.39% 提高到 61.68%。虽然这看起来可能只是几个百分点的提升,但在 3D 重建中,多恢复几十个相机可能意味着完整模型与缺失墙壁或建筑物的模型之间的区别。

PhotoTourism 和 ScanNet

作者还在 PhotoTourism 数据集 (室外地标) 和 ScanNet (室内环境) 上进行了测试。

PhotoTourism 结果: 表 3. PhotoTourism 数据集上的结果。

在 PhotoTourism (表 3) 上,所提出的方法始终实现高召回率。值得注意的是,在“Sacre Coeur”场景中,组合方法 (Ours+Tri) 达到了 94.95% 的召回率,显着高于基线的 81.73%。

ScanNet 结果: 表 4. ScanNet 数据集上的结果。

ScanNet (表 4) 代表室内场景,由于无纹理的墙壁和重复图案,这对 SfM 来说通常是出了名的困难。在这里,标准的 1DSfM 过滤器实际上损害了性能 (将误差从 0.78m 增加到 0.83m) ,因为它删除了好的边。然而,所提出的基于学习的方法将误差改善至 0.73m,表明它在困难的几何配置中更聪明地保留了有效的连接。

消融实验: 什么最重要?

最后,研究人员拆解了他们的模型部分,以查看究竟是什么在驱动性能。

表 5. 消融研究显示图像特征和聚类的重要性。

表 5 揭示了两个关键见解:

  1. 图像特征是关键: 移除 DINOv2 图像特征 (“Ours w/o image features”) 使误差从 22.09m 增加到 37.78m。网络需要“看到”图像才能准确判断几何关系。
  2. 聚类有效: 在不进行聚类的情况下运行推理 (“Ours inference w/o clustering”) 实际上导致了更差的性能 (46.60m 误差) 。这可能是因为完整的图太嘈杂;聚类允许网络专注于子图内的局部一致性,充当了一种正则化形式。

结论

论文“Learning to Filter Outlier Edges in Global SfM”为将深度学习集成到 3D 重建的几何流程中提出了令人信服的案例。通过将位姿图转换为线图并应用基于 Transformer 的 GNN,该方法有效地充当了“智能过滤器”,在繁重的数学运算开始之前清理嘈杂的数据。

关键的创新——具体来说是使用线图来构建问题以及使用聚类来解决内存限制——使得这种方法能够扩展到大型的现实世界数据集。结果显而易见: 更准确的相机定位、更少的灾难性故障以及整体更稳健的流程。

对于计算机视觉的学生和从业者来说,这项工作凸显了一个日益增长的趋势: 最好的系统往往不是纯粹的“基于学习”或纯粹的“几何方法”。它们是混合型的——使用深度学习来处理现实世界数据的混乱 (异常值检测) ,并使用严谨的几何学来执行最终的重建。