只验社区间桥边,HiSfM在5058图场景上比穷举消歧快17倍

HiSfM: Disambiguating Structure-from-Motion via Scaffold-Anchored Hierarchical Reconstruction

Ziding Zhao, Hainan Cui, Peilin Tao, Shuhan Shen

cs.CV

2026-09-04

中科院自动化所用边不相交生成树搭骨架,只对社区间桥边跑Doppelgangers++。Trafalgar上注册4703张、耗时170分钟,约为穷举消歧的1/18,多数歧义场景不再整场崩掉。

这篇在解决什么

增量式SfM(Structure-from-Motion,从多视图估计相机位姿和稀疏三维点)在重复立面、对称建筑里会整场翻车。错误匹配经常能过RANSAC,一旦写进视图图,位姿误差会顺着那条边扩散,最后出现幻影结构,或把同一栋楼建成两份。

另一头是算力。束调整随相机数变贵,互联网照片集里大量近重复图和过密配对边只会把问题撑大。现有路线常走两个极端:Doppelgangers++这类学习消歧器对候选对几乎全量过一遍,大图集上开销随候选对数目呈平方级增长;CamTrip这类稀疏化会把全局关键桥砍掉,场景裂成好几块。

消歧预算应该打在会污染全局的边上,不是每一条边上。

方法

HiSfM把视图图拆成局部和全局两层,来自中科院自动化所。

局部:每张图只留内点数最高的1个邻居(top-1),再取连通分量当社区。社区内部匹配强、互相撑着,先不花消歧预算。

全局:社区之间的边叫桥。在社区商图上贪心打包K棵边不相交生成树(edge-disjoint spanning trees,EDST),权重仍是内点数。候选桥按权重从高到低走Kruskal,只有同时满足「连接不同并查集」「这个社区对还没用过」「Doppelgangers++分数不低于阈值τ=0.8」才收下。K取约每300张图一棵。K棵树意味着社区图的边连通度至少为K,一条桥挂了还有备份。

骨架建完,社区内的叶子图连到骨架节点上,这些边不再过消歧器。重建分两段:先在验证过的骨架上跑COLMAP得到锚点重建,再按社区内边做PnP配准和三角化,最后做一次全局束调整。

消歧器本身没有新发明,改的是调用位置:只验会把错误传过社区的桥。

结果

后端统一是COLMAP,特征与匹配相同,差在选边和调度。机器是i7-14700K加RTX 3090。

歧义集(Heinly、Yan)上,原版COLMAP全部标错。CamTrip快,但常少注册或过分裂。DG++更稳,时间长一个数量级。HiSfM多数场景给出正确模型,时间和CamTrip同一量级:

场景COLMAPCamTripDG++HiSfM
Berliner Dom失败,180分钟失败1606张 / 598.8分钟1606张 / 17.9分钟
Big Ben失败365张 / 2.4分钟396张 / 89.6分钟394张 / 3.1分钟
Cereal失败14张 / 0.3分钟错误模型 / 1.4分钟25张正确 / 0.2分钟
Cup失败失败64张 / 8.8分钟64张 / 0.4分钟

Cereal上CamTrip只注册约56%的图,DG++模型是错的,HiSfM全注册且最快。Big Ben上注册数和DG++相当,耗时约为其1/29,论文写「超过25倍」。Oats上四种方法都失败。Brandenburg Gate、Church on Spilled Blood、Radcliffe Camera仍会出现分裂模型。

通用互联网照片集(1DSfM、Photo Tourism)上,CamTrip在Trafalgar(5058张)和Montreal Notre Dame上直接失败。Trafalgar上DG++注册3485张、3035分钟,HiSfM注册4703张、170分钟,大约17倍。Piccadilly上1894张、56分钟,对照DG++的1860张、550分钟。Roman Forum上K从4加到5,多15%时间只多4张图,按n/300选K基本够用。

为什么重要

做大场景建图、视觉定位、SLAM参考图的人,瓶颈经常是重复结构把图搞炸,以及消歧器太贵。HiSfM给出一个可落地的折中:消歧预算只打在社区桥上,骨架先定全局,叶子再灌进去。代码已开源。

它是调度和选边的工程,不是新的匹配网络。Doppelgangers++仍是桥上的判官,只是调用次数从平方量级降到大约O(Kn)。若社区划分把一对真歧义图切进同一个连通分量,内部边不会被检查,Oats这类失败仍在。

局限与存疑

消融只扫了K,没系统比top-k取2或3会不会更稳。社区内部默认「内点多等于真几何」,对称室内、重复货架恰恰会在局部堆出高内点假边。Oats全员失败、若干地标过分裂,说明桥级验证挡不住社区内部的污染。

DG++阈值τ=0.8原样沿用,没有分析阈值和K的交互。评测用注册数、重投影、track长度做代理,没有独立的位姿真值误差。Trafalgar图1写4706张、146分钟,表II写5058张、170分钟,对外口径应以表为准。

CamTrip在不少中小场景仍然更快。要完整模型时HiSfM更合适;要尽快出一版稀疏图,稀疏化路线还没被取代。

术语

原文与代码

社区讨论

相关论文

全部论文解读