ORBSLAM:词袋(Bag of Words)

ORBSLAM:词袋(Bag of Words)

ORBSLAM中,采用词袋模型进行闭环检测。Bag-of-words模型是信息检索领域常用的文档表示方法。在信息检索中,BOW模型假定对于一个文档,忽略它的单词顺序和语法、句法等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的,不依赖于其它单词是否出现。也就是说,文档中任意一个位置出现的任何单词,都不受该文档语意影响而独立选择的。例如有如下两个文档:
1:Bob likes to play basketball, Jim likes too.
2:Bob also likes to play football games.

基于这两个文本文档,构造一个词典:

Dictionary = {1:”Bob”, 2. “like”, 3. “to”, 4. “play”, 5. “basketball”, 6. “also”, 7. “football”, 8. “games”, 9. “Jim”, 10. “too”}。

这个词典一共包含10个不同的单词,利用词典的索引号,上面两个文档每一个都可以用一个10维向量表示(用整数数字0~n(n为正整数)表示某个单词在文档中出现的次数):
1:[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
2:[1, 1, 1, 1 ,0, 1, 1, 1, 0, 0]

词袋的相关定义

1.特征描述符:描述特征点的向量,常用的由SIFT、ORB等等;
2.单词(word):由一组特征描述符组成,是图像库中的所有特征描述符通过若干次聚类形成;
3.单词树(vocabulary tree):特征聚类过程中形成的结构,聚类的数量k为码本的长度,设根节点为第0层,一个有L层的单词树的单词数量为kL个;
4.词袋由字典树、正向索引和反向索引组成;

字典树的形成

给定一组图像集,将图像中的N个特征描述符,利用Kmean等聚类方法进行聚类,得到k个簇,对每个簇再进行聚类,又得到k个簇,以此类推,形成L层的树状结构,树的叶子节点即为单词(1个单词可能包含了1个或多个特征)。这种树状结构的好处就是搜索速度快,判断一个特征特征属于哪个单词由原来的kL次搜索缩小为kL次,判断过程由计算汉明距离实现。如图1,字典树有2层,每一层分为两个簇,则1、2、3、4分别为一个单词。
图1 特征聚类
图1 特征聚类

索引

在这里插入图片描述

正向索引(direct index)

正向索引中,存储了图像,图像中的特征以及特征所在的节点,如右图,图像1中包含了第10,32,65号等特征,其中10,32位于节点4,65位于节点3。正向索引用于特征匹配,即确定了另两幅相似的图像后(也就是SLAM中找到了回环图像后),对两幅图像中的特征点通过节点进行快速匹配
在这里插入图片描述

反向索引

反向索引存储的是单词的序号,以及包含该单词的图像序号。反向索引用于判断一幅新图像与已有图像中的哪一幅匹配。匹配过程为:(1)当获得一幅新图像Q后,提取Q中的特征,确定图像中包含了哪些单词;(2)根据获得的单词,在索引中找到对应的位置,该位置存储着包含该单词的一组图像(每个图像都有对应的编号);(3)某个编号的图像出现一次,在voting array中对应的基数+1,投票最多的前几个为Candidate图像。不需要计算与所有图像之间的相似度,加速搜索。
在这里插入图片描述

权重

图像可以由单词进行表示,类似于(w1, w2,…wn)的序列,其中wn为单词的索引。如果图像中属于某一类单词的特征很多,那我们一般认为这个单词的重要性会更大。另一方面来说,如果某个单词在我们构造的vocabulary tree中出现频率很低(生僻字),那么如果图像中出现了该单词,则这个单词的重要性也应该大一些(少见)。也就是涉及到了单词的权值计算问题,DboW2使用了TF-IDF(Term Frequency-Inverse Document Frequency)来计算单词权值。

1.词频Term Frequency(TF):某个词在图像中出现的次数。为了归一化,词频也可以定义成,某个词在图像中出现的次数 / 图像中的总词数。如果一个词比较少见,那么区分度就大。
2.逆向文件频率Inverse document frequency(IDF):log(单词树/ 包含该词的图像 +1 )。如果一个词越常见,那么分母就越大,逆文档频率就越小,越接近0。
3.TF-IDF:词频(TF)* 逆向文件频率(IDF)。如果某个词比较少见,但是它在一幅图像中多次出现,那么它很可能就反映了这幅图像的特性,正是我们所需要的关键词。某个词对图像的重要性越高,它的TF-IDF值就越大。

引用

BOW 原理及代码解析
词袋模型一些理解
ORB-SLAM2代码(五)DBoW2词袋模型
ORBSLAM2学习(三):DBoW2理论知识学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值