注:本文不是翻译,重在关键点的理解和记录,以及额外材料的补充。
最近发现一篇中文文章:复杂环境下视觉SLAM闭环检测方法综述,和这篇Visual Place Recognition: A Survey有些部分很像,在将belife generation 模块的地方更容易理解,可以结合这篇中文文章看。
摘要:文章主要内容
首先,引入视觉位置识别的概念。
然后,在忽略环境外观变化的情况下,给出位置识别的解决方案。
再次,在考虑环境变化的情况下,给出位置识别的解决方案
最后,结合深度学习,语义分割,视频解说,讨论位置识别的未来。
I Introduction
一个位置识别系统需要做的是,像人或动物一样,识别出当前这个地方我曾经来过。这是一个较难的领域,是因为环境总是具有挑战性的变化。
首先,一个位置识别系统需要有一个内部表示的地图,去和当前输入的图像做比较;其次必须系统最后需要报告一个belife:是否最近的视觉信息是否在之前出现过。
II 在机器人领域的位置识别概念
视觉识别系统包括:图像处理模块 、belief 生成模块 、地图。
III what is a place?什么是位置?
由于机器人的传感器和执行器的噪声,去建一个精确的地图(a metrically accurate map),并且在里面实现定位是困难的。所以我们采用另一种简单而有效的建图方式——拓扑地图,它用节点代表位置,用edge代表位置之间的可能的路径。机器人导航简化为跟随节点之间的这些边缘,而位置代表了路径之间的关键交叉点或决策点以及期望的最终目标。
以下都是基于拓扑地图中node的选择。
位置的定义取决于导航的上下文环境,它可以被定义为一个点,也可以被定义为一个二维区域或三维区域。与机器人的位姿不同,一个palce没有方向,一个依旧存在的挑战是位姿不变性——无论机器人在这个地方的方向如何,都能确保被识别出来。
**palce quantify **: 如何将世界分为不同的地方?
这个问题与视频分割中的变化点检测相似,所以能使用变换点检测算法:例如
Bayesian surprise,语义回归。过去有:将相似图片聚为一组(ISP)作为拓扑地图的节点;结合Kalman filtering 和 the Neyman-Pearson Lemma.;dynamic vocabulary building;topic modelling;coresets;都是用于如何将视频/图片序列转化为不同place的方法。
【Future and challenge】一个持续的挑战是:使用语义标签(如“门”或“十字路口”)增强外观信息,因此,Place可以根据label在线选择决策点。在地图中加入语义数据可以改善规划和导航任务,需要将位置识别与其他识别和分类任务相关联,尤其是场景分类和对象识别。这些关系是共生——识别可以改善目标检测,为目标检测提供上下文启动以及上下文先验对象定位,反之,目标识别也可以帮助位置识别, 特别是在室内环境,例如厨房或客厅可以由一些oject来确定,从而有利于语义地图的建立。
IV. 描述位置:图像处理模块
视觉位置描述主要分为两大类:那些有选择地提取图像中,某些有趣或值得注意的部分(local freture descriptor),以及那些描述整个场景而没有选择阶段的部分(global freture descriptor)。常见的local :SIFT,SURF,FAST…常见的global:HOG,PHOG,Gist…
local 和 global 区别 :local需要先检测出角点(特征点/感兴趣的点),而global无需检测这一步,不管图像的内容直接进行操作。
【Future and challenge】: 权衡pose invariance(不管图像实在地方的那个角度(视点)拍摄的都能被识别出来这个地方)和condition invariance(当视觉外观变化时(例如光照变化:同一个地方的白天与黑夜)也能识别出位置)这两个方面,到现在还是没有很好的解决。
【词袋模型的缺点】:
- 不能很好的解决“感知偏差”问题,直观特征描述子出现没出现,忽略了场景的几何位置关系。
- 词袋模型是典型的预先训练的模型,也就是说如果换了一个场景就得重新训练词典。改善:针对这个问题有人提出了在线BOW模型,无需提前训练模型。
【优点】:可以做到pose invariance
【全局描述的缺点】:
全局描述符比局部特征描述符更依赖于位姿。改善:通过将单词袋装方法与图像段上的Gist描述符相结合。
【优点】:condition invariance
【局部描述子缺点】:
局部特征描述符在光照条件变化时表现较差;
在变化条件下的位置识别方面,全局描述符的表现要优于局部特征描述符。
【优点】:pose invariance
【两种方法的折衷】在图像片段上使用全局描述符而不是在整幅图像上使用全局描述符可能会在这两种方法之间提供一种折衷,因为足够大的图像片段显示了整幅图像的一些位姿不变。足够小的图像片段表现出局部特征的位姿不变性。
例如: global descriptor HOG 、PHOG 、Edge Boxes object proposal method
【在图像描述中加入3D信息】
- appearance-based基于表观的定义:直接对数据进行建模,而不建立几何模型。那么Appearance-based loop closure detection/visual place recongnition 如果直接从单目图像数据建模是没有采用任何几何信息的,然而,有时需要:metric localization 是需要往模型中加入metric信息的。
- 但是这种至关重要的几何信息不是凭空从图像中的得来,它需要借助外部工具,如激光测距仪,RGB-D深度相机等。
- 但是也有针对单目图像推理metric信息的如:SFM。思想包括:MonoSLAM, PTAM , DTAM , LSD-SLAM and ORB-SLAM
- 但是以上大部分method都是sparse稀疏信息:测量的范围只有局部特征有关
- 但是也有密集信息的SLAM如DTAM。密集的metric数据允许机器人执行避障和度规规划,以及绘图和定位,因此可以执行完全自主的视觉导航。(很有用)
- SLAM++存储一个3D对象模型数据库,并在导航期间使用该数据库执行对象识别,并将这些对象用作high-level的位置特性。这种high-level的位置特性是指语义特诊,因此也可以通过semantic compression来减少存储。
V. 回忆位置:地图模块
建图模块可以分为以下几种类型。比如在SLAM十四讲中的回环检测用的就是纯图像检索,没有涉及到建图。
A. 纯图像检索
没有关联任何位置信息(position information)。一种高效的检索技术是:倒排索引。
B. 拓扑地图
首先先需要思考一个问题:拓扑地图能为位置识别带来什么有用的信息。
- 拓扑地图可以增加减少不正确的匹配的数量。
- 拓扑地图可以使用位置先验,加速匹配的速度:只在当前位置的附近区域去寻找匹配的图像(在能够很好的定位的情况下)
这样做的方法:
通常采用基于采样的方法,如采用粒子滤波器去采集可能出现的地方。
这样做的好处:
可以降低存储量,一张照片用较低的分辨率就行。
C.带有度量的拓扑地图
其实随着GPU的发展,在拓扑地图中加入度量信息成为可能,比如加入距离,方向等信息。这样又可以进一步的提高拓扑地图增加匹配率。
地标的位置或者在一个地方目标能够被存储到每个节点中。拓扑位置节点中的度量信息可以存储为稀疏的地标地图。若从图像数据中提取深度信息,则为密集占用网格图或密集占用网格图。
VI. 认出地方:Belief生成模块
因此,任何地点识别系统的中心目标都是协调视觉输入和存储的地图数据,以生成一个信念分布。这种分布提供了一种可能性或置信度的度量,即当前的视觉输入与机器人的世界地图表示中的特定位置相匹配。
信念分布:https://blog.csdn.net/tjmiaowang/article/details/63682155
VII. 视觉位置识别在改变的环境
A.描述图像在改变的环境
有两种方法:一种是使用条件不变的特征;另一种是学习外观是如何改变的。
1)不变的思想
利用局部不变特征例如SIFT和SURF,但是这些传统的特征不能兼顾所有的环境变化,例如光照,季节变化等等。
后续也有人提出U-SIFT,U-SURF,可以取得较好的效果。
利用全局特征,例如SeqSLAM就是用了全局描述子,缺点对视点变换比较敏感。
利用边缘特征,它是对光照,尺度,方向都是不变的,但是边缘特征的数据关联比较具有挑战性。
利用提高光照不变性的技术,例如阴影移除,使用光照不变颜色空间。
利用深度神经网络CNNs提取更鲁棒的特征。
开发利用颜色信息。相对颜色信息是可以为位置识别提供信息,尤其是在晚上。
2)学习的思想
不同地点的时间跨度上的改变是相似的,所以是可以学习的。
学习a fine vocabulary(精细词汇),它是像是在词袋模型里分割一个描述子 空间。系统学习这些单词的分布,观察描述子由于光照变化、视点变化做的高度非线性变化,并且学习一个可替换的单词以量化这些变化。在同一个地方的不同条件下训练好几次。
利用神经网络将patch映射进一个新的空间:正样本靠的很近,负样本隔得很远。
利用SLIC超像素对两个不同季节的训练图像进行分割
利用非监督方法,学习辨认输入图像做了什么变化,然后移除它。
B. 在变换的环境中回忆起图像
两种方式:决定什么忘记或记起;记住一个地方的多种表示。
1)记住和忘记数据
利用认知神经学中的长时记忆和短时记忆机制,将它用于决定什么记住,什么忘记(哪些短暂不频繁出现的特征容易被忘记)
考虑特征的区分性和可靠性(如一个特征被遮挡了那么它就不是可靠的特征)
2)环境的多种表示
- 一个地点用多张图片表示
- 建一个环境的多张地图
- 修改地图,只让有动态变换的部分有多种表示
- 对于半静态的问题,可以建一个暂时地图,然后忘记
- 在一个环境中使用多次训练来学习场景signature, 在patch上使用HOG特征,再用SVM分类器形成scene signature
- 提出新问题:机器人如何知道自己在哪且可以将不同表示匹配到一个物理地方去?Plastic map formulation
C. 认出位置在变化的环境中
- 不是选择与当前传感器数据最匹配的单一地图,而是主动跟踪多个地图中的N个最佳导航假设,而当一个主动假设低于最佳待选假设时,则保留待选假设并将其交换出去。
- 拓扑信息变得越来越重要
- 选择去匹配图像序列,而不是图像,如SeqSLAM。
VIII. 总结
视觉位置识别在过去15年的研究中取得了很大的进展,但我们距离一个通用的机器人位置识别系统还有很长一段路要走,这个系统不仅要健壮而且还要适用于各种机器人平台和不同的环境。
最成功的对抗外观变化的方法通常是:以视点不变性或增加训练需求为代价的。如前所述,当传感器信息变得不那么可靠时,它可以由拓扑信息来补偿,拓扑信息不仅要求单点的视点不变性,但这条路可能很长。一些可能的方法包括使用图像补丁而不是整幅图像,因为图像补丁具有整幅图像的条件不变的优点,同时允许一些的视点不变性,并探讨了深度学习特征的使用,这些特征也具有一定的视点不变性。
视觉位置识别得益于其他领域的研究,特别是计算机视觉在深度学习、图像分类、对象识别、视频描述等领域取得的巨大进步。
位置识别的研究也可以从正在进行的目标检测和场景分类的研究中受益。通过目标检测,我们可以了解到,诸如建筑物之类的目标对于长期的位置识别是有用的,诸如行人之类的目标应该被忽略,诸如汽车之类的目标根据语义和时间上下文可能是有用的。通过利用有关哪些对象是动态的或静态的以及这些属性如何依赖于时间和语义上下文的知识,可以增强对结构更改的健壮性。例如,停车场中的汽车可以暂时提供有用的位置识别线索。通过专门针对位置识别任务的训练或微调,利用卷积神经网络的表达性,是未来值得研究的方向。
视觉位置识别系统也可以利用上下文。虽然地方在外观上变化很大,但相对位置保持不变。通过使用位置先验、递归滤波和基于路径的图像序列,将这一事实集成到信念生成模块中,并且随着环境视觉外观变化的增加,对这些技术的依赖性也随之增加。
语义场景上下文可以进一步将位置识别的搜索空间限制为语义相似的场景,从而保证面向长期自治的可扩展性。语义语境可以支持场景变化的学习和预测,增强对环境条件变化的鲁棒性。语义映射也有减少内存需求的潜力
最后,视觉位置识别能为其他研究任务提供什么?由于需要和机会,视觉位置识别在一定程度上接受了条件不变识别的挑战,这是许多领域所没有的,尽管在比场景解释等其他任务更严格的任务规范下。在开发鲁棒特征、解决外观变化和视角变化的组合以及其他挑战方面获得的经验,可能在其他机器人任务(如对象识别和分类)中具有宝贵的应用价值。