SuperPoint 论文详解

SuperPoint

该论文是 magic leap 公司在18年的一篇工作,而且提供了代码,基于 pytorch 的,不过遗憾的是训练代码和相应的渲染的训练数据没提供。

主要思路

本文提出了一个自监督的方式去训练网络来提取特征点以及计算描述符。

基本流程

整体框架

整体框架如下图,下面会abc三个步骤分别介绍:
整体框架

特征点提取预训练

如果要使用有监督的深度学习方案来解决该问题,不同于其他传统的像分类、检测和分割这样视觉任务,对于任意给定的一张图像,有确定的语义上的真值。对于特征点提取这个任务来说,很难人为的去判断哪一个像素点可以作为特征点,所以也很难让用户去标注,所以现在要在没有标注数据前提下去解决。
该文作者提出了一种迂回的方式,具体流程如下:

  1. 利用基本形状元素渲染得到训练集和真值,如下图:
    对于任意的图像很难去确定特征点位置,但是如果图像上只有线段、三角形、矩形和立方体等基本形状元素的话,那么特征点的位置一般都是在端点和定点上,那么真值就很好确定了。但是也很难获取这种只包含基本形状元素的图像,所有作者使用渲染的方式来获取对于任意的图像很难去确定特征点位置,但是如果图像上只有线段、三角形、矩形和立方体等基本形状元素的话,那么特征点的位置一般都是在端点和定点上,那么真值就很好确定了。但是也很难获取这种只包含基本形状元素的图像,所有作者使用渲染的方式来获取训练图像,那么真值自然就获得了。
    特征点训练数据
  2. 利用上面的训练数据和真值训练起来,这样就得到可以提取基本形状元素特征点的模型了,文章中叫做MagicPoint,结构如下(只关注上面,下半部分是提取描述符的):
    其实这里面也有一些问题,点的数目不固定怎么来映射,比较直观的想法是利用类似关节点提取的方法,但可能会有点问题,就是后面的heatmap需要保证和输入图像分辨率一致,不然网络降采样会导致找不到精确的特征点。作者采用了另外的方式,类似语义分割的方式,就是网络整体就做8次降采样,最后会输出65个通道的heatmap,65通道对应原始图像的8x8的一个patch,表示该点是特征点的概率值,多出一个值表示不存在特征点,这样就把特征点提取转换成分类问题。
    上面论文中实现其实有个细节是,如果同一个8x8的patch上存在多个特征点,因为分类只能有一个真值,所以只会选择其中一个特征点当做真值去训练,测试过程利用阈值来截取,同一个8x8的patch可以获得多个特征点,这是需要注意的。但是训练时的选取的策略没仔细看,需要注意一下???
    整体深度学习架构
真实图像自标注

真实图像自标注主要使用单应适应的方法,这也是该文的核心贡献,主要是通过单应变换把上面的MajicPoint的能力传递到一般图像上,主要流程如下图:
前面的MagicPoint只是在基本形状元素的图像上训练出来的,对于一般的图像提取效果可能不太好。主要思路是想利用MS-COCO上的大量的图像来进一步训练得到一般性的模型。但该数据集没有特征点真值的,所以方案就变成通过之前训练好的MagicPoint获取MS-COCO数据集的特征点的真值。这里主要是对MS-COCO数据集的每张图像做n种单应变换(文章中最后用的100种),得到n张变换后的图像,在这些图像上利用MajicPoint模型分别提取特征点,可以得到n个特征点的heatmap,把这n个heatmap累加到一起,得到最终的heatmap,然后使用阈值截取获得每个位置上的特征点,这个就是原始图像的特征点的真值,用来训练。
单应适应
关于单应变化,论文中拆分成多个子变换,如下图:
在这里插入图片描述

特征点提取和描述符计算联合训练

首先MS-COCO真实图像集,目前通过前面的步骤已经获取图像对应的特征点的真值了。但同特征点一样,描述符也存在真值的问题,任意两张图像,真值是没法确定和标注的。这里的描述符直接由深度学习网络的feature map输出,但是这样的feature map不一定满足描述符的特性,简单来说就是需要同样的特征点之间描述符的距离尽可能的近,而不同特征点之间的描述符的距离尽可能远。(这里的近和远只是表示在一定度量方法下的描述符的相似程度)
该文对原始图像做warp,然后两张图像都能特征点对应关系也是知道的,由warp函数决定,对于两张图像中任意的两对点都会求loss,去优化使匹配点距离小,非匹配点距离大,这样最后得到的描述符就是满足需求的。
需要注意的是描述符的feature map是通道为D的,但是分辨率是原始图像的1/8,也就是8x8的图像patch需要公用同一个描述符,描述符的维度是D。

试验

后面补充

  • 28
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
### 回答1: SuperPoint 是一种用于特征检测和匹配的算法。它能够快速、精确地检测图像中的关键点,并将它们用来匹配不同的图像。这种算法在许多计算机视觉任务中得到了广泛应用,包括图像拼接、相机定位和三维建模。 ### 回答2: SuperPoint 是一种在计算机视觉领域应用的特征点检测和描述算法。它是基于深度学习的方法,采用了在大规模图像数据集上进行无监督训练的方式来学习特征点。与传统的手工设计的特征点算法相比,SuperPoint 在性能上更加出色。 SuperPoint 算法的核心思想是通过一个神经网络来直接学习图像中的特征点。具体地说,SuperPoint 基于卷积神经网络(CNN)和特征金字塔,结合了监督和无监督的训练方式。它能够对输入的图像进行参数化处理,提取出特征点所在的位置和对应的描述子。 SuperPoint 在训练时使用了大量的图像数据,这样网络能够学到更多的视觉特征,从而提高了特征点检测和描述的准确性。此外,SuperPoint 还采用了金字塔法来处理不同分辨率的图像,使得算法能够在多个尺度下进行特征提取,提高了算法的鲁棒性。 SuperPoint 在实际应用中有广泛的用途,特别是在图像配准、目标跟踪、三维重建等领域。它可以用于匹配图像中的特征点,以及在图像序列中跟踪目标。它还可以提供用于三维重建的描述子,用于生成稠密点云或构建三维模型。 总之,SuperPoint 是一种基于深度学习特征点检测和描述算法,通过无监督训练从大规模图像数据中学习特征点。它在性能上优于传统的手工设计算法,在图像配准、目标跟踪和三维重建等领域有着广泛应用。 ### 回答3: SuperPoint是一个基于深度学习特征点检测和描述算法。它最初由美国某大学的研究团队提出,旨在解决传统算法在特征点数量和精度上的限制。 SuperPoint采用深度神经网络模型,通过训练过程学习特征点的位置和描述。与传统算法相比,SuperPoint具有以下优点:首先,SuperPoint能够检测到更多的特征点,覆盖面积更广。这得益于深度学习模型的强大处理能力,可以从图像中学习到更多丰富的特征信息。第二,SuperPoint对于重复和模糊的特征点有更高的鲁棒性。传统算法往往难以区分这些特征点,而SuperPoint的深度模型能够更好地学习到它们的特点。第三,SuperPoint的描述子有更高的表达能力,能够更好地区分不同的特征点。这使得在进行图像匹配等任务时,SuperPoint能够提供更准确的结果。 SuperPoint已经在多个计算机视觉任务中取得了良好的效果。例如,在三维重建、图像定位和场景理解等领域,SuperPoint特征点检测和描述方面的性能均优于传统算法。此外,SuperPoint还能与其他深度学习算法相结合,形成更强大的系统,如结合深度估计算法进行立体匹配。 总之,SuperPoint是一种基于深度学习特征点检测和描述算法,相较于传统算法具有更高的特征点数量和精度。它在多个计算机视觉任务中展现出了良好的性能,为相关研究和应用领域提供了强大的工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值