基于可学习特征的图像匹配综述(Image Matching Based on Learnable Features: A Survey)

写在前面

旧坑未填,再开新坑,罪过,罪过 :)

更新日志:5.12 发现kaggle有个新赛程感觉蛮有意思,选题为图像匹配和三维重建
                  5.13 调研,收集资料
                  5.15 着手整理综述
                  5.16 写作一气呵成

如果想跑几个demo对比一下效果,我建议选择SIFT、LoFTR、SuperGlue、DKM

正文

图像匹配任务有一个较为清晰的手工特征方法到深度特征方法的发展过程,虽说是“发展的过程”,但个人认为这个领域中目前在准确率和速度之间达到均衡的SOTA,或者说小范围地说在机器人实际工程应用中表现较好的,仍然是基于手工特征方法。但图像匹配技术能解决的问题很多,包括但不限于三维重建、SLAM、视觉寻址、图像配准与拼接、图像融合、图像检索以及常规的目标检测与目标跟踪过程,并不是所有任务都要求较低的计算复杂度或者说运行速度,基于这一点以深度特征为主的方法近几年发展迅速,值得关注。

标题我写的是可学习特征,即包括经典学习特征和深度学习特征,通过下文叙述可以区分。

框架

首先约定一个叙述的框架。将图像匹配的过程可以分为三个阶段,匹配特征的生成与检测,特征描述子的生成与检测和特征匹配。重点介绍前两个阶段中基于深度特征的方法。叙述时都尽量列出的对一个的一些框架名称。

Feature Detection

可学习特征方法主要是基于数据驱动的学习方法(data-driven learning-based methods),分为传统学习和深度学习方法两大类。 

Classical Learning-based Detectors 

传统学习方法,比如决策树(decision tree),支持向量机 SVM(support vector machine)等非深度学习方法已经广泛应用于人工设计的关键点检测算法。FAST 检测子是第一次尝试用传统学习方法来实现可靠的,可匹配的关键点确认。

有趣地是,在深度学习出现之前,经典学习只被用于通过分类器学习进行可靠的特征选择,而不是直接从原始图像中提取感兴趣的特征。这倒是深度学习方法反过来启发了经典学习方法。

Deep Learning-based Detectors 

受到传统人工设计特征检测子方法,CNN方法通常做法是构建出相应特征图来搜索得到感兴趣点,这又分为监督式,半监督式和无监督式方法。CNN方法基本都是将这个问题转为回归问题,在变换和成像条件不变的约束条件下以一种可微方式进行训练。监督式方法已经展示出了使用锚框(anchor)的好处,anchor可由比如 SIFT算法得到,但是这也导致检测子性能严重依赖anchor的构建算法。半监督和无监督方法无需人工标注就可训练得到检测子,而仅依靠两张图像的几何约束(geometric constraints)。这类 CNN-based算法基本都是通过特征描述符和匹配过程的联合训练将特征检测整合到整个匹配流程中,从而以一种端到端的形式增强最终的匹配性能和优化整个流程。非要举例的话,比如 TILDE, DetNet, Quad-Net, TCDET, Key.Net, LF-Net, RF-Net, ASFeat,等。

Feature Description

人工描述符通常需要专家知识来构建,还有可能忽略掉数据中隐藏的模式信息,因此这些局限性也反之极大地推动了基于学习的描述符研究,正是由于学习方法中数据驱动属性和可预期的高性能特点,目前学习方法已成为主流研究方向。 

Classical learning-based descriptors 

基于学习的描述符可以追溯到 PCA-SIFT,PCA主要是通过降维来构建一个鲁棒且紧凑的描述符。 Cai 等人提出通过线性判别投影 (linear discriminant projections)实现局部描述符(local descriptors)的特征维度降维,并可提高特征可区分度。此外,Brown 等提出一种优化问题的学习框架,通过利用 Powell minimization 和 linear discriminant analysis (LDA)技术来寻找最优参数。在此基础上,Simonyan等人提出一种新颖表达,将空间池化和降维(spatial pooling and dimensonality reduction)问题转换为凸优化问题(convex optimization problem)。同时,Trzcinski等利用 boosting技巧从多个基于梯度信息的弱学习器中学习到增强的和复杂的非线性局部视觉特征表达(boosted, complex non-linear local visual feature representations)。上述描述符均是浮点值类型描述符,二值描述符在经典描述符学习算法中也非常重要,主要得益于其低存储需求和高匹配速度的优点。一个简单的实现方法是直接从浮点类型的描述符中学习到二值特征,这可由hashing算法实现,因此这就要求在维持新空间内的特征相似度同时,学习到高维数据的紧凑表达。Locality sensitive hashing(LSH)是一个常用的无监督 hashing算法,现已广泛应用于大规模搜索任务(large-scale search tasks),后又提出多种改进算法 ,比如 Kernelized LSH, spectral hashing, semantic hashing, p-stable distribution-based LSH。此外,还包括监督式 hashing算法和半监督式 hashing算法。

Deep learning-based descriptors 

基于深度学习的描述符通常是监督式学习问题,主要是学习到一种表达,能够使得待匹配特征在测度空间中尽可能近,而非匹配特征尽可能远。描述符学习是利用检测到的关键点的邻域局部块来构建,因此也常称之为块匹配(patch matching)。总体上看,根据基于深度学习的描述符输出结果划分,现有算法分为两种形式:测度学习(metric learning)和描述符学习(descriptor learning),但实际上这两种形式通常是联合训练的。具体地说,测度学习方法是学习到一种判别度量(learn a discriminative metric),用于衡量原始块或已生成的描述符之间的相似度。与之对应的,描述符学习方法是尝试从原始图像或块中生成描述符表达(tends to generate the descriptor representation),这种方法通常需要一个测度算法来实现相似度评估,比如 L2距离或已训练的度量网络(a trained metric network)。与度量学习相比,CNNs用于生成描述符向量更加灵活(more flexible),也可以通过避免大量重复计算来减少时间开销。由于深度学习方法在信息提取,特征抽象和表达方面更强,在现有任务中可以实现更好的性能。基于深度学习的描述符也可认为是经典学习方法的扩展,比如孪生结构(Siamese structure)和广泛使用的 loss函数,比如 hinge, siamese, triplet, ranking和 contrastive loss,已经被借鉴用于深度学习框架中。具体地看: 

  1. Zagoruyko和 Komodakis等提出 DeepCompare模型,验证了使用块相似度函数从原始图像像素直接学习特征表达的机制。在这种方案中,各种孪生结构的 CNN模型被用于相似度函数的编码(to encode the similarity function),然后再训练以识别正负样本图像对,这些孪生模型又包括共享权重或非共享权重两种形式。 
  2. MatchNet则可以同时学习描述符和测度(to learn descriptor and metric),主要是将类似孪生描述符网络和全连接决策网络级联来实现的,这个网络实际是用交叉熵损失将匹配问题转为分类问题。 
  3. DeepDesc使用 CNNs和 L2距离度量提取具有可区分度的块表达,通常它是利用一对正样本和负样本块来训练孪生网络,并使用 pairwise hinge loss来约束模型参数,同时提出 hard negative mining strategy来缓解/解决正负样本不均衡问题,从而显著提升了描述符性能。 
  4. Wang提出一种深度排名模型(deep ranking model)来学习细粒度图像相似度(fine-grained image similarity),它是应用 triplet-based hinge loss和排名函数(ranking function)来描述细粒度图像相似度关系(fine-grained image similarity relationships)。 
  5. Kumar是最早利用全局 loss来扩大正样本和负样本块对之间的距离间隔,它是联合 triplet和 global loss来训练 triplet和孪生网络实现的。TFeat模型是使用浅层神经网络和 fast hard negative mining策略,通过输入三对训练样本来实现描述符的构建和匹配任务。L2Net是使用渐进采样策略(a progressive sampling strategy)在欧式空间优化基于相对距离的 loss函数(relative distance-based loss function),并通过中间特征图和描述符的紧凑度(compactness of descriptor)实现了更好的性能。 
  6. 在此基础上,HardNet通过使用“hardest-within-batch”的 hinge triplet loss进一步提升了网络性能
  7. PN-Net使用了距离度量学习领域中的观点,以及通过正负样本约束同时训练的 online boosting两种策略,同时提出一种 SoftPN loss函数实现了比 hinge loss或 SoftMax更快的收敛于更低的错误率。 
  8. Zhang等人提出一种全局正交归一化方法(global orthogonal regularization),并结合 triplet loss来训练他们的网络。 
  9. He等人提出一种基于平均精度注意力(average precision attention-based)的描述符学习方法,它定义了一种约束条件:所有正确匹配的图像对必须比错误匹配对排名高。 
  10. BinGAN在 GAN基础上提出一种规范化算法,以从图像对中学习到具有可区分度且紧凑的二值表达。 

与之相比,专注于二值描述符学习(binary descriptor learning)的其他算法也层出不穷。除了损失函数,网络结构,归一化和难例挖掘(hard negative mining),Wei等人提出一种使用核化子空间池化(kernelized subspace pooling)来学习到具有可区分度的深度描述符(a discriminative deep descriptor)。Tian等人提出一种使用二阶相似度(second-order similarity)的 SOSNet网络。此外,在 ContextDesc中,Luo等人将局部块相似度约束与兴趣点的空间几何约束相结合来训练他们的模型,并实现了匹配性能的大幅提升。 

综上基于 CNNs的检测子文献中,大部分都是将特征描述符和检测子集成到完整的匹配流程中,构成端到端的网络模型。这些算法与前述单个设计的描述符类似,主要差异在于训练方式和整体网络结构设计的不同,核心挑战都是让整个过程可微和可训,经典算法如下: 

  1. LIFT尝试利用端到端 CNN网络同时实现关键点检测,姿态估计和特征描述。 
  2. 为了解决多视角几何问题中兴趣点检测子和描述符的训练,介绍一种半监督框架 SuperPoint,它是在全尺寸图像中使用全卷积模型,并联合计算像素级别兴趣点定位信息和相关联描述子。 
  3. LF-Net设计了一种两分支结构(two-branch setup),并在不需要先验知识基础上 ,从头训练以迭代的创建虚拟目标相应 (create virtual target responses iteratively)。这种技术实现了特征图生成,尺度不变的关键点检测,位姿估计和描述符提取。在 LF-Net中,目标函数包含图像级别损失(以在图像对,深度图和本质矩阵中满足额外约束),块对损失(pair-wise loss)(学习到对匹配有效的关键点,并包括方向,尺度成分几何一致性),与 triplet loss。 
  4. 在 LF-Net网络结构基础上,RF-Net实现了一种端到端可训练的匹配框架。首先利用构建的特征图实现高效的关键点检测;然后,通过一个通用 loss函数项(邻域掩码,neighbor mask)加速训练块选取,以增强在描述子训练方面的稳定性。 
  5. D2-Net使用单个 CNN模型实现双目标:同时实现密集特征描述子和特征检测子的构建。Bhowmil等人利用增强学习中的原理,实现了在高级视觉任务中关键点选择和描述符匹配的优化目的。 
  6. 此外,Li等人引入二重分辨率响应网络来获取像素级别之间的关联,这是在不同分辨率的特征图上以粗到精的方式实现的(in coarse-to-fine manner)。 

除了相同目标或场景的特征匹配任务,还有从类似目标或场景获取的图像语义匹配,由于需要语义相似度的理解,语义匹配问题对人工特征提取算法造成了较大挑战。为了实现这个目的,UCN使用深度度量学习(deep metric learning)直接学习特征空间,以保留几何或语义相似度信息。这种方法的使用也可以有助于针对几何或语义响应任务生成致密且准确地响应(help generate dense and accurate correspondences for geometric or semantic correspondence tasks)。需要特别说明的是,为了快速训练和测试,UCN利用响应对比损失(correspondence contrastive loss)构建了一个全卷积网络模型,并针对局部块归一化提出一种卷积空间变换网络(propose a convolutional spatial transformer for local pathc normalization)。NCN是一种基于消除歧义特征匹配观点的端到端 CNN模型,它利用半局部约束(semi-local constraints)寻找图像对之间的可信致密响应 (find reliabel dense correspondences between a pair of images)。对于全局几何模型(global geometric model),这个框架通过分析邻域共识模式(neighboring consensus patterns)识别空间连续匹配集合(identify sets of spatial consistent matches),并可无需响应点的任何手工标注信息通过弱监督方式实现高效训练。这种类型的框架能应用于类和实例级别匹配任务(category-level and instance-level matching tasks)。 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白 AI 日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值