SuperGlue是一个图像特征匹配网络,其输入为两张图片的特征点和描述子,输出为两张图片间的特征匹配关系。其核心技术点是采用注意力机制对特征进行聚合,使其可以推理获取图片中深层全局/上下文信息,并优化特征匹配数量和正确性。
SuperGlue算法在真实室内室外场景的位姿估计任务上可以达到出色的结果,其网络架构主要包含两个部分:注意力图神经网络模块和最优传输匹配模块。
图神经网络模块:借鉴自Transformer的简单变形应用,由特征点位置(position)和描述子(descriptor)共同组成输入嵌入模块(Input Embedding),并在累叠的Self-Attention层(同一图像的内部注意力计算)中额外扩展了Cross-Attention层(不同图像的跨图注意力计算)。在默认全连接网络图注意学习中,该模块的复杂度为O(N^2),在运行时间和显存空间占用上都比通常的卷积上都高出一个数量级。根据其计算量决定性的资源消耗性质,我们对矩阵运算进行分块优化,在不影响并行数的前提下极大降低显存占用。
最优传输匹配模块:如图2所示,原版采用的是Sinkhorn来迭代求解近似的匹配矩阵。我们根据实际实验效果将其替换成更加简化的dual-Softmax算子[2]来优化迭代计算。
该项目通过Jittor开源,开源链接在:
-
test_gpu/superglue.py:基于计图实现的superglue匹配网络模型,实现了superglue的图片特征匹配算法。 -
test_gpu/test_time.py:实现计图框架下使用不同优化方法,测试superglue模型进行图片特征匹配的时间性能。 -
pipeline_inloc_aslfeat.py:将计图版本的superglue整合进视觉定位pipeline,实现了对Inloc数据集中图片的特征匹配,并将匹配结果可视化(见下图)。
可视化图
内容中包含的图片若涉及版权问题,请及时与我们联系删除
评论
沙发等你来抢