0. 写在前面

SuperPoint 是基于自监督训练的特征点检测和描述符提取方法,是2018年MagicLeap发表的一篇文章中提出的。MagicLeap是一个备受争议的做VR的公司,大家如果对他的八卦有兴趣可以看这篇文章:

年度盘点,一文详解Magic Leap 2018年热搜高居不下的原因​baijiahao.baidu.com

我在阅读这篇文章的过程中,感觉作者的写作思路很清晰,尤其是把各个技术点之所以这么做的原因写的很清楚,所以又去搜了作者其他论文,一共搜到三篇,另外两篇分别是2016年和2017年发表的,这三篇文章通读下来,可以看清作者在使用深度学习进行位姿估计这一方法上的思路演变过程,为了把这一脉络理清楚,我们按照时间顺序对这三篇文章分别解读,分别是:

1)缘起:Deep Image Homography Estimation

2)发展:Toward Geometric Deep SLAM

3)正果:SuperPoint: Self-Supervised Interest Point Detection and Description

这次我们先一起讨论第一篇文章中的内容。

1. 概述

Deep Image Homography Estimation 是通过端到端的方式估计一对图像的单应矩阵。训练数据集是从MS-COCO上选取图片,然后把这张图片进行单应性变换得到图象对的方式生成的。为了得到矩阵变换的置信度(比如slam中设置方差需要这些东西),作者把网络分成两部分,分别对应两种输出,一种输出单一变换结果,另一种输出多个可能的变换结果,并给出每种变换结果的置信度,实际使用时,选择置信度最高的那个。

2. 算法流程

2.1 基础知识

刚才也提高,本篇文章所提出的方法输出的是单应性矩阵,所谓单应性矩阵,就是图象中的目标点认为是在一个平面上,相应的,如果不在一个平面上则被成为基础矩阵。单应矩阵和基础矩阵的区别可参考以下两篇文章:

https://blog.csdn.net/wangshuailpp/article/details/80424309​blog.csdn.nethttps://blog.csdn.net/potxxx/article/details/86752214​blog.csdn.net

在实际的slam应用中,单应矩阵在以下这三种情况时需要用到:

  • 相机只有旋转而无平移的时候,两视图的对极约束不成立,基础矩阵F为零矩阵,这时候需要使用单应矩阵H
  • 场景中的点都在同一个平面上,可以使用单应矩阵计算像点的匹配点。
  • 相机的平移距离相对于场景的深度较小的时候,也可以使用单应矩阵H。

在大家熟悉的ORB-SLAM中初始化的时候,就是单应矩阵和基础矩阵同时估计,然后根据两种方法估计出的结果计算重投影误差,选择重投影误差最小的那个作为初始化结果。

2.2 建立模型

一个单应矩阵其实就是一个3X3的矩阵,通过这个矩阵,可以把图像中的一个点,投影到对应的图像对上去,对应的公式为

在这篇文章中,作者为了更好的训练模型和评估算法效果,采用了另外一种模型,来等效代替上面的公式。我们知道,一张图片进行单应性变换的时候,图像上的点的坐标会根据变换矩阵发生变化(如上式),那么反过来,如果我知道n个变换前后的点的坐标,那么这两张图片之间的变换矩阵便可以得到,在平面关系中,n为4,即至少知道四个点就可以。因此作者用四个点对应的变化量来建立一个新的模型,如下式所示

它和单应性矩阵具有一一对应的关系

这样做的好处是,把图片对之间的矩阵关系,转换成了点和点之间的关系,在进行精度评估时,可以直接根据转换后的点的坐标与真实的坐标计算距离,作为误差评估指标,而且,还可以用于网络中损失函数的计算。

2.3 生成数据集

作者采用MS-COCO作为数据集,不过该数据集中没有图像对,也即没有单应矩阵的真值,这是没法进行训练的。因此作者根据数据集中原有图像,自动生成了图像对。具体方法如下图所示

具体步骤为:

1) 在图像中选取一个长方形区域,区域就可以用上面说的四个点的模型来表示

2) 把区域的四个点随机进行平移,这样就得到一个四边形,这两个四边形之间的单应矩阵也就是已知的

3) 把图像按照这个单应矩阵进行变换,并选取被四边形框住的区域

4) 这样1)中和3)中得到的图像就形成了一个已知真实单应矩阵的图像对

2.4 设计网络结构

本文的网络结构如下图所示

网络分成两部分,分别是Classification HomographyNet 和 Regression HomograhyNet,后者是直接输出8个量,这8个量自然就是四个点各自的x和y坐标值。但这样的缺点也很明显,就是不知道每个坐标值的置信度是多少,比如在slam中设置方差时就没有根据。因此Classification HomographyNet就是在Regression HomograhyNet的基础上,把输出端改成了8X21的输出向量,这里的8仍然是四个点各自的x和y坐标,这里的21是每个坐标值的可能值之一,并且给出了该值的概率,这样就可以定量分析置信度了。该网络所输出的置信度的可视化效果如下图所示

2.5 实验结果

实验结果的精度评测方法就是根据每个点的坐标按照单应矩阵进行转换后,和真实坐标进行L2距离测量,再把四个点的误差值取平均得到。作者把网络两部分的输出和ORB特征计算的结果分别进行了评测,对比结果如下:

从这张表里看,并没有比ORB表现出明显的优势,但是作者展示了几张图片,每个图片里显示了矫正之后的方框对,从方框对中可以明显看出区别。左边是ORB方法的,右边是本文方法的。

3. 总结与思考

本文设计了一种端到端的单应矩阵的估计方法,采用提取定点的结构等效单应矩阵,基于这种结构设计了数据集产生方法和精度评测方法,最终的结果显示效果要明显高于ORB进行的提取。

一些思考:

1) 这种从图像中产生真值,然后在利用这些图像去估计矩阵的方式是否有过拟合的嫌疑?

2) 单应矩阵一般特征共面时使用,论文中最后对比效果所列的图片明显不是这种情况,它之所以能对齐,是因为它用这个训练的,而ORB是根据真实的场景估计的,没有共面假设,这种对比是不是在根本上就不合理?

lisp提取长方形坐标_语义SLAM | 深度学习用于特征提取 : SuperPoint(一)相关推荐

  1. lisp提取长方形坐标_坐标提取lisp程序.doc

    坐标提取lisp程序 坐标提取lisp程序?? 2010-05-17 20:50:07|??分类: 工程 |??标签: |字号大中小?订阅 ;该程序主要用于CAD点(point)三维坐标提取,并将数据 ...

  2. lisp提取长方形坐标_坐标提取lisp程序

    坐标提取lisp程序 坐标提取lisp程序 2010-05-17 20:50:07| 分类: 工程 | 标签: |字号大中小 订阅 ;该程序主要用于CAD点(point)三维坐标提取,并将数据输出为C ...

  3. lisp提取长方形坐标_如何利用lisp程序一次性提取CAD中点的坐标(不要点击每个点,太多了麻烦)...

    (DEFUN C:TT ( / ss ff ss1 en pt x y) (setvar "cmdecho" 0) (setvar "blipmode" 0) ...

  4. lisp提取长方形坐标_用 Python 对图片主体轮廓进行提取、颜色标记、并计算区域面积...

    Python +  Opencv2  实现轮廓提取,轮廓区域面积计算: 对图像处理时,会遇到这样一个场景:找到图像主体轮廓,这是其一,可能为了凸显轮廓,需要用指定的颜色进行标记:轮廓标记完可能任务还没 ...

  5. lisp提取长方形坐标_在CAD中,用LISP如何提取三维多段端点坐标?

    答:请查看附件,写的lisp程序,输入tt运行程序,批量选择cad中的点,然后将坐标写入txt文件. 指定保存文件的位置及名称,... 答:(vl-load-com) (setq ptb (vlax- ...

  6. lisp提取长方形坐标_求修改lisp程序,如何提取CAD中多个点的坐标,(本人想提取UCS坐标系)另外只需要提取X,Y值,不要Z...

    (defun c:tqzb (/) (setq cm (getvar "cmdecho")) (setvar "cmdecho" 0) (if (setq wj ...

  7. 深度学习用于视频检测_视频如何用于检测您的个性?

    深度学习用于视频检测 视频是新的第一印象! (Videos are the New First Impressions!) Think about the approximate number of ...

  8. 诺亚面向语音语义的深度学习研究进展

    本文来自华为诺亚方舟实验室资深专家刘晓华在携程技术中心主办的深度学习Meetup中的主题演讲,介绍了华为诺亚面向语音语义的深度学习进展. 本次演讲简要回顾了深度学习近十年进展,重点介绍华为诺亚方舟实验 ...

  9. OpenCV语义细分深度学习网络的实例(附完整代码)

    OpenCV语义细分深度学习网络的实例 OpenCV语义细分深度学习网络的实例 OpenCV语义细分深度学习网络的实例 #include <fstream> #include <ss ...

最新文章

  1. [YTU]_2428(C语言习题 计算该日在本年中是第几天)
  2. java之图形化界面(GUI)
  3. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)
  4. mysql大数据量的全量备份_mysql备份神器——Xtrabackup全量备份还原
  5. 抢占朋友圈C位 闪耀世界杯 就要Pick 腾讯云CDN
  6. 华三 h3c路由协议BGP对等体组、反射器、路由选路综合实验
  7. 【Matlab学习笔记】【数学形态学】分水岭分割算法
  8. 服务器防御DDOS的办法
  9. 国标:计算机软件文档编制规范
  10. 粒子滤波 python,粒子滤波器基本原理.ppt.ppt
  11. Linux遇到Aborted (core dumped)
  12. 周鸿袆讲座:互联网软件的微创新和用户体验(转)
  13. 人力资源管理七大问题
  14. 什么是计算机系统性能,什么系统性能好?电脑发烧友告诉你
  15. 函数的length代表什么
  16. Gitee/GitHub使用SSH下载文件时报错:The authenticity of host ‘gitee.com (212.64.63.215)‘ can‘t be established.
  17. win10运行cassandra-3.11.9报Problematic frame: sigar-amd64-winnt.dll+0x14ed4
  18. web实践小项目一:简单日程管理系统(涉及html/css,javascript,python,sql,日期处理)...
  19. 圣卡塔利娜海岸5K Mac高清壁纸
  20. 汇报开题PPT模板网站

热门文章

  1. 又跑回去拿的即时通讯
  2. 写完程序 看 蜡笔小新 的有木有
  3. 飞鸽推广的超级商务微博的栏目介绍(二)
  4. 大公司or小公司,我该怎么选?
  5. 2019年大数据发展趋势预测
  6. protobuf数据类型_protobuf【1】
  7. 厦门大学林子雨教授大数据技术原理及应用课程问题处理集锦
  8. 什么配置的电脑可满足基因组索引构建的需求?
  9. 有了它,快速学会RStudio应用
  10. 这个R包自动注释单细胞数据的平均准确率为83%,使用后我的结果出现了点问题|附全代码...