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同一量级:
| 场景 | COLMAP | CamTrip | DG++ | 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更合适;要尽快出一版稀疏图,稀疏化路线还没被取代。