作者信息:Philipp Lindenberger Paul-Edouard Sarlin Marc Pollefeys
对比算法:SuperGlue
效果:
1) SuperGlue 与其他基于 Transformer 的模型一样难以训练,需要许多从业者无法访问的计算资源。因此,后续工作未能达到原始SuperGlue模型的性能。
2) 在展现对称性、弱纹理或因视角和光照变化而导致外观变化的条件下,可靠地描述每个点是具有挑战性的。为了排除由于遮挡和丢失点而产生的异常值,这些表示还应具有辨别性。这导致了两个冲突的目标,即鲁棒性和唯一性,这两者很难同时满足。
1)与先前的方法不同,LightGlue对每个图像对的难度是自适应的,这取决于视觉重叠的程度、外观变化或辨别信息的量。相对于具有挑战性的图像对,对于直观上易于匹配的图像对,推理速度更快,这种行为类似于人类处理视觉信息的方式。实现这一点的方法是:1)在每个计算块之后预测一组对应关系,2)使模型自省这些对应关系并预测是否需要进一步计算。LightGlue还在早期阶段丢弃不可匹配的点,从而将注意力集中在可共视区域上。LightGlue在典型的操作条件(如SLAM中)下带来了很大的改进,而不会在任何难度级别上降低性能。这是通过动态调整网络的大小而不是减小其整体容量来实现的。
2)LightGlue是SuperGlue的即插即用替代品:它在一小部分运行时间内预测两组局部特征的强匹配。这为在延迟敏感的应用中部署深度匹配器或从众包数据中重建更大的场景开辟了令人兴奋的前景。LightGlue模型及其训练代码将在许可许可下公开发布。
优化方法:
1)选择性检查点技术根据某种策略或规则,选择性地保存或舍弃注意力权重的计算结果,只保留对模型性能关键的部分位置的注意力权重,从而减少内存需求。这样可以在保持一定的模型性能的同时,显著降低内存占用,提高模型的效率和可扩展性。
2)瓶颈潜在标记方法是一种通过将输入标记映射到低维潜在空间来减小注意力机制内存占用的技术。在传统的Transformer模型中,每个输入标记都与其他标记计算注意力权重,这会导致计算和内存需求的增加,尤其是在处理长序列时。瓶颈潜在标记方法通过引入一个降维步骤,将输入标记映射到一个低维潜在空间中。这个映射过程可以使用线性变换或其他降维技术(如主成分分析)来实现。通过将输入标记映射到低维空间,可以大幅减小每个标记之间的关联性,从而减少计算和存储注意力权重所需的内存。在具体实施中,瓶颈潜在标记方法通常在Transformer模型的编码器或解码器中的某一层引入一个降维操作。这个降维操作将输入标记映射到一个较低维度的表示,通常比原始输入标记的维度要小得多。然后,在计算注意力权重时,只考虑这些降维后的潜在标记之间的关系,而不需要考虑所有的原始输入标记。通过使用瓶颈潜在标记方法,可以显著减小注意力机制的内存占用,特别是对于处理长序列的情况。同时,这种方法还可以降低计算复杂度,提高模型的训练和推理速度。然而,需要注意的是,通过降维操作,瓶颈潜在标记方法可能会引入一定的信息损失,因此需要在减小内存占用和保持模型性能之间进行权衡。
从图像A和B中预测匹配点,点的归一化表示如下所示:
pi:=(x,y)i∈[0,1]2
视觉描述符为:?di∈Rd
图像A和图像B有M和N个局部特征点,表示为?:,A:={1,.....M}?和?:,B:={1,.....N}
输出的一组对应关系为:?M={(i,j)}?A×B?从公式中不难看出,执行了一次笛卡尔积,每一对点都计算了一次,由于遮挡或非重复性,一些关键点是不可匹配的,如何表示上述对应关系的结果呢?使用软分配矩阵,软部分分配矩阵)是一种用于表示元素之间关联程度的矩阵。在给定的问题中,软部分分配矩阵 P 用于表示图像?A 和 B 中的局部特征之间的匹配程度:?P∈[0,1]M×N
LightGlue由一堆相同的层组成,这些层共同处理两个集合。每个层由自注意力和交叉注意力单元组成,用于更新每个点的表示。然后,一个分类器在每个层上决定是否停止推断,从而避免不必要的计算。最后,一个轻量级的头部从表示集合中计算出一个部分分配。
1、Transformer骨干:将图像A和B中的每一个特征用向量进行表示,其中?xiI?Rd?,向量由视觉描述符初始化,并随着后续的由自注意力和一个交叉注意力组成的层进行更新。I ∈ {A, B}
2、注意力单元:每一个单元根据从源图像 S(属于集合 {A, B})聚合得到的消息?miI←S?来更新状态,?xiI←xiI+MLP([xiI|miI←S])?, 其中[ | ]代表向量的堆叠,这里并行计算两幅图像中的所有的点,自注意力模块从同一副图像中提取信息 S = I ,在交叉注意单元中,每个图像从其他图像中提取信息 S = {A, B}\ I ,消息m是通过注意力机制计算得出的,作为图像 S 的所有状态 j 的加权平均值(即会包含自注意力和交叉注意力)。
a是图像I和S的点i和j之间的注意力分数; W是一个投影矩阵; x代表状态;j代表状态数
到这里就完成了一个特征点的初始化和如何更新的叙述
3、自注意力机制:对于每个点 i,首先通过不同的线性变换将当前状态 xi 分解为键向量和查询向量 ki 和 qi。然后,我们将点 i 和 j 之间的注意力分数定义为
注:这里会有q
其中R(·)∈?Rd×d?是点间相对位置的旋转编码,为什么引入旋转编码呢?在投影相机几何中,视觉观察的位置对于图像平面内的相机平移是等变的:来自同一前平行平面上的3D点的2D点以相同的方式进行平移,并且它们之间的相对距离保持不变。但是绝对距离会发生变化(即出现在2D像平面上的位置)这要求仅捕捉点的相对位置而不是绝对位置的编码。旋转编码[67]使模型能够检索到相对于i处的学习到的相对位置的点j。位置编码不适用于值vj,?本质上就是通过自注意力机制,和同一幅图像中的特征点进行计算,从而得出更好的特征编码,R充当了位置编码
4、交叉注意力机制?I中的每个点都关注另一个图像s中的所有点,我们为每个元素计算一个键ki,但不计算查询。这允许将分数表示为:
因此,我们只需要为I ← S和S ← I的消息计算一次相似度。这个技巧之前被称为双向注意力(bidirectional attention)。由于这一步骤的复杂度为O(NMd),它节省了约2倍的计算开销。这里不添加任何位置信息,因为跨图像的相对位置没有意义。
5、分配分数
相似度得分,其中Linear是一个带有偏置的线性变换(例如MLP)
代表是否可能匹配成功
6、软匹配分配矩阵P的求法
当两个点都被预测为可匹配点,并且它们的相似度高于两个图像中的任何其他点时,点对 (i, j) 才会产生对应关系。我们选择满足以下条件的点对:Pij 大于一个阈值 τ,并且大于其所在行和列的其他元素。
换句话说,当点 i 和点 j 都被判定为可匹配点,并且它们之间的相似度高于阈值 τ,同时也高于两个图像中所有其他点之间的相似度时,我们认为点对 (i, j) 是对应关系。
这个过程可以通过对分数矩阵 S 进行逐元素比较和阈值筛选来实现。首先,我们将 Pij 与阈值 τ 进行比较,如果 Pij 大于 τ,那么我们进一步检查它是否大于其所在行和列的其他元素。如果满足条件,那么点对 (i, j) 被选为对应关系。这样的策略可以帮助我们选择具有最高相似度且互为最佳匹配的点对,从而构建准确的对应关系。
7、损失函数设计
损失函数的公式描述了在训练过程中如何计算损失,以便推动模型 LightGlue 尽早预测正确的对应关系。损失函数由三部分组成,分别对应于正确匹配(positive labels)和不匹配的点(negative labels)。
LightGlue 架构极大地提高了预训练在合成单应性上的收敛速度。在 5M 图像对(只有 2 个 GPU 天)之后,LighGlue 在最后一层实现了 -33% 的损失,匹配召回率为 +4%。SuperGlue 需要超过 7 天的训练才能达到类似的准确度。
重投影误差在1像素和5像素的比较
AUC被用来评估通过对应关系估计得到的单应矩阵的准确性。通过计算累积误差曲线(AUC)来度量重投影误差,以评估单应矩阵的质量。较高的AUC值表示估计的单应矩阵具有较高的准确性和预测能力。
可视化据结果
Image Matching Challenge 2021