【引用格式】:Wang Y, He X, Peng S, et al. Efficient LoFTR: Semi-dense local feature matching with sparse-like speed[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2024: 21666-21675.
【网址 】:https://arxiv.org/pdf/2403.04765
【开源代码】:https://github.com/zju3dv/efficientloftr
目录
[1 局部特征提取](#1 局部特征提取)
[2 高效的局部特征转换](#2 高效的局部特征转换)
[3 粗级匹配模块](#3 粗级匹配模块)
[4 子像素精细化模块](#4 子像素精细化模块)
[4.1 高效的特征块提取器](#4.1 高效的特征块提取器)
[4.2 两级特征相关层](#4.2 两级特征相关层)
[5 Loss](#5 Loss)
[5.1 粗级匹配监督](#5.1 粗级匹配监督)
[5.2 精细匹配监督](#5.2 精细匹配监督)
[1 实验细节](#1 实验细节)
[2 相对姿势估计](#2 相对姿势估计)
[3 单应性估计](#3 单应性估计)
[4 视觉定位](#4 视觉定位)
[5 消融实验](#5 消融实验)
一、瓶颈问题
LoFTR 在处理大视点变化和纹理贫乏场景时显示出了卓越的匹配能力,但效率较低
二、本文贡献
- 由于图像特征中的局部区域往往共享相似的信息,直接在整个特征图上执行Transformer计算是冗余的。为此,论文提出了一种聚合注意力机制,通过自适应选择关键标记,显著减少计算量,从而提高效率。
- LoFTR的精细相关模块中存在空间差异,影响匹配精度。论文提出了两级相关层,先进行像素级匹配,再进行局部亚像素精细匹配,显著提升了匹配精度。
- 对网络结构进行修改,采用轻量化 的网络骨干并使用重新参数化技术,进一步提升模型的推理效率。
三、解决方案
1 局部特征提取
文中特征提取模块是使用了一个轻量化的bckbone,不像LoFTER或者其他的detector-free matchers等使用多分支的ResNet网络。在推理过程中,文中应用了一个轻量化的单分支网络,通过重新参数化技术【RepVGG: Making VGG-style ConvNets Great Again】来提高模型效率。
在训练过程中,文中采用了具有残差连接的多分支 CNN 网络,以获得最大的表征能力。在推理时,文中采用重参数化技术,将特征骨干网无损地转换为高效的单分支网络。然后,就可以提取到1/8的粗特征和用于第四阶段的1/4及1/2的特征。
2 高效的局部特征转换
在这一阶段,通过若干层的自注意力和交叉注意力,将特征转化为特征。对于之前的方法,都是直接在整个粗特征图上进行注意力变换,vanilla attention(香草注意力)代替linear attention来提高效率,但是模型能力达不到最优,这里文中提出高效的聚合注意力机制。
- 相邻query的关注区域是相似的,文中将相邻query()聚合到一起,避免冗余计算;这里,文中使用深度卷积神经网络(分段深度卷积)对fi进行聚合
- 每个query的大部分关注权重都集中到少数key()上,文中在执行注意力之前,选出突出的key,来减少计算量;这是,文中使用最大池化对fj进行挑选。
- 使用位置编码和香草注意力来缩小tokens(位置编码:建立空间位置上下文模型;RoPE【RoFormer: Enhanced Transformer with Rotary Position Embedding】:稳定键的相对位置;PE仅在自注意力使用,交叉注意力跳过)
- 对转换后的特征图进行上采样,并于融合,得到最终的特征图。
3 粗级匹配模块
首先通过和构建分数矩阵S,然后是在S矩阵上使用双softmax,进一步构建粗匹配矩阵。
文中发现,由于tokens过大,双softmax导致推理效率受到很大的限制,特别是对于分辨率高的图片。另外,双softmax在训练过程中至关重要,而在推理中,不使用softmax,直接使用分数矩阵S进行MNN匹配仍然可以得到很好的效果。
文中做了一个实验,在推理过程中跳过双softmax,为efficiency optimized model。
4 子像素精细化模块
子像素精细话模块是由一个高效的特征块提取器和一个两级特征相关层组成,前者用于提取精细特征,后者用于最终匹配。
4.1 高效的特征块提取器
为了提高效率,文中重新利用先前转换的粗特征和,来获得跨视图的判别性精细特征,不再像LoFTER那样引入额外的特征转换网络。
- 将、与1/4及1/2的backbone特征融合和上采样获得特征图和
- 以每个粗匹配点为中心的精细特征图上裁剪局部特征块。
4.2 两级特征相关层
根据粗匹配提取的精细局部特征块,搜索高精度的亚像素匹配。
为了细化粗匹配,常用的策略是选择 IA 的中心块特征作为固定参考点,然后对整个相应的特征块进行特征相关和期望 ,以实现精细匹配。然而,这种按期望值细化的方法会给最终匹配结果带来位置差异,因为无关区域也有权重,会影响结果。为此文中提出了两阶段相关模块来解决这个问题。
在第一阶段利用互近邻(MNN)匹配来获得中间像素级的精细匹配,然后通过相关性和期望值对其进行细化,以获得亚像素精度。原因:MNN 匹配不存在空间差异,因为匹配是通过直接索引得分最高的像素来选择的,但无法实现亚像素精度。而根据预期进行细化可以达到亚像素精度,但存在差异。
- 在细化粗级对应 时,第一阶段(细化阶段)会密集关联其精细特征块,以获得局部块得分矩阵。
- 在 上应用 MNN 搜索,以获得中间像素级的精细匹配。为了限制总体匹配数,文中通过对相关性得分进行排序,为一个粗匹配选择前 1 个精细匹配。
- 使用一个很小的局部窗口来进行相关和期望,最大限度地抑制位置方差。将 中每个点的特征与 中以其精细匹配点为中心的 3 × 3 特征块相关联。
- 应用 softmax 运算符得到匹配分布矩阵,并通过计算期望值得到最终的精细匹配。
5 Loss
5.1 粗级匹配监督
按照之前的方法【SuperGlue、LoFTER】,通过深度图和图像姿态将网格级点从 扭曲到 ,从而建立总数为 N 的粗略地面真实匹配。粗匹配中产生的相关得分矩阵 S 是通过最小化 位置的对数似然损失来监督的:
5.2 精细匹配监督
第一阶段的精细损失是根据像素级地面真实精细匹配结果,最小化每个精细局部得分矩阵 的对数似然损失,与粗损失类似。第二阶段由训练,计算最终子像素匹配度与地面实况精细匹配度 之间的损失。
最终损失:
四、实验结果
1 实验细节
- 采用RepVGG作为特征提取主干,利用深度卷积和最大池化层对粗特征进行自注意力和交叉注意力的转换,重复4次,卷积核为4×4。
- 在大规模户外数据集MegaDepth上训练,测试场景与训练数据分离。
- 使用AdamW优化器,初始学习率为4×10⁻³,损失函数权重α=1.0,β=0.25,训练在8个NVIDIA V100 GPU上进行,耗时约15小时,批次大小为16。
- 粗匹配和细匹配阶段一起从零开始训练。
2 相对姿势估计
- 在MegaDepth数据集上,方法超越了最好的半稠密匹配方法AspanFormer,所有指标均优于AspanFormer。而在ScanNet数据集上的表现稍低,但速度提升约2倍。
- 通过移除粗匹配中的dual-softmax操作,进一步提升效率,虽然性能略有下降,但方法在效率上超越了稀疏匹配方法SP + LG,并保持更高的精度。
- ROMA尽管匹配能力强,但速度慢,而文中方法在效率上快约7.5倍,在精度与效率之间实现了良好平衡。
3 单应性估计
- 在匹配数量受限的情况下仍能表现出色,远超稀疏方法,并在效率上显著优于其他半稠密方法。
- 文中将这一优势归功于两个创新点:
- 两阶段精细化模块:通过精细化的两阶段匹配提升了匹配的精度。
- 聚合模块:在特征选择和聚合方面提高了计算效率,使得在高效的同时还能保持较好的性能。
4 视觉定位
尽管文中方法主要注重效率,但在精度上能够与一些以精度为主的检测器方法媲美。在表3和表4中,结果显示出本文方法不仅在效率上具备优势,在性能上也能达到与最佳方法相当的水准。
5 消融实验
- 去除dual-softmax,在高分辨率图像中,模型效率显著提升。
- 用LoFTR的Transformer替代聚合注意力模块后,效率和准确度下降,表明聚合特征上使用原始注意力的有效性。
- 使用LoFTR的单一精细化方法代替两阶段精细化,发现两阶段精细化 能提高准确性而延迟很小,体现了最大程度抑制位置方差的优势。
- 缺失第二阶段,将导致姿态准确性下降,效率变化不大,特别在严格的AUC@5°指标上。
- 从重参数化的VGG改回多分支ResNet,虽然准确性相似但效率下降,证明了设计选择的有效性。