← 主页 胡洋的博客
← 返回博客首页

LightGlue 的局部特征匹配与自适应推理

本文解读 Lindenberger、Sarlin 和 Pollefeys 的 LightGlue: Local Feature Matching at Light Speed(ICCV 2023)。论文围绕“保持匹配质量,同时减少不必要的计算”设计匹配器:跨图注意力复用双向分数,轻量匹配头让逐层监督和更快的训练收敛成为可能;推理时根据图像对难度减少层数,并尽早移除确定无匹配的点。下文说明每步怎样计算、模型怎样训练,以及实验支持了哪些结论。

两幅图都拍到一排窗户时,局部外观相近的窗角很容易配错;画面边缘还有只出现在一幅图中的点,根本不该配出去。换一对重叠更多的图像,许多对应又可能很快明确。匹配器因此面对两种不同的负担:要利用足够的上下文处理歧义,又不该让每对图像、每个无匹配点都耗尽相同的计算。

上一篇 SuperGlue 文章介绍了让两组关键点交换上下文、再通过最优传输形成部分匹配的流程。LightGlue 沿用“两组局部特征共同推理”的入口,重新设计了位置如何进入注意力、对应如何预测,以及网络何时继续计算。它仍处在特征提取与几何估计之间:输入是关键点及描述符,输出是跨图对应;相机位姿依旧由后续几何方法估计。

这些改动都服务于计算效率,但省的是不同地方:跨图注意力避免双向重复计算点对分数,匹配头避免每层迭代求分配。论文进一步提出两项自适应推理机制:**图像对容易时少运行几层;一个点已被可靠地判为无匹配时,让它退出后续层。**前者改变网络深度,后者缩小参与注意力的点集。要理解它们何以可行,先看一层网络在计算什么,以及每层的预测怎样训练。

一层网络更新了什么

设图像 AA、BB 分别有 MM、NN 个关键点。每个点有归一化图像位置 pi∈[0,1]2p_i\in[0,1]^2 和局部外观描述符 di∈Rdd_i\in\mathbb R^d。点在网络中的状态起初就是描述符 xi(0)=dix_i^{(0)}=d_i。一层包含一次图内自注意力和一次跨图注意力:前者让点读取本图其他点,后者让它读取另一幅图的点。

无论信息来自哪幅图,注意力单元都先按分数 aijISa_{ij}^{IS} 对来源点 jj 加权,再用收到的消息更新目标点 ii:

miI←S=∑j∈SSoftmax⁡j(aijIS)WxjS,xiI←xiI+MLP⁡([xiI∣miI←S]).m_i^{I\leftarrow S} =\sum_{j\in S}\operatorname{Softmax}_{j}(a_{ij}^{IS})W x_j^S, \qquad x_i^I\leftarrow x_i^I+ \operatorname{MLP}([x_i^I\mid m_i^{I\leftarrow S}]).

II 是目标点所在图像,SS 是消息来源。aijISa_{ij}^{IS} 只决定这一层从 jj 读取多少信息,还不是最终认定 ii 与 jj 匹配的分数。每层更新后的状态都可以交给匹配头产生一次对应预测;网络再决定使用当前结果,或继续下一层。

LightGlue 原论文图 3:网络结构与自适应匹配流程

原论文图 3。蓝、红两组点先分别进行图内注意力,再跨图交换信息;灰色的置信度分支决定是否继续,绿色区域移除确定无匹配的点;右侧匹配头根据相似度和可匹配度形成对应。图中的位置编码符号只接在图内注意力上。

接下来最值得细看的是图内注意力的位置编码。它说明 LightGlue 怎样让网络反复看见关键点之间的布局,而不用把每个点的位置永久加进初始描述符。

旋转编码怎样让注意力看到相对位置

只看外观,一排窗角可能几乎相同;某个窗角相对门框、屋檐的方位却有辨识力。LightGlue 在图内注意力的分数中使用

aij=qiTR(pj−pi)kj.a_{ij}=q_i^{\mathsf T}R(p_j-p_i)k_j.

qiq_i、kjk_j 是从当前点状态投影出的 query 和 key,都是 dd 维向量。pip_i、pjp_j 才是二维坐标。因此,pj−pip_j-p_i 是二维位移,而 R(pj−pi)R(p_j-p_i) 必须是一个 d×dd\times d 矩阵,才能放在 qiTq_i^{\mathsf T} 与 kjk_j 之间。论文给出的矩阵是

R^(θ)=(cos⁡θ−sin⁡θsin⁡θcos⁡θ),R(p)=(R^(b1Tp)0⋯00R^(b2Tp)⋱⋮⋮⋱⋱00⋯0R^(bd/2Tp))∈Rd×d.\widehat R(\theta)= \begin{pmatrix} \cos\theta&-\sin\theta\\ \sin\theta&\cos\theta \end{pmatrix}, \qquad R(p)= \begin{pmatrix} \widehat R(b_1^{\mathsf T}p)&0&\cdots&0\\ 0&\widehat R(b_2^{\mathsf T}p)&\ddots&\vdots\\ \vdots&\ddots&\ddots&0\\ 0&\cdots&0&\widehat R(b_{d/2}^{\mathsf T}p) \end{pmatrix} \in\mathbb R^{d\times d}.

这个大矩阵的非零部分是 d/2d/2 个 2×22\times2 小块。第 rr 块只作用于特征向量的第 2r−12r-1、2r2r 个分量。每个 br=(br,u,br,v)∈R2b_r=(b_{r,u},b_{r,v})\in\mathbb R^2 是训练学到的参数;给它一个二维位移 δ=(Δu,Δv)\delta=(\Delta u,\Delta v),先做内积,得到这一块的旋转角 θr=brTδ=br,uΔu+br,vΔv\theta_r=b_r^{\mathsf T}\delta=b_{r,u}\Delta u+b_{r,v}\Delta v,再把 θr\theta_r 代入 R^\widehat R。所以二维向量没有直接“变成一个角”:每组特征通道各用自己学到的 brb_r,从同一个位移算出一个角。这个角描述特征空间中的旋转,不是相机转角,也不是位移向量的朝向角。

把维度缩到 d=4d=4,就能把整步计算写出来。以下参数和向量只为演算而设:取 δ=(1/2,1/4)\delta=(1/2,1/4)、b1=(π,0)b_1=(\pi,0)、b2=(0,π)b_2=(0,\pi),于是 θ1=π/2\theta_1=\pi/2、θ2=π/4\theta_2=\pi/4。两个旋转块拼成

R(δ)=(0−10010000022−22002222).R(\delta)= \begin{pmatrix} 0&-1&0&0\\ 1&0&0&0\\ 0&0&\frac{\sqrt2}{2}&-\frac{\sqrt2}{2}\\ 0&0&\frac{\sqrt2}{2}&\frac{\sqrt2}{2} \end{pmatrix}.

若此时 qi=kj=(1,0,1,0)Tq_i=k_j=(1,0,1,0)^{\mathsf T},矩阵先把 kjk_j 变成 (0,1,2/2,2/2)T(0,1,\sqrt2/2,\sqrt2/2)^{\mathsf T},再与 qiq_i 点乘,得到 aij=2/2a_{ij}=\sqrt2/2。同样的 qiq_i 和 kjk_j,若两点位移为零,则 R(0)=IR(0)=I,分数是 22。这展示了位置究竟进入了哪里:它改变特征向量参与点积时的方向,从而改变注意力分数;RR 没有移动图像中的点。

为什么最终式子里出现的是 pj−pip_j-p_i?实现时可以先按各自的位置旋转两端的特征:q~i=R(pi)qi\widetilde q_i=R(p_i)q_i,k~j=R(pj)kj\widetilde k_j=R(p_j)k_j。对上面矩阵中的任意一块,两个角的差正好是 brTpj−brTpi=brT(pj−pi)b_r^{\mathsf T}p_j-b_r^{\mathsf T}p_i=b_r^{\mathsf T}(p_j-p_i),因此

R^(brTpi)TR^(brTpj)=R^ ⁣(brT(pj−pi)),R(pi)TR(pj)=R(pj−pi),\widehat R(b_r^{\mathsf T}p_i)^{\mathsf T} \widehat R(b_r^{\mathsf T}p_j) =\widehat R\!\left(b_r^{\mathsf T}(p_j-p_i)\right), \qquad R(p_i)^{\mathsf T}R(p_j)=R(p_j-p_i),

进而

q~iTk~j=qiTR(pj−pi)kj.\widetilde q_i^{\mathsf T}\widetilde k_j =q_i^{\mathsf T}R(p_j-p_i)k_j.

这就是 rotary encoding 的关键:分别对每个点做一次位置旋转,点积中自然留下两点的相对位移。无需为每一对点单独生成一份位置编码。位置在每层图内注意力中都会参与打分;点的位置不变,旋转角可预先计算并复用,而本层学到的 query、key 仍会随点状态更新。value 没有施加这项旋转,因此位置只影响本层“读谁”,不会被直接写入聚合的消息。

若两个点在图像中同时平移相同的二维量,位置编码里的 pj−pip_j-p_i 不变。论文用同一近似平行于成像平面的场景结构解释这种相对表达的动机;一般透视变化下,二维相对距离并不保证不变。论文的问题表述把位置写在 [0,1]2[0,1]^2,实现附录则将坐标映射到保留图像长宽比的 [−1,1][-1,1] 范围;上述旋转关系在两种归一化约定下都成立。

跨图注意力怎样交换信息

图内注意力更新完每幅图的点,接下来每个点要从另一幅图的所有点读取信息。这里最耗计算的是两组点之间的两两打分:AA 有 MM 个点、BB 有 NN 个点,一个方向就要计算 MNMN 个分数。常规的双向 cross attention 分别计算

QAKBT∈RM×N,QBKAT∈RN×M.Q_AK_B^{\mathsf T}\in\mathbb R^{M\times N}, \qquad Q_BK_A^{\mathsf T}\in\mathbb R^{N\times M}.

QA,KAQ_A,K_A 是 AA 中各点的 query、key 排成的矩阵,QB,KBQ_B,K_B 同理。因为 query 与 key 是不同投影,这两张分数矩阵一般不互为转置,两个方向都得各算一遍点对内积。**LightGlue 为了省掉第二遍计算,在跨图注意力中为每个点计算 key,不计算 query。**于是它只需形成一次矩阵 KAKBTK_AK_B^{\mathsf T};对具体点对,论文的打分式为

aijAB=(kiA)TkjB=ajiBA.a_{ij}^{AB}=(k_i^A)^{\mathsf T}k_j^B =a_{ji}^{BA}.

反方向直接使用同一矩阵的转置,原本两次 O(MNd)O(MNd) 的点对打分变成一次。这一步仍是 cross attention:对 AiA_i,沿所有 BjB_j 对分数做 softmax,按权重汇总 BB 的 value;对 BjB_j,沿所有 AiA_i 归一化,汇总 AA 的 value。两边读取的是另一幅图的信息,归一化方向与收到的消息各不相同。省下的是相似度矩阵的重复计算,不是省掉反方向的消息传递。论文附录的模块计时显示跨图注意力因此快约 33%33\%;两方向的 softmax 仍须计算,所以总耗时不会减半。论文称这种写法为双向注意力。图内注意力仍用带 RR 的 qkqk;跨图不加相对位置旋转,因为两幅图的二维坐标之差没有同图位移的含义。

经过图内、图间注意力,一点的状态既带有本图布局线索,也受到另一幅图候选的影响。直到这里,网络仍只是在更新特征;哪些点最终配成对,要由下面的匹配头决定。

相似度与可匹配度一起形成对应

匹配头用两幅图更新后的点状态计算点对相似度:

Sij=Linear⁡(xiA)TLinear⁡(xjB).S_{ij}=\operatorname{Linear}(x_i^A)^{\mathsf T} \operatorname{Linear}(x_j^B).

SijS_{ij} 与上一节的注意力分数 aijABa_{ij}^{AB} 作用不同:aa 控制某一层如何交换信息,SS 是匹配头对最终候选点对的评分。仅有 SS 仍不够。一个只出现在图像 AA 中的窗角,也会在 BB 的所有候选里找到“最像”的点;排第一不意味着它真的有对应。LightGlue 因而为每个点另预测一个可匹配度:

σi=Sigmoid⁡(Linear⁡(xi))∈[0,1].\sigma_i=\operatorname{Sigmoid}(\operatorname{Linear}(x_i))\in[0,1].

σi\sigma_i 估计该点在另一幅图中能否找到对应。LightGlue 用两端的可匹配度和点对分数构造软分配:

Pij=σiAσjBexp⁡(Sij)∑k=1Mexp⁡(Skj)exp⁡(Sij)∑t=1Nexp⁡(Sit).P_{ij}=\sigma_i^A\sigma_j^B \frac{\exp(S_{ij})}{\sum_{k=1}^{M}\exp(S_{kj})} \frac{\exp(S_{ij})}{\sum_{t=1}^{N}\exp(S_{it})}.

第一个分式把 AiA_i 与其他 AA 点比较,看谁更像 BjB_j;第二个分式把 BjB_j 与其他 BB 点比较,看谁更像 AiA_i。若 AiA_i 被判为难以匹配,即使它碰巧在某一列排名第一,前面的 σiA\sigma_i^A 仍会压低这一行的分配值。由两个 softmax 的取值范围还可直接得到 ∑jPij≤σiA≤1\sum_jP_{ij}\leq\sigma_i^A\leq1,列方向同理。行、列总量不必等于 11,因而允许点没有对应。推理时再保留超过阈值、且在行列互为最大值的点对。

为什么不继续用 SuperGlue 的最优传输?它要给无匹配点设置 dustbin,再用 Sinkhorn 多轮交替归一化求分配;每轮都操作点对矩阵,增加计算和显存开销。如果还想在每个网络层之后预测一次对应,这笔开销就要逐层支付,因而难以监督中间层。论文还指出,dustbin 将所有点的相似度耦合在一起,使训练动态不理想。

LightGlue 的目的正是做一个能逐层运行的轻量匹配头。它把“点对像不像”交给 SijS_{ij},把“单点是否有对应”交给 σi\sigma_i,通过上面的两次 softmax 直接构造 PP,无需 Sinkhorn 迭代。它求得的不是同一个最优传输解;最终的一对一离散对应由行列互检筛出。这样每层都能负担一次预测和监督,浅层结果逐渐可用,推理时才可能在任意层提前退出。论文认为相似度与可匹配度分开预测也带来了更清晰的训练梯度。

LightGlue 原论文图 6:可匹配度帮助滤除外点

原论文图 6。只用点对相似度时,一些外观相近的错误连线仍被保留;加入单点可匹配度后,部分无可靠对应的点被整体拒绝。

怎样训练出每层都可用的匹配结果

提前退出要求中间层本身能给出匹配,而非只在最后一层得到监督。LightGlue 在每一层都计算上一节的分配矩阵 P(ℓ)P^{(\ell)} 和单点可匹配度 σ(ℓ)\sigma^{(\ell)}。训练标签来自已知的两视图几何:用单应矩阵,或逐像素深度加相机相对位姿,把一幅图的点投到另一幅图,并反向检查。两个方向的重投影误差都小、深度也一致的点对组成真值集合 M\mathcal M;对所有候选都明显不符的点,分别记入无匹配集合 Aˉ\bar A、Bˉ\bar B。这样,“没有对应”也有监督,而不是把每个点强行配给另一个点。

论文对每一层使用同一个形式的损失,并在层间取平均:

Lmatch=−1L∑ℓ=1L[1∣M∣∑(i,j)∈Mlog⁡Pij(ℓ)+12∣Aˉ∣∑i∈Aˉlog⁡(1−σiA,(ℓ))+12∣Bˉ∣∑j∈Bˉlog⁡(1−σjB,(ℓ))].\begin{aligned} \mathcal L_{\mathrm{match}}=-\frac1L\sum_{\ell=1}^{L}\bigg[& \frac1{|\mathcal M|}\sum_{(i,j)\in\mathcal M}\log P_{ij}^{(\ell)}\\ &+\frac1{2|\bar A|}\sum_{i\in\bar A}\log\bigl(1-\sigma_i^{A,(\ell)}\bigr)\\ &+\frac1{2|\bar B|}\sum_{j\in\bar B}\log\bigl(1-\sigma_j^{B,(\ell)}\bigr) \bigg]. \end{aligned}

第一项要求真实点对的分配值 PijP_{ij} 高;后两项要求已知无匹配点的 σi\sigma_i 低。各项按正负样本数归一化,避免数量差异淹没一类监督。每一层都收到这些梯度,浅层才会形成可直接使用的预测;论文在合成单应性实验中报告,第 5 层已达到超过 90%90\% 的召回率,后续层继续改善精度。轻量匹配头使逐层预测与逐层监督在计算上可行。

训练先从合成数据开始,再转到真实数据。作者对真实照片施加合成单应变换和强光度扰动,获得几何关系明确、标签较完整的图像对用于预训练;再用 MegaDepth 中的相机位姿和深度图微调,以适应真实视角与外观变化。附录给出的 MegaDepth 标注规则包括:互为最近且重投影误差不超过 3 像素的点对标为匹配,最近候选误差超过 5 像素的点标为无匹配;深度缺失时,还借助极线误差补充无匹配标签。微调时每图最多取 2048 个点;作者用混合精度和梯度检查点,在 24 GB 显存的单卡上容纳每批 32 对图像。

匹配网络训练好以后,作者才单独训练判断“是否还值得算下一层”的置信度头。记点 ii 在第 ℓ\ell 层的离散结果为 mi(ℓ)m_i^{(\ell)},它可以是匹配到的点,也可以是“无对应”。分类器输出 ci(ℓ)=Sigmoid⁡(MLP⁡(xi(ℓ)))c_i^{(\ell)}=\operatorname{Sigmoid}(\operatorname{MLP}(x_i^{(\ell)})),二元监督标签为

yi(ℓ)=1 ⁣[mi(ℓ)=mi(L)],ℓ=1,…,L−1.y_i^{(\ell)}=\mathbf1\!\left[m_i^{(\ell)}=m_i^{(L)}\right], \qquad \ell=1,\ldots,L-1.

也就是说,它用二元交叉熵学习中间层判断是否与最终层一致。训练这一头时,梯度不传回点状态,以免影响已经学好的最终层匹配。于是 σi\sigma_i 回答这个点有没有对应,cic_i 回答当前判断是否已经稳定;稳定的结果可以是匹配,也可以是无匹配。训练顺序正是后面两种自适应机制能够使用这些预测的前提。

LightGlue 原论文图 5:合成单应性预训练的损失与召回率曲线

原论文图 5。横轴为已训练的图像对数量;红线是 LightGlue,蓝线是 SuperGlue。约 500 万对样本后,论文报告 LightGlue 最终层损失低 33%33\%、匹配召回率高约 4%4\%;这组曲线比较的是合成单应性预训练阶段。

推理时怎样同时减少层数和点数

论文将避免无谓推理拆成两项:根据图像对的难度减少运行层数,以及尽早剪掉已被可靠拒配的点。模型最多运行 L=9L=9 层。每层结束后,它已经有这一层的匹配结果、可匹配度 σi(ℓ)\sigma_i^{(\ell)} 和上节训练出的稳定性预测 ci(ℓ)c_i^{(\ell)},因此可以决定是直接输出,还是带着更少的点继续计算。

先决定是否让整对图像提前退出。论文把 ci(ℓ)>λℓc_i^{(\ell)}>\lambda_\ell 的点视为已稳定;它将两幅图中稳定点的比例写为下式。若比例超过 α\alpha,就采用当前层的对应并停止:

1M+N∑I∈{A,B}∑i∈I1 ⁣[ci(ℓ)>λℓ]>α.\frac{1}{M+N}\sum_{I\in\{A,B\}}\sum_{i\in I} \mathbf1\!\left[c_i^{(\ell)}>\lambda_\ell\right] >\alpha.

论文实验用 α=0.95\alpha=0.95,附录将阈值设为 λℓ=0.8+0.1e−4ℓ/L\lambda_\ell=0.8+0.1e^{-4\ell/L}:早期层要更高的置信度,较深层逐渐放宽。α\alpha 越低,越容易提前停止,速度与精度随之取舍。图 2 的简单图像对在第 3 层结束,较难的一对走到第 8 层;图中的 16.9 ms 与 32.3 ms 是两个样例的耗时。

LightGlue 原论文图 2:简单与困难图像对的自适应深度

原论文图 2。重叠较大的上方图像对较早停止;下方图像对继续利用后续层。

如果整对图像还不能停止,才检查哪些点可以退出后续层。一个点要同时满足稳定和无匹配两个条件:

ci(ℓ)>λℓ,σi(ℓ)<β,β=0.01.c_i^{(\ell)}>\lambda_\ell, \qquad \sigma_i^{(\ell)}<\beta, \qquad \beta=0.01.

只看 σi\sigma_i,可能过早丢掉尚未获得足够上下文的点;只看 cic_i,又可能丢掉稳定的好匹配。两者同时满足,才表示它已被可靠地判为无对应。移除这类点后,后续图内与跨图注意力面对的点集都会缩小,减少点对比较;整理变长点集也有开销,因此收益随输入规模与实现变化。

LightGlue 原论文图 4:关键点随网络层数逐步剪枝

原论文图 4。红点最早被判为无匹配并移除;橙、黄、绿点在后续层依次退出,蓝点构成最后仍需搜索的点集。颜色展示点在何时被剪枝,不是最终的匹配连线。

提前退出减少的是层数,点剪枝减少的是后续层的点数。论文按重叠程度分组统计:容易的一组平均停在第 4.7 层,较固定深度提速 1.86 倍;困难的一组平均走到第 6.9 层,但可移除的点更多,占 27.9%,总提速为 1.16 倍。难图像仍会运行更多层,模型节省的是已经没有必要执行的计算。

实验分别支持哪些判断

作者先在 HPatches 平面图像对上检查匹配质量。各稀疏方法使用 1024 个 SuperPoint 特征。LightGlue 的精度、召回率分别为 94.3%94.3\%、88.9%88.9\%,SuperGlue 是 94.9%94.9\%、87.4%87.4\%:前者召回略高,精度略低。用匹配结果估计单应矩阵时,5 像素阈值下的加权 DLT AUC 从 76.776.7 提高到 78.678.6。这说明对应质量在该下游任务中有收益,但不能从中推出所有指标都更好。

MegaDepth-1500 进一步测试室外相对位姿。每幅图最多提取 2048 个 SuperPoint 特征;表中耗时只计匹配过程,不含特征提取或位姿求解。位姿误差取旋转角与平移方向角误差的较大值,AUC@20° 越高越好。

匹配器 RANSAC AUC@20° LO-RANSAC AUC@20° 匹配时间(ms)
SuperGlue 80.6 87.5 70.0
LightGlue 80.1 87.9 44.2
LightGlue 自适应 80.1 87.9 31.4

固定深度的 LightGlue 已比 SuperGlue 快;自适应版在表中保持相同的 AUC@20°,将时间进一步降至 31.4 ms。普通 RANSAC 下它的位姿 AUC 略低,LO-RANSAC 下略高。论文针对每种方法分别调节了 RANSAC 内点阈值;这些结论适用于这一评估设置。图 1 将不同固定层数、自适应设置和其他匹配器画在同一张速度—精度图中。

LightGlue 原论文图 1:相对位姿精度与匹配吞吐量

原论文图 1。横轴为每秒处理的图像对,纵轴为相对位姿精度;固定层数形成一组取舍点,自适应推理在同一模型上移动到更快的区域。

消融实验能更直接地对应前面的机制。下表来自论文表 4,使用合成单应性测试和每幅图 512 个 SuperPoint 点;各行只改变所示设计,因而不应把差值直接套到真实定位场景。

设计 精度(%) 召回率(%) 时间(ms)
完整 LightGlue 86.8 96.3 19.4
去掉可匹配度 67.4 97.0 18.9
改用绝对位置编码 84.2 94.7 18.7
改用普通双向跨图注意力 86.6 96.1 22.8
仅运行至第 5 层 78.1 92.7 11.9

去掉可匹配度,召回率几乎不变而精度明显下降,说明它主要帮助拒绝错误候选。换回绝对位置编码,精度和召回都下降,支持在每层使用相对位置旋转的设计。普通双向跨图注意力的质量接近,但耗时更高;第 5 层已有可用结果,后续层继续提高精度。

在 Aachen Day-Night 定位任务中,各方法使用每幅图最多 4096 个 SuperPoint 特征。LightGlue 与 SuperGlue 的日间、夜间定位召回接近,普通实现将匹配吞吐量从每秒 6.5 对提高到 17.2 对,优化实现达到 26.1 对。这个实验说明提速放进完整定位流程后仍有用;吞吐量和图 1 中与 LoFTR 的比较都依赖论文的图像尺寸、硬件及实现。

方法能解决到哪一步

LightGlue 接收的是检测器已经给出的稀疏点。两幅图中若没有可重复检测的点,注意力无法凭空生成对应;严重重复纹理仍可能让网络选错对象,论文附录也展示了这一类失败。图内相对位置编码帮助网络利用布局,却没有显式求相机位姿或极线约束,输出对应仍需几何后端检验。

整条方法链围绕着减少计算:图内注意力用旋转编码读取相对布局,跨图注意力用 kkkk 让双向消息共用一张点对分数矩阵;轻量匹配头在每层预测对应,逐层监督改善训练收敛,也让早期结果可用;置信度再决定整对图像是否停止,以及哪些无匹配点退出后续层。这样既保留处理困难匹配的上下文推理,也减少容易图像对实际执行的计算。

参考资料