一种用于SLAM/SFM的深度学习特征点 SuperPoint

2020 年 10 月 27 日 计算机视觉life

点击上方“计算机视觉life”,选择“星标”

快速获得最新干货

本文转自3D视觉工坊

本文出自近几年备受瞩目的创业公司MagicLeap[1],之前发表在CVPR, 一作Daniel DeTone[2]paper[3]slides[4]code[5]。虽然过去了挺久,但是仍然是经典,值得学习
这篇文章设计了一种自监督网络框架,能够同时提取特征点的位置以及描述子。相比于patch-based方法,本文提出的算法能够在原始图像提取到像素级精度的特征点的位置及其描述子。本文提出了一种单应性适应( Homographic Adaptation )的策略以增强特征点的复检率以及跨域的实用性(这里跨域指的是synthetic-to-real的能力,网络模型在虚拟数据集上训练完成,同样也可以在真实场景下表现优异的能力)。

介绍

诸多应用(诸如SLAM/SfM/相机标定/立体匹配)的首要一步就是特征点提取,这里的特征点指的是能够在不同光照&不同视角下都能够稳定且可重复检测的2D图像点位置
基于CNN的算法几乎在以图像作为输入的所有领域表现出相比于人类特征工程更加优秀的表达能力。目前已经有一些工作做类似的任务,例如人体位姿估计,目标检测以及室内布局估计等。这些算法以通常以大量的人工标注作为GT,这些精心设计的网络用来训练以得到人体上的角点,例如嘴唇的边缘点亦或人体的关节点,但是这里的问题是这里的点实际是ill-defined(我的理解是,这些点有可能是特征点,但仅仅是一个大概的位置,是特征点的子集,并没有真正的把特征点的概念定义清楚)。
本文采用了非人工监督的方法提取真实场景的特征点。本文设计了一个由特征点检测器监督的具有伪真值数据集,而非是大量的人工标记。为了得到伪真值,本文首先在大量的虚拟数据集上训练了一个全卷积网络(FCNN),这些虚拟数据集由一些基本图形组成,例如有线段、三角形、矩形和立方体等,这些基本图形具有没有争议的特征点位置,文中称这些特征点为 MagicPoint ,这个pre-trained的检测器就是 MagicPoint 检测器。这些 MagicPoint 在虚拟场景的中检测特征点的性能明显优于传统方式,但是在真实的复杂场景中表现不佳,此时作者提出了一种多尺度多变换的方法 Homographic Adaptation 。对于输入图像而言, Homographic Adaptation 通过对图像进行多次不同的尺度/角度变换来帮助网络能够在不同视角不同尺度观测到特征点。综上:SuperPoint = MagicPoint+Homographic Adaptation

算法优劣对比

  • 基于图像块的算法导致特征点位置精度不够准确;
  • 特征点与描述子分开进行训练导致运算资源的浪费,网络不够精简,实时性不足;或者仅仅训练特征点或者描述子的一种,不能用同一个网络进行联合训练;

网络结构

上图可见特征点检测器以及描述子网络共享一个单一的前向encoder,只是在decoder时采用了不同的结构,根据任务的不同学习不同的网络参数。这也是本框架与其他网络的不同之处:其他网络采用的是先训练好特征点检测网络,然后再去进行对特征点描述网络进行训练。网络共分成以下4个主要部分,在此进行详述:

1. Shared Encoder 共享的编码网络

从上图可以看到,整体而言,本质上有两个网络,只是前半部分共享了一部分而已。本文利用了VGG-style的encoder以用于降低图像尺寸,encoder包括卷积层,max-pooling层,以及非线性激活层。通过3个max-pooling层将图像的尺寸变成 ,经过encoder之后,图像由 变为张量

2. Interest Point Decoder

这里介绍的是特征点的解码端。每个像素的经过该解码器的输出是该像素是特征点的概率(probability of “point-ness”)。通常而言,我们可以通过反卷积得到上采样的图像,但是这种操作会导致计算量的骤增以及会引入一种“checkerboard artifacts”。因此本文设计了一种带有“特定解码器”(这种解码器没有参数)的特征点检测头以减小模型计算量(子像素卷积)。例如:输入张量的维度是 ,输出维度 ,即图像的尺寸。这里的65表示原图 的局部区域,加上一个非特征点 dustbin 。通过在channel维度上做softmax,非特征点dustbin会被删除,同时会做一步图像的 reshape 。(这就是子像素卷积[6]的意思,俗称像素洗牌)

3. Descriptor Decoder

首先利用类似于UCN的网络得到一个半稠密的描述子(此处参考文献UCN[7]),这样可以减少算法训练内存开销同时减少算法运行时间。之后通过双三次多项式插值得到其余描述,然后通过 L2-normalizes 归一化描述子得到统一的长度描述。特征维度由 变为
由特征点得到其描述子的过程文中没有细讲,看了一下源代码[8]就明白了。其实该过程主要用了一个函数即 grid_sample ,画了一个草图作为解释。
  • 图像尺寸归一化:首先对图像的尺寸进行归一化,(-1,-1)表示原来图像的(0,0)位置,(1,1)表示原来图像的(H-1,W-1)位置,这样一来,特征点的位置也被归一化到了相应的位置。
  • 构建grid:将归一化后的特征点罗列起来,构成一个尺度为1*1*K*2的张量,其中K表示特征数量,2分别表示xy坐标。
  • 特征点位置反归一化:根据输入张量的H与W对grid(1,1,0,:)(表示第一个特征点,其余特征点类似)进行反归一化,其实就是按照比例进行缩放+平移,得到反归一化特征点在张量某个slice(通道)上的位置;但是这个位置可能并非为整像素,此时要对其进行双线性插值补齐,然后其余slice按照同样的方式进行双线性插值。注:代码中实际的就是双线性插值,并非文中讲的双三次插值;
  • 输出维度:1*C*1*K。

4. 误差构建

可见损失函数由两项组成,其中一项为特征点检测loss ,另外一项是描述子的loss
对于检测项loss,此时采用了交叉熵损失函数:
其中:
描述子的损失函数:
其中 Hinge-loss (合页损失函数,用于SVM,如支持向量的软间隔,可以保证最后解的稀疏性);
同时指示函数为 , 表示所有正确匹配对集合:

网络训练

本文一共设计了两个网络,一个是 BaseDetector ,用于检测角点(注意,此处提取的并不是最终输出的特征点,可以理解为候选的特征点),另一个是 SuperPoint 网络,输出特征点和描述子。
网络的训练共分为三个步骤:
  1. 第一步是采用虚拟的三维物体作为数据集,训练网络去提取角点,这里得到的是 BaseDetector 即, MagicPoint
  2. 使用真实场景图片,用第一步训练出来的网络 MagicPoint + Homographic Adaptation 提取角点,这一步称作兴趣点自标注(Interest Point Self-Labeling)
  3. 对第二步使用的图片进行几何变换得到新的图片,这样就有了已知位姿关系的图片对,把这两张图片输入SuperPoint网络,提取特征点和描述子。

预训练Magic Point

此处参考作者之前发表的一篇论文[Toward Geometric Deep SLAM[9]],其实就是 MagicPoint ,在此不做展开介绍。

Homographic Adaptation

算法在虚拟数据集上表现极其优秀,但是在真实场景下表示没有达到预期,此时本文进行了 Homographic Adaptation 。 作者使用的数据集是 MS-COCO ,为了使网络的泛化能力更强,本文不仅使用原始了原始图片,而且对每张图片进行随机的旋转和缩放形成新的图片,新的图片也被用来进行识别。这一步其实就类似于训练里常用的数据增强。经过一系列的单映变换之后特征点的复检率以及普适性得以增强。值得注意的是,在实际训练时,这里采用了迭代使用单映变换的方式,例如使用优化后的特征点检测器重新进行单映变换进行训练,然后又可以得到更新后的检测器,如此迭代优化,这就是所谓的self-supervisd。

最后的关键点检测器,即
可以表示为再所有随机单映变换/反变换的聚合:
利用上面网络得到的关键点位置以及描述子表示构建残差,利用 ADAM 进行优化。

实验结果

总结

  1. it is possible to transfer knowledge from a synthetic dataset onto real-world images
  2. sparse interest point detection and description can be cast as a single, efficient convolutional neural network
  3. the resulting system works well for geometric computer vision matching tasks such as Homography Estimation
  4. 研究Homographic Adaptation能否在语义分割任务或者目标检测任务中有提升作用
  5. 兴趣点提取以及描述这两个任务是如何影响彼此的
作者最后提到,他相信该网络能够解决SLAM或者SfM领域的数据关联,并且 learning-based 前端可以使得诸如机器人或者AR等应用获得更加鲁棒。

参考资料

[1]MagicLeap: https://www.magicleap.com/
[2]Daniel DeTone: http://www.danieldetone.com/
[3]paper: https://arxiv.org/abs/1712.07629
[4]slides:https://github.com/MagicLeapResearch/SuperPointPretrainedNetwork/blob/master/assets/DL4VSLAM_talk.pdf
[5]code:https://github.com/MagicLeapResearch/SuperPointPretrainedNetwork
[6]子像素卷积: https://blog.csdn.net/leviopku/article/details/84975282
[7]UCN: https://arxiv.org/abs/1606.03558
[8]SpatialGridSamplerBilinear:https://github.com/pytorch/pytorch/blob/f064c5aa33483061a48994608d890b968ae53fb5/aten/src/THNN/generic/SpatialGridSamplerBilinear.c
[9]Toward Geometric Deep SLAM: https://arxiv.org/abs/1707.07410

编辑:计算机视觉SLAM

本文仅做学术分享,如有侵权,请联系删文。

专辑:计算机视觉方向简介

专辑:视觉SLAM入门

专辑:最新SLAM/三维视觉论文/开源

专辑:三维视觉/SLAM公开课

专辑:深度相机原理及应用

专辑:手机双摄头技术解析与应用

专辑:相机标定

专辑:全景相机

从0到1学习SLAM,戳↓

视觉SLAM图文+视频+答疑+学习路线全规划!

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

投稿、合作也欢迎联系:simiter@126.com

扫描关注视频号,看最新技术落地及开源方案视频秀 ↓

登录查看更多
0

相关内容

即时定位与地图构建(SLAM或Simultaneouslocalizationandmapping)是这样一种技术:使得机器人和自动驾驶汽车等设备能在未知环境(没有先验知识的前提下)建立地图,或者在已知环境(已给出该地图的先验知识)中能更新地图,并保证这些设备能在同时追踪它们的当前位置。
专知会员服务
17+阅读 · 2020年12月23日
【2020新书】傅里叶变换的离散代数,296页pdf
专知会员服务
111+阅读 · 2020年11月2日
【NeurIPS 2020】一种端到端全自由度抓取姿态估计网络简介
专知会员服务
19+阅读 · 2020年10月18日
【NeurIPS2020】点针图网络,Pointer Graph Networks
专知会员服务
39+阅读 · 2020年9月27日
近期必读的9篇 CVPR 2019【视觉目标跟踪】相关论文和代码
【泡泡图灵智库】用于多相机匹配的时空二进制特征
泡泡机器人SLAM
4+阅读 · 2019年9月16日
【泡泡图灵智库】实时单目物体-模型感知稀疏SLAM(ICRA)
泡泡机器人SLAM
10+阅读 · 2019年7月12日
【泡泡图灵智库】Visual SLAM: 为什么要用BA(ICRA)
泡泡机器人SLAM
50+阅读 · 2019年7月11日
3D重建:硬派几何求解vs深度学习打天下?
机器之心
5+阅读 · 2019年7月8日
【泡泡图灵智库】基于几何一致性网络的摄像机运动估计
【泡泡图灵智库】通过基准标志匹配改善的SFM算法(ECCV)
Arxiv
0+阅读 · 2021年1月23日
DPOD: Dense 6D Pose Object Detector in RGB images
Arxiv
5+阅读 · 2019年2月28日
VIP会员
Top
微信扫码咨询专知VIP会员