语义引导的特征检测和描述

这是本人第一篇 读书笔记,主要更新视觉定位和视频防抖相关的文章和代码复现等,感谢关注

SFD2: Semantic-guided Feature Detection and Description

paper:https://arxiv.org/abs/2304.14845

code:https://github.com/feixue94/sfd2

文章精读

        摘要:视觉定位在自动驾驶和机器人领域的基础任务。过去的工作只在提取大量丰富的局部可靠特征,然而在具有挑战性的大范围环境中,局部特征的有效性和准确性会受到限制。与之前的工作不同,我们提出来一种通过隐式地讲语义信息编码到特征检测和描述过程中的全局可靠特征提取方法。具体而言:我们的语义感知检测器能够从可靠区域(如建筑物、交通车道)中检测图像关键点,并隐式抑制不可靠区域(如天空、车辆等),而不是依赖于显式的语义标签。我们的方法通过减少对外观变化敏感的特征数量和避免在测试过程中需要额外的语义分割网络提高了关键点匹配的准确率。而且我们的描述符增加了语义,具有更强的分辨力,在测试时提供了更多的内点。在长期大范围视觉定位数据集Aachen DayNight and RobotCar-Seasons上的实验证明,我们的方法优于以前的局特征,和其他高级匹配器相比,我们在准确率方面有竞争力,但速度比他们快得多。

        引言:

        1.视觉定位在自动驾驶和机器人领域有着广泛的应用。在视觉定位领域,基于映射和结构的定位方法依然占据了主导地位。传统的方法主要依赖于手工设计的特征(SIFT和ORB等),这些特征主要是基于局部patches的统计描述,并且广泛地被使用,但在光照和季节变化的挑战性场景中容易发生改变。近年来,CNN在视觉领域的成功应用,涌现了一系列基于深度学习的关键点检查的匹配方法(如SuperPoint,D2-net,ASLFeat,LFnet,R2D2,DISK,LIFT),他们有着杰出的性能。只要有足够大量的训练数据,这些方法都可以自动的检测出更多可信赖区域(如建筑物、交通道)的关键点,并聚合成匹配准确率高的描述符。然而,在训练期间缺乏语义信号,他们挑选全局可靠关键点的能力被限制。简单来说,他们更容易从局部区域(如天空、车辆)中检测可靠的关键点,但这些区域的关键点对于我们长期视觉定位是没有帮助的。

    2.最近,基于空间特征点(比如:SuperGlue,ClusterGNN)或者密集像素(比如:ASpanFomer,S2DNet,FGC-Net,ENet,LoFTR)的先进匹配器已经取得了卓越的性能。但是由于注意力和相关体积的计算他们有着二次时间复杂度,而且先进的匹配器依赖于特征点的空间联系,执行的是图像匹配而不是快速逐点匹配使得他们在执行映射和定位过程中,比起最近领匹配会花费更多的时间,因为存在着远超图像数量的大量的图像对。除此之外,一些工作利用图像的语义信息过滤不稳定特征来消除错误的图像对应,并且显示出比先进匹配更好的准确率。然而,在测试阶段,他们需要额外的语义分割网络来提供语义标签,并且在分割出错的时候模型是脆弱的。

        3.取而代之的是:我们隐式地将语义包含进局部特征模型中,允许他以端到端的方式自动地从单一网络中提取可靠特征。在训练阶段,我们显式地提供了语义标签作为监督指导检测和描述行为。具体而言:在检测过程中,和过去的方法(SuperPoint,D2Net,ASLFeat,R2D2)采用穷举检测不同,我们 采用语义感知检测损失来鼓励我们的检测器偏爱来自可靠对象(如:建筑物、交通道)的特征,抑制来自不可靠对象(如:天空)的特征。在描述阶段,与描述符学习中广泛使用的三方损失不同,我们采用的语义感知描述损失由两部分组成:类内损失和类间损失。类间损失:将语义嵌入描述符,使得同一标签的特征应该靠近,不同标签的特征应该远离。类内损失:独立地对每一类的特征进行操作,并将这些特征与相同标签的对象区分开来,是一种软排序损失。这种软排序损失避免了类间损失的冲突,并且保留了每一类损失的特征多样性(例如:来自建筑物的特征比来自交通道的特征更加多样和复杂)。通过语义感知描述损失,我们的模型有能力生成具有强大辨别能力的描述符。得益于隐式的语义嵌入,我们的模型在测试阶段避免使用语义分割网络,并在分割错误时也更加稳定。

        4.局部特征网络比典型的语义分割网络(UperNet)更简单,我们在编码阶段也采用了一种额外的特征一致性损失来加强网络学习语义信息的能力。为了避免耗费过多成本去生成地面真实标签,我们用现成的分割网络:DeepLab3+和a ConvNet for 2020s(在场景解析任务中取得sota性能的网络)的输出来训练我们的模型,当然其他的语义分割网络也是可以使用的。

        我们模型的总览如下图。我们在训练过程中,利用特征感知和语义感知将语义信息隐式的融入我们的特征检测和描述网络中。在测试阶段,我们的模型从单一网络中直接生成语义感知特征。本文的贡献主要如下:

47c6fb8ee8784ae0b79b17e5ef74ed23.png

        (1)我们提出来一种能够在训练过程中隐式地将语义融入特征检测和描述中,在测试中端到端的直接生成语义感知的特征的网络。

        (2)我们采用特征感知和语义感知组合的指导策略来使得模型更有效地嵌入语义信息。

        (3)在长期视觉定位任务中,我们的方法比起过去的局部特征方法先进匹配器,准确率具有竞争力,但更加高效,也就是更快。

        实验证明:我们的方法比起先进的匹配器更好地实现了准确率和有效性的平衡,尤其是计算能力受限的设备上。剩下的内容本文是这样组织的:第二章我们讨论最近地工作,第三章我们讨论方法的细节,第四章是实验,第五章局限性,第六章是总结。

        相关工作:

        在这一章,我们讨论了视觉定位,特征提取与匹配和知识蒸馏的相关工作

        1.视觉定位:视觉定位方法可以粗略的分类为基于图像的方法和基于结构的方法。基于图像的方法(例如:NetVLAD或者CRN)利用全局特征通过在本地数据库中寻找最形似的图片恢复相机姿势。由于数据库的图像数量限制,他们只能大概地给出相机位姿。为了得到更精确的相机位姿,基于结构的方法通过SFM构建稀疏3D图,并通过PnP或者2D-3D响应来估计位姿。一些其他工作尝试从图像中直接预测相机位姿(例如:posenet及其变体),还有些工作直接回归场景坐标(VS-Net)。然而,前者被证明和图像检索相似,后者在大尺度场景中泛化困难。

        2.局部特征:基于手工的特征已经被调查研究了几十年,我们建议读者阅读《Image Matching from Handcrafted to Deep Features: A Survey》来获取更多的细节并且把注意力放到基于学习的特征。由于CNN的成功,基于学习的特征被用来代替手工描述符和检测器。HardNet通过极大极小化正负样本的距离来聚焦于度量学习。CAPS , PoSFeat 和 PUMP在训练阶段不使用基于像素的响应,利用相机位置和匹配的局部一致性来作为监督。SuperPoint将关键点检测作为一项监督任务,从合成形状中训练检测器。D2Net使用跨通道的局部最大响应值作为分数图。R2D2考虑了重复性和可靠性,采用平均精度损失来进行描述符的训练。ASLFeat采用可微分的CNN层来学习形状感知的密集特征。由于他们主要聚焦于特征的局部可靠性而忽视了优于手工特征的准确性,他们的性能在长期视觉定位任务中会受到限制。为了进一步提升准确率,一些工作使用额外的匹配分数、可重复性或者语义标签滤除不稳定的关键点。与这些方法不同,我们的方法以端到端的范式自动地检测和提取语义感知特征。结果表明,我们的模型能够生成更加准确的定位任务。

        3.先进的匹配器:由于最近邻无法结合关键点的空间连接进行匹配,先进的匹配器通过利用一组关键点或者图像块的空间上下文来提高准确性。SuperGlue利用带有注意力机制的图神经网络在关键点间传播信息。它产生了令人印象深刻的准确性,但是时间复杂度与关键点的数量成二次方比,这个问题可以通过使用种子匹配和集群匹配来解决,但是时间仍然比最紧邻算法慢千倍。密集匹配器从相关体积中计算像素响应,比起稀疏匹配器他们要经历高时间和内存成本。而且先进的匹配器通常对图像对进行操作,而不是关键点,所以考虑到图像对的数量,具有先进匹配器的系统在实时应用中会更慢 。在这篇文章中,我们将高水平的语义信息嵌入到局部特征中隐式地加强特征检测和描述,使得我们的模型可以采用最简单的最紧邻匹配生成和先进匹配器同样有竞争力的结果。我们的模型计算能力受限的设备上,实现了一个时间和准确率的平衡。

        4.视觉语义定位:比起局部特征,高水平的语义特征在外观有变化更加的鲁棒,并且在视觉定位中被广泛的使用。LLN和SVL使用有辨别力的地表进行位置识别。ToDayGAN用GAN网络将夜间图像翻译为白天图像。MFC,SMC,SSM和DASGIL将语义分割网络整合到定位管道中,拒绝语义不一致的匹配。最近,LBR学习和识别粗略和精细定位的全局实例。在精细定位中,他过滤不稳定的特征和实施实例水平的匹配,实现了和先进匹配器接近的准确率。与这些在测试期间需要额外的模型来生成显式地语义标签的方法不同,我们将语义信息嵌入网络,并且直接从单一网络中生成语义感知的特征。

        5.知识蒸馏:知识蒸馏技术广泛应用于模型压缩和模型转移当中。我们使用通过现成网络预测得到的伪真实局部可信赖的语义标签更像是一个知识迁移任务。在这篇文章中,我们主要聚焦于如何将高水平的语义特征运用到低水平的特征提取当中。

        方法论:

        如上面图一所示,我们模型包括一个编码器eq?Fenc和两个解码器eq?Fdeteq?Fdesc。编码器eq?Fenc负责从图像eq?I中提取高水平的特征eq?X。解码器eq?Fdet负责预测置信度图eq?S,而解码器eq?Fdesc负责生成描述符eq?Xdesc.在本章中,我们会给出关于如何将语义信息融合进我们的特征检测和描述过程的一些细节。

        1.语义引导的特征检测

        检测器预测置信度图eq?S%3DFdet%28X%29。此前,置信度图S定义为patches的纹理丰富程度(例如:角点或者斑点的响应)。最近,基于学习的特征将置信度定义为描述符的区分判别能力。如下图所示,这两种对置信度图的定义都只利用了局部水平的像素,而忽略了全局的信息。与之前不同,我们重新定义了特征的置信度:既考虑局部可信度有考虑了全局稳定性。

334f40b5d9e847f299eb86d63cd644f0.png

        局部可信度:局部可靠性主要是关键点对于外观变化或者视点变化的鲁棒性。以前的方法采用两种策略进行可靠特征的学习:从地面真实角点进行学习或从描述符的判别能力学习。我们发现,与纯学习的检测器相比,真实的角点更加稳健,比如SuperPoint取得了比其他学习描述符更好的效果。因此,遵循前人的工作(从粗到细),我们采用SuperPoint的检测置信分数eq?Srel作为伪地面真实值,因为SuperPoint是最好的角点检测器。与此同时,局部可靠性通过训练中的描述符判别能力可以进行调整。

        全局稳定性:像素的全局稳定性是根据他所属的语义标签进行分配的。具体而言,我们将数据集ADE20K中所有的120个语义标签按照时间变化性分为四类如下表:

        易变对象(例如天空、水):这些对象经常发生变化,对于定位而言是冗余的。

        动态对象(例如汽车、行人):这些对象每天都在移动,可能通过引入错误的匹配导致定位错误。

        短期对象(例如树):这些对象可以用于短期定位任务(如 VO/SLAM),但它们对光照(低反照率)和季节变化敏感。

        长期对象(例如建筑物、交通信号灯):这些对象对上述变化具有抵抗力,非常适合长期定位。

4ce27fdc872c440bab4efe48ca64f619.png

        并不是直接过滤不稳定的特征,我们按照经验根据这些特征的稳定值进行重排序。我们将长期对象稳定值设置为1,短期对象设置为0.5,易变和动态对象设置为0.1.,因为我们的重排策略鼓励模型首先使用稳定特征,并在无法找到足够稳定关键点时使用其他对象的关键点作为补偿,从而提高模型在不同任务(例如特征匹配、短期定位)中的鲁棒性。下图展示了根据表1中的预定义语义标签生成的稳定性图eq?Ssta。目前的全局稳定性是根据预定义的语义标签分配的,但一个学习到的稳定性可能会提供更好的性能,值得进一步探索。

d1e183ffee7a459d815c791d472443b1.png

        语义引导的检测:全局置信图eq?Sgt是通过将局部置信图eq?Srel和全局稳定图eq?Ssta逐元素相乘得到的:eq?Sgt%3DSrel%5Cbigodot%20%5Ccdot%20Ssta。在特征检测过程中,局部可靠性图会为所有具有丰富纹理的像素分配高分,这些像素可能来自天空、行人和树木等,这些特征对定位没有帮助。然而,考虑到局部可靠性和全局稳定性的全局可靠性图能够有效地过滤掉这些敏感特征,并抑制短期关键点。检测损失被定义为:eq?Ldet%3DBCE%28S%2CSgt%29.

        2.语义引导的特征检测 :

        我们也通过将语义直接嵌入描述符中增强描述符的判别能力。与过去的描述符(只根据局部patch信息区分关键点)不同,我们的描述符加强了同类特征的相似,同时保留了类内匹配的差异性。然而,这两种加强在训练过程中是彼此冲突的,类间区分能力需要挤压描述符的空间维度,而类内区分能力会增加描述符的空间维度。一个简单的解决方案是为所有类别设置一个固定的边界(见下图),但这会导致对象内部多样性的丢失(例如,几乎所有的交通灯都很相似,但不同的建筑物差异很大),这对于内部类匹配至关重要。为了解决这个问题,我们基于两种不同指标定义了类间损失和类内损失。

edac065d9b144ae5af46ade08eec4789.png

        类间损失:我们首先通过极大极小化不同类描述符之间的欧几里得距离来加强特征的语义一致性。这允许特征从具有相同标签的候选项中找到对应项,从而减小搜索空间并提高匹配准确性。我们基于具有硬边距的三元组损失定义了类间损失,以在一个批次中将所有可能的正负关键点与不同标签分开:

d80e53e4a627438299c927da133b6a11.png

        类内损失:为了避免类内损失与类间损失冲突,我们放宽了同一标签描述符之间的距离限制。采用了一种软排名损失(soft ranking loss)来优化正样本和负样本的排名,而不是像传统的三元组损失(triplet loss)那样优化它们之间的距离。通过让正负样本共享相同的类别标签,并优化所有样本的排名,这种方法在保持同一类别对象上特征多样性的同时,避免了将正负样本对之间的边界过于硬化。这有助于提高特征匹配的准确性和鲁棒性。排名损失基于平均精度损失:

12dcbb0db6444bdf9b6a5a128626dd0d.png6149088883124523afb9d6c5534200f0.png

        3.隐式特征引导:

        通过语义感知检测和描述损失,我们的模型能够学习语义感知特征。然而,与特征学习相比,语义预测是一项更复杂的任务,需要强大的编码器和聚合层 进行语义感知特征嵌入。为了进一步提高我们的模型嵌入语义信息的能力,我们从当前的知识蒸馏任务中获得灵感,并在编码器的前三层的中间输出上引入特征一致性损失。

8352c1efc53e450aa3c4cdb9f06f30bb.png

        上图显示了我们网络的架构。我们将ConvNeXt编码器的中间输出作为监督信号,并对模型的中间2层的特征强制l1损失:

2fb7140a71fe44d08aa901deda0bdb27.png

        接下来是一些实验,本笔记不再重复,讲讲本文的局限性结论和展望:

       局限性:

        第一个限制是手动定义的稳定性值。从训练数据中学习到的稳定性图可能更健壮,进一步提高定位精度。此外,本文使用的语义标签来自 ADE20K,这些标签的数量是有限的。自动分割的细粒度语义标签在实际应用中可能更可靠。此外,这项工作主要集中在室外定位上,由于对象类的显著差异,在室内场景中可能效果不佳。通过使用室内对象的重新定义稳定性图重新训练模型,可以实现室内场景的更好性能。

        结论:

        在本文中,我们隐式地将语义信息纳入特征检测和描述过程中,使模型能够端到端从单个网络中提取全局可靠的特征。具体来说,我们利用现成的语义分割网络的输出作为指导,并采用语义和特征感知引导策略的组合来增强在训练时嵌入语义信息的能力。在大规模视觉定位数据集上的实验表明,我们的方法优于先前的局部特征,并为高级匹配器提供了具有竞争力的性能,但具有更高的效率。我们认为我们的方法可以在准确性和效率之间取得很好的权衡。

        后续我将会更新本论文的代码复现,请持续关注。

 

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值