社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

深度学习时代的稀疏特征提取和匹配

GIS研发 • 2 月前 • 84 次点击  
转自:B站
https://zhuanlan.zhihu.com/p/598325804

关键词:feature matching, correspondence, keypoint detection

1、Introduction

特征匹配要匹配的点应该是在三维场景中一点在不同相机上的成像,我们可以根据匹配的特征(点)来求解相机位姿和重建场景的稀疏点云,特征匹配任务是三维视觉中的一个基础任务,slam和sfm等诸多任务都要在其基础上进行,特征匹配方法的好坏会对这些下游任务产生直接影响。

广义的稀疏特征匹配可以分为(1)关键点提取(keypoint detection)和描述子生成(descriptor),(2)根据描述子进行匹配(feature matching)和(3)最后进行外点过滤(outlier rejection)等步骤,与其相似的是光流法,光流法通常被认为是稠密特征匹配,有其特殊的应用场景和优点,但是不在本文章讨论范围内。对于两张对同一场景在不同角度拍摄的图片,如果对一张图片上所有的点都进行匹配,无论在计算复杂度上还是在方法实现难度上都是很具有挑战性的,因此很自然的想到只匹配图片上一些关键点(容易辨认的,通常为角点),这就诞生了关键点提取这个任务(光流法是对图片上所有点进行匹配,但是要求两张图片拍摄角度差异较小),然后检测特征点时同时给以每一个关键点生产一个描述向量,用于匹配两张图片上的关键点,匹配上的关键点通常有很多错误匹配,我们会使用一些过滤方法过滤掉这些错误匹配(如RANSAC)。

本文主要介绍基于深度学习方法的特征提取与匹配,因此不会介绍诸如SIFT、RANSAC这样的传统方法的实现,只是会简要回顾一下历史发展。

2、关键点提取和描述子生成

特征匹配为我们打开了三维视觉的大门。

对于特征点提取和描述子生成,2000年出现的SIFT方法的成功提出和应用使得我们可以数学方法求解相机位姿并重建场景的一些稀疏点云,SURF、FAST和ORB等高效特征点描述方法使得实时的建图和定位(Simultaneous Localization And Mapping, slam)成为现实,但是SIFT、SURF、ORB和FAST等方法都是基于手工设计的方法,根据自己的理解来对图片提取特征并匹配,这种设计思路极大依赖于人的智慧,随着深度学习时代的到来,卷积神经网络(CNN)在二维图像提取上展现了惊人的效果,学者们开始思考使用卷积神经网络来进行特征点的提取和描述子的生成,(笔者认为)优秀的工作有:

1)LIFT,这是使用卷积神经网络来检测特征点和生成描述子的开山之作,这篇论文发表于2012年,作者成功训练出一个端到端的神经网络来进行特征点提取和描述点生成,并且效果由于传统方法的SIFT,尽管从现在的角度看来网络比较复杂,但是为后来该领域的研究指明了方向。

2)D2Net,这篇文章的网络较为简单,借鉴于SIFT多尺度的实现方法,指出特征点检测和描述子生成两个任务相互关联的特点,使用一个网络同时完成检测特征点和描述子生成两个子任务。

3)Superpoint,这篇文章一大亮点是采用了自己生成的虚拟数据集进行网络的有监督训练,通常来说缺乏对特征点的定量定义,因此究竟图片上哪些点属于特征点有些争论,这篇文章作者自己用计算机图形学的方法生成一些三角形,正方形,这些点的坐标我们已经提前知道,因此进行有监督训练。

4)R2D2、CAPS等其它方法

3、 匹配

关键点提取和描述子生成之后我们需要对这些点进行匹配,传统方法是进行最近邻匹配(nearest neighbour),两张图片上互为最近邻的两个点,但是在有些场景下这种方法效果很差(如室内弱纹理的场景,地板和沙发,或者重复纹理如黑白棋盘的图片),卷积神经网络可以处理特征提取的问题,但是在匹配上缺十分困难,一种方法思路是在提取特征点和描述子生成的时候就引入全局信息,如4)ContextDesc,但笔者认为这种方法只是有所缓解,并不能彻底解决,直到Transformer大火之后5)Superglue方法通过带有注意力机制的图网络(attention graph neural network)和最优传输算法(Optimal Transport)取得惊人的效果(基本把提升匹配的准确率和召回率这条路给堵死了),后续的工作基本上围绕着提升匹配速度方面做改进,比较好的工作是6)SGMNet(港科大的论文,思路新颖,代码开源,文档清晰,clusterGNN(这篇文章思路很新颖,但作者没有开源,并且缺乏复现的细节)。

4、错匹配过滤(outlier rejection)

关于错误匹配的过滤方面也有一些有意思的工作,如7)PointCN8)OANet,(尽管superglue为代表的方法已经堵死了这个方向,这个方向的论文在17年到20年,superglue的发展在20年及以后)这个主要是得益于PointNet的网络结构提出,学者发现也可以应用在2D图像上,因此就把PointNet的网络结构拿来使用,具体操作是对一些预先匹配好的特征点对,输入进网络里,输出为每一对特征点正确匹配的概率,PointCN是这个小方向的开山之作,OANet是这个方法的加强版。

5、其它范式的特征匹配

5.1、半稠密匹配(以LoFTR为代表)

9)LoFTR

5.2、其它(主要是COTR)

10)COTR

深度学习时代的稀疏特征提取和匹配

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/179046
 
84 次点击