Abstract:

本文提出一种用于大规模的长期回环检测,基于一种内存管理方法:限制用于回环检测的位置数目,以满足实时性要求。

introduction:

大场景存在的最关键问题:随着场景增大,回环检测处理的数据量增大,可能会产生延时。该论文的研究重心在于设计一种在线的基于外观回环检测方法。为了限制搜索之前经过位置的时间,在贝叶斯框架下采用动态管理用于闭环检测的位置。Working Memory的大小取决于需要处理实时获得图片的时间,保留最近且最常观测到的位置,将其他的位置放入Long Term Memory。当找出当前位置和WM中某个位置的匹配 (即检测到了回环),则LTM中该与WM中该位置相邻的位置也将被唤醒。

Related WORK:

词袋模型,讲特征量化为词典,量化方法:Vocabulary Tree、Approximate K-Means、K-D Tree,比较方法:TF-IDF

词典可以离线构建(导入数据集),也可实时构建(根据之前获取的图片)。

随着场景增大,词典规模增大,修剪或聚类方法可用于合并超过空间密度阈值的地图部分。

ONLINE A PPEARANCE -B ASED M APPING:

当地图中的位置数量使得查找匹配的处理时间大于时间阈值时,将WM中的位置移到LTM中,不进行闭环检测,然而当闭环检测到时,将闭环的相邻位置从LTM恢复到WM中,用于之后的闭环检测。

所有的位置都可以用一张图表示

如图所示,当前获得的位置为455,垂直箭头为闭环检测连接,水平箭头为相邻位置连接,虚线为还未检测到的闭环,白色为WM中的位置,灰色为STM中的位置,黑色为LTM中的位置。

LTM中的位置不进行闭环检测,因为有很多相邻帧,如何选择哪些位置放到LTM中呢?

FIFO(先进先出)是一种简单的方法,但是不好,为什么不好?因此采用尽量保留被再次观测到的概率较大的位置,这些位置更可能会检测出回环。因此将每个位置能被连续观测到的次数作为权值,当必须将MW中的位置转移到LTM中时,选择权值最小的,如果不只一个,选择最早的位置。

如图所示为内存管理模型

感知模块获取图像后将其发至WM,WM负责提取特征并将其送至STM,STM如果发现该图像和STM中的上一帧相似性较大,则将这两个位置进行融合成一个,并增大新位置的权值。而WM负责闭环检测,而STM中的帧不进行闭环检测,因为相邻帧相似度很高,STM的大小取决于机器人速度和图像获取速度。最终STM中最旧的位置则进入WM。

RTAB-Map使用离散贝叶斯滤波评估回环检测,通过检测最新的位置与WM中的位置。如果WM中最新的位置和旧的位置闭环概率较高则认为可能检测出回环。还需要关键的两步:Retrieval:将闭环检测出的位置的周围的位置从STM放入WM中,使得将来使用周围的位置进行闭环检测,确定闭环。Transfer:如果闭环检测处理时间超过$T_{time}$,则将权值最低的放入LTM。

A. Location Creation

本文使用递增式的词典而非预先训练好的词典。采用SURF算子构造视觉单词。词典中的每个视觉单词为64维的向量。为了避免特征不明显的图片用于回环检测(如一面白墙),只选用特征响应超过一定阈值的$\T_{response}$特征才被提取用于构建字典。

构建词典之后如何查找呢?SURF特征之间使用最近邻距离NNDR来比较其相关性,NNDR指距离特征最近的和第二近的邻居之间的距离之比。如果两个特征的$\T_{NNDR}$足够小,则认为可以使用同一个单词描述。由于SURF算子维度太高,使用FLANN进行查询,当新的特征与字典进行匹配时,可以提高最近邻查找的效率。kd-tree的叶子代表了每个单词。选择随机的kdtree是因为比分层的k-means建树时间短,FLANN不提供对其搜索索引进行增量更改的接口(例如随机化的kd-tree或分层的k-means树),因此需要在每次迭代时在线重新构建词汇表。kd-tree通过单词中的surf描述子建树。随后每个图像中的每个描述子在kd-tree中进行查找最近的两个邻居。当$\T_{NNDR}$大于阈值时,建立一个新的单词。

B. Weight Update

更新权值主要是将当前的位置$\L_t$与STM中的最后一个位置进行比较,使用相似度s评估

$N_{pair}$指这两个位置匹配的单词对,$N_{z_{t}}$和$N_{z_c}$分别指这两个位置时的单词总数,如果相似度大于一个阈值$T_{similarity}$,则将位置$L_c$合并至$L_t$,仅仅$L_c$中的词典被保留,而$L_t$中的新单词被移除。为什么移除$L_t$的词典呢因为它的描述子还没有在插入kd-tree?(不懂)合并后$L_t$的权重变为$L_t+L_c+1$。$L_c$的周围连接和回环连接都和设为和$L_t$连接。$L_c$从STM中删除。

C. Bayesian Filter Update

离散贝叶斯滤波通过估计当前位置$L_t$与WM中已经存在的一个位置匹配的概率来跟踪闭环假设。设$S_t$为一个随机变量,表示回环检测在时间t时的假设,$S_t=i$表示$L_t$和过去的位置$L_i$构成了回环,$S_t=-1$表示$L_t$是一个新的位置。滤波器估计后验概率p(S_{t}|L^t)$,对于所有$i=-1,...t_n},$t_n$指与WM中最新位置ed时间间隔,根据贝叶斯公式和马尔科夫假设:

其中$L^t=L_{-1},...,L_t$。$L_t$仅仅包括WM和STM中的位置,因此$L^t$一直在改变。

其中,观测模型$p(L_t|S_t)$的计算方式如下:

对于新的位置:

转换模型$p(S_t|S_{t-1}=i)$用于预测$S_t$的分布,

1)$p(S_t=-1|S_{t-1}=-1)=0.9$

2)$p(S_t=i|S_{t-1}=-1)=0.1/N_{WM},i\in[0:t_n]$

3)$p(S_t=-1|S_{t-1}=j)=0.1,j\in[0:t_n]$

4) $p(S_t=i|S_{t-1}=j)=0.1,j\in[0:t_n]$,该概率使用高斯概率曲线(\sigma=1.6)定义,该曲线中心为j,左右各取16个值:$i=j-16,...,j+16$。在图中,一个位置可能有多个邻居(如果存在回环检测),高斯值从i=j到最后一个邻居进行迭代(最多为16),其中$p(S_t>=0|S_{t-1}=j)$归一化和为0.9。

D. Loop Closure Hypothesis Selection

上一节计算出$p(S_t|L_t)$后,设最高的回环检测假设为$p(S_t=i)$时,取值为$p(S_t|l^t),如果假设t时刻的位置为新位置的概率$p(S_t=-1|L^t)$比回环阈值$T_{loop}$小,则认为该位置和i位置构成回环。将$L_t$和$L_i$相连,更新$L_t$位置的权值,$L_i$位置的权值设为0。此处不进行两个位置的合并,便于进行假设估计。

E. Retrieval

再检测到回环后,检测到的之前位置$L_i$不在WM中的相邻位置,将其从WM移动到LTM中。LTM使用SQLite3实现,如下所示:

这里还要更新什么?

由于从数据库中取位置耗时长,每次最多Retrieval两个位置,时间优先于空间,前者相对于更加准确。

F. Transfer

当一幅图像的处理时间大于$T_time$ 时,WM中权重最低中最早的位置将被移动到LTM。其中最大回环检测估计位置的相邻位置不放到LTM中。$T_time$决定了WM的大小,由计算机处理能力以及环境地图决定。由于在kd-tree上进行搜索时耗时最长,因此通过改变词典规模来间接影响WM大小。下图表示如何动态改变词典规模:

NNDR有什么意义

Appearance-Based Loop Closure Detection for Online Large-Scale and Long-Term Operation的更多相关文章

  1. 大规模视觉识别挑战赛ILSVRC2015各团队结果和方法 Large Scale Visual Recognition Challenge 2015

    Large Scale Visual Recognition Challenge 2015 (ILSVRC2015) Legend: Yellow background = winner in thi ...

  2. 论文笔记之:Large Scale Distributed Semi-Supervised Learning Using Streaming Approximation

    Large Scale Distributed Semi-Supervised Learning Using Streaming Approximation Google  2016.10.06 官方 ...

  3. 快速高分辨率图像的立体匹配方法Effective large scale stereo matching

    <Effective large scale stereo matching> In this paper we propose a novel approach to binocular ...

  4. Introducing DataFrames in Apache Spark for Large Scale Data Science(中英双语)

    文章标题 Introducing DataFrames in Apache Spark for Large Scale Data Science 一个用于大规模数据科学的API——DataFrame ...

  5. Lessons learned developing a practical large scale machine learning system

    原文:http://googleresearch.blogspot.jp/2010/04/lessons-learned-developing-practical.html Lessons learn ...

  6. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习

    Lecture17 Large Scale Machine Learning大规模机器学习 17.1 大型数据集的学习 Learning With Large Datasets 如果有一个低方差的模型 ...

  7. [C12] 大规模机器学习(Large Scale Machine Learning)

    大规模机器学习(Large Scale Machine Learning) 大型数据集的学习(Learning With Large Datasets) 如果你回顾一下最近5年或10年的机器学习历史. ...

  8. Computer Vision_33_SIFT:Improving Bag-of-Features for Large Scale Image Search——2010

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  9. CVPR 2011 Global contrast based salient region detection

    Two salient region detection methods are proposed in this paper: HC AND RC HC: Histogram based contr ...

随机推荐

  1. 用NVIDIA A100 GPUs提高计算机视觉

    用NVIDIA A100 GPUs提高计算机视觉 Improving Computer Vision with NVIDIA A100 GPUs 在2020年英伟达GPU技术会议的主题演讲中,英伟达创 ...

  2. Ucore lab1实验报告

    练习一 Makefile 1.1 OS镜像文件ucore.img 是如何一步步生成的? + cc kern/init/init.c + cc kern/libs/readline.c + cc ker ...

  3. 重新整理 .net core 实践篇—————日志系统之作用域[十七]

    前言 前面介绍了服务与日志之间的配置,那么我们服务会遇到下面的场景会被遇到一些打log的问题. 前面我提及到我们的log,其实是在一个队列里面,而我们的请求是在并发的,多个用户同时发送请求这个时候我们 ...

  4. 使用 Docker 部署 Node 应用 - 镜像文件尺寸的优化

    前面 使用 Docker 部署 Node 应用 一文中完成了镜像的创建和运行,不过生成的镜像还有些粗糙,需要进一步优化. 镜像的优化 通过 docker images 看到简单的一个 node 服务端 ...

  5. Air530Z GPS/北斗定位模块_设计指导手册_V1.2

    下载PDF版本: Air530Z_定位模块_设计指导手册_V1.2.pdf @ 目录 1. 模块整体说明 2. 资料下载 3. 模块性能 4.模块管脚图 5.参考设计电路 6.GPS天线 6.1 无源 ...

  6. 【题解】Luogu P3110 [USACO14DEC]驮运Piggy Back

    [题解]Luogu P3110 [USACO14DEC]驮运Piggy Back 题目描述 Bessie and her sister Elsie graze in different fields ...

  7. Ruby升级的最新方法/CocoaPods安装

    今天安装cocoapods时候出现了下面的提示 Error installing pods:active support requires Ruby version >= 2.2.0//这个需求 ...

  8. WEB安全新玩法 [6] 防范图形验证码重复使用

    在完成关键业务操作时,要求用户输入图形验证码是防范自动化攻击的一种措施.为安全起见,即使针对同一用户,在重新输入信息时也应该更新图形验证码.iFlow 业务安全加固平台可以加强这方面的处理. 某网站系 ...

  9. Unity VideoPlayer视频模糊

    如果视频出现模糊或者尺寸不对只需要修改Texture的Size就可以 注意一点  Size的值要跟视频尺寸一直

  10. Redis计数信号量

    计数信号量是一种锁,它可以让用户限制一项资源最多能够同时被多少个进程访问,通常用于限定能够同时使用的资源数量.你可以把Redis分布式锁里面创建的锁看作是只能被一个进程访问的信号量. 计数信号量和其他 ...