【读点论文】GIM: LEARNING GENERALIZABLE IMAGE MATCHER FROM INTERNET VIDEOS

GIM: LEARNING GENERALIZABLE IMAGE MATCHER FROM INTERNET VIDEOS

ABSTRACT

  • 图像匹配是一个基本的计算机视觉问题。虽然基于学习的方法在现有的基准测试中达到了最先进的性能,但它们对野外图像的推广能力很差。此类方法通常需要为不同的场景类型训练单独的模型(例如,室内与室外)并且当场景类型预先未知时是不切实际的。潜在的问题之一是现有数据构造管道的有限可扩展性,这限制了标准图像匹配数据集的多样性。为了解决这个问题,我们提出了GIM,一个自训练框架,用于学习基于任何图像匹配架构的单个可推广模型,使用互联网视频,丰富多样的数据源。给定一个架构,GIM首先在标准域上训练它-特定的数据集,然后将其与互补匹配方法相结合,在新视频的邻近帧上创建密集标签。这些标签通过鲁棒拟合进行过滤,然后通过将它们传播到远帧来增强。

  • 最终的模型是在具有强增强的传播数据上训练的。不依赖于复杂的3D重建使得GIM比标准的基于SfM和MVS的框架更有效,更不容易失败。我们还提出了ZEB,第一个用于图像匹配的零拍摄评估基准。通过混合来自不同领域的数据,ZEB能够全面评估不同方法的跨域泛化性能,实验证明了GIM的有效性和通用性。随着下载视频数量的增加,应用GIM一致地提高了3种最先进的图像匹配架构的零拍性能(图1(a));对于50小时的YouTube视频,相对零样本性能提高了8.4%-18.1%。GIM还可以推广到极端的跨域数据,例如投影3D点云的鸟瞰图(BEV)图像(图1(c))。更重要的是,我们的 single zero-shot model 在对各自领域固有的下游任务进行评估时,始终优于特定领域的基线。源代码、演示和基准测试可在 GIM 上获得。

  • GIM 是一个把"互联网视频 → 自训练 → 通用图像匹配器"这条路打通的框架 。它没有发明新算法,而是把现有的匹配器(SuperGlue / LoFTR / DKM)用一种叫**"自训练 + 标签传播 + 强增广"的训练机制,喂了大量 多场景、多光照、多视角的互联网视频,训练出一个单一、能跨域**的匹配模型。

    • 它把"数据驱动"在图像匹配领域做到了和 CLIP / SAM / DINO 同等的高度 ------ 用大量多样数据训单一模型

    • 它证明了视频比图像更适合做图像匹配的预训练 ------ 时间连续性 = 自然密集标注

    • 它给出了一个ZEB 零样本评测基准,打破了"在自己的领域刷榜"的怪圈

    • #mermaid-svg-WrEx3EfLMpCfOy8q{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-WrEx3EfLMpCfOy8q .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-WrEx3EfLMpCfOy8q .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-WrEx3EfLMpCfOy8q .error-icon{fill:#552222;}#mermaid-svg-WrEx3EfLMpCfOy8q .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-WrEx3EfLMpCfOy8q .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-WrEx3EfLMpCfOy8q .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-WrEx3EfLMpCfOy8q .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-WrEx3EfLMpCfOy8q .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-WrEx3EfLMpCfOy8q .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-WrEx3EfLMpCfOy8q .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-WrEx3EfLMpCfOy8q .marker{fill:#333333;stroke:#333333;}#mermaid-svg-WrEx3EfLMpCfOy8q .marker.cross{stroke:#333333;}#mermaid-svg-WrEx3EfLMpCfOy8q svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-WrEx3EfLMpCfOy8q p{margin:0;}#mermaid-svg-WrEx3EfLMpCfOy8q .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-WrEx3EfLMpCfOy8q .cluster-label text{fill:#333;}#mermaid-svg-WrEx3EfLMpCfOy8q .cluster-label span{color:#333;}#mermaid-svg-WrEx3EfLMpCfOy8q .cluster-label span p{background-color:transparent;}#mermaid-svg-WrEx3EfLMpCfOy8q .label text,#mermaid-svg-WrEx3EfLMpCfOy8q span{fill:#333;color:#333;}#mermaid-svg-WrEx3EfLMpCfOy8q .node rect,#mermaid-svg-WrEx3EfLMpCfOy8q .node circle,#mermaid-svg-WrEx3EfLMpCfOy8q .node ellipse,#mermaid-svg-WrEx3EfLMpCfOy8q .node polygon,#mermaid-svg-WrEx3EfLMpCfOy8q .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-WrEx3EfLMpCfOy8q .rough-node .label text,#mermaid-svg-WrEx3EfLMpCfOy8q .node .label text,#mermaid-svg-WrEx3EfLMpCfOy8q .image-shape .label,#mermaid-svg-WrEx3EfLMpCfOy8q .icon-shape .label{text-anchor:middle;}#mermaid-svg-WrEx3EfLMpCfOy8q .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-WrEx3EfLMpCfOy8q .rough-node .label,#mermaid-svg-WrEx3EfLMpCfOy8q .node .label,#mermaid-svg-WrEx3EfLMpCfOy8q .image-shape .label,#mermaid-svg-WrEx3EfLMpCfOy8q .icon-shape .label{text-align:center;}#mermaid-svg-WrEx3EfLMpCfOy8q .node.clickable{cursor:pointer;}#mermaid-svg-WrEx3EfLMpCfOy8q .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-WrEx3EfLMpCfOy8q .arrowheadPath{fill:#333333;}#mermaid-svg-WrEx3EfLMpCfOy8q .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-WrEx3EfLMpCfOy8q .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-WrEx3EfLMpCfOy8q .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-WrEx3EfLMpCfOy8q .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-WrEx3EfLMpCfOy8q .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-WrEx3EfLMpCfOy8q .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-WrEx3EfLMpCfOy8q .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-WrEx3EfLMpCfOy8q .cluster text{fill:#333;}#mermaid-svg-WrEx3EfLMpCfOy8q .cluster span{color:#333;}#mermaid-svg-WrEx3EfLMpCfOy8q div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-WrEx3EfLMpCfOy8q .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-WrEx3EfLMpCfOy8q rect.text{fill:none;stroke-width:0;}#mermaid-svg-WrEx3EfLMpCfOy8q .icon-shape,#mermaid-svg-WrEx3EfLMpCfOy8q .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-WrEx3EfLMpCfOy8q .icon-shape p,#mermaid-svg-WrEx3EfLMpCfOy8q .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-WrEx3EfLMpCfOy8q .icon-shape .label rect,#mermaid-svg-WrEx3EfLMpCfOy8q .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-WrEx3EfLMpCfOy8q .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-WrEx3EfLMpCfOy8q .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-WrEx3EfLMpCfOy8q :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 图像匹配的现实痛点
      P1:域分裂
      P2:数据稀缺
      P3:SfM 标注难
      室内/室外分开训

      新场景要重训

      部署要选模型
      领域数据少

      MegaDepth 196 场景

      ScanNet 1613 场景

      多样性受限
      COLMAP 慢 易失败

      RGBD 扫描需物理访问

      无法扩展到野生视频
      核心洞察:

      需要 数据丰富 + 标注高效 + 模型通用 的训练范式

    • COLMAP 失败原因(论文隐含提到):

      1. wild motion ------ 视频相机轨迹不规则,不像 SfM 那种"拍照式"覆盖
      2. dynamic objects ------ 移动物体会破坏 SfM 假设
      3. low texture ------ 室内/弱纹理场景特征不足
      4. long-baseline ------ 视频相邻帧稀疏,跨大步后对应消失
    • #mermaid-svg-NYunuTT4ALYM1CbD{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-NYunuTT4ALYM1CbD .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-NYunuTT4ALYM1CbD .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-NYunuTT4ALYM1CbD .error-icon{fill:#552222;}#mermaid-svg-NYunuTT4ALYM1CbD .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-NYunuTT4ALYM1CbD .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-NYunuTT4ALYM1CbD .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-NYunuTT4ALYM1CbD .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-NYunuTT4ALYM1CbD .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-NYunuTT4ALYM1CbD .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-NYunuTT4ALYM1CbD .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-NYunuTT4ALYM1CbD .marker{fill:#333333;stroke:#333333;}#mermaid-svg-NYunuTT4ALYM1CbD .marker.cross{stroke:#333333;}#mermaid-svg-NYunuTT4ALYM1CbD svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-NYunuTT4ALYM1CbD p{margin:0;}#mermaid-svg-NYunuTT4ALYM1CbD .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-NYunuTT4ALYM1CbD .cluster-label text{fill:#333;}#mermaid-svg-NYunuTT4ALYM1CbD .cluster-label span{color:#333;}#mermaid-svg-NYunuTT4ALYM1CbD .cluster-label span p{background-color:transparent;}#mermaid-svg-NYunuTT4ALYM1CbD .label text,#mermaid-svg-NYunuTT4ALYM1CbD span{fill:#333;color:#333;}#mermaid-svg-NYunuTT4ALYM1CbD .node rect,#mermaid-svg-NYunuTT4ALYM1CbD .node circle,#mermaid-svg-NYunuTT4ALYM1CbD .node ellipse,#mermaid-svg-NYunuTT4ALYM1CbD .node polygon,#mermaid-svg-NYunuTT4ALYM1CbD .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-NYunuTT4ALYM1CbD .rough-node .label text,#mermaid-svg-NYunuTT4ALYM1CbD .node .label text,#mermaid-svg-NYunuTT4ALYM1CbD .image-shape .label,#mermaid-svg-NYunuTT4ALYM1CbD .icon-shape .label{text-anchor:middle;}#mermaid-svg-NYunuTT4ALYM1CbD .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-NYunuTT4ALYM1CbD .rough-node .label,#mermaid-svg-NYunuTT4ALYM1CbD .node .label,#mermaid-svg-NYunuTT4ALYM1CbD .image-shape .label,#mermaid-svg-NYunuTT4ALYM1CbD .icon-shape .label{text-align:center;}#mermaid-svg-NYunuTT4ALYM1CbD .node.clickable{cursor:pointer;}#mermaid-svg-NYunuTT4ALYM1CbD .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-NYunuTT4ALYM1CbD .arrowheadPath{fill:#333333;}#mermaid-svg-NYunuTT4ALYM1CbD .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-NYunuTT4ALYM1CbD .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-NYunuTT4ALYM1CbD .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-NYunuTT4ALYM1CbD .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-NYunuTT4ALYM1CbD .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-NYunuTT4ALYM1CbD .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-NYunuTT4ALYM1CbD .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-NYunuTT4ALYM1CbD .cluster text{fill:#333;}#mermaid-svg-NYunuTT4ALYM1CbD .cluster span{color:#333;}#mermaid-svg-NYunuTT4ALYM1CbD div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-NYunuTT4ALYM1CbD .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-NYunuTT4ALYM1CbD rect.text{fill:none;stroke-width:0;}#mermaid-svg-NYunuTT4ALYM1CbD .icon-shape,#mermaid-svg-NYunuTT4ALYM1CbD .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-NYunuTT4ALYM1CbD .icon-shape p,#mermaid-svg-NYunuTT4ALYM1CbD .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-NYunuTT4ALYM1CbD .icon-shape .label rect,#mermaid-svg-NYunuTT4ALYM1CbD .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-NYunuTT4ALYM1CbD .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-NYunuTT4ALYM1CbD .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-NYunuTT4ALYM1CbD :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
      否
      成本浪费
      野生视频
      SfM + MVS
      是否成功?
      3D 重建成功
      44.3% 失败率

      论文 Table 2
      稀疏匹配 GT
      GPU 浪费
      可用于训练

    • 图一:GIM概述。我们提出了一个有效的框架,用于从视频中学习可推广的图像匹配(GIM)。(a):GIM可以应用于各种架构和规模以及数据量(B):改进的性能很好地转移到各种下游任务,例如3D重建。(c):我们的最佳模型GIMDKM还可以推广到具有挑战性的域外数据,如投影点云的鸟瞰图(BEV)图像。

INTRODUCTION

  • 图像匹配是一项基本的计算机视觉任务,是许多应用的支柱,如3D重建Ullman,视觉定位Sattler等人和自动驾驶。

  • 手工制作方法利用预定义的试探法来计算和匹配特征。虽然这些方法被广泛采用,但在具有挑战性的场景中,如长基线和极端天气,这些方法通常只能产生有限的匹配召回率和密度。基于学习的方法已经成为一种具有更高准确性的有前途的替代方法和匹配密度。然而,由于缺乏与 GT 对应的多样化多视图数据,当前的方法通常分别在ScanNet和MegaDepth上训练单独的室内和室外模型。这种特定于领域的训练将它们的推广局限于没见过的场景,并且使得它们对于具有未知场景类型的应用不切实际。此外,现有的数据构建方法依赖于RGBD扫描或运动结构(SfM) +多视图立体(MVS),效率和适用性有限,使其无法有效地扩大数据和模型训练。

  • 为了解决这些问题,我们提出了GIM,这是第一个可以学习单个图像匹配器的框架,可以推广到来自不同领域的野外数据。受计算机视觉基础模型的启发,GIM通过对多样化和大规模视觉数据的自我训练实现了零样本泛化。我们使用互联网视频,因为它们容易获得,多样,而且几乎没有限制。给定任何图像匹配架构,首先在标准的特定领域数据集上对其进行训练。然后,将训练的模型与多种互补的图像匹配方法相结合,以在下载的视频的附近帧上生成候选对应关系。

  • 通过使用鲁棒拟合移除异常对应,并将对应传播到远处的视频帧,来生成最终标签。当训练最终的概化模型时,应用强数据扩充。基于标准SfM和的标签生成管道的效率有限,并且容易在野外视频中失败(参见第。详见4.2)。相反,GIM可以有效地在多样化的互联网视频上生成可靠的监管信号,并有效地提高最先进模型的泛化能力。

  • 为了全面评估不同方法的泛化性能,我们还构建了第一个零样本评估基准ZEB,由来自8个真实领域和4个模拟领域的数据组成。多样化的跨领域数据使ZEB能够识别现有特定领域模型的泛化差距。例如,我们发现高级手工方法在ZEB的几个领域比最近的基于学习的方法表现更好。

  • 实验证明了GIM的重要性和通用性,使用50小时的YouTube视频,GIM实现了SuperGlue的9.9%、18.1%和8.4%的相对零样本性能提升 LoFTR和DKM。性能随着视频数据量的增加而不断提高(图1(a))。尽管仅在正常RGB图像上训练,但我们的模型可以很好地推广到极端的跨域数据,例如投影3D点云的BEV图像(图1(c))。除了图像匹配鲁棒性外,单个GIM模型还可以在各种下游任务(如视觉定位,单应性估计和3D重建,甚至与其特定域上的域内基线进行比较。总之,这项工作的贡献包括:

    • GIM,第一个可以从互联网视频中学习通用图像匹配器的框架。
    • ZEB,第一个零样本图像匹配评估基准。
    • 实验表明,GIM的有效性和通用性的图像匹配和各种下游任务。
  • #mermaid-svg-JsXeDKB91PEidald{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-JsXeDKB91PEidald .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-JsXeDKB91PEidald .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-JsXeDKB91PEidald .error-icon{fill:#552222;}#mermaid-svg-JsXeDKB91PEidald .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-JsXeDKB91PEidald .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-JsXeDKB91PEidald .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-JsXeDKB91PEidald .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-JsXeDKB91PEidald .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-JsXeDKB91PEidald .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-JsXeDKB91PEidald .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-JsXeDKB91PEidald .marker{fill:#333333;stroke:#333333;}#mermaid-svg-JsXeDKB91PEidald .marker.cross{stroke:#333333;}#mermaid-svg-JsXeDKB91PEidald svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-JsXeDKB91PEidald p{margin:0;}#mermaid-svg-JsXeDKB91PEidald .edge{stroke-width:3;}#mermaid-svg-JsXeDKB91PEidald .section--1 rect,#mermaid-svg-JsXeDKB91PEidald .section--1 path,#mermaid-svg-JsXeDKB91PEidald .section--1 circle,#mermaid-svg-JsXeDKB91PEidald .section--1 polygon,#mermaid-svg-JsXeDKB91PEidald .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .section--1 text{fill:#ffffff;}#mermaid-svg-JsXeDKB91PEidald .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-JsXeDKB91PEidald .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .edge-depth--1{stroke-width:17;}#mermaid-svg-JsXeDKB91PEidald .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-JsXeDKB91PEidald .disabled,#mermaid-svg-JsXeDKB91PEidald .disabled circle,#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:lightgray;}#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:#efefef;}#mermaid-svg-JsXeDKB91PEidald .section-0 rect,#mermaid-svg-JsXeDKB91PEidald .section-0 path,#mermaid-svg-JsXeDKB91PEidald .section-0 circle,#mermaid-svg-JsXeDKB91PEidald .section-0 polygon,#mermaid-svg-JsXeDKB91PEidald .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-JsXeDKB91PEidald .section-0 text{fill:black;}#mermaid-svg-JsXeDKB91PEidald .node-icon-0{font-size:40px;color:black;}#mermaid-svg-JsXeDKB91PEidald .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-JsXeDKB91PEidald .edge-depth-0{stroke-width:14;}#mermaid-svg-JsXeDKB91PEidald .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-JsXeDKB91PEidald .disabled,#mermaid-svg-JsXeDKB91PEidald .disabled circle,#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:lightgray;}#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:#efefef;}#mermaid-svg-JsXeDKB91PEidald .section-1 rect,#mermaid-svg-JsXeDKB91PEidald .section-1 path,#mermaid-svg-JsXeDKB91PEidald .section-1 circle,#mermaid-svg-JsXeDKB91PEidald .section-1 polygon,#mermaid-svg-JsXeDKB91PEidald .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .section-1 text{fill:black;}#mermaid-svg-JsXeDKB91PEidald .node-icon-1{font-size:40px;color:black;}#mermaid-svg-JsXeDKB91PEidald .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .edge-depth-1{stroke-width:11;}#mermaid-svg-JsXeDKB91PEidald .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-JsXeDKB91PEidald .disabled,#mermaid-svg-JsXeDKB91PEidald .disabled circle,#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:lightgray;}#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:#efefef;}#mermaid-svg-JsXeDKB91PEidald .section-2 rect,#mermaid-svg-JsXeDKB91PEidald .section-2 path,#mermaid-svg-JsXeDKB91PEidald .section-2 circle,#mermaid-svg-JsXeDKB91PEidald .section-2 polygon,#mermaid-svg-JsXeDKB91PEidald .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .section-2 text{fill:#ffffff;}#mermaid-svg-JsXeDKB91PEidald .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-JsXeDKB91PEidald .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .edge-depth-2{stroke-width:8;}#mermaid-svg-JsXeDKB91PEidald .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-JsXeDKB91PEidald .disabled,#mermaid-svg-JsXeDKB91PEidald .disabled circle,#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:lightgray;}#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:#efefef;}#mermaid-svg-JsXeDKB91PEidald .section-3 rect,#mermaid-svg-JsXeDKB91PEidald .section-3 path,#mermaid-svg-JsXeDKB91PEidald .section-3 circle,#mermaid-svg-JsXeDKB91PEidald .section-3 polygon,#mermaid-svg-JsXeDKB91PEidald .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .section-3 text{fill:black;}#mermaid-svg-JsXeDKB91PEidald .node-icon-3{font-size:40px;color:black;}#mermaid-svg-JsXeDKB91PEidald .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .edge-depth-3{stroke-width:5;}#mermaid-svg-JsXeDKB91PEidald .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-JsXeDKB91PEidald .disabled,#mermaid-svg-JsXeDKB91PEidald .disabled circle,#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:lightgray;}#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:#efefef;}#mermaid-svg-JsXeDKB91PEidald .section-4 rect,#mermaid-svg-JsXeDKB91PEidald .section-4 path,#mermaid-svg-JsXeDKB91PEidald .section-4 circle,#mermaid-svg-JsXeDKB91PEidald .section-4 polygon,#mermaid-svg-JsXeDKB91PEidald .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .section-4 text{fill:black;}#mermaid-svg-JsXeDKB91PEidald .node-icon-4{font-size:40px;color:black;}#mermaid-svg-JsXeDKB91PEidald .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .edge-depth-4{stroke-width:2;}#mermaid-svg-JsXeDKB91PEidald .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-JsXeDKB91PEidald .disabled,#mermaid-svg-JsXeDKB91PEidald .disabled circle,#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:lightgray;}#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:#efefef;}#mermaid-svg-JsXeDKB91PEidald .section-5 rect,#mermaid-svg-JsXeDKB91PEidald .section-5 path,#mermaid-svg-JsXeDKB91PEidald .section-5 circle,#mermaid-svg-JsXeDKB91PEidald .section-5 polygon,#mermaid-svg-JsXeDKB91PEidald .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .section-5 text{fill:black;}#mermaid-svg-JsXeDKB91PEidald .node-icon-5{font-size:40px;color:black;}#mermaid-svg-JsXeDKB91PEidald .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .edge-depth-5{stroke-width:-1;}#mermaid-svg-JsXeDKB91PEidald .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-JsXeDKB91PEidald .disabled,#mermaid-svg-JsXeDKB91PEidald .disabled circle,#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:lightgray;}#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:#efefef;}#mermaid-svg-JsXeDKB91PEidald .section-6 rect,#mermaid-svg-JsXeDKB91PEidald .section-6 path,#mermaid-svg-JsXeDKB91PEidald .section-6 circle,#mermaid-svg-JsXeDKB91PEidald .section-6 polygon,#mermaid-svg-JsXeDKB91PEidald .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .section-6 text{fill:black;}#mermaid-svg-JsXeDKB91PEidald .node-icon-6{font-size:40px;color:black;}#mermaid-svg-JsXeDKB91PEidald .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .edge-depth-6{stroke-width:-4;}#mermaid-svg-JsXeDKB91PEidald .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-JsXeDKB91PEidald .disabled,#mermaid-svg-JsXeDKB91PEidald .disabled circle,#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:lightgray;}#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:#efefef;}#mermaid-svg-JsXeDKB91PEidald .section-7 rect,#mermaid-svg-JsXeDKB91PEidald .section-7 path,#mermaid-svg-JsXeDKB91PEidald .section-7 circle,#mermaid-svg-JsXeDKB91PEidald .section-7 polygon,#mermaid-svg-JsXeDKB91PEidald .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .section-7 text{fill:black;}#mermaid-svg-JsXeDKB91PEidald .node-icon-7{font-size:40px;color:black;}#mermaid-svg-JsXeDKB91PEidald .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .edge-depth-7{stroke-width:-7;}#mermaid-svg-JsXeDKB91PEidald .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-JsXeDKB91PEidald .disabled,#mermaid-svg-JsXeDKB91PEidald .disabled circle,#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:lightgray;}#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:#efefef;}#mermaid-svg-JsXeDKB91PEidald .section-8 rect,#mermaid-svg-JsXeDKB91PEidald .section-8 path,#mermaid-svg-JsXeDKB91PEidald .section-8 circle,#mermaid-svg-JsXeDKB91PEidald .section-8 polygon,#mermaid-svg-JsXeDKB91PEidald .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .section-8 text{fill:black;}#mermaid-svg-JsXeDKB91PEidald .node-icon-8{font-size:40px;color:black;}#mermaid-svg-JsXeDKB91PEidald .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .edge-depth-8{stroke-width:-10;}#mermaid-svg-JsXeDKB91PEidald .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-JsXeDKB91PEidald .disabled,#mermaid-svg-JsXeDKB91PEidald .disabled circle,#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:lightgray;}#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:#efefef;}#mermaid-svg-JsXeDKB91PEidald .section-9 rect,#mermaid-svg-JsXeDKB91PEidald .section-9 path,#mermaid-svg-JsXeDKB91PEidald .section-9 circle,#mermaid-svg-JsXeDKB91PEidald .section-9 polygon,#mermaid-svg-JsXeDKB91PEidald .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .section-9 text{fill:black;}#mermaid-svg-JsXeDKB91PEidald .node-icon-9{font-size:40px;color:black;}#mermaid-svg-JsXeDKB91PEidald .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .edge-depth-9{stroke-width:-13;}#mermaid-svg-JsXeDKB91PEidald .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-JsXeDKB91PEidald .disabled,#mermaid-svg-JsXeDKB91PEidald .disabled circle,#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:lightgray;}#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:#efefef;}#mermaid-svg-JsXeDKB91PEidald .section-10 rect,#mermaid-svg-JsXeDKB91PEidald .section-10 path,#mermaid-svg-JsXeDKB91PEidald .section-10 circle,#mermaid-svg-JsXeDKB91PEidald .section-10 polygon,#mermaid-svg-JsXeDKB91PEidald .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .section-10 text{fill:black;}#mermaid-svg-JsXeDKB91PEidald .node-icon-10{font-size:40px;color:black;}#mermaid-svg-JsXeDKB91PEidald .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .edge-depth-10{stroke-width:-16;}#mermaid-svg-JsXeDKB91PEidald .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-JsXeDKB91PEidald .disabled,#mermaid-svg-JsXeDKB91PEidald .disabled circle,#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:lightgray;}#mermaid-svg-JsXeDKB91PEidald .disabled text{fill:#efefef;}#mermaid-svg-JsXeDKB91PEidald .section-root rect,#mermaid-svg-JsXeDKB91PEidald .section-root path,#mermaid-svg-JsXeDKB91PEidald .section-root circle,#mermaid-svg-JsXeDKB91PEidald .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-JsXeDKB91PEidald .section-root text{fill:#ffffff;}#mermaid-svg-JsXeDKB91PEidald .section-root span{color:#ffffff;}#mermaid-svg-JsXeDKB91PEidald .section-2 span{color:#ffffff;}#mermaid-svg-JsXeDKB91PEidald .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-JsXeDKB91PEidald .edge{fill:none;}#mermaid-svg-JsXeDKB91PEidald .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-JsXeDKB91PEidald :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} GIM 深度解读
    论文定位
    研究动机
    核心算法
    多方法匹配
    标签传播详解
    数据管线
    ZEB 基准
    同类对比
    消融解读
    论点论据
    赋能迁移
    螺丝场景落地局限未来
    总结

  • 论文本质的 5 个核心论断(带证据强度)

论断 证据 强度
现有匹配器泛化差 RootSIFT 在 ZEB 多子集上优于 SuperGlue/LoFTR ★★★★★
互联网视频比图像更适合 pretrain 50h 视频 vs 200h 同领域图像,前者涨点更大 ★★★★
标签传播是关键 去掉后掉 2.3%(消融中最大) ★★★★★
COLMAP 在野生视频上失效 同算力 44.3% 失败率,只成功 2.2h ★★★★★
数据多样性 > 模型先进性 RootSIFT only 也接近 SOTA(49.3 vs 49.4) ★★★
  • 标签传播的算法实现(论文核心),完整 Python 实现,包含:

    • build_correspondence_matrix ------ 稀疏矩阵构建
    • propagate() ------ A→B→C 链式传播
    • iterative_propagate() ------ 迭代到 2*distance,直到< 1024 对应
    • 1 像素阈值 + 1024 最小对应数的工程含义
  • GIM 作为"训练范式"的迁移能力

    可迁移对象 适配性 说明
    不同匹配器架构 ★★★★★ SuperGlue/LoFTR/DKM 已验证;ALIKED/LightGlue/ELoFTR/RoMa 理论上可
    不同数据源 ★★★★★ 工业视频/产线视频/YouTube/手术录像/卫星 全部可
    不同下游任务 ★★★★ 位姿/单应/定位/重建 已验证;SLAM/NVS/3DGS 可迁移
    不同行业 ★★★★★ 工业/医疗/遥感/自动驾驶 通用
  • #mermaid-svg-33gr5FKdcYOWnCGG{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-33gr5FKdcYOWnCGG .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-33gr5FKdcYOWnCGG .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-33gr5FKdcYOWnCGG .error-icon{fill:#552222;}#mermaid-svg-33gr5FKdcYOWnCGG .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-33gr5FKdcYOWnCGG .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-33gr5FKdcYOWnCGG .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-33gr5FKdcYOWnCGG .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-33gr5FKdcYOWnCGG .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-33gr5FKdcYOWnCGG .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-33gr5FKdcYOWnCGG .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-33gr5FKdcYOWnCGG .marker{fill:#333333;stroke:#333333;}#mermaid-svg-33gr5FKdcYOWnCGG .marker.cross{stroke:#333333;}#mermaid-svg-33gr5FKdcYOWnCGG svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-33gr5FKdcYOWnCGG p{margin:0;}#mermaid-svg-33gr5FKdcYOWnCGG .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-33gr5FKdcYOWnCGG .cluster-label text{fill:#333;}#mermaid-svg-33gr5FKdcYOWnCGG .cluster-label span{color:#333;}#mermaid-svg-33gr5FKdcYOWnCGG .cluster-label span p{background-color:transparent;}#mermaid-svg-33gr5FKdcYOWnCGG .label text,#mermaid-svg-33gr5FKdcYOWnCGG span{fill:#333;color:#333;}#mermaid-svg-33gr5FKdcYOWnCGG .node rect,#mermaid-svg-33gr5FKdcYOWnCGG .node circle,#mermaid-svg-33gr5FKdcYOWnCGG .node ellipse,#mermaid-svg-33gr5FKdcYOWnCGG .node polygon,#mermaid-svg-33gr5FKdcYOWnCGG .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-33gr5FKdcYOWnCGG .rough-node .label text,#mermaid-svg-33gr5FKdcYOWnCGG .node .label text,#mermaid-svg-33gr5FKdcYOWnCGG .image-shape .label,#mermaid-svg-33gr5FKdcYOWnCGG .icon-shape .label{text-anchor:middle;}#mermaid-svg-33gr5FKdcYOWnCGG .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-33gr5FKdcYOWnCGG .rough-node .label,#mermaid-svg-33gr5FKdcYOWnCGG .node .label,#mermaid-svg-33gr5FKdcYOWnCGG .image-shape .label,#mermaid-svg-33gr5FKdcYOWnCGG .icon-shape .label{text-align:center;}#mermaid-svg-33gr5FKdcYOWnCGG .node.clickable{cursor:pointer;}#mermaid-svg-33gr5FKdcYOWnCGG .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-33gr5FKdcYOWnCGG .arrowheadPath{fill:#333333;}#mermaid-svg-33gr5FKdcYOWnCGG .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-33gr5FKdcYOWnCGG .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-33gr5FKdcYOWnCGG .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-33gr5FKdcYOWnCGG .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-33gr5FKdcYOWnCGG .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-33gr5FKdcYOWnCGG .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-33gr5FKdcYOWnCGG .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-33gr5FKdcYOWnCGG .cluster text{fill:#333;}#mermaid-svg-33gr5FKdcYOWnCGG .cluster span{color:#333;}#mermaid-svg-33gr5FKdcYOWnCGG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-33gr5FKdcYOWnCGG .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-33gr5FKdcYOWnCGG rect.text{fill:none;stroke-width:0;}#mermaid-svg-33gr5FKdcYOWnCGG .icon-shape,#mermaid-svg-33gr5FKdcYOWnCGG .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-33gr5FKdcYOWnCGG .icon-shape p,#mermaid-svg-33gr5FKdcYOWnCGG .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-33gr5FKdcYOWnCGG .icon-shape .label rect,#mermaid-svg-33gr5FKdcYOWnCGG .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-33gr5FKdcYOWnCGG .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-33gr5FKdcYOWnCGG .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-33gr5FKdcYOWnCGG :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 产线视频采集 20h
    多方法匹配

    主+互补 3 个
    亚像素级传播

    0.5px 阈值
    混合训练

    静态+仿真+视频
    GIM-style 螺丝注册器
    自建 ZEB 基准验证

  • "RootSIFT only 49.3" 的反直觉意义 ------ 在数据多样性面前,模型先进性变得次要

  • "无传播 50h < 有传播 12.5h" 的工程含义 ------ 传播 > 数据量,是 ROI 最高的操作

  • "COLMAP 44.3% 失败率" 的范式转折 ------ SfM/MVS 主导的时代已经过去,自训练 + 视频主导的新时代到来

  • "零样本泛化到 BEV" 的延伸 ------ 模型在训练分布之外的泛化能力,远超论文表面呈现的"性能提升"

  • 先建产线视频采集 + 自训练管线 + 传播机制,再考虑换 RoMa / DKM 。在工业落地 ROI 排序里,数据 > 传播 > 模型升级 > 部署优化。

  • #mermaid-svg-7olqvqY4lvIt2KRD{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-7olqvqY4lvIt2KRD .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-7olqvqY4lvIt2KRD .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-7olqvqY4lvIt2KRD .error-icon{fill:#552222;}#mermaid-svg-7olqvqY4lvIt2KRD .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7olqvqY4lvIt2KRD .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-7olqvqY4lvIt2KRD .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7olqvqY4lvIt2KRD .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7olqvqY4lvIt2KRD .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-7olqvqY4lvIt2KRD .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7olqvqY4lvIt2KRD .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7olqvqY4lvIt2KRD .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7olqvqY4lvIt2KRD .marker.cross{stroke:#333333;}#mermaid-svg-7olqvqY4lvIt2KRD svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7olqvqY4lvIt2KRD p{margin:0;}#mermaid-svg-7olqvqY4lvIt2KRD .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7olqvqY4lvIt2KRD .cluster-label text{fill:#333;}#mermaid-svg-7olqvqY4lvIt2KRD .cluster-label span{color:#333;}#mermaid-svg-7olqvqY4lvIt2KRD .cluster-label span p{background-color:transparent;}#mermaid-svg-7olqvqY4lvIt2KRD .label text,#mermaid-svg-7olqvqY4lvIt2KRD span{fill:#333;color:#333;}#mermaid-svg-7olqvqY4lvIt2KRD .node rect,#mermaid-svg-7olqvqY4lvIt2KRD .node circle,#mermaid-svg-7olqvqY4lvIt2KRD .node ellipse,#mermaid-svg-7olqvqY4lvIt2KRD .node polygon,#mermaid-svg-7olqvqY4lvIt2KRD .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7olqvqY4lvIt2KRD .rough-node .label text,#mermaid-svg-7olqvqY4lvIt2KRD .node .label text,#mermaid-svg-7olqvqY4lvIt2KRD .image-shape .label,#mermaid-svg-7olqvqY4lvIt2KRD .icon-shape .label{text-anchor:middle;}#mermaid-svg-7olqvqY4lvIt2KRD .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-7olqvqY4lvIt2KRD .rough-node .label,#mermaid-svg-7olqvqY4lvIt2KRD .node .label,#mermaid-svg-7olqvqY4lvIt2KRD .image-shape .label,#mermaid-svg-7olqvqY4lvIt2KRD .icon-shape .label{text-align:center;}#mermaid-svg-7olqvqY4lvIt2KRD .node.clickable{cursor:pointer;}#mermaid-svg-7olqvqY4lvIt2KRD .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-7olqvqY4lvIt2KRD .arrowheadPath{fill:#333333;}#mermaid-svg-7olqvqY4lvIt2KRD .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7olqvqY4lvIt2KRD .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7olqvqY4lvIt2KRD .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7olqvqY4lvIt2KRD .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-7olqvqY4lvIt2KRD .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7olqvqY4lvIt2KRD .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-7olqvqY4lvIt2KRD .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7olqvqY4lvIt2KRD .cluster text{fill:#333;}#mermaid-svg-7olqvqY4lvIt2KRD .cluster span{color:#333;}#mermaid-svg-7olqvqY4lvIt2KRD div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7olqvqY4lvIt2KRD .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-7olqvqY4lvIt2KRD rect.text{fill:none;stroke-width:0;}#mermaid-svg-7olqvqY4lvIt2KRD .icon-shape,#mermaid-svg-7olqvqY4lvIt2KRD .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7olqvqY4lvIt2KRD .icon-shape p,#mermaid-svg-7olqvqY4lvIt2KRD .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-7olqvqY4lvIt2KRD .icon-shape .label rect,#mermaid-svg-7olqvqY4lvIt2KRD .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7olqvqY4lvIt2KRD .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-7olqvqY4lvIt2KRD .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-7olqvqY4lvIt2KRD :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 旧范式:SfM 中心
    数据受限
    模型专用
    部署复杂
    新范式:自训练中心
    互联网视频 = 无限数据
    通用匹配器
    单一部署

  • 图像匹配方法:手工制作方法 使用预定义的算法来计算局部特征并执行匹配。RootSIFT 结合比率测试实现了上级性能 。尽管强大的手工方法只能产生稀疏的关键点匹配,其中包含许多具有挑战性的输入,如低重叠图像的离群值。是使用Transformer的先驱, 以两幅图像作为输入,并实现了显著的性能提升。输出密度也通过最先进的半密集 和密集匹配方法然而,现有的基于学习的方法分别训练室内和室外模型,使得它们在野外数据上的泛化能力很差。我们发现RootSIFT的性能优于最近的基于学习的方法在许多野外场景中。我们表明,特定领域的训练和评估是鲁棒性差的原因,并提出了一种新的框架GIM,可以从互联网视频中学习可推广的图像匹配。与GIM类似,SGP也应用了自训练(使用RANSAC + SIFT)。然而,它不是为了提高泛化能力而设计的,仍然是在特定领域的数据上训练模型。经验结果(第4.2节)表明,没有进一步标签增强的简单鲁棒拟合不能有效提高泛化能力。

  • 图像匹配数据集:现有的图像匹配方法通常使用MegaDepth为室内和室外场景训练单独的模型和ScanNet。然后对来自同一领域的测试数据进行评估。MegaDepth由使用COLMAP从100万张互联网照片中重建的196个场景组成。由于大多数场景都是著名的旅游景点,因此围绕着一个中心对象,因此多样性有限。ScanNet由1613个不同的场景组成,使用BundleFusion从RGBD图像重建。ScanNet只覆盖学校的室内场景,难以使用RGBD扫描以获得来自世界不同地方的不同图像。相比之下,我们建议使用互联网视频,这是一种几乎无限且多样化的数据源,以补充现有数据集未覆盖的场景。现有方法中使用的域内测试数据也有限,因为它们缺乏具有不同场景条件的跨域数据,例如航空摄影,户外自然环境,天气变化,为了解决这个问题,并充分衡量一个模型的泛化能力,我们提出了ZEB,一个新的零样本评价基准图像匹配与不同的野外数据。

  • 零样本计算机视觉模型:可推广模型的学习是近年来的一个重要研究课题。CLIP 在从互联网上收集的4亿个图像-文本对上进行了训练。这个庞大的语料库提供了强大的监督,使模型能够学习广泛的视觉-文本概念。Ranftl et al 混合了各种现有的深度估计数据集,并使用来自3D电影的帧和视差标签对其进行补充。这使得深度估计模型首次可以在不同的环境中推广。SAM 在SA-1B上进行了训练,其中包含来自1100万张不同图像的超过10亿个掩码。这些训练数据是使用"数据引擎"收集的,这是一个三阶段过程,涉及辅助手动、半自动和全自动注释,模型在循环中。所有这些方法的一个共同方法是高效地生成多样化和大规模的训练数据。这项工作应用了类似的想法来学习可概括的图像匹配。我们提出了GIM,一个自我训练的框架,以有效地创建不同的互联网视频的监督信号。

METHODOLOGY

  • 训练图像匹配模型需要多视图图像和地面实况对应。数据多样性和规模一直是其他计算机视觉问题中可推广模型的关键。受此观察的启发,我们提出了GIM(图2),这是一个自我训练框架,利用互联网视频来学习基于任何图像匹配架构的单个可推广模型。

    • 图二:GIM框架。我们首先下载大量的互联网视频。然后,给定一个选定的架构,我们首先在标准数据集上训练它,并通过使用多种互补图像匹配方法,使用训练好的模型生成相邻帧之间的对应关系。然后通过以下方式增强自训练信号:1)用鲁棒拟合过滤离群对应,2)将对应传播到远距离帧,以及3)注入强数据增强。

  • 虽然其他视频来源也适用,但GIM使用互联网视频,因为它们自然是多样的,几乎是无限的。为了测试通常可访问的数据,我们从YouTube下载了50小时(数百小时可用)的旅游视频,涵盖26个国家,43个城市,各种光照条件,动态对象和场景类型。详见附录A。

  • 标准图像匹配基准由RGBD扫描或COLMAP创建(SfM + MVS)。RGBD扫描需要对场景进行物理访问,因此很难从不同的环境中获取数据。COLMAP对于具有密集视图覆盖的地标类型场景有效,但是,它的效率有限,并且经常在具有任意运动的野外数据上失败。因此,尽管这些数据集中有数百万张图像可用,但由于数千张图像来自一个(小)场景,因此多样性有限。相比之下,互联网视频不是以地标为中心的。一个小时的旅游视频通常覆盖几公里的范围如后面第3.1节所讨论的,视频中的时间信息也允许我们显著增强监控信号。

SELF-TRAINING

  • 从视频数据中学习的一种简单方法是使用标准的基于COLMAP的管道生成标签;然而,初步的实验表明,它是低效的,并且容易在野外视频上失败(详见第4.2节)。为了更好地扩展视频培训,GIM依赖于自我训练,它首先在标准标记数据上训练模型,然后利用训练模型的增强输出(在视频上)来提高相同架构的泛化能力。

  • 多方法匹配:给定一个图像匹配架构,GIM首先在标准(特定领域)数据集,并使用训练好的模型作为"基本标签生成器"。如图2所示,对于每个视频,我们每20帧均匀地对图像进行采样以减少冗余。对于每个帧X,我们生成{X,X + 20},{X,X + 40}和{X,X + 80}之间的基本对应。通过对基本标签生成器的输出运行鲁棒拟合来生成基本对应关系。我们将这些标签与不同互补匹配方法的输出融合,以显著增强标签密度。这些方法可以是手工制作的算法,也可以是在标准数据集上训练的其他架构;有关详细信息,请参见第4节。

  • 标签传播:现有的图像匹配方法通常需要来自具有小重叠的图像的强监督信号(Sarlin等人,2020)。然而,这不能通过多方法匹配来实现,因为现有方法生成的对应关系在超过80帧的间隔时是不可靠的,即使使用最先进的鲁棒拟合算法进行离群值过滤。从视频中学习的一个重要好处是,视频帧和不同的邻近帧之间的密集对应关系通常位于公共像素处。这允许我们将对应关系传播到远处的帧,这显著增强了监督信号(参见第4.2节的分析)。形式上,我们将 C A B ∈ { 0 , 1 } r A × r B C^{AB} ∈ \{0,1\}^{r^A ×r^B} CAB∈{0,1}rA×rB 定义为图像IA和IB的对应矩阵,其中rA和rB是IA和B中的像素的数目。矩阵元素c AB ij = 1意味着IA中的像素i在B中具有对应的像素j。给定对应性CAB和CBC,为了获得传播的对应性CAC,对于CAB中为1的每个c AB ij,如果我们还可以在CBC中找到cBCj ′k = 1,并且图像B中的j和j ′之间的距离小于1个像素,则我们在CAC中设置cACik = 1。直观地,这意味着对于图像B中的像素j(或j ′),它与IA中的像素i和IC中的像素k都匹配。因此,图像IA和IC在位置(i,k)的范围内。

  • 为了获得较强的监督信号,我们在每一帧采样图像上传播对应关系,只要两幅图像之间的对应关系大于1024,就尽可能地传播对应关系在每个传播步骤之后,我们将具有对应关系的每个图像对的帧间隔加倍。作为示例,最初我们在每20个,在1轮传播之后,我们将基本对应从每20帧传播到每40帧,并将传播的对应与基本对应合并。现在我们有了每40帧的合并对应,我们执行相同的操作来生成每80帧的合并对应。由于我们没有超过80帧的基本对应,其余的传播轮不执行合并操作,并保持加倍的帧间隔,直到我们没有超过1024个对应。虽然也可以应用从不同重叠比率均匀采样的标准方法,但我们发现简单地限制对应关系的数量并将最远的图像对保存为最终的训练数据更节省空间和计算友好。

  • 强大的数据扩充:为了对各种现有架构进行实验,我们将用于特定领域训练的相同损失应用于最终的GIM模型,但仅计算具有对应性的像素上的损失。根据经验,我们发现视频数据上的强数据增强提供了更好的监督信号(效果见第4.2节)。具体地说,对于每对视频帧,我们执行超出现有方法中使用的标准增强的随机透视变换。我们推测,应用透视变换简化了两个视频帧的相机模型相同并且照相机大多面向前方定位而没有太多的"滚动"旋转。

  • 实际上,生成视频训练数据的主要计算在于运行匹配方法,并且每帧的平均处理时间相对于输入视频长度不会显著增加。效率和通用性使得GIM能够有效地扩展互联网视频的训练。它每天可以使用16个A100 GPU处理12.5小时的视频,为各种最先进的架构实现了不平凡的性能提升。

ZEB: ZERO-SHOT EVALUATION BENCHMARK FOR IMAGE MATCHING

  • 现有的图像匹配框架通常在同一域内数据集上训练和评估模型(MegaDepth用于户外模型和ScanNet室内模型)。为了分析单个模型对野外数据的鲁棒性,我们通过合并8个真实世界数据集和4个模拟数据集,构建了一个新的评估基准ZEB,这些数据集具有不同的图像分辨率、场景条件和视点(详见附录B)。

  • 对于每个数据集,我们从5个图像重叠率中均匀地采样大约3800个评估图像对(从10%到50%)。这些比率是使用地面真实姿态和深度图计算的。最终的ZEB基准因此包含来自各种场景的46K评估图像对和重叠比率,其与现有方法中使用的1500个域内图像对相比具有更大的多样性和规模。

  • 衡量标准:根据标准评估方案,我们报告了5°内的相对位姿误差的AUC,其中位姿误差是旋转角误差和平移角误差之间的最大值。在零样本计算机视觉文献之后,我们还提供了12个跨域数据集的平均性能排名。

EXPERIMENTS

  • 我们首先在第4.1节中展示了GIM在基本图像匹配任务-相对姿态估计上的有效性。我们在零拍基准ZEB和标准域内基准上评估了不同的方法。在第4.2节中,我们通过消融研究验证了我们的设计选择。最后,我们将训练的图像匹配模型应用于各种下游任务,(第4.3节)。为了证明GIM的通用性,我们将其应用于3种具有不同输出密度的最先进的图像匹配架构,即SuperGlue 、LoFTR 和DKM。

  • 实施细节:我们以每个建筑的官方室内和室外模型为基线。注意,DKM的室内模型是在室内和室外数据上训练的。为了公平比较,我们只允许在多方法匹配时使用性能比基线差的补充方法。具体来说,我们分别使用RootSIFT,RootSIFT+SuperGlue和RootSIFT+SuperGlue+LoFTR来补充SuperGlue,LoFTR和DKM。我们使用每个架构的户外官方模型作为GIM中的基础标签生成器。除非另有说明,我们在所有实验中使用50小时的YouTube视频,它提供了大约180K对训练图像。我们视频上的GIM标签生成在16个A100 GPU上需要4天。为了实现最佳的域内和跨域为了提高单个模型的域性能,我们使用原始域内数据和我们的视频数据(以相等的概率采样)的混合物从头开始训练所有GIM模型。GIM的训练代码和超参数严格遵循各个架构的原始存储库。

MAIN RESULTS

  • 零样本泛化:我们使用所提出的ZEB基准测试来评估零样本泛化性能。(表1),应用GIM产生了一个单一的零激发模型,与最佳域内基线相比,其性能明显更好。具体来说,SuperGlue、LoFTR和DKM的AUC改善分别为31.2 → 34.3,33.1 → 39.1和46.2 → 49.4. GIMSuperGlue的性能甚至比LoFTR(IN)/(OUT)更好,尽管使用了不太先进的架构。有趣的是,手工制作的方法RootSIFT在非平凡数量的ZEB子集上表现得更好或与域内模型相当,例如GL3,BLE,KIT和GTA. GIM成功地提高了这些子集的性能,从而全面提高了鲁棒性。(图1),而进一步的改进可以通过简单地下载更多的互联网视频来实现。例如,使用100小时的视频(表1,最后一行)我们进一步将GIMDKM的性能提高到51.2%AUC。

    • 图三:双视图重建。DKM在具有挑战性的场景上返回许多不正确的匹配(红线),导致错误的重建。将GIM应用于相同的架构可以显著提高匹配和重建质量。

    • 表一:零样本匹配性能。GIM显著提高了所有3种最先进架构的泛化能力。IN表示室内模型,OUT表示室外模型。

  • 双视图几何体:如图3所示,最佳域内基线DKM(IN)未能在具有大视图变化或小重叠的数据上找到正确的匹配。(室内和室外),导致错误的重建点云。相反,GIMDKM发现了大量可靠的对应关系,并设法重建密集和准确的3D点云。有趣的是,GIM的鲁棒性还允许其应用于在训练期间完全不可见的输入。在图4中,我们将GIMDKM应用于通过投影顶部而生成的鸟瞰图(BEV)图像,将两个点云的俯视图转换为2D RGB图像。数据来自一个真实的地图应用程序,我们希望在同一水平面上对齐不同建筑物楼层的点云。与最佳基线DKM(IN)的灾难性失败不同,我们的模型GIMDKM成功地记录了所有三对点云,即使在训练过程中从未见过点云的BEV图像。由于空间限制,我们在附录D中展示了其他架构的定性结果。

    • 图4:点云BEV图像匹配。GIMDKM甚至成功地匹配了从点云投影的BEV图像,尽管从未接受过相关训练。

  • 多视图重建:GIM在多视图重建方面也表现良好。为了证明在野外数据上的性能,我们下载了室内和室外场景的互联网视频,为每个视频提取大约200帧,并运行COLMAP-重建,但用我们实验模型的匹配替换SIFT匹配。如图5所示,应用GIM允许DKM用更密集和更少噪声的点云重建捕获场景的更大部分。

    • 图5:多视图重建。GIM显著提高了重建覆盖率和准确性。

  • 域内性能:我们还在标准域内数据集上评估了不同的方法。由于空间限制,我们在附录C中报告了结果。尽管由于个体基线与域内数据过拟合,GIM的改进不如ZEB显著,但GIM的平均性能仍然最好(室内和室外场景)。该结果也表明了ZEB对于更准确地测量泛化能力的重要性。

ABLATION STUDY

  • 为了分析不同GIM组件的效果,我们对性能最好的模型GIMDKM进行了消融研究。如表2的第1、2和7行所示,GIM的性能随着视频数据大小的减少而不断下降。同时,加入少量的(12.5小时)的视频已经提供了一个合理的改善相比,基线(46.2%至47.4%)。这表明了在多样化视频上生成监督信号的重要性。仅使用RootSIFT生成视频标签,GIM的性能略有下降。比较第3行和第1行的性能,我们可以看到,在更多样化的图像上生成标签比高级基本标签生成器更重要。去除标签传播会比缺乏数据增强和基本标签生成方法更降低性能。具体而言,使用50小时的视频而不使用标签传播,其性能甚至比仅在12.5小时的视频上使用完整的GIM方法更差 。

    • 表2:消融研究。

  • 我们还试验了标准的基于COLMAP的标签生成管道(第6行)。具体来说,我们将下载的视频分成4000帧的剪辑,并统一采样200帧用于标签生成。我们应用相同的GPU和时间。(大约1天)作为第2行运行COLMAP SfM+MVS。COLMAP只设法处理3.9小时的视频,并且无法重建其中的44.3%,这导致只有2.2小时的标记视频(而GIM为12.5小时),以及46.2%到46.5%的低性能改进。

APPLICATIONS

  • 单应性估计:作为一个经典的下游应用程序,我们进行了单应性估计的实验。我们使用广泛采用的HPatches数据集,其中包含52个显著光照变化下的室外序列和56个视点变化较大的序列。遵循之前的方法,在匹配过程之后,我们使用OpenCV使用RANSAC计算单应性矩阵。然后,我们计算用估计的单应性和地面真实单应性变形的图像之间的四个角的平均重投影误差作为正确性标识符。最后,我们报告角点误差的累积曲线下面积(AUC),分别为3、5和10个像素。我们从原始论文中获取每个基线的数字。如表3所示,GIM模型始终优于基线,即使基线已经针对户外场景进行了训练 。在所有架构中,GIM在LoFTR上实现了最明显的改进,在三个指标中实现了4.7%,4.2%和3.4%的绝对性能提升。

    • 表3:单应性估计。

  • 视觉定位:视觉定位是图像匹配的另一个重要的下游任务。目标是估计图像相对于3D场景模型的6-DoF姿态。我们在长期视觉定位基准的两个轨道上评估匹配模型,即亚琛昼夜v1.1数据集用于户外场景和InLoc数据集用于室内场景。我们使用标准的本地化管道HLoc,通过相应的模型提取匹配来进行视觉定位。我们从原始论文中获取每个基线的数字。由于DKM没有报告室外情况的结果,因此我们使用室外基线来获得性能数字。

    • 表4:户外视觉定位。单位:正确定位查询的百分比(↑)。

  • 使用单个模型,GIM在室内和室外两个领域的性能都持续且显著优于特定领域的基线(表5)和室外(表4)场景。例如,我们将DKM的绝对位姿精度提高了> 5%,(0.25m,2°)度量。对于室内场景,GIMDKM在DUC 1和DUC 2上的性能分别达到了57.1 / 78.8 / 88.4和70.2 / 91.6 / 92.4。这些结果表明,无需特定领域的训练,单个GIM模型可以有效地部署到不同的环境中。

    • 表5:室内视觉定位。单位:正确定位查询的百分比(↑)

CONCLUSION

  • 我们介绍了一种新的方法GIM,它利用丰富的互联网视频来学习可推广的图像匹配。其关键思想是进行自我训练,其中我们使用特定领域模型的增强输出来训练相同的架构,并通过消耗大量不同的视频来提高泛化能力。我们还构建了一个新的零-样本基准ZEB,允许在野外环境中对图像匹配模型进行全面评估。我们已经成功地将GIM应用于3个模型的sota架构。性能的提高随着视频数据的大小而稳步增加。改进的图像匹配性能也有利于各种下游任务,如视觉定位和3D重建。一个单一的GIM模型可以推广到不同领域的应用。

  • #mermaid-svg-h9D4e3fkCYqeX5Sc{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-h9D4e3fkCYqeX5Sc .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-h9D4e3fkCYqeX5Sc .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-h9D4e3fkCYqeX5Sc .error-icon{fill:#552222;}#mermaid-svg-h9D4e3fkCYqeX5Sc .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-h9D4e3fkCYqeX5Sc .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-h9D4e3fkCYqeX5Sc .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-h9D4e3fkCYqeX5Sc .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-h9D4e3fkCYqeX5Sc .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-h9D4e3fkCYqeX5Sc .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-h9D4e3fkCYqeX5Sc .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-h9D4e3fkCYqeX5Sc .marker{fill:#333333;stroke:#333333;}#mermaid-svg-h9D4e3fkCYqeX5Sc .marker.cross{stroke:#333333;}#mermaid-svg-h9D4e3fkCYqeX5Sc svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-h9D4e3fkCYqeX5Sc p{margin:0;}#mermaid-svg-h9D4e3fkCYqeX5Sc .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-h9D4e3fkCYqeX5Sc .cluster-label text{fill:#333;}#mermaid-svg-h9D4e3fkCYqeX5Sc .cluster-label span{color:#333;}#mermaid-svg-h9D4e3fkCYqeX5Sc .cluster-label span p{background-color:transparent;}#mermaid-svg-h9D4e3fkCYqeX5Sc .label text,#mermaid-svg-h9D4e3fkCYqeX5Sc span{fill:#333;color:#333;}#mermaid-svg-h9D4e3fkCYqeX5Sc .node rect,#mermaid-svg-h9D4e3fkCYqeX5Sc .node circle,#mermaid-svg-h9D4e3fkCYqeX5Sc .node ellipse,#mermaid-svg-h9D4e3fkCYqeX5Sc .node polygon,#mermaid-svg-h9D4e3fkCYqeX5Sc .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-h9D4e3fkCYqeX5Sc .rough-node .label text,#mermaid-svg-h9D4e3fkCYqeX5Sc .node .label text,#mermaid-svg-h9D4e3fkCYqeX5Sc .image-shape .label,#mermaid-svg-h9D4e3fkCYqeX5Sc .icon-shape .label{text-anchor:middle;}#mermaid-svg-h9D4e3fkCYqeX5Sc .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-h9D4e3fkCYqeX5Sc .rough-node .label,#mermaid-svg-h9D4e3fkCYqeX5Sc .node .label,#mermaid-svg-h9D4e3fkCYqeX5Sc .image-shape .label,#mermaid-svg-h9D4e3fkCYqeX5Sc .icon-shape .label{text-align:center;}#mermaid-svg-h9D4e3fkCYqeX5Sc .node.clickable{cursor:pointer;}#mermaid-svg-h9D4e3fkCYqeX5Sc .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-h9D4e3fkCYqeX5Sc .arrowheadPath{fill:#333333;}#mermaid-svg-h9D4e3fkCYqeX5Sc .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-h9D4e3fkCYqeX5Sc .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-h9D4e3fkCYqeX5Sc .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-h9D4e3fkCYqeX5Sc .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-h9D4e3fkCYqeX5Sc .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-h9D4e3fkCYqeX5Sc .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-h9D4e3fkCYqeX5Sc .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-h9D4e3fkCYqeX5Sc .cluster text{fill:#333;}#mermaid-svg-h9D4e3fkCYqeX5Sc .cluster span{color:#333;}#mermaid-svg-h9D4e3fkCYqeX5Sc div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-h9D4e3fkCYqeX5Sc .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-h9D4e3fkCYqeX5Sc rect.text{fill:none;stroke-width:0;}#mermaid-svg-h9D4e3fkCYqeX5Sc .icon-shape,#mermaid-svg-h9D4e3fkCYqeX5Sc .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-h9D4e3fkCYqeX5Sc .icon-shape p,#mermaid-svg-h9D4e3fkCYqeX5Sc .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-h9D4e3fkCYqeX5Sc .icon-shape .label rect,#mermaid-svg-h9D4e3fkCYqeX5Sc .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-h9D4e3fkCYqeX5Sc .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-h9D4e3fkCYqeX5Sc .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-h9D4e3fkCYqeX5Sc :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 标签生成
    互联网视频

    50h YouTube

    26 国 43 城
    采样关键帧

    每 20 帧
    Multi-Method Matching

    多方法匹配
    主模型

    SuperGlue/LoFTR/DKM
    互补方法 1

    RootSIFT
    互补方法 2

    RootSIFT+SuperGlue
    互补方法 3

    RootSIFT+SuperGlue+LoFTR
    Fused Correspondences
    Outlier Filtering

    MAGSAC robust fitting
    Label Propagation

    链式传播
    最终标注

    20/40/80/160/...帧对
    强数据增广

    • 透视变换
      训练最终 GIM 模型
      单一通用匹配器

    能跑全场景

  • 原则 1:用"已训模型"做"标注器"。把"标注"从"SfM 重建"换成"自训练输出 + 标签增强"。代价是 GT 不够精确,但 ROI 极高。

    python 复制代码
    # 论文 Section 3.1
    # 标准方法:用 COLMAP 重建 → 拿 3D 点投影 → 拿 2D 对应
    # GIM 方法:用"已训模型"做标签生成器
    
    class GIM_Trainer:
        def __init__(self, base_model, complementary_methods):
            # 1. 在标准数据集上预训练
            self.base_model = train(base_model, MegaDepth + ScanNet)
            
            # 2. 准备互补方法(手工特征 + 各种模型组合)
            self.complementary_methods = complementary_methods
        
        def generate_labels(self, video_frames):
            # 1. 多方法匹配(后述)
            # 2. MAGSAC 过滤
            # 3. 标签传播(后述)
            pass
        
        def train_final(self, video_data):
            # 4. 强增广训练
            pass
  • 多方法互补融合,每个方法都有强项和弱项。手工特征泛化好但召回低,学习模型精度高但泛化差。融合后既保留泛化又提高召回。

    • #mermaid-svg-cX582omAaRORPMe7{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-cX582omAaRORPMe7 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-cX582omAaRORPMe7 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-cX582omAaRORPMe7 .error-icon{fill:#552222;}#mermaid-svg-cX582omAaRORPMe7 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-cX582omAaRORPMe7 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-cX582omAaRORPMe7 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-cX582omAaRORPMe7 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-cX582omAaRORPMe7 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-cX582omAaRORPMe7 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-cX582omAaRORPMe7 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-cX582omAaRORPMe7 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-cX582omAaRORPMe7 .marker.cross{stroke:#333333;}#mermaid-svg-cX582omAaRORPMe7 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-cX582omAaRORPMe7 p{margin:0;}#mermaid-svg-cX582omAaRORPMe7 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-cX582omAaRORPMe7 .cluster-label text{fill:#333;}#mermaid-svg-cX582omAaRORPMe7 .cluster-label span{color:#333;}#mermaid-svg-cX582omAaRORPMe7 .cluster-label span p{background-color:transparent;}#mermaid-svg-cX582omAaRORPMe7 .label text,#mermaid-svg-cX582omAaRORPMe7 span{fill:#333;color:#333;}#mermaid-svg-cX582omAaRORPMe7 .node rect,#mermaid-svg-cX582omAaRORPMe7 .node circle,#mermaid-svg-cX582omAaRORPMe7 .node ellipse,#mermaid-svg-cX582omAaRORPMe7 .node polygon,#mermaid-svg-cX582omAaRORPMe7 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-cX582omAaRORPMe7 .rough-node .label text,#mermaid-svg-cX582omAaRORPMe7 .node .label text,#mermaid-svg-cX582omAaRORPMe7 .image-shape .label,#mermaid-svg-cX582omAaRORPMe7 .icon-shape .label{text-anchor:middle;}#mermaid-svg-cX582omAaRORPMe7 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-cX582omAaRORPMe7 .rough-node .label,#mermaid-svg-cX582omAaRORPMe7 .node .label,#mermaid-svg-cX582omAaRORPMe7 .image-shape .label,#mermaid-svg-cX582omAaRORPMe7 .icon-shape .label{text-align:center;}#mermaid-svg-cX582omAaRORPMe7 .node.clickable{cursor:pointer;}#mermaid-svg-cX582omAaRORPMe7 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-cX582omAaRORPMe7 .arrowheadPath{fill:#333333;}#mermaid-svg-cX582omAaRORPMe7 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-cX582omAaRORPMe7 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-cX582omAaRORPMe7 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-cX582omAaRORPMe7 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-cX582omAaRORPMe7 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-cX582omAaRORPMe7 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-cX582omAaRORPMe7 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-cX582omAaRORPMe7 .cluster text{fill:#333;}#mermaid-svg-cX582omAaRORPMe7 .cluster span{color:#333;}#mermaid-svg-cX582omAaRORPMe7 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-cX582omAaRORPMe7 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-cX582omAaRORPMe7 rect.text{fill:none;stroke-width:0;}#mermaid-svg-cX582omAaRORPMe7 .icon-shape,#mermaid-svg-cX582omAaRORPMe7 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-cX582omAaRORPMe7 .icon-shape p,#mermaid-svg-cX582omAaRORPMe7 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-cX582omAaRORPMe7 .icon-shape .label rect,#mermaid-svg-cX582omAaRORPMe7 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-cX582omAaRORPMe7 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-cX582omAaRORPMe7 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-cX582omAaRORPMe7 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Image A
      RootSIFT

      手工特征
      SuperGlue

      GNN 匹配
      LoFTR

      半稠密
      DKM

      稠密
      Image B
      Fuse
      MAGSAC

      Robust Fit
      Clean Correspondences

  • 标签传播 ------ 整篇论文最关键的算法

  • 强数据增广,视频相邻帧通常朝向相同(camera motion 主导),roll 旋转少。人为加 perspective 变换让模型学"任意姿态"。

    python 复制代码
    # 论文 Section 3.1 末尾
    # 关键:random perspective transformation
    # 原因:视频帧通常 forward-facing,缺少 roll 旋转
    
    augmentations = [
        'standard_color_jitter',
        'random_perspective_transform',  # 关键!
        'random_homography',
        'random_rotation',
        'random_crop',
    ]
  • 数据配比训练,完全替换会丢域内精度,完全不加又泛化不够。混合采样是"两条腿走路"。

    python 复制代码
    # 论文 Section 4 末尾
    # 训练数据 = 原始域数据 + 视频数据,等概率采样
    training_mixture = {
        'megadepth': 0.25,
        'scannet': 0.25,
        'video_data': 0.50,  # GIM 注入的多样性
    }

DETAILS OF VIDEO DATA

  • 在本节中,我们展示了我们的视频数据的详细信息。表6显示了我们下载的视频的不同地理位置和场景类型。图6提供了根据视频数据生成的示例训练数据(图像和对应关系),其中包括室内和室外场景,城市和自然环境,各种光照条件。
    • 图6:示例视频数据和生成的标签(用于GIMDKM)。

    • 表六:视频统计。下载的视频覆盖全球26个国家的广泛场景类型,确保GIM中训练数据的多样性。

DETAILS OF ZEB

  • 本节详细介绍了拟议的ZEB基准。具体而言,表7显示了用于构建ZEB的12个数据集,以及这些数据集涵盖的各种场景条件和图像分辨率。我们还在图7中显示了ZEB中的采样图像对,涵盖各种场景类型,视点和闪电条件。
    • 图七:我们的零样本评估基准ZEB的样本图像。包括各种场景类型,视点和闪电条件,以确保对匹配鲁棒性进行全面评估。

    • 表七:用于构建零样本评估基准ZEB的数据集。它们包含各种图像分辨率和场景条件,以及具有挑战性的视点(例如航拍图像)。它们还涵盖了真实的和模拟的图像。

IN-DOMAIN EVALUATION RESULT

  • 如第4.1节所述,我们还将GIM与标准域内评估数据(即MegaDepth-1500)的基线进行了比较和ScanNet-1500。评估指标遵循现有方法,我们从论文中获取每个域内基线的数字。如表8所示,尽管域内基线已经在其训练域上过拟合良好,GIM在室内和室外场景下的平均性能仍然最好,与零样本场景相比性能差距较小,这也表明了ZEB基准的重要性,它可以清楚地反映泛化性能。
    • 表8:域内结果(↑)。GIM仍然在域内数据上实现了最佳的整体性能。

FURTHER QUALITATIVE RESULTS

  • 在第4.1节中,我们只展示了最佳架构DKM的基线结果。这里我们也提供了LoFTR和SuperGlue的基线结果。图8显示了野外图像上的双视图重建结果。与DKM类似,域内LoFTR和SuperGlue模型在野外数据上的泛化能力也很差。图9显示了BEV点云配准的结果。域内LoFTR和SuperGlue模型未能找到可靠的匹配和两个点云之间正确的相对变换。
    • 图八:其他基线的双视图重建。我们采用在ZEB上表现最好的域内基线进行定性评估。LoFTR和SuperGlue在具有挑战性的野外数据上的泛化能力都很差。

    • 图九:其他基线的点云BEV图像匹配。SuperGlue和LoFTR的域内模型也未能找到可靠的对应关系,导致错误的点云变形。

多方法匹配

  • 采样策略,近距离帧 baseline 模型就能可靠匹配,远距离帧(>80)即使传播也可靠度下降。所以只在近距离生成 base correspondences,然后用传播延伸到远距离。

    python 复制代码
    # 论文 Section 3.1
    # 每 20 帧采样一次
    sampled_frames = [video[i] for i in range(0, len(video), 20)]
    
    # 对每个 X,生成三个 pair:
    #  {X, X+20}, {X, X+40}, {X, X+80}
    # 这些是"近距离"的对应,可靠
    for i, frame_X in enumerate(sampled_frames):
        pairs = [
            (frame_X, sampled_frames[i+1]),  # 20 帧
            (frame_X, sampled_frames[i+2]),  # 40 帧
            (frame_X, sampled_frames[i+4]),  # 80 帧
        ]
  • 多方法融合策略,论文说"多方法融合的收益主要来自多样性",而不是"主模型 + 更好模型"。ablation 显示只用 RootSIFT 也能到 49.3(几乎等于完整 49.4)。

    python 复制代码
    # 伪代码:多方法匹配的融合逻辑
    def multi_method_matching(frame_A, frame_B, base_model, complementary):
        all_correspondences = []
        
        # 1. 主模型
        kpts_A, desc_A = base_model.detect_and_describe(frame_A)
        kpts_B, desc_B = base_model.detect_and_describe(frame_B)
        matches_base = base_model.match(kpts_A, desc_A, kpts_B, desc_B)
        all_correspondences.append(matches_base)
        
        # 2. 互补方法
        for method in complementary:
            if method == 'rootsift':
                matches_sift = rootsift_match(frame_A, frame_B)
            elif method == 'rootsift_superglue':
                matches = superglue_match_with_sift_kp(frame_A, frame_B)
            # ...
            all_correspondences.append(matches)
        
        # 3. 合并所有对应
        merged = merge_correspondences(all_correspondences)
        
        # 4. MAGSAC 过滤外点
        F, inliers = MAGSAC(merged)
        clean = merged[inliers]
        
        return clean  # 最终 base correspondences
  • Outlier Filtering:MAGSAC。为什么 MAGSAC :视频帧匹配率天然高(>70% 内点),标准 RANSAC threshold 不好设。MAGSAC 的边际化采样对高 inlier ratio 场景更稳。

    python 复制代码
    # 用 MAGSAC 而非标准 RANSAC
    # 原因:MAGSAC 自适应阈值,无需手动设
    F, mask = MAGSAC(
        pts_A, pts_B,
        prob=0.999,
        max_iters=10000
    )

标签传播(Label Propagation)

  • No propagation 时 AUC@5° = 47.1,完整 GIM = 49.4,掉了 2.3% 。比其他任何组件的消融影响都大。

  • #mermaid-svg-p499whbLb2byISz6{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-p499whbLb2byISz6 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-p499whbLb2byISz6 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-p499whbLb2byISz6 .error-icon{fill:#552222;}#mermaid-svg-p499whbLb2byISz6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-p499whbLb2byISz6 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-p499whbLb2byISz6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-p499whbLb2byISz6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-p499whbLb2byISz6 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-p499whbLb2byISz6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-p499whbLb2byISz6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-p499whbLb2byISz6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-p499whbLb2byISz6 .marker.cross{stroke:#333333;}#mermaid-svg-p499whbLb2byISz6 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-p499whbLb2byISz6 p{margin:0;}#mermaid-svg-p499whbLb2byISz6 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-p499whbLb2byISz6 .cluster-label text{fill:#333;}#mermaid-svg-p499whbLb2byISz6 .cluster-label span{color:#333;}#mermaid-svg-p499whbLb2byISz6 .cluster-label span p{background-color:transparent;}#mermaid-svg-p499whbLb2byISz6 .label text,#mermaid-svg-p499whbLb2byISz6 span{fill:#333;color:#333;}#mermaid-svg-p499whbLb2byISz6 .node rect,#mermaid-svg-p499whbLb2byISz6 .node circle,#mermaid-svg-p499whbLb2byISz6 .node ellipse,#mermaid-svg-p499whbLb2byISz6 .node polygon,#mermaid-svg-p499whbLb2byISz6 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-p499whbLb2byISz6 .rough-node .label text,#mermaid-svg-p499whbLb2byISz6 .node .label text,#mermaid-svg-p499whbLb2byISz6 .image-shape .label,#mermaid-svg-p499whbLb2byISz6 .icon-shape .label{text-anchor:middle;}#mermaid-svg-p499whbLb2byISz6 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-p499whbLb2byISz6 .rough-node .label,#mermaid-svg-p499whbLb2byISz6 .node .label,#mermaid-svg-p499whbLb2byISz6 .image-shape .label,#mermaid-svg-p499whbLb2byISz6 .icon-shape .label{text-align:center;}#mermaid-svg-p499whbLb2byISz6 .node.clickable{cursor:pointer;}#mermaid-svg-p499whbLb2byISz6 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-p499whbLb2byISz6 .arrowheadPath{fill:#333333;}#mermaid-svg-p499whbLb2byISz6 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-p499whbLb2byISz6 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-p499whbLb2byISz6 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-p499whbLb2byISz6 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-p499whbLb2byISz6 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-p499whbLb2byISz6 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-p499whbLb2byISz6 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-p499whbLb2byISz6 .cluster text{fill:#333;}#mermaid-svg-p499whbLb2byISz6 .cluster span{color:#333;}#mermaid-svg-p499whbLb2byISz6 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-p499whbLb2byISz6 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-p499whbLb2byISz6 rect.text{fill:none;stroke-width:0;}#mermaid-svg-p499whbLb2byISz6 .icon-shape,#mermaid-svg-p499whbLb2byISz6 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-p499whbLb2byISz6 .icon-shape p,#mermaid-svg-p499whbLb2byISz6 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-p499whbLb2byISz6 .icon-shape .label rect,#mermaid-svg-p499whbLb2byISz6 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-p499whbLb2byISz6 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-p499whbLb2byISz6 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-p499whbLb2byISz6 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 近距离帧对

    20/40/80 帧间隔

    已生成 base correspondences
    传播
    远距离帧对

    160/320/...

    难以直接匹配
    数据多样性暴增
    泛化能力大幅提升

python 复制代码
# 输入:
#   C_AB ∈ {0, 1}^(r_A × r_B)  - I_A 和 I_B 的对应矩阵
#   C_BC ∈ {0, 1}^(r_B × r_C)  - I_B 和 I_C 的对应矩阵
# 输出:
#   C_AC ∈ {0, 1}^(r_A × r_C)  - I_A 和 I_C 的对应矩阵(传播结果)

def propagate_correspondences(C_AB, C_BC):
    """核心传播算法(论文 Section 3.1)"""
    r_A, r_B = C_AB.shape
    _, r_C = C_BC.shape
    C_AC = np.zeros((r_A, r_C), dtype=np.uint8)
    
    # 对每个 c_AB[i,j] == 1
    for i in range(r_A):
        for j in range(r_B):
            if C_AB[i, j] == 1:
                # 找 C_BC 中,像素 j 附近的对应点 j'
                # 条件: |j - j'| < 1 像素
                for j_prime in range(r_B):
                    if abs(j - j_prime) < 1.0:  # 关键阈值
                        for k in range(r_C):
                            if C_BC[j_prime, k] == 1:
                                C_AC[i, k] = 1
    
    return C_AC
  • 传播的迭代过程

python 复制代码
# 论文 Section 3.1
# Step 0: 我们有 20/40/80 帧间隔的 base
# Step 1: 把 20 传播到 40,与 base 合并 → 现在 20 和 40 都齐全
# Step 2: 把 40 传播到 80,与 base 合并 → 现在 20/40/80 全齐
# Step 3: 80 之后没 base 了,但仍可继续传播 → 160, 320, 640...
# 终止: 对应数 < 1024

def iterative_propagation(base_correspondences):
    """
    base_correspondences: dict, key 是帧对距离, value 是对应点集
    """
    current = dict(base_correspondences)  # copy
    distance = 80
    
    while True:
        # 1. 尝试传播 distance -> 2*distance
        target_distance = distance * 2
        
        propagated = {}
        for pair, corrs in current.items():
            # 找中间帧
            # ... 传播逻辑
        
        # 2. 检查对应数
        valid_pairs = {
            k: v for k, v in propagated.items() 
            if len(v) >= 1024
        }
        
        if len(valid_pairs) < 1:
            break  # 传播不下去了
        
        # 3. 更新当前
        current = valid_pairs
        distance = target_distance
        
        print(f"Propagated to {distance} frames, "
              f"got {len(current)} pairs")
    
    return current
  • 传播的几何直觉

  • #mermaid-svg-pZANDilE0AD85pTX{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-pZANDilE0AD85pTX .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-pZANDilE0AD85pTX .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-pZANDilE0AD85pTX .error-icon{fill:#552222;}#mermaid-svg-pZANDilE0AD85pTX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-pZANDilE0AD85pTX .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-pZANDilE0AD85pTX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-pZANDilE0AD85pTX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-pZANDilE0AD85pTX .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-pZANDilE0AD85pTX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-pZANDilE0AD85pTX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-pZANDilE0AD85pTX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-pZANDilE0AD85pTX .marker.cross{stroke:#333333;}#mermaid-svg-pZANDilE0AD85pTX svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-pZANDilE0AD85pTX p{margin:0;}#mermaid-svg-pZANDilE0AD85pTX .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-pZANDilE0AD85pTX .cluster-label text{fill:#333;}#mermaid-svg-pZANDilE0AD85pTX .cluster-label span{color:#333;}#mermaid-svg-pZANDilE0AD85pTX .cluster-label span p{background-color:transparent;}#mermaid-svg-pZANDilE0AD85pTX .label text,#mermaid-svg-pZANDilE0AD85pTX span{fill:#333;color:#333;}#mermaid-svg-pZANDilE0AD85pTX .node rect,#mermaid-svg-pZANDilE0AD85pTX .node circle,#mermaid-svg-pZANDilE0AD85pTX .node ellipse,#mermaid-svg-pZANDilE0AD85pTX .node polygon,#mermaid-svg-pZANDilE0AD85pTX .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-pZANDilE0AD85pTX .rough-node .label text,#mermaid-svg-pZANDilE0AD85pTX .node .label text,#mermaid-svg-pZANDilE0AD85pTX .image-shape .label,#mermaid-svg-pZANDilE0AD85pTX .icon-shape .label{text-anchor:middle;}#mermaid-svg-pZANDilE0AD85pTX .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-pZANDilE0AD85pTX .rough-node .label,#mermaid-svg-pZANDilE0AD85pTX .node .label,#mermaid-svg-pZANDilE0AD85pTX .image-shape .label,#mermaid-svg-pZANDilE0AD85pTX .icon-shape .label{text-align:center;}#mermaid-svg-pZANDilE0AD85pTX .node.clickable{cursor:pointer;}#mermaid-svg-pZANDilE0AD85pTX .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-pZANDilE0AD85pTX .arrowheadPath{fill:#333333;}#mermaid-svg-pZANDilE0AD85pTX .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-pZANDilE0AD85pTX .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-pZANDilE0AD85pTX .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pZANDilE0AD85pTX .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-pZANDilE0AD85pTX .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pZANDilE0AD85pTX .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-pZANDilE0AD85pTX .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-pZANDilE0AD85pTX .cluster text{fill:#333;}#mermaid-svg-pZANDilE0AD85pTX .cluster span{color:#333;}#mermaid-svg-pZANDilE0AD85pTX div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-pZANDilE0AD85pTX .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-pZANDilE0AD85pTX rect.text{fill:none;stroke-width:0;}#mermaid-svg-pZANDilE0AD85pTX .icon-shape,#mermaid-svg-pZANDilE0AD85pTX .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pZANDilE0AD85pTX .icon-shape p,#mermaid-svg-pZANDilE0AD85pTX .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-pZANDilE0AD85pTX .icon-shape .label rect,#mermaid-svg-pZANDilE0AD85pTX .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pZANDilE0AD85pTX .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-pZANDilE0AD85pTX .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-pZANDilE0AD85pTX :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 匹配
    匹配
    传播
    传播
    1 像素阈值含义
    B 帧的 u_b, v_b

    和 u'_b, v'_b

    距离 < 1px

    认为是同一物理点
    图像 A

    螺丝在 ua, va
    图像 B

    同一螺丝在 ub, vb
    图像 C

    同一螺丝在 u_c, v_c

  • 为什么 1 像素阈值 :视频帧间亚像素级精度是合理的(假设相机平滑运动),所以 B 帧上两个距离 < 1 像素的对应,几乎肯定是同一物理点。为什么 1024 对应阈值:保证训练样本的"难度适中"。太少是 hard pair(模型学不会),太多冗余。

  • 传播的关键代码实现

    python 复制代码
    # 完整实现:论文 Algorithm 1
    
    class LabelPropagator:
        def __init__(self, min_correspondences=1024, pixel_threshold=1.0):
            self.min_corr = min_correspondences
            self.pix_th = pixel_threshold
        
        def build_correspondence_matrix(self, frame_size, matches):
            """
            matches: [(u_a, v_a, u_b, v_b), ...]
            """
            h_a, w_a = frame_size[0]
            h_b, w_b = frame_size[1]
            # 注意:实际是稀疏矩阵,不是稠密
            # 这里用 dict 表示更高效
            corr = {}  # (i, j) -> True
            for (u_a, v_a, u_b, v_b) in matches:
                i = v_a * w_a + u_a
                j = v_b * w_b + u_b
                corr[(i, j)] = True
            return corr
        
        def propagate(self, C_AB, C_BC, frame_size_C):
            """A->B, B->C → A->C"""
            h_c, w_c = frame_size_C
            C_AC = {}
            
            for (i, j) in C_AB.keys():
                # 在 B 帧找 j 附近(< 1px)的对应
                j_b_pixels = self.depixelize(j, frame_size_B)  # j -> (u, v)
                
                for (j_prime, k) in C_BC.keys():
                    j_prime_pixels = self.depixelize(j_prime, frame_size_B)
                    
                    # 距离 < 1px 阈值
                    dist = ((j_b_pixels[0] - j_prime_pixels[0])**2 + 
                            (j_b_pixels[1] - j_prime_pixels[1])**2)**0.5
                    
                    if dist < self.pix_th:
                        C_AC[(i, k)] = True
            
            return C_AC
        
        def iterative_propagate(self, video_frames, initial_matches):
            """
            持续传播,直到对应数 < 1024
            """
            # initial_matches: {frame_interval: list of (frame_i, frame_j, matches)}
            current = initial_matches.copy()
            distance = max(initial_matches.keys())
            
            while True:
                # 1. 构造对应矩阵
                matrices = {}
                for (fi, fj, matches) in current[distance]:
                    C_AB = self.build_correspondence_matrix(
                        video_frames[fi].shape[:2],
                        video_frames[fj].shape[:2],
                        matches
                    )
                    matrices[(fi, fj)] = C_AB
                
                # 2. 尝试传播到 2*distance
                next_distance = distance * 2
                propagated = []
                
                # 对每个连续三元组 (i, j, k),其中 j-i = distance, k-j = distance
                # 即 i 和 k 相隔 2*distance
                for idx_i in range(len(video_frames) - 2*distance):
                    if idx_i + 2*distance >= len(video_frames):
                        continue
                    fi = idx_i
                    fj = idx_i + distance
                    fk = idx_i + 2*distance
                    
                    if (fi, fj) not in matrices or (fj, fk) not in matrices:
                        continue
                    
                    C_AC = self.propagate(
                        matrices[(fi, fj)],
                        matrices[(fj, fk)],
                        video_frames[fk].shape[:2]
                    )
                    
                    if len(C_AC) >= self.min_corr:
                        # 转回 (u, v, u', v') 格式
                        propagated_matches = self.matrix_to_matches(
                            C_AC,
                            video_frames[fi].shape[:2],
                            video_frames[fk].shape[:2]
                        )
                        propagated.append((fi, fk, propagated_matches))
                
                if len(propagated) == 0:
                    break  # 没有可传播的
                
                # 3. 更新
                current[next_distance] = propagated
                distance = next_distance
            
            return current
  • 传播的失败模式分析

    • #mermaid-svg-BirhZJIr0o7cWwFM{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-BirhZJIr0o7cWwFM .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-BirhZJIr0o7cWwFM .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-BirhZJIr0o7cWwFM .error-icon{fill:#552222;}#mermaid-svg-BirhZJIr0o7cWwFM .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-BirhZJIr0o7cWwFM .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-BirhZJIr0o7cWwFM .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-BirhZJIr0o7cWwFM .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-BirhZJIr0o7cWwFM .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-BirhZJIr0o7cWwFM .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-BirhZJIr0o7cWwFM .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-BirhZJIr0o7cWwFM .marker{fill:#333333;stroke:#333333;}#mermaid-svg-BirhZJIr0o7cWwFM .marker.cross{stroke:#333333;}#mermaid-svg-BirhZJIr0o7cWwFM svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-BirhZJIr0o7cWwFM p{margin:0;}#mermaid-svg-BirhZJIr0o7cWwFM .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-BirhZJIr0o7cWwFM .cluster-label text{fill:#333;}#mermaid-svg-BirhZJIr0o7cWwFM .cluster-label span{color:#333;}#mermaid-svg-BirhZJIr0o7cWwFM .cluster-label span p{background-color:transparent;}#mermaid-svg-BirhZJIr0o7cWwFM .label text,#mermaid-svg-BirhZJIr0o7cWwFM span{fill:#333;color:#333;}#mermaid-svg-BirhZJIr0o7cWwFM .node rect,#mermaid-svg-BirhZJIr0o7cWwFM .node circle,#mermaid-svg-BirhZJIr0o7cWwFM .node ellipse,#mermaid-svg-BirhZJIr0o7cWwFM .node polygon,#mermaid-svg-BirhZJIr0o7cWwFM .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-BirhZJIr0o7cWwFM .rough-node .label text,#mermaid-svg-BirhZJIr0o7cWwFM .node .label text,#mermaid-svg-BirhZJIr0o7cWwFM .image-shape .label,#mermaid-svg-BirhZJIr0o7cWwFM .icon-shape .label{text-anchor:middle;}#mermaid-svg-BirhZJIr0o7cWwFM .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-BirhZJIr0o7cWwFM .rough-node .label,#mermaid-svg-BirhZJIr0o7cWwFM .node .label,#mermaid-svg-BirhZJIr0o7cWwFM .image-shape .label,#mermaid-svg-BirhZJIr0o7cWwFM .icon-shape .label{text-align:center;}#mermaid-svg-BirhZJIr0o7cWwFM .node.clickable{cursor:pointer;}#mermaid-svg-BirhZJIr0o7cWwFM .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-BirhZJIr0o7cWwFM .arrowheadPath{fill:#333333;}#mermaid-svg-BirhZJIr0o7cWwFM .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-BirhZJIr0o7cWwFM .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-BirhZJIr0o7cWwFM .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-BirhZJIr0o7cWwFM .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-BirhZJIr0o7cWwFM .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-BirhZJIr0o7cWwFM .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-BirhZJIr0o7cWwFM .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-BirhZJIr0o7cWwFM .cluster text{fill:#333;}#mermaid-svg-BirhZJIr0o7cWwFM .cluster span{color:#333;}#mermaid-svg-BirhZJIr0o7cWwFM div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-BirhZJIr0o7cWwFM .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-BirhZJIr0o7cWwFM rect.text{fill:none;stroke-width:0;}#mermaid-svg-BirhZJIr0o7cWwFM .icon-shape,#mermaid-svg-BirhZJIr0o7cWwFM .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-BirhZJIr0o7cWwFM .icon-shape p,#mermaid-svg-BirhZJIr0o7cWwFM .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-BirhZJIr0o7cWwFM .icon-shape .label rect,#mermaid-svg-BirhZJIr0o7cWwFM .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-BirhZJIr0o7cWwFM .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-BirhZJIr0o7cWwFM .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-BirhZJIr0o7cWwFM :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 传播失败场景
      F1:累积误差
      F2:对应消失
      F3:几何漂移
      多次传播后

      误差累积

      远距离对应可能错位
      中间帧无对应时

      传播链断

      -> 限制最小 1024
      累积匹配

      物理点偏差

      1024 阈值控制
      缓解策略
      1px 阈值

      限制累积
      1024 对应

      停止传播
      每步过滤

      MAGSAC

    • 标签传播本质上是一种几何一致性自监督。它是 self-supervised learning 在 matching 上的一个具体实现,不依赖 3D 重建,只依赖对应关系本身。

数据管线深度分析

  • #mermaid-svg-sqJYRpYUkrIKPs6b{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-sqJYRpYUkrIKPs6b .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-sqJYRpYUkrIKPs6b .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-sqJYRpYUkrIKPs6b .error-icon{fill:#552222;}#mermaid-svg-sqJYRpYUkrIKPs6b .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-sqJYRpYUkrIKPs6b .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-sqJYRpYUkrIKPs6b .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-sqJYRpYUkrIKPs6b .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-sqJYRpYUkrIKPs6b .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-sqJYRpYUkrIKPs6b .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-sqJYRpYUkrIKPs6b .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-sqJYRpYUkrIKPs6b .marker{fill:#333333;stroke:#333333;}#mermaid-svg-sqJYRpYUkrIKPs6b .marker.cross{stroke:#333333;}#mermaid-svg-sqJYRpYUkrIKPs6b svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-sqJYRpYUkrIKPs6b p{margin:0;}#mermaid-svg-sqJYRpYUkrIKPs6b .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-sqJYRpYUkrIKPs6b .cluster-label text{fill:#333;}#mermaid-svg-sqJYRpYUkrIKPs6b .cluster-label span{color:#333;}#mermaid-svg-sqJYRpYUkrIKPs6b .cluster-label span p{background-color:transparent;}#mermaid-svg-sqJYRpYUkrIKPs6b .label text,#mermaid-svg-sqJYRpYUkrIKPs6b span{fill:#333;color:#333;}#mermaid-svg-sqJYRpYUkrIKPs6b .node rect,#mermaid-svg-sqJYRpYUkrIKPs6b .node circle,#mermaid-svg-sqJYRpYUkrIKPs6b .node ellipse,#mermaid-svg-sqJYRpYUkrIKPs6b .node polygon,#mermaid-svg-sqJYRpYUkrIKPs6b .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-sqJYRpYUkrIKPs6b .rough-node .label text,#mermaid-svg-sqJYRpYUkrIKPs6b .node .label text,#mermaid-svg-sqJYRpYUkrIKPs6b .image-shape .label,#mermaid-svg-sqJYRpYUkrIKPs6b .icon-shape .label{text-anchor:middle;}#mermaid-svg-sqJYRpYUkrIKPs6b .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-sqJYRpYUkrIKPs6b .rough-node .label,#mermaid-svg-sqJYRpYUkrIKPs6b .node .label,#mermaid-svg-sqJYRpYUkrIKPs6b .image-shape .label,#mermaid-svg-sqJYRpYUkrIKPs6b .icon-shape .label{text-align:center;}#mermaid-svg-sqJYRpYUkrIKPs6b .node.clickable{cursor:pointer;}#mermaid-svg-sqJYRpYUkrIKPs6b .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-sqJYRpYUkrIKPs6b .arrowheadPath{fill:#333333;}#mermaid-svg-sqJYRpYUkrIKPs6b .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-sqJYRpYUkrIKPs6b .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-sqJYRpYUkrIKPs6b .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-sqJYRpYUkrIKPs6b .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-sqJYRpYUkrIKPs6b .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-sqJYRpYUkrIKPs6b .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-sqJYRpYUkrIKPs6b .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-sqJYRpYUkrIKPs6b .cluster text{fill:#333;}#mermaid-svg-sqJYRpYUkrIKPs6b .cluster span{color:#333;}#mermaid-svg-sqJYRpYUkrIKPs6b div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-sqJYRpYUkrIKPs6b .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-sqJYRpYUkrIKPs6b rect.text{fill:none;stroke-width:0;}#mermaid-svg-sqJYRpYUkrIKPs6b .icon-shape,#mermaid-svg-sqJYRpYUkrIKPs6b .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-sqJYRpYUkrIKPs6b .icon-shape p,#mermaid-svg-sqJYRpYUkrIKPs6b .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-sqJYRpYUkrIKPs6b .icon-shape .label rect,#mermaid-svg-sqJYRpYUkrIKPs6b .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-sqJYRpYUkrIKPs6b .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-sqJYRpYUkrIKPs6b .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-sqJYRpYUkrIKPs6b :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 互联网视频

    YouTube CC 协议

    50h, 26 国 43 城
    采样关键帧

    每 20 帧
    近距对生成

    20/40/80 帧对
    Multi-Method Matching
    MAGSAC 过滤
    Label Propagation

    迭代到 160/320/...
    训练数据混合

    视频 + 原始域数据
    强增广

    • perspective
      训练 GIM 模型
  • 视频数据集的元信息

python 复制代码
# 论文 Appendix A Table 6
video_stats:
  total_duration: 50 hours  # 主要实验
  extended: 100 hours  # 最大实验
  countries: 26
  cities: 43
  scenarios: 39
  
  scenarios_covered:
    - "Daytime, Driving, Suburbs"
    - "From Day to Night,` Beach, Cave"
    - "Market, Sunny Day, Dock"
    - "Mountainous Area, Evening, Coast"
    - "Lights, Night, Park, Outskirts"
    - "Planetarium, Indoor and Outdoor Transition"
    - "Wilderness, Indoor, Storm rain"
    - "Lakeside, Chinatown, Street, Factory"
    - "Outdoor, Mountain Climbing, Mountain Road"
    - "City, Building, Shopping Mall, Small Town"
    - "Forest, Heavy Rain, Historic Building"
    - "Hollywood, Overcast Day, Historical Relics"
    - "Subway Station"

# 关键洞察:覆盖大量日常场景
# 真正的"domain random"
  • 数据统计与算力

python 复制代码
# 论文 Implementation Details
data_stats = {
    'video_hours': 50,
    'image_pairs': 180000,  # 50h 视频的可用对
    'gpu_time': '4 days',  # 标签生成
    'gpu_type': '16 × A100',  # 16 张 A100
    'gpus_per_video_hour': 0.32,  # 16 × 4/50 ≈ 0.32 GPU-day/hour
    'processing_rate': '12.5h / day',  # 每天处理 12.5 小时视频
}

# ROI 评估:
# 16 A100 跑 4 天 = 64 GPU-day
# 产出 180K 对应 GT
# 对比:SfM 处理 2.2h(同样算力)产出多少?
# 论文 Table 2 row 6: 2.2h = 12.5h × 17.6% = 8.8K pairs
# 算力效率: 180K / 8.8K = 20x
  • 数据混合配方

python 复制代码
# 论文 Section 4
# 关键:训练时 mixing in-domain + video data
training_sampler = MixtureSampler([
    Sampler(MegaDepth, weight=0.25),
    Sampler(ScanNet, weight=0.25),
    Sampler(VideoData, weight=0.50),
])

# 效果:
# - 完全替换 in-domain → 跨域强,但域内掉点
# - 完全不替换 → 跨域弱
# - 50% 混合 → 兼顾(论文选择)
  • 训练的具体配方

python 复制代码
# 论文 Section 4 Implementation Details
training_recipe:
  architectures:
    - SuperGlue
    - LoFTR  
    - DKM
    
  base_label_generator:
    description: "use official outdoor model"
    
  complementary_methods:
    SuperGlue: [RootSIFT]
    LoFTR: [RootSIFT + SuperGlue]
    DKM: [RootSIFT + SuperGlue + LoFTR]
    # 注意:互补方法不能比 baseline 强
    
  video_data_size: 50 hours  # 默认实验
  extended: 100 hours
  
  training:
    from_scratch: true
    mix_in_domain: true
    mixture: {MegaDepth: 0.25, ScanNet: 0.25, Video: 0.5}
    hyperparameters: 'strictly follow original repos'
    # 关键:超参不变,只换数据
  • 数据管线工程要点

  • #mermaid-svg-LkK2FTUZt1EE6N7m{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-LkK2FTUZt1EE6N7m .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-LkK2FTUZt1EE6N7m .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-LkK2FTUZt1EE6N7m .error-icon{fill:#552222;}#mermaid-svg-LkK2FTUZt1EE6N7m .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-LkK2FTUZt1EE6N7m .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-LkK2FTUZt1EE6N7m .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-LkK2FTUZt1EE6N7m .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-LkK2FTUZt1EE6N7m .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-LkK2FTUZt1EE6N7m .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-LkK2FTUZt1EE6N7m .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-LkK2FTUZt1EE6N7m .marker{fill:#333333;stroke:#333333;}#mermaid-svg-LkK2FTUZt1EE6N7m .marker.cross{stroke:#333333;}#mermaid-svg-LkK2FTUZt1EE6N7m svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-LkK2FTUZt1EE6N7m p{margin:0;}#mermaid-svg-LkK2FTUZt1EE6N7m .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-LkK2FTUZt1EE6N7m .cluster-label text{fill:#333;}#mermaid-svg-LkK2FTUZt1EE6N7m .cluster-label span{color:#333;}#mermaid-svg-LkK2FTUZt1EE6N7m .cluster-label span p{background-color:transparent;}#mermaid-svg-LkK2FTUZt1EE6N7m .label text,#mermaid-svg-LkK2FTUZt1EE6N7m span{fill:#333;color:#333;}#mermaid-svg-LkK2FTUZt1EE6N7m .node rect,#mermaid-svg-LkK2FTUZt1EE6N7m .node circle,#mermaid-svg-LkK2FTUZt1EE6N7m .node ellipse,#mermaid-svg-LkK2FTUZt1EE6N7m .node polygon,#mermaid-svg-LkK2FTUZt1EE6N7m .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-LkK2FTUZt1EE6N7m .rough-node .label text,#mermaid-svg-LkK2FTUZt1EE6N7m .node .label text,#mermaid-svg-LkK2FTUZt1EE6N7m .image-shape .label,#mermaid-svg-LkK2FTUZt1EE6N7m .icon-shape .label{text-anchor:middle;}#mermaid-svg-LkK2FTUZt1EE6N7m .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-LkK2FTUZt1EE6N7m .rough-node .label,#mermaid-svg-LkK2FTUZt1EE6N7m .node .label,#mermaid-svg-LkK2FTUZt1EE6N7m .image-shape .label,#mermaid-svg-LkK2FTUZt1EE6N7m .icon-shape .label{text-align:center;}#mermaid-svg-LkK2FTUZt1EE6N7m .node.clickable{cursor:pointer;}#mermaid-svg-LkK2FTUZt1EE6N7m .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-LkK2FTUZt1EE6N7m .arrowheadPath{fill:#333333;}#mermaid-svg-LkK2FTUZt1EE6N7m .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-LkK2FTUZt1EE6N7m .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-LkK2FTUZt1EE6N7m .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-LkK2FTUZt1EE6N7m .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-LkK2FTUZt1EE6N7m .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-LkK2FTUZt1EE6N7m .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-LkK2FTUZt1EE6N7m .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-LkK2FTUZt1EE6N7m .cluster text{fill:#333;}#mermaid-svg-LkK2FTUZt1EE6N7m .cluster span{color:#333;}#mermaid-svg-LkK2FTUZt1EE6N7m div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-LkK2FTUZt1EE6N7m .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-LkK2FTUZt1EE6N7m rect.text{fill:none;stroke-width:0;}#mermaid-svg-LkK2FTUZt1EE6N7m .icon-shape,#mermaid-svg-LkK2FTUZt1EE6N7m .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-LkK2FTUZt1EE6N7m .icon-shape p,#mermaid-svg-LkK2FTUZt1EE6N7m .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-LkK2FTUZt1EE6N7m .icon-shape .label rect,#mermaid-svg-LkK2FTUZt1EE6N7m .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-LkK2FTUZt1EE6N7m .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-LkK2FTUZt1EE6N7m .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-LkK2FTUZt1EE6N7m :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 生产级数据管线要素
    版本管理
    可复现性
    监控/告警
    成本控制
    每个 GIM run 标注 video hash / date / commit
    固定 random seed / GPU / 库版本
    每 N 小时检查 label quality + processing rate
    Spot GPU 调度 + 失败重试

ZEB 基准深度解读

  • #mermaid-svg-6bZ8YixoMzFco8W8{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-6bZ8YixoMzFco8W8 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-6bZ8YixoMzFco8W8 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-6bZ8YixoMzFco8W8 .error-icon{fill:#552222;}#mermaid-svg-6bZ8YixoMzFco8W8 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-6bZ8YixoMzFco8W8 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-6bZ8YixoMzFco8W8 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-6bZ8YixoMzFco8W8 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-6bZ8YixoMzFco8W8 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-6bZ8YixoMzFco8W8 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-6bZ8YixoMzFco8W8 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-6bZ8YixoMzFco8W8 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-6bZ8YixoMzFco8W8 .marker.cross{stroke:#333333;}#mermaid-svg-6bZ8YixoMzFco8W8 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-6bZ8YixoMzFco8W8 p{margin:0;}#mermaid-svg-6bZ8YixoMzFco8W8 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-6bZ8YixoMzFco8W8 .cluster-label text{fill:#333;}#mermaid-svg-6bZ8YixoMzFco8W8 .cluster-label span{color:#333;}#mermaid-svg-6bZ8YixoMzFco8W8 .cluster-label span p{background-color:transparent;}#mermaid-svg-6bZ8YixoMzFco8W8 .label text,#mermaid-svg-6bZ8YixoMzFco8W8 span{fill:#333;color:#333;}#mermaid-svg-6bZ8YixoMzFco8W8 .node rect,#mermaid-svg-6bZ8YixoMzFco8W8 .node circle,#mermaid-svg-6bZ8YixoMzFco8W8 .node ellipse,#mermaid-svg-6bZ8YixoMzFco8W8 .node polygon,#mermaid-svg-6bZ8YixoMzFco8W8 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-6bZ8YixoMzFco8W8 .rough-node .label text,#mermaid-svg-6bZ8YixoMzFco8W8 .node .label text,#mermaid-svg-6bZ8YixoMzFco8W8 .image-shape .label,#mermaid-svg-6bZ8YixoMzFco8W8 .icon-shape .label{text-anchor:middle;}#mermaid-svg-6bZ8YixoMzFco8W8 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-6bZ8YixoMzFco8W8 .rough-node .label,#mermaid-svg-6bZ8YixoMzFco8W8 .node .label,#mermaid-svg-6bZ8YixoMzFco8W8 .image-shape .label,#mermaid-svg-6bZ8YixoMzFco8W8 .icon-shape .label{text-align:center;}#mermaid-svg-6bZ8YixoMzFco8W8 .node.clickable{cursor:pointer;}#mermaid-svg-6bZ8YixoMzFco8W8 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-6bZ8YixoMzFco8W8 .arrowheadPath{fill:#333333;}#mermaid-svg-6bZ8YixoMzFco8W8 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-6bZ8YixoMzFco8W8 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-6bZ8YixoMzFco8W8 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-6bZ8YixoMzFco8W8 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-6bZ8YixoMzFco8W8 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-6bZ8YixoMzFco8W8 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-6bZ8YixoMzFco8W8 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-6bZ8YixoMzFco8W8 .cluster text{fill:#333;}#mermaid-svg-6bZ8YixoMzFco8W8 .cluster span{color:#333;}#mermaid-svg-6bZ8YixoMzFco8W8 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-6bZ8YixoMzFco8W8 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-6bZ8YixoMzFco8W8 rect.text{fill:none;stroke-width:0;}#mermaid-svg-6bZ8YixoMzFco8W8 .icon-shape,#mermaid-svg-6bZ8YixoMzFco8W8 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-6bZ8YixoMzFco8W8 .icon-shape p,#mermaid-svg-6bZ8YixoMzFco8W8 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-6bZ8YixoMzFco8W8 .icon-shape .label rect,#mermaid-svg-6bZ8YixoMzFco8W8 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-6bZ8YixoMzFco8W8 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-6bZ8YixoMzFco8W8 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-6bZ8YixoMzFco8W8 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} ZEB 设计目标
    跨域
    零样本
    规模充足
    场景多样
    不依赖任何特定

    训练分布
    评估从未见过的

    场景类别
    46K pairs vs

    现有 1500
    12 个数据集

    8 实 + 4 仿真

  • ZEB 子集纵览

    子集 类型 场景 分辨率 难度
    GL3D 实 航拍/野外 1000×1000 ★★★★
    BlendedMVS 实 物体 1000×1000 ★★★
    ETH3D Indoor 实 地下室/走廊 6000×4136 ★★★★★
    ETH3D Outdoor 实 学校/公园 6000×4136 ★★★★
    KITTI 实 驾驶 1226×370 ★★★
    Robotcar Weather 实 天气变化 1280×960 ★★★★
    Robotcar Season 实 季节变化 1280×960 ★★★★
    Robotcar Night 实 光照变化 1280×960 ★★★★
    Multi-FoV 仿 驾驶(多视场) 640×480 ★★★
    SceneNet RGB-D 仿 客厅 320×240 ★★
    ICL-NUIM 仿 酒店/办公室 640×480 ★★★
    GTA-SfM 仿 航拍/野外 640×480 ★★★★
  • ZEB 的评测方法

    python 复制代码
    # 论文 Section 3.2
    # ZEB 的核心创新:覆盖 5 档 overlap ratio
    overlap_ratios = [0.10, 0.20, 0.30, 0.40, 0.50]
    # 每个子集 ~3800 对,12 个子集 ≈ 46K 对
    
    # 评测指标:AUC of relative pose error @ 5°
    # 计算方式:
    # 1. 用模型预测对应
    # 2. RANSAC 估本质矩阵
    # 3. 分解得 R, t
    # 4. 计算 R, t 与 GT 的角度误差
    # 5. AUC@5° = 误差 < 5° 的对比例
  • ZEB 上的失败案例分析,手工特征在"分布漂移大"的场景反而稳定(因为不依赖训练分布)。学习模型在自己训练过的分布上更强,但泛化不行。GIM 用数据多样性缓解了这一问题。

    python 复制代码
    # 论文 Table 1 关键观察
    # 在 ZEB 的不同子集上,某些"先进"模型不如 RootSIFT
    failure_analysis = {
        'SuperGlue_OUT': {
            'ETH3D_Outdoor': 'AUC=59.3 (OK)',  # 优势
            'Robotcar_Night': 'AUC=20.9',      # 夜间崩
            'GL3D': 'AUC=29.7',                 # 航拍崩
        },
        'RootSIFT': {
            'ETH3D_Outdoor': 'AUC=48.7',
            'Robotcar_Night': 'AUC=14.7',       # 也崩但相对好
            'GL3D': 'AUC=43.5',                 # ★ 在航拍反而最好!
        },
        'RootSIFT_observation': '在 GL3D, KITTI, GTA 多个子集上 RootSIFT > 学习模型'
    }
  • ZEB 与 in-domain 基准的对比。GIM 在 in-domain 基准上提升小(MegaDepth AUC@5°: LoFTR 52.8→51.3,几乎不变),但 in-domain 已经过拟合,涨点空间本来就小。ZEB 上提升大(LoFTR 33.1→39.1)。

    • #mermaid-svg-qDmB5yhXAcv2GAW9{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-qDmB5yhXAcv2GAW9 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-qDmB5yhXAcv2GAW9 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-qDmB5yhXAcv2GAW9 .error-icon{fill:#552222;}#mermaid-svg-qDmB5yhXAcv2GAW9 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-qDmB5yhXAcv2GAW9 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-qDmB5yhXAcv2GAW9 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-qDmB5yhXAcv2GAW9 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-qDmB5yhXAcv2GAW9 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-qDmB5yhXAcv2GAW9 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-qDmB5yhXAcv2GAW9 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-qDmB5yhXAcv2GAW9 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-qDmB5yhXAcv2GAW9 .marker.cross{stroke:#333333;}#mermaid-svg-qDmB5yhXAcv2GAW9 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-qDmB5yhXAcv2GAW9 p{margin:0;}#mermaid-svg-qDmB5yhXAcv2GAW9 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-qDmB5yhXAcv2GAW9 .cluster-label text{fill:#333;}#mermaid-svg-qDmB5yhXAcv2GAW9 .cluster-label span{color:#333;}#mermaid-svg-qDmB5yhXAcv2GAW9 .cluster-label span p{background-color:transparent;}#mermaid-svg-qDmB5yhXAcv2GAW9 .label text,#mermaid-svg-qDmB5yhXAcv2GAW9 span{fill:#333;color:#333;}#mermaid-svg-qDmB5yhXAcv2GAW9 .node rect,#mermaid-svg-qDmB5yhXAcv2GAW9 .node circle,#mermaid-svg-qDmB5yhXAcv2GAW9 .node ellipse,#mermaid-svg-qDmB5yhXAcv2GAW9 .node polygon,#mermaid-svg-qDmB5yhXAcv2GAW9 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-qDmB5yhXAcv2GAW9 .rough-node .label text,#mermaid-svg-qDmB5yhXAcv2GAW9 .node .label text,#mermaid-svg-qDmB5yhXAcv2GAW9 .image-shape .label,#mermaid-svg-qDmB5yhXAcv2GAW9 .icon-shape .label{text-anchor:middle;}#mermaid-svg-qDmB5yhXAcv2GAW9 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-qDmB5yhXAcv2GAW9 .rough-node .label,#mermaid-svg-qDmB5yhXAcv2GAW9 .node .label,#mermaid-svg-qDmB5yhXAcv2GAW9 .image-shape .label,#mermaid-svg-qDmB5yhXAcv2GAW9 .icon-shape .label{text-align:center;}#mermaid-svg-qDmB5yhXAcv2GAW9 .node.clickable{cursor:pointer;}#mermaid-svg-qDmB5yhXAcv2GAW9 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-qDmB5yhXAcv2GAW9 .arrowheadPath{fill:#333333;}#mermaid-svg-qDmB5yhXAcv2GAW9 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-qDmB5yhXAcv2GAW9 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-qDmB5yhXAcv2GAW9 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-qDmB5yhXAcv2GAW9 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-qDmB5yhXAcv2GAW9 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-qDmB5yhXAcv2GAW9 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-qDmB5yhXAcv2GAW9 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-qDmB5yhXAcv2GAW9 .cluster text{fill:#333;}#mermaid-svg-qDmB5yhXAcv2GAW9 .cluster span{color:#333;}#mermaid-svg-qDmB5yhXAcv2GAW9 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-qDmB5yhXAcv2GAW9 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-qDmB5yhXAcv2GAW9 rect.text{fill:none;stroke-width:0;}#mermaid-svg-qDmB5yhXAcv2GAW9 .icon-shape,#mermaid-svg-qDmB5yhXAcv2GAW9 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-qDmB5yhXAcv2GAW9 .icon-shape p,#mermaid-svg-qDmB5yhXAcv2GAW9 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-qDmB5yhXAcv2GAW9 .icon-shape .label rect,#mermaid-svg-qDmB5yhXAcv2GAW9 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-qDmB5yhXAcv2GAW9 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-qDmB5yhXAcv2GAW9 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-qDmB5yhXAcv2GAW9 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 过拟合
      真实
      In-domain 基准
      MegaDepth-1500

      1500 对, 单一场景
      ScanNet-1500

      1500 对, 室内
      ZEB
      46K 对, 12 子集
      不能反映真实泛化
      真正反映泛化能力

  • 数据驱动 vs 模型驱动的图像匹配发展史

    • #mermaid-svg-y3EptcPRzZea2fdU{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-y3EptcPRzZea2fdU .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-y3EptcPRzZea2fdU .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-y3EptcPRzZea2fdU .error-icon{fill:#552222;}#mermaid-svg-y3EptcPRzZea2fdU .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-y3EptcPRzZea2fdU .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-y3EptcPRzZea2fdU .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-y3EptcPRzZea2fdU .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-y3EptcPRzZea2fdU .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-y3EptcPRzZea2fdU .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-y3EptcPRzZea2fdU .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-y3EptcPRzZea2fdU .marker{fill:#333333;stroke:#333333;}#mermaid-svg-y3EptcPRzZea2fdU .marker.cross{stroke:#333333;}#mermaid-svg-y3EptcPRzZea2fdU svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-y3EptcPRzZea2fdU p{margin:0;}#mermaid-svg-y3EptcPRzZea2fdU .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-y3EptcPRzZea2fdU .cluster-label text{fill:#333;}#mermaid-svg-y3EptcPRzZea2fdU .cluster-label span{color:#333;}#mermaid-svg-y3EptcPRzZea2fdU .cluster-label span p{background-color:transparent;}#mermaid-svg-y3EptcPRzZea2fdU .label text,#mermaid-svg-y3EptcPRzZea2fdU span{fill:#333;color:#333;}#mermaid-svg-y3EptcPRzZea2fdU .node rect,#mermaid-svg-y3EptcPRzZea2fdU .node circle,#mermaid-svg-y3EptcPRzZea2fdU .node ellipse,#mermaid-svg-y3EptcPRzZea2fdU .node polygon,#mermaid-svg-y3EptcPRzZea2fdU .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-y3EptcPRzZea2fdU .rough-node .label text,#mermaid-svg-y3EptcPRzZea2fdU .node .label text,#mermaid-svg-y3EptcPRzZea2fdU .image-shape .label,#mermaid-svg-y3EptcPRzZea2fdU .icon-shape .label{text-anchor:middle;}#mermaid-svg-y3EptcPRzZea2fdU .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-y3EptcPRzZea2fdU .rough-node .label,#mermaid-svg-y3EptcPRzZea2fdU .node .label,#mermaid-svg-y3EptcPRzZea2fdU .image-shape .label,#mermaid-svg-y3EptcPRzZea2fdU .icon-shape .label{text-align:center;}#mermaid-svg-y3EptcPRzZea2fdU .node.clickable{cursor:pointer;}#mermaid-svg-y3EptcPRzZea2fdU .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-y3EptcPRzZea2fdU .arrowheadPath{fill:#333333;}#mermaid-svg-y3EptcPRzZea2fdU .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-y3EptcPRzZea2fdU .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-y3EptcPRzZea2fdU .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-y3EptcPRzZea2fdU .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-y3EptcPRzZea2fdU .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-y3EptcPRzZea2fdU .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-y3EptcPRzZea2fdU .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-y3EptcPRzZea2fdU .cluster text{fill:#333;}#mermaid-svg-y3EptcPRzZea2fdU .cluster span{color:#333;}#mermaid-svg-y3EptcPRzZea2fdU div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-y3EptcPRzZea2fdU .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-y3EptcPRzZea2fdU rect.text{fill:none;stroke-width:0;}#mermaid-svg-y3EptcPRzZea2fdU .icon-shape,#mermaid-svg-y3EptcPRzZea2fdU .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-y3EptcPRzZea2fdU .icon-shape p,#mermaid-svg-y3EptcPRzZea2fdU .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-y3EptcPRzZea2fdU .icon-shape .label rect,#mermaid-svg-y3EptcPRzZea2fdU .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-y3EptcPRzZea2fdU .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-y3EptcPRzZea2fdU .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-y3EptcPRzZea2fdU :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 创新点
      创新点
      2018
      2019
      2020
      2021
      2022
      2023
      2024
      SIFT + SfM

      COLMAP 数据集
      D2-Net / R2D2

      学习 D-D
      SuperGlue

      GNN 匹配
      LoFTR

      半稠密 Transformer
      领域专用

      MegaDepth / ScanNet
      DKM / PDC-Net

      稠密匹配
      GIM

      视频自训练
      RoMa / DKM-v2

      DINOv2 大模型

      1. 数据多样性

      2. 自训练

      3. 标签传播

      4. 基础模型

      5. 概率化

  • GIM vs. 同类方法对比

    维度 GIM SGP (2021) DINOv2-based (RoMa) COLMAP Pipeline
    数据源 互联网视频 互联网图像 LAION 预训练 SfM + MVS
    标注方式 自训练 + 传播 RANSAC + SIFT 无监督预训练 3D 重建
    数据规模 50h 视频(180K 对) 较小 142M 图 1M 图(MegaDepth)
    多样性 ★★★★★ ★★★ ★★★★★ ★★
    标注效率 0.32 GPU-day/h 低 不需标注 0.18 GPU-day/h
    标注失败率 0% 低 N/A 44.3%
    模型泛化 单一通用模型 仍域分裂 单一通用模型 N/A
    架构依赖 与架构解耦 与 SIFT 绑定 改变架构 N/A
    可复现性 高(开源) 中 依赖 DINOv2 难(COLMAP 配置)
  • GIM 的核心创新(从方法论角度)

    • #mermaid-svg-YjozuaUDYblWQ7N9{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-YjozuaUDYblWQ7N9 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-YjozuaUDYblWQ7N9 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-YjozuaUDYblWQ7N9 .error-icon{fill:#552222;}#mermaid-svg-YjozuaUDYblWQ7N9 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-YjozuaUDYblWQ7N9 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-YjozuaUDYblWQ7N9 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-YjozuaUDYblWQ7N9 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-YjozuaUDYblWQ7N9 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-YjozuaUDYblWQ7N9 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-YjozuaUDYblWQ7N9 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-YjozuaUDYblWQ7N9 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-YjozuaUDYblWQ7N9 .marker.cross{stroke:#333333;}#mermaid-svg-YjozuaUDYblWQ7N9 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-YjozuaUDYblWQ7N9 p{margin:0;}#mermaid-svg-YjozuaUDYblWQ7N9 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-YjozuaUDYblWQ7N9 .cluster-label text{fill:#333;}#mermaid-svg-YjozuaUDYblWQ7N9 .cluster-label span{color:#333;}#mermaid-svg-YjozuaUDYblWQ7N9 .cluster-label span p{background-color:transparent;}#mermaid-svg-YjozuaUDYblWQ7N9 .label text,#mermaid-svg-YjozuaUDYblWQ7N9 span{fill:#333;color:#333;}#mermaid-svg-YjozuaUDYblWQ7N9 .node rect,#mermaid-svg-YjozuaUDYblWQ7N9 .node circle,#mermaid-svg-YjozuaUDYblWQ7N9 .node ellipse,#mermaid-svg-YjozuaUDYblWQ7N9 .node polygon,#mermaid-svg-YjozuaUDYblWQ7N9 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-YjozuaUDYblWQ7N9 .rough-node .label text,#mermaid-svg-YjozuaUDYblWQ7N9 .node .label text,#mermaid-svg-YjozuaUDYblWQ7N9 .image-shape .label,#mermaid-svg-YjozuaUDYblWQ7N9 .icon-shape .label{text-anchor:middle;}#mermaid-svg-YjozuaUDYblWQ7N9 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-YjozuaUDYblWQ7N9 .rough-node .label,#mermaid-svg-YjozuaUDYblWQ7N9 .node .label,#mermaid-svg-YjozuaUDYblWQ7N9 .image-shape .label,#mermaid-svg-YjozuaUDYblWQ7N9 .icon-shape .label{text-align:center;}#mermaid-svg-YjozuaUDYblWQ7N9 .node.clickable{cursor:pointer;}#mermaid-svg-YjozuaUDYblWQ7N9 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-YjozuaUDYblWQ7N9 .arrowheadPath{fill:#333333;}#mermaid-svg-YjozuaUDYblWQ7N9 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-YjozuaUDYblWQ7N9 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-YjozuaUDYblWQ7N9 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-YjozuaUDYblWQ7N9 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-YjozuaUDYblWQ7N9 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-YjozuaUDYblWQ7N9 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-YjozuaUDYblWQ7N9 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-YjozuaUDYblWQ7N9 .cluster text{fill:#333;}#mermaid-svg-YjozuaUDYblWQ7N9 .cluster span{color:#333;}#mermaid-svg-YjozuaUDYblWQ7N9 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-YjozuaUDYblWQ7N9 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-YjozuaUDYblWQ7N9 rect.text{fill:none;stroke-width:0;}#mermaid-svg-YjozuaUDYblWQ7N9 .icon-shape,#mermaid-svg-YjozuaUDYblWQ7N9 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-YjozuaUDYblWQ7N9 .icon-shape p,#mermaid-svg-YjozuaUDYblWQ7N9 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-YjozuaUDYblWQ7N9 .icon-shape .label rect,#mermaid-svg-YjozuaUDYblWQ7N9 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-YjozuaUDYblWQ7N9 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-YjozuaUDYblWQ7N9 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-YjozuaUDYblWQ7N9 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} GIM 的方法论创新
      I1:数据范式
      I2:标注范式
      I3:评测范式
      从'图像+SfM'

      到'视频+自训练'
      从'显式3D重建'

      到'隐式对应传播'
      从'in-domain基准'

      到'zero-shot 基准'

关键论点论据深度解读

  • 数据多样性 > 模型先进性

    • #mermaid-svg-7gMQ8sRfkDGDJvA7{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-7gMQ8sRfkDGDJvA7 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .error-icon{fill:#552222;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .marker.cross{stroke:#333333;}#mermaid-svg-7gMQ8sRfkDGDJvA7 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7gMQ8sRfkDGDJvA7 p{margin:0;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .cluster-label text{fill:#333;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .cluster-label span{color:#333;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .cluster-label span p{background-color:transparent;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .label text,#mermaid-svg-7gMQ8sRfkDGDJvA7 span{fill:#333;color:#333;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .node rect,#mermaid-svg-7gMQ8sRfkDGDJvA7 .node circle,#mermaid-svg-7gMQ8sRfkDGDJvA7 .node ellipse,#mermaid-svg-7gMQ8sRfkDGDJvA7 .node polygon,#mermaid-svg-7gMQ8sRfkDGDJvA7 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .rough-node .label text,#mermaid-svg-7gMQ8sRfkDGDJvA7 .node .label text,#mermaid-svg-7gMQ8sRfkDGDJvA7 .image-shape .label,#mermaid-svg-7gMQ8sRfkDGDJvA7 .icon-shape .label{text-anchor:middle;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .rough-node .label,#mermaid-svg-7gMQ8sRfkDGDJvA7 .node .label,#mermaid-svg-7gMQ8sRfkDGDJvA7 .image-shape .label,#mermaid-svg-7gMQ8sRfkDGDJvA7 .icon-shape .label{text-align:center;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .node.clickable{cursor:pointer;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .arrowheadPath{fill:#333333;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-7gMQ8sRfkDGDJvA7 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7gMQ8sRfkDGDJvA7 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-7gMQ8sRfkDGDJvA7 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .cluster text{fill:#333;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .cluster span{color:#333;}#mermaid-svg-7gMQ8sRfkDGDJvA7 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-7gMQ8sRfkDGDJvA7 rect.text{fill:none;stroke-width:0;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .icon-shape,#mermaid-svg-7gMQ8sRfkDGDJvA7 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .icon-shape p,#mermaid-svg-7gMQ8sRfkDGDJvA7 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .icon-shape .label rect,#mermaid-svg-7gMQ8sRfkDGDJvA7 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7gMQ8sRfkDGDJvA7 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-7gMQ8sRfkDGDJvA7 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-7gMQ8sRfkDGDJvA7 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 论点:

      数据多样性

      决定泛化天花板
      论据 1:

      RootSIFT only 49.3

      vs LoFTR+更多 49.4
      论据 2:

      12.5h->50h

      持续涨点
      论据 3:

      100h 仍未饱和
      工程含义:

      投入数据建设

      回报 > 投入模型

  • 标签传播是 GIM 的灵魂,标签传播本质上是 self-supervised learning 在 matching 上的实现。

    • #mermaid-svg-biqJIcIrQJEtxfHD{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-biqJIcIrQJEtxfHD .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-biqJIcIrQJEtxfHD .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-biqJIcIrQJEtxfHD .error-icon{fill:#552222;}#mermaid-svg-biqJIcIrQJEtxfHD .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-biqJIcIrQJEtxfHD .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-biqJIcIrQJEtxfHD .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-biqJIcIrQJEtxfHD .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-biqJIcIrQJEtxfHD .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-biqJIcIrQJEtxfHD .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-biqJIcIrQJEtxfHD .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-biqJIcIrQJEtxfHD .marker{fill:#333333;stroke:#333333;}#mermaid-svg-biqJIcIrQJEtxfHD .marker.cross{stroke:#333333;}#mermaid-svg-biqJIcIrQJEtxfHD svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-biqJIcIrQJEtxfHD p{margin:0;}#mermaid-svg-biqJIcIrQJEtxfHD .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-biqJIcIrQJEtxfHD .cluster-label text{fill:#333;}#mermaid-svg-biqJIcIrQJEtxfHD .cluster-label span{color:#333;}#mermaid-svg-biqJIcIrQJEtxfHD .cluster-label span p{background-color:transparent;}#mermaid-svg-biqJIcIrQJEtxfHD .label text,#mermaid-svg-biqJIcIrQJEtxfHD span{fill:#333;color:#333;}#mermaid-svg-biqJIcIrQJEtxfHD .node rect,#mermaid-svg-biqJIcIrQJEtxfHD .node circle,#mermaid-svg-biqJIcIrQJEtxfHD .node ellipse,#mermaid-svg-biqJIcIrQJEtxfHD .node polygon,#mermaid-svg-biqJIcIrQJEtxfHD .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-biqJIcIrQJEtxfHD .rough-node .label text,#mermaid-svg-biqJIcIrQJEtxfHD .node .label text,#mermaid-svg-biqJIcIrQJEtxfHD .image-shape .label,#mermaid-svg-biqJIcIrQJEtxfHD .icon-shape .label{text-anchor:middle;}#mermaid-svg-biqJIcIrQJEtxfHD .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-biqJIcIrQJEtxfHD .rough-node .label,#mermaid-svg-biqJIcIrQJEtxfHD .node .label,#mermaid-svg-biqJIcIrQJEtxfHD .image-shape .label,#mermaid-svg-biqJIcIrQJEtxfHD .icon-shape .label{text-align:center;}#mermaid-svg-biqJIcIrQJEtxfHD .node.clickable{cursor:pointer;}#mermaid-svg-biqJIcIrQJEtxfHD .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-biqJIcIrQJEtxfHD .arrowheadPath{fill:#333333;}#mermaid-svg-biqJIcIrQJEtxfHD .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-biqJIcIrQJEtxfHD .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-biqJIcIrQJEtxfHD .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-biqJIcIrQJEtxfHD .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-biqJIcIrQJEtxfHD .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-biqJIcIrQJEtxfHD .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-biqJIcIrQJEtxfHD .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-biqJIcIrQJEtxfHD .cluster text{fill:#333;}#mermaid-svg-biqJIcIrQJEtxfHD .cluster span{color:#333;}#mermaid-svg-biqJIcIrQJEtxfHD div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-biqJIcIrQJEtxfHD .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-biqJIcIrQJEtxfHD rect.text{fill:none;stroke-width:0;}#mermaid-svg-biqJIcIrQJEtxfHD .icon-shape,#mermaid-svg-biqJIcIrQJEtxfHD .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-biqJIcIrQJEtxfHD .icon-shape p,#mermaid-svg-biqJIcIrQJEtxfHD .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-biqJIcIrQJEtxfHD .icon-shape .label rect,#mermaid-svg-biqJIcIrQJEtxfHD .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-biqJIcIrQJEtxfHD .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-biqJIcIrQJEtxfHD .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-biqJIcIrQJEtxfHD :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 论点:

      传播是核心
      无传播: 47.1

      vs 完整: 49.4

      跌 2.3%
      无传播的 50h

      < 有传播的 12.5h
      传播本质=

      几何一致性自监督
      工程含义:

      任何场景的 matching

      都应设计传播机制

  • 在-the-wild 视频是图像匹配的"金矿"

    • #mermaid-svg-Bgz4NZL67INEy9cZ{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Bgz4NZL67INEy9cZ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Bgz4NZL67INEy9cZ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Bgz4NZL67INEy9cZ .error-icon{fill:#552222;}#mermaid-svg-Bgz4NZL67INEy9cZ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Bgz4NZL67INEy9cZ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Bgz4NZL67INEy9cZ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Bgz4NZL67INEy9cZ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Bgz4NZL67INEy9cZ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Bgz4NZL67INEy9cZ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Bgz4NZL67INEy9cZ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Bgz4NZL67INEy9cZ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Bgz4NZL67INEy9cZ .marker.cross{stroke:#333333;}#mermaid-svg-Bgz4NZL67INEy9cZ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Bgz4NZL67INEy9cZ p{margin:0;}#mermaid-svg-Bgz4NZL67INEy9cZ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Bgz4NZL67INEy9cZ .cluster-label text{fill:#333;}#mermaid-svg-Bgz4NZL67INEy9cZ .cluster-label span{color:#333;}#mermaid-svg-Bgz4NZL67INEy9cZ .cluster-label span p{background-color:transparent;}#mermaid-svg-Bgz4NZL67INEy9cZ .label text,#mermaid-svg-Bgz4NZL67INEy9cZ span{fill:#333;color:#333;}#mermaid-svg-Bgz4NZL67INEy9cZ .node rect,#mermaid-svg-Bgz4NZL67INEy9cZ .node circle,#mermaid-svg-Bgz4NZL67INEy9cZ .node ellipse,#mermaid-svg-Bgz4NZL67INEy9cZ .node polygon,#mermaid-svg-Bgz4NZL67INEy9cZ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Bgz4NZL67INEy9cZ .rough-node .label text,#mermaid-svg-Bgz4NZL67INEy9cZ .node .label text,#mermaid-svg-Bgz4NZL67INEy9cZ .image-shape .label,#mermaid-svg-Bgz4NZL67INEy9cZ .icon-shape .label{text-anchor:middle;}#mermaid-svg-Bgz4NZL67INEy9cZ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Bgz4NZL67INEy9cZ .rough-node .label,#mermaid-svg-Bgz4NZL67INEy9cZ .node .label,#mermaid-svg-Bgz4NZL67INEy9cZ .image-shape .label,#mermaid-svg-Bgz4NZL67INEy9cZ .icon-shape .label{text-align:center;}#mermaid-svg-Bgz4NZL67INEy9cZ .node.clickable{cursor:pointer;}#mermaid-svg-Bgz4NZL67INEy9cZ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Bgz4NZL67INEy9cZ .arrowheadPath{fill:#333333;}#mermaid-svg-Bgz4NZL67INEy9cZ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Bgz4NZL67INEy9cZ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Bgz4NZL67INEy9cZ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Bgz4NZL67INEy9cZ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Bgz4NZL67INEy9cZ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Bgz4NZL67INEy9cZ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Bgz4NZL67INEy9cZ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Bgz4NZL67INEy9cZ .cluster text{fill:#333;}#mermaid-svg-Bgz4NZL67INEy9cZ .cluster span{color:#333;}#mermaid-svg-Bgz4NZL67INEy9cZ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Bgz4NZL67INEy9cZ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Bgz4NZL67INEy9cZ rect.text{fill:none;stroke-width:0;}#mermaid-svg-Bgz4NZL67INEy9cZ .icon-shape,#mermaid-svg-Bgz4NZL67INEy9cZ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Bgz4NZL67INEy9cZ .icon-shape p,#mermaid-svg-Bgz4NZL67INEy9cZ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Bgz4NZL67INEy9cZ .icon-shape .label rect,#mermaid-svg-Bgz4NZL67INEy9cZ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Bgz4NZL67INEy9cZ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Bgz4NZL67INEy9cZ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Bgz4NZL67INEy9cZ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 论点:

      互联网视频

      是匹配数据的未来
      数量:无限

      vs SfM 受限
      多样性:26 国 43 城

      vs MegaDepth 196 场景
      时效性:实时可获取

      vs SfM 重建需几天
      标注成本:0

      vs SfM 算力成本
      工程含义:

      建视频采集 +

      自训练 pipeline

  • 零样本评测比 in-domain 评测更可信

    • #mermaid-svg-VaJlITSC6DHSotaK{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-VaJlITSC6DHSotaK .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-VaJlITSC6DHSotaK .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-VaJlITSC6DHSotaK .error-icon{fill:#552222;}#mermaid-svg-VaJlITSC6DHSotaK .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-VaJlITSC6DHSotaK .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-VaJlITSC6DHSotaK .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-VaJlITSC6DHSotaK .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-VaJlITSC6DHSotaK .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-VaJlITSC6DHSotaK .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-VaJlITSC6DHSotaK .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-VaJlITSC6DHSotaK .marker{fill:#333333;stroke:#333333;}#mermaid-svg-VaJlITSC6DHSotaK .marker.cross{stroke:#333333;}#mermaid-svg-VaJlITSC6DHSotaK svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-VaJlITSC6DHSotaK p{margin:0;}#mermaid-svg-VaJlITSC6DHSotaK .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-VaJlITSC6DHSotaK .cluster-label text{fill:#333;}#mermaid-svg-VaJlITSC6DHSotaK .cluster-label span{color:#333;}#mermaid-svg-VaJlITSC6DHSotaK .cluster-label span p{background-color:transparent;}#mermaid-svg-VaJlITSC6DHSotaK .label text,#mermaid-svg-VaJlITSC6DHSotaK span{fill:#333;color:#333;}#mermaid-svg-VaJlITSC6DHSotaK .node rect,#mermaid-svg-VaJlITSC6DHSotaK .node circle,#mermaid-svg-VaJlITSC6DHSotaK .node ellipse,#mermaid-svg-VaJlITSC6DHSotaK .node polygon,#mermaid-svg-VaJlITSC6DHSotaK .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-VaJlITSC6DHSotaK .rough-node .label text,#mermaid-svg-VaJlITSC6DHSotaK .node .label text,#mermaid-svg-VaJlITSC6DHSotaK .image-shape .label,#mermaid-svg-VaJlITSC6DHSotaK .icon-shape .label{text-anchor:middle;}#mermaid-svg-VaJlITSC6DHSotaK .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-VaJlITSC6DHSotaK .rough-node .label,#mermaid-svg-VaJlITSC6DHSotaK .node .label,#mermaid-svg-VaJlITSC6DHSotaK .image-shape .label,#mermaid-svg-VaJlITSC6DHSotaK .icon-shape .label{text-align:center;}#mermaid-svg-VaJlITSC6DHSotaK .node.clickable{cursor:pointer;}#mermaid-svg-VaJlITSC6DHSotaK .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-VaJlITSC6DHSotaK .arrowheadPath{fill:#333333;}#mermaid-svg-VaJlITSC6DHSotaK .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-VaJlITSC6DHSotaK .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-VaJlITSC6DHSotaK .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-VaJlITSC6DHSotaK .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-VaJlITSC6DHSotaK .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-VaJlITSC6DHSotaK .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-VaJlITSC6DHSotaK .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-VaJlITSC6DHSotaK .cluster text{fill:#333;}#mermaid-svg-VaJlITSC6DHSotaK .cluster span{color:#333;}#mermaid-svg-VaJlITSC6DHSotaK div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-VaJlITSC6DHSotaK .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-VaJlITSC6DHSotaK rect.text{fill:none;stroke-width:0;}#mermaid-svg-VaJlITSC6DHSotaK .icon-shape,#mermaid-svg-VaJlITSC6DHSotaK .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-VaJlITSC6DHSotaK .icon-shape p,#mermaid-svg-VaJlITSC6DHSotaK .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-VaJlITSC6DHSotaK .icon-shape .label rect,#mermaid-svg-VaJlITSC6DHSotaK .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-VaJlITSC6DHSotaK .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-VaJlITSC6DHSotaK .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-VaJlITSC6DHSotaK :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 论点:

      零样本 = 真实能力
      In-domain 涨点:小

      Zero-shot 涨点:大
      RootSIFT 在 ZEB 多个

      子集超过学习模型
      GIM 在 BEV

      零样本泛化
      工程含义:

      ZEB 应作为标配评测

  • 赋能其他算法:GIM 作为通用框架

    python 复制代码
    # GIM 的核心好处:它不重新发明轮子
    # 它是一个"训练范式",可以套在现有匹配器上
    
    # 论文已经验证的架构:
    gim_applicable = ['SuperGlue', 'LoFTR', 'DKM']
    
    # 论文没验证但应该可用的架构:
    gim_should_work = [
        'LightGlue',     # SuperGlue 改进
        'SGMNet',
        'ASpanFormer',
        'ELoFTR',
        'MatchFormer',
        'ASTR',
        'TopicFM',
        'RoMa',  # 需要改输出格式
        'PatchFormer',
    ]
    
    # 论文没验证但理论上不兼容的:
    gim_not_work = [
        '非 CNN/Transformer 架构',
        '需要显式 3D 重建的架构',
        '训练范式完全不同的(纯 self-supervised)',
    ]
  • 把 GIM 套到算法上的具体步骤

    python 复制代码
    # 假设你要把 GIM 应用到 ALIKED + LightGlue + ARS-MAGSAC
    
    # Step 1: 准备 base 模型
    base_model = load_pretrained(
        detector='ALIKED',
        matcher='LightGlue',
        estimator='ARS-MAGSAC',
        trained_on='MegaDepth'  # 室外
    )
    
    # Step 2: 设计互补方法
    complementary_methods = [
        'RootSIFT',  # 手工特征,强泛化
        'RootSIFT + SuperGlue',  # 轻量匹配
        'RootSIFT + LoFTR',  # 中等匹配
        # 注意:不能用 ALIKED+LightGlue(就是自己)
    ]
    
    # Step 3: 采集视频数据
    video_data = collect_youtube_videos(
        duration_hours=50,
        license='CC',
        scenarios=['industrial', 'outdoor', 'multi-lighting']
    )
    
    # Step 4: 多方法匹配 + MAGSAC 过滤
    labels = generate_labels(
        video_data, 
        base_model, 
        complementary_methods
    )
    
    # Step 5: 标签传播(核心!)
    propagated_labels = iterative_propagation(
        labels, 
        min_correspondences=1024,
        pixel_threshold=1.0
    )
    
    # Step 6: 训练最终 GIM 模型
    final_model = train_with_gim_recipe(
        base_model,
        training_data=mix_data(megadepth, video_data, ratio=0.5),
        augmentation=add_perspective_transform(),
        epochs=50,
    )
  • GIM 的迁移能力矩阵

    • #mermaid-svg-KshHxNO9fOpuS8mM{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-KshHxNO9fOpuS8mM .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-KshHxNO9fOpuS8mM .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-KshHxNO9fOpuS8mM .error-icon{fill:#552222;}#mermaid-svg-KshHxNO9fOpuS8mM .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-KshHxNO9fOpuS8mM .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-KshHxNO9fOpuS8mM .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-KshHxNO9fOpuS8mM .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-KshHxNO9fOpuS8mM .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-KshHxNO9fOpuS8mM .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-KshHxNO9fOpuS8mM .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-KshHxNO9fOpuS8mM .marker{fill:#333333;stroke:#333333;}#mermaid-svg-KshHxNO9fOpuS8mM .marker.cross{stroke:#333333;}#mermaid-svg-KshHxNO9fOpuS8mM svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-KshHxNO9fOpuS8mM p{margin:0;}#mermaid-svg-KshHxNO9fOpuS8mM .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-KshHxNO9fOpuS8mM .cluster-label text{fill:#333;}#mermaid-svg-KshHxNO9fOpuS8mM .cluster-label span{color:#333;}#mermaid-svg-KshHxNO9fOpuS8mM .cluster-label span p{background-color:transparent;}#mermaid-svg-KshHxNO9fOpuS8mM .label text,#mermaid-svg-KshHxNO9fOpuS8mM span{fill:#333;color:#333;}#mermaid-svg-KshHxNO9fOpuS8mM .node rect,#mermaid-svg-KshHxNO9fOpuS8mM .node circle,#mermaid-svg-KshHxNO9fOpuS8mM .node ellipse,#mermaid-svg-KshHxNO9fOpuS8mM .node polygon,#mermaid-svg-KshHxNO9fOpuS8mM .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-KshHxNO9fOpuS8mM .rough-node .label text,#mermaid-svg-KshHxNO9fOpuS8mM .node .label text,#mermaid-svg-KshHxNO9fOpuS8mM .image-shape .label,#mermaid-svg-KshHxNO9fOpuS8mM .icon-shape .label{text-anchor:middle;}#mermaid-svg-KshHxNO9fOpuS8mM .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-KshHxNO9fOpuS8mM .rough-node .label,#mermaid-svg-KshHxNO9fOpuS8mM .node .label,#mermaid-svg-KshHxNO9fOpuS8mM .image-shape .label,#mermaid-svg-KshHxNO9fOpuS8mM .icon-shape .label{text-align:center;}#mermaid-svg-KshHxNO9fOpuS8mM .node.clickable{cursor:pointer;}#mermaid-svg-KshHxNO9fOpuS8mM .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-KshHxNO9fOpuS8mM .arrowheadPath{fill:#333333;}#mermaid-svg-KshHxNO9fOpuS8mM .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-KshHxNO9fOpuS8mM .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-KshHxNO9fOpuS8mM .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KshHxNO9fOpuS8mM .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-KshHxNO9fOpuS8mM .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KshHxNO9fOpuS8mM .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-KshHxNO9fOpuS8mM .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-KshHxNO9fOpuS8mM .cluster text{fill:#333;}#mermaid-svg-KshHxNO9fOpuS8mM .cluster span{color:#333;}#mermaid-svg-KshHxNO9fOpuS8mM div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-KshHxNO9fOpuS8mM .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-KshHxNO9fOpuS8mM rect.text{fill:none;stroke-width:0;}#mermaid-svg-KshHxNO9fOpuS8mM .icon-shape,#mermaid-svg-KshHxNO9fOpuS8mM .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KshHxNO9fOpuS8mM .icon-shape p,#mermaid-svg-KshHxNO9fOpuS8mM .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-KshHxNO9fOpuS8mM .icon-shape .label rect,#mermaid-svg-KshHxNO9fOpuS8mM .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KshHxNO9fOpuS8mM .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-KshHxNO9fOpuS8mM .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-KshHxNO9fOpuS8mM :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} GIM 范式
      应用到不同架构
      应用到不同数据
      应用到不同任务
      稀疏:SuperGlue/LightGlue
      半稠密:LoFTR/ELoFTR
      稠密:DKM/RoMa
      任何自定义架构
      通用视频:YouTube
      工业视频:产线采集
      医学视频:手术录像
      遥感视频:卫星
      相对位姿:已验证
      单应估计:已验证
      视觉定位:已验证
      3D 重建:已验证
      稠密建图:可迁移
      视频跟踪:可迁移
      NVS / 3DGS:可迁移

整体性论断与认知构建

  • GIM 给图像匹配领域的根本性启示

    • #mermaid-svg-bMXiFLIk5ItBfdVP{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-bMXiFLIk5ItBfdVP .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-bMXiFLIk5ItBfdVP .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-bMXiFLIk5ItBfdVP .error-icon{fill:#552222;}#mermaid-svg-bMXiFLIk5ItBfdVP .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bMXiFLIk5ItBfdVP .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-bMXiFLIk5ItBfdVP .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bMXiFLIk5ItBfdVP .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bMXiFLIk5ItBfdVP .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-bMXiFLIk5ItBfdVP .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bMXiFLIk5ItBfdVP .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bMXiFLIk5ItBfdVP .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bMXiFLIk5ItBfdVP .marker.cross{stroke:#333333;}#mermaid-svg-bMXiFLIk5ItBfdVP svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bMXiFLIk5ItBfdVP p{margin:0;}#mermaid-svg-bMXiFLIk5ItBfdVP .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bMXiFLIk5ItBfdVP .cluster-label text{fill:#333;}#mermaid-svg-bMXiFLIk5ItBfdVP .cluster-label span{color:#333;}#mermaid-svg-bMXiFLIk5ItBfdVP .cluster-label span p{background-color:transparent;}#mermaid-svg-bMXiFLIk5ItBfdVP .label text,#mermaid-svg-bMXiFLIk5ItBfdVP span{fill:#333;color:#333;}#mermaid-svg-bMXiFLIk5ItBfdVP .node rect,#mermaid-svg-bMXiFLIk5ItBfdVP .node circle,#mermaid-svg-bMXiFLIk5ItBfdVP .node ellipse,#mermaid-svg-bMXiFLIk5ItBfdVP .node polygon,#mermaid-svg-bMXiFLIk5ItBfdVP .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bMXiFLIk5ItBfdVP .rough-node .label text,#mermaid-svg-bMXiFLIk5ItBfdVP .node .label text,#mermaid-svg-bMXiFLIk5ItBfdVP .image-shape .label,#mermaid-svg-bMXiFLIk5ItBfdVP .icon-shape .label{text-anchor:middle;}#mermaid-svg-bMXiFLIk5ItBfdVP .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-bMXiFLIk5ItBfdVP .rough-node .label,#mermaid-svg-bMXiFLIk5ItBfdVP .node .label,#mermaid-svg-bMXiFLIk5ItBfdVP .image-shape .label,#mermaid-svg-bMXiFLIk5ItBfdVP .icon-shape .label{text-align:center;}#mermaid-svg-bMXiFLIk5ItBfdVP .node.clickable{cursor:pointer;}#mermaid-svg-bMXiFLIk5ItBfdVP .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-bMXiFLIk5ItBfdVP .arrowheadPath{fill:#333333;}#mermaid-svg-bMXiFLIk5ItBfdVP .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bMXiFLIk5ItBfdVP .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bMXiFLIk5ItBfdVP .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bMXiFLIk5ItBfdVP .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-bMXiFLIk5ItBfdVP .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bMXiFLIk5ItBfdVP .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-bMXiFLIk5ItBfdVP .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bMXiFLIk5ItBfdVP .cluster text{fill:#333;}#mermaid-svg-bMXiFLIk5ItBfdVP .cluster span{color:#333;}#mermaid-svg-bMXiFLIk5ItBfdVP div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bMXiFLIk5ItBfdVP .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-bMXiFLIk5ItBfdVP rect.text{fill:none;stroke-width:0;}#mermaid-svg-bMXiFLIk5ItBfdVP .icon-shape,#mermaid-svg-bMXiFLIk5ItBfdVP .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bMXiFLIk5ItBfdVP .icon-shape p,#mermaid-svg-bMXiFLIk5ItBfdVP .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-bMXiFLIk5ItBfdVP .icon-shape .label rect,#mermaid-svg-bMXiFLIk5ItBfdVP .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bMXiFLIk5ItBfdVP .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-bMXiFLIk5ItBfdVP .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-bMXiFLIk5ItBfdVP :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 范式转变
      旧:模型驱动
      新:数据驱动
      人工设计特征

      COLMAP 重建

      小规模训练
      数据多样性

      自训练标签

      大规模预训练
      元认知:

      计算机视觉的

      'foundation model' 时代

      已经蔓延到 matching

  • GIM 在图像匹配发展史的位置

    • #mermaid-svg-wx4plKAeDTgg65DH{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-wx4plKAeDTgg65DH .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-wx4plKAeDTgg65DH .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-wx4plKAeDTgg65DH .error-icon{fill:#552222;}#mermaid-svg-wx4plKAeDTgg65DH .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-wx4plKAeDTgg65DH .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-wx4plKAeDTgg65DH .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-wx4plKAeDTgg65DH .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-wx4plKAeDTgg65DH .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-wx4plKAeDTgg65DH .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-wx4plKAeDTgg65DH .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-wx4plKAeDTgg65DH .marker{fill:#333333;stroke:#333333;}#mermaid-svg-wx4plKAeDTgg65DH .marker.cross{stroke:#333333;}#mermaid-svg-wx4plKAeDTgg65DH svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wx4plKAeDTgg65DH p{margin:0;}#mermaid-svg-wx4plKAeDTgg65DH .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-wx4plKAeDTgg65DH .cluster-label text{fill:#333;}#mermaid-svg-wx4plKAeDTgg65DH .cluster-label span{color:#333;}#mermaid-svg-wx4plKAeDTgg65DH .cluster-label span p{background-color:transparent;}#mermaid-svg-wx4plKAeDTgg65DH .label text,#mermaid-svg-wx4plKAeDTgg65DH span{fill:#333;color:#333;}#mermaid-svg-wx4plKAeDTgg65DH .node rect,#mermaid-svg-wx4plKAeDTgg65DH .node circle,#mermaid-svg-wx4plKAeDTgg65DH .node ellipse,#mermaid-svg-wx4plKAeDTgg65DH .node polygon,#mermaid-svg-wx4plKAeDTgg65DH .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-wx4plKAeDTgg65DH .rough-node .label text,#mermaid-svg-wx4plKAeDTgg65DH .node .label text,#mermaid-svg-wx4plKAeDTgg65DH .image-shape .label,#mermaid-svg-wx4plKAeDTgg65DH .icon-shape .label{text-anchor:middle;}#mermaid-svg-wx4plKAeDTgg65DH .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-wx4plKAeDTgg65DH .rough-node .label,#mermaid-svg-wx4plKAeDTgg65DH .node .label,#mermaid-svg-wx4plKAeDTgg65DH .image-shape .label,#mermaid-svg-wx4plKAeDTgg65DH .icon-shape .label{text-align:center;}#mermaid-svg-wx4plKAeDTgg65DH .node.clickable{cursor:pointer;}#mermaid-svg-wx4plKAeDTgg65DH .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-wx4plKAeDTgg65DH .arrowheadPath{fill:#333333;}#mermaid-svg-wx4plKAeDTgg65DH .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-wx4plKAeDTgg65DH .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-wx4plKAeDTgg65DH .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wx4plKAeDTgg65DH .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-wx4plKAeDTgg65DH .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wx4plKAeDTgg65DH .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-wx4plKAeDTgg65DH .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-wx4plKAeDTgg65DH .cluster text{fill:#333;}#mermaid-svg-wx4plKAeDTgg65DH .cluster span{color:#333;}#mermaid-svg-wx4plKAeDTgg65DH div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-wx4plKAeDTgg65DH .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-wx4plKAeDTgg65DH rect.text{fill:none;stroke-width:0;}#mermaid-svg-wx4plKAeDTgg65DH .icon-shape,#mermaid-svg-wx4plKAeDTgg65DH .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wx4plKAeDTgg65DH .icon-shape p,#mermaid-svg-wx4plKAeDTgg65DH .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-wx4plKAeDTgg65DH .icon-shape .label rect,#mermaid-svg-wx4plKAeDTgg65DH .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wx4plKAeDTgg65DH .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-wx4plKAeDTgg65DH .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-wx4plKAeDTgg65DH :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} MegaDepth

      领域数据集
      SuperGlue

      GNN 匹配
      LoFTR

      半稠密
      DKM

      稠密
      GIM

      视频自训练

      数据范式
      RoMa

      基础模型

      架构范式
      数据 + 自训练
      基础模型 + 概率化
      2025+:

      数据 + 模型 + 自训练

      三体合一

  • GIM 把图像匹配从"模型 + 小数据 + 域分裂"推进到"自训练 + 大数据 + 跨域统一",核心方法是"用互补方法 + 自训练 + 标签传播"在互联网视频上高效生成多样化训练数据。

相关推荐
昵称是6硬币7 个月前
Efficient LoFTR论文精读(逐段解析)
特征匹配·图像匹配·图像配准·loftr·eloftr
昵称是6硬币7 个月前
LoFTR论文精读(逐段解析)
transformer·特征匹配·配准·图像匹配·loftr
AndrewHZ1 年前
【图像处理基石】图像匹配技术:从原理到实践,OpenCV实现与进阶方向
图像处理·人工智能·opencv·图像匹配·算法原理
Matlab_ImagePro2 年前
【图像匹配】基于Harris算法的图像匹配,matlab实现
图像匹配·matlab图像处理·harris角点检测·matlab图像匹配·harris算法·harris匹配·matlab harris匹配
Matlab_ImagePro2 年前
【图像匹配】基于SIFT算法的图像匹配,matlab实现
图像匹配·matlab图像处理·matlab图像匹配·匹配算法·sift算法·matlab sift·sift匹配
Matlab_ImagePro2 年前
【图像匹配】基于SURF算法的图像匹配,matlab实现
图像匹配·matlab图像处理·surf算法·surf匹配·matlab surf算法·matlab图像匹配·匹配算法
小锋学长生活大爆炸3 年前
【教程】Autojs使用OpenCV进行SIFT/BRISK等算法进行图像匹配
javascript·opencv·算法·webpack·autojs·autoxjs·图像匹配