点击下方卡片,关注「3DCV」公众号
选择星标,干货第一时间送达
来源:3DCV
添加小助理:cv3d001,备注:方向+学校/公司+昵称,拉你入群。文末附3D视觉行业细分群。
扫描下方二维码,加入「3D视觉从入门到精通」知识星球,星球内凝聚了众多3D视觉实战问题,以及各个模块的学习资料:近20门独家秘制视频课程、最新顶会论文、计算机视觉书籍、优质3D视觉算法源码等。想要入门3D视觉、做项目、搞科研,欢迎扫码加入!
0. 论文信息
标题:Silver medal Solution for Image Matching Challenge 2024
作者:Yian Wang
机构:North Broward Preparatory School
原文链接:https://arxiv.org/abs/2411.01851
1. 导读
图像匹配挑战2024是一项专注于从不同图像集构建3D地图的竞赛,要求参与者解决不同角度、光照和季节变化的图像匹配中的基本计算机视觉挑战。该项目开发了一种结合多种先进技术的管道方法:使用预训练的EfficientNet-B7进行初始特征提取和基于余弦距离的图像对过滤,使用KeyNetAffNetHardNet和SuperPoint进行关键点特征提取,使用AdaLAM和SuperGlue进行关键点匹配,最后应用Pycolmap进行3D空间分析。该方法在私人排行榜上获得了0.167的优异成绩,实验结果表明,KeyNetAffNetHardNet和SuperPoint的组合在关键点检测和匹配方面具有显著优势,特别是在处理表面纹理和环境条件的挑战性变化时,这些变化通常会降低传统算法的性能。
2. 引言
2024年图像匹配挑战赛的目标是利用来自不同场景、环境和领域的图像集构建3D地图,这些图像包括无人机拍摄的画面、茂密森林深处的景象以及夜间拍摄的图片等。
与去年的2023年图像匹配挑战赛相比,今年的要求极为严格,例如模型的多样性、可变性和鲁棒性等方面。由于每张照片的拍摄角度略有不同,且照片拍摄的具体时间和季节不同,阴影也会有所变化。一张照片可能是在地面上拍摄的,另一张是从台阶上拍摄的,还有一张则是无人机拍摄的。从不同视角匹配图像是计算机视觉领域一个尚未得到完全解决的问题。诸如表面纹理或周围环境等因素可能会导致原本表现良好的算法性能下降。本项目开发了一种流水线方法,具体流程为:首先,使用预训练模型efficientnet-b7中的ImageNet权重提取每个场景图像集中的图像数据特征,基于余弦距离进行过滤,并根据相似性对图像集中的前n对图像进行排序。然后,逐一检索图像对,使用两个关键点特征检测器提取相关特征点位置,使用两个关键点匹配算法对所有匹配点位置进行匹配计算,并保存成功匹配的对(匹配对)。最后,将成功匹配点(匹配对)的图像对进行集成,排除相同的图像对,然后将其叠加到pycolmap中,以计算最终的3D空间位置关系(位置和姿态估计)。该流水线方法在排行榜的私有列表测试和公开测试中得分均为0.168089。
先前研究
为了完成2024年图像匹配挑战赛,本项目参考了2023年或2022年图像匹配挑战赛的工作,许多研究人员已经公布了他们所使用的方法,这些方法大多分为以下四个部分,即图像检索、特征提取、匹配和3D重建,分别进行实现。本项目介绍了这四个部分的一般方法。推荐课程:面向三维视觉算法的C++重要模块精讲:从零基础入门到进阶。
1.1 图像检索
图像检索是计算机视觉中的一项关键任务,旨在从大规模图像集中识别出高度相似的图像对。近年来,随着深度学习的进步,大多数图像检索方法现在依赖于深度学习技术来提取图像的全局特征。这些方法主要使用卷积神经网络(CNN)或Transformer网络。
卷积神经网络(CNN)因其能够高效地捕获图像中的空间层次结构而被广泛用于图像检索。NetVLAD是一种基于CNN的显著方法,它将VLAD(向量局部聚合描述符)聚合层的优势与深度学习特征相结合,在各种数据集上显著提高了检索性能。EfficientNet是另一种值得注意的CNN架构,它通过平衡网络的深度、宽度和分辨率,以更少的参数和计算资源实现了最先进的结果。ConvNeXt是一种现代化的CNN架构,它结合了Transformer网络的设计元素,进一步增强了其检索能力。
Transformer网络因其能够捕获图像中的长距离依赖关系和上下文信息而越来越受到关注。DINOv2是一种自监督的基于Transformer的模型,它能够在无需标记数据的情况下学习稳健的视觉表示,并在图像检索任务中表现良好。CLIP及其变体EVA-CLIP利用大规模图像-文本对进行预训练,实现了零样本迁移学习,并在图像检索基准测试中取得了显著成果。ViT引入了一种视觉Transformer架构,并直接将Transformer模型应用于图像块,在包括图像检索在内的多种视觉任务中创造了新纪录。
1.2 特征提取
随着SIFT的发展,局部特征已成为计算机视觉的重要组成部分。基于SIFT的经典方法包括三个步骤:关键点检测、方向估计和描述符提取。另一种方法AKAZE则是通过结合快速显著扩散和非线性尺度空间来实现的。
最近,描述符提取通常是在图像块(通常来自SIFT关键点)上训练深度网络。这些网络包括L2-Net、HardNet、TFeat。研究人员还尝试仅学习关键点检测器或描述符,其中包括TCDet、Keynet。还有一种端到端训练方法,包含SuperPoint、D2-Net、R2D2、ALIKED。
1.3 匹配
局部特征匹配通常是通过检查关键点、计算视觉描述符,并使用最近邻(NN)搜索这些特征的匹配项,从而筛选出错误的匹配项来完成的。另一种方法是使用鲁棒求解器(如RANSAC)来找到匹配项。基于深度学习的匹配方法最近也得到了发展,如SuperGlue、LightGlue,前者基于灵活的上下文聚合机制和基于注意力的图结构,后者则基于Transformer以及自注意力和交叉注意力。
1.4 重建
在结构从运动(SFM)领域,最流行的框架是VisualSFM和COLMAP,后者因其能够生成真实值且是多视图任务的核心而常被用于相关项目。
3. 方法
本节详细描述了本项目的整体流程架构,该流程包含五个部分:图像检索、关键点特征提取、关键点特征匹配、融合和空间位置估计,以下各节将详细阐述这些部分。
图像检索
项目针对每个场景,在数据集中筛选出相似的图像对。它采用高效的卷积神经网络模型(EfficientNet-B7)来提取图像的全局描述符,并基于这些描述符计算图像之间的相似性。项目将N值设定为45,如果场景中数据集的总图像数量小于此值,项目将采用穷举搜索方法来获取所有可能的图像对。相反,项目使用EfficientNet-B7模型获取全局描述符之间的欧几里得距离,然后根据距离矩阵和相似性阈值筛选出相似的图像对。
关键点特征提取
关键点特征提取在整个流程中占据关键位置,项目尝试了多种关键点特征提取方法,如:ALIKED、DISK[29]、SIFT、SuperPoint、Dog-hardnet,但效果并不理想。项目多次尝试改变关键点检测阈值、检测到的特征数量、图像形状大小、多个模型的融合等,发现这些参数影响模型效果,并最终发现当检测到的特征数量为8081、关键点检测阈值为0.001023349、图像形状大小为1024时,效果最佳。项目方法采用两种关键点特征提取方法,分别是KeyNetAffNetHardNet和SuperPoint,后续项目将介绍这两种特征提取方法。
Key-Aff-HardNet
Key-Aff-HardNet由三个模块组成:方向估计模块、特征点检测模块和描述符模块。其中,方向估计模块OriNet用于角度估计,特征关键点检测器使用KeyNet检测器以及AffNet形状估计,描述符使用HardNet网络。
HardNet是用于局部描述符学习的紧凑描述符,其核心是一种新颖的损失函数,旨在最大化一批数据中最近正样本和最近负样本之间的距离。该损失函数受SIFT匹配标准的启发,通过最小化匹配描述符与最近不匹配描述符之间的距离,来提高描述符的判别能力。具体来说,该方法首先生成一批包含匹配局部图像块的集合,然后通过网络计算这些图像块的描述符,并构建距离矩阵。接下来,从每对匹配样本中选择最接近的不匹配描述符,形成三元组。最后,通过计算三元组损失来优化模型。
HardNet架构采用L2Net CNN架构,使用一系列卷积层和批量归一化层来输出128维描述符,其网络结构如图1所示。本研究表明,HardNet在包括图像检索和宽基线立体视觉匹配在内的多个实际任务中,显著优于手工制作的和其他学习到的描述符。性能的提升归功于其简单而有效的学习目标以及对现有数据集的充分利用。
HardNet网络优于其他模型的原因之一是使用了三元组损失,通过最大化匹配样本对与最近负样本之间的距离来提高模型的判别能力。其原理是从训练数据中生成一组匹配的局部图像块对,计算所有样本对之间的欧几里得距离以形成距离矩阵,并从距离矩阵中选择每个锚点和正样本最接近的非匹配样本,即最难负样本。对于每对样本,根据匹配样本的距离和最近负样本的距离计算损失值,并将所有样本对的损失值平均以获得最终损失。以下给出公式(1):
AffNet是一个用于估计局部仿射形状的卷积神经网络(CNN),旨在提高图像特征匹配的可靠性和准确性。传统的特征检测器,如Hessian-Affine,在光照和视角变化下表现不佳,无法保证可靠的特征匹配。AffNet学习仿射形状和方向,并提出了一种新的Hard Negative-Constant Loss函数,该函数结合了三元组损失和对比度损失的优点,以优化仿射区域估计。具体公式(2)如下:
公式(2)中,d(si, s˙i)表示第i个样本与其正样本之间的距离。该距离越小越好,因为它表示正样本之间的相似性更高。d(si,N)表示第i个样本与其负样本之间的距离。该距离越大越好,因为它表示负样本之间的相似性更低。该损失的核心是比较正样本之间的距离d(si, s˙i)和负样本之间的距离d(si,N)。对于每个样本si,如果1+d(si, s˙i)−d(si,N)的值大于0,则将其包含在损失中,否则为0。
KeyNet结合了手工制作和学习的卷积神经网络(CNN)滤波器,用于在浅层多尺度架构中高效稳定地检测关键点。手工制作滤波器提供锚结构,学习到的滤波器负责定位、评分和排序关键点,网络通过尺度空间表示在不同层次上提取关键点。
SuperPoint
SuperPoint是一个用于兴趣点检测和描述的自我监督学习框架。其方法基于全卷积神经网络架构,包含一个共享的编码器以及两个解码器头,分别用于兴趣点检测和描述符生成。
共享编码器采用VGG风格,通过卷积层、池化层和激活函数减少输入图像的空间维度。输入图像从I∈RH×W变为RHc×Wc,其中Hc=H/8且Wc=W/8,特征图缩小到原来的1/8。在兴趣点检测解码器中,特征图被映射到X∈RHc×Wc×65,其中65个通道用于8*8网格区域加上一个兴趣点分数。输出向量通过softmax转换为RH×W。
描述符解码器使用双三次线性插值将特征图映射到D∈RHc×Wc×D的原始图像分辨率,然后通过L2归一化将描述符压缩为单位值。SuperPoint在此项目中使用了预训练模型进行推理。
关键点特征匹配
项目尝试了三种方法,如LightGlue、SuperGlue、AdaLAM。
AdaLAM
AdaLAM是一种基于局部仿射运动验证和样本自适应阈值的图像匹配高效离群点检测方法。该方法结合了计算机视觉领域多年来开发的最佳实践,提出了一种用于高效离群点过滤的分层流程,并整合了现代并行硬件的利用,使其能够在短时间内处理大量图像关键点匹配。具体来说,AdaLAM通过选择高置信度和分布良好的种子点,并验证其邻域内的局部仿射一致性,来过滤掉错误的匹配。其自适应阈值机制通过统计显著性检验进行调整,提高了算法在不同场景下的泛化能力和鲁棒性。实验结果表明,AdaLAM在多个室内和室外场景中表现良好,并显著优于现有的最先进方法。
SuperGlue
SuperGlue是一个用于图像特征匹配的神经网络,通过结合图神经网络和注意力机制来解决图像之间的特征匹配问题。它侧重于通过解决微观最优传输问题来估计匹配关系,并使用图神经网络预测匹配成本。SuperGlue引入了自注意力和交叉注意力机制,使其能够在图像内部和图像之间聚合上下文信息,并同时推理3D场景和特征分配。该方法包含两个主要模块:注意力图神经网络和最优匹配层。前者通过自注意力和交叉注意力机制聚合图像特征,后者通过最优传输问题生成部分分配矩阵,以有效处理遮挡和不可重复的关键点。SuperGlue能够实时运行,并且可以无缝集成到现代结构光(SfM)或即时定位与地图构建(SLAM)系统中,为它们提供高质量的特征匹配和姿态估计。
融合
融合学习是一种通过结合多个较弱的基模型来提高整体预测性能和鲁棒性的技术。融合方法在图像匹配和特征提取领域特别有效。在本项目中,项目使用了两种不同的特征提取算法,即SuperPoint和KeyNetAffNetHardNet,它们都可以识别图像中的关键点。对于关键点匹配,项目使用了两种匹配技术,即AdaLAM和SuperGlue。这样,每个算法都可以在其专业领域发挥作用,同时通过相互补充来提高整个系统的性能和适应性。这种融合策略不仅优化了关键点的检测和匹配过程,还提高了模型在处理复杂或变化环境时的准确性和可靠性。
空间位置估计
对于空间位置估计模块,项目使用pycolmap库,这是为Python用户提供的接口库,允许开发者直接在Python环境中使用COLMAP的功能。COLMAP是一款先进的计算机视觉软件,专注于无序图像集合的3D重建。使用pycolmap,用户可以轻松实现图像的空间位置估计。
4. 实验结果
项目在2023年的图像匹配调整中发现了这一思路,并对其进行复现,应用于2024年的图像匹配挑战。项目还进行了许多实验,发现由KeyNetAffNetHardNet+SuperPoint组成的流程远优于其他各种组合和单一方法,并在私有列表中取得了良好成绩。它在私有列表中也取得了良好成绩,见表I。
该项目评估了LG和SG在运行时间和准确性方面的性能差异。表2显示了LG和SG在公共和私有测试集上的分数比较,很明显LG比SG好得多。
5. 其他尝试
其他特征提取器和匹配器
该项目采用了近年来流行的一阶段密集匹配器,如LoFTR、DKM,但结果要差得多,参见表III。
图像旋转
在图像旋转这一部分,项目使用预训练的NetVLAD视觉转换器,在需要时对图像进行旋转,然后在开始空间位置估计之前,将其关键点旋转回原始位置。但从表4中可以看出,不使用图像旋转方法的结果要好得多
本文仅做学术分享,如有侵权,请联系删文。
3D视觉交流群,成立啦!
目前我们已经建立了3D视觉方向多个社群,包括2D计算机视觉、最前沿、工业3D视觉、SLAM、自动驾驶、三维重建、无人机等方向,细分群包括:
工业3D视觉:相机标定、立体匹配、三维点云、结构光、机械臂抓取、缺陷检测、6D位姿估计、相位偏折术、Halcon、摄影测量、阵列相机、光度立体视觉等。
SLAM:视觉SLAM、激光SLAM、语义SLAM、滤波算法、多传感器融合、多传感器标定、动态SLAM、MOT SLAM、NeRF SLAM、机器人导航等。
自动驾驶:深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器、多传感器标定、多传感器融合、自动驾驶综合群等、3D目标检测、路径规划、轨迹预测、3D点云分割、模型部署、车道线检测、Occupancy、目标跟踪等。
三维重建:3DGS、NeRF、多视图几何、OpenMVS、MVSNet、colmap、纹理贴图等
无人机:四旋翼建模、无人机飞控等
2D计算机视觉:图像分类/分割、目标/检测、医学影像、GAN、OCR、2D缺陷检测、遥感测绘、超分辨率、人脸检测、行为识别、模型量化剪枝、迁移学习、人体姿态估计等
最前沿:具身智能、大模型、Mamba、扩散模型等
除了这些,还有求职、硬件选型、视觉产品落地、产品、行业新闻等交流群
添加小助理: cv3d001,备注:研究方向+学校/公司+昵称(如3D点云+清华+小草莓), 拉你入群。
「3D视觉从入门到精通」知识星球
「3D视觉从入门到精通」知识星球,已沉淀6年,星球内资料包括:秘制视频课程近20门(包括结构光三维重建、相机标定、SLAM、深度估计、3D目标检测、3DGS顶会带读课程、三维点云等)、项目对接、3D视觉学习路线总结、最新顶会论文&代码、3D视觉行业最新模组、3D视觉优质源码汇总、书籍推荐、编程基础&学习工具、实战项目&作业、求职招聘&面经&面试题等等。欢迎加入3D视觉从入门到精通知识星球,一起学习进步。
官网:www.3dcver.com具身智能、3DGS、NeRF、结构光、相位偏折术、机械臂抓取、点云实战、Open3D、缺陷检测、BEV感知、Occupancy、Transformer、模型部署、3D目标检测、深度估计、多传感器标定、规划与控制、无人机仿真、C++、三维视觉python、dToF、相机标定、ROS2、机器人控制规划、LeGo-LAOM、多模态融合SLAM、LOAM-SLAM、室内室外SLAM、VINS-Fusion、ORB-SLAM3、MVSNet三维重建、colmap、线面结构光、硬件结构光扫描仪等。
3D视觉模组选型:www.3dcver.com
点这里👇关注我,记得标星哦~