浅谈回环检测中的词袋模型bag of words.docx
- 文档编号:26260738
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:10
- 大小:20.36KB
浅谈回环检测中的词袋模型bag of words.docx
《浅谈回环检测中的词袋模型bag of words.docx》由会员分享,可在线阅读,更多相关《浅谈回环检测中的词袋模型bag of words.docx(10页珍藏版)》请在冰豆网上搜索。
浅谈回环检测中的词袋模型bagofwords
浅谈回环检测中的词袋模型(bagofwords)
转载自:
?
词袋模型描述图像
浅谈回环检测中的词袋模型(bagofwords)
将会从以下四个方面进行展开
关于词袋模型的基本理解
算法简介
开源代码库DBoW2库的简单介绍
关于DBoW的一些总结
关于词袋模型的基本理解
BoW基本简介
Bagofwords模型最初被用在文本分类中,将文档表示成特征矢量。
它的基本思想是假定对于一个文本,忽略其词序和语法、句法,仅仅将其看做是一些词汇的集合,而文本中的每个词汇都是独立的。
如果文档中猪、马、牛、羊、山谷、土地、拖拉机这样的词汇多些,而银行、大厦、汽车、公园这样的词汇少些,我们就倾向于判断它是一篇描绘乡村的文档,而不是描述城镇的。
举例说明
文档一:
Boblikestoplaybasketball,Jimlikestoo.
文档二:
Bobalsolikestoplayfootballgames.
基于这两个文本文档,构造一个词典:
Dictionary={1:
”Bob”,2.“like”,3.“to”,4.“play”,5.“basketball”,6.“also”,7.“football”,8.“games”,9.“Jim”,10.“too”}。
基于上述的词典可以构造出一个两个直方图向量
1:
[1,2,1,1,1,0,0,0,1,1]
2:
[1,1,1,1,0,1,1,1,0,0]
这两个向量共包含10个元素,其中第i个元素表示字典中第i个单词在句子中出现的次数.因此BoW模型可认为是一种统计直方图(histogram).
应用词袋模型的图像处理
这是一个万能的词袋模型示意图其实整个过程是这样实现的
算法简介
应用在视觉SLAM中的回环检测
在SLAM过程中,回环检测显得尤为重要,当失去回环检测时,整个SLAM过程就会退化成一个视觉里程计。
在回环的过程中,如何确定什么时候回环,需要比较当前图像信息与先前图像的相似性。
但并不是每次回环都会这么友好,还会受到各种影响,有天气、阴影等带来的,所以往往就会识别错误,错误情况分为两种,在应该回环的时候没有识别出来;在不应该回环的时候认为是回环了。
介绍词袋模型
1、特征提取与描述
2、词袋组成与结构
3、回环检测流程
4、实验评估
参考论文:
Galvez-LopezD,TardosJD.Real-timeloopdetectionwithbagsofbinarywords[C]//IEEE/RSJInternationalConferenceonIntelligentRobots&Systems.2011:
51-58.
Galvez-LópezD,TardosJD.BagsofBinaryWordsforFastPlaceRecognitioninImageSequences[J].IEEETransactionsonRobotics,2012,28(5):
1188-1197.
特征提取与描述
这里主要按照参考论文进行关于词袋的讲解,所以主要以FAST+Brief为主,读者可以根据需要选择ORB、surf等。
FAST特征点:
FAST特征点的提取比较简单,遍历图像各个像素点,以当前像素点为中心,3为半径选择16个周围像素,依次进行比较,灰度差异值大于给定阈值的就标记一下,若大于12,则当前点为特征点。
论文的特色在于使用了Brief描述子(二进制),可以满足内存、运算速度等实际需要
最后的描述子是一个256bit的向量,在比较特征点相似性的时候可以使用汉明距离,所以有点比较明显。
当然没有具备旋转以及尺度的不变性。
在ORB_SLAM2中则使用多尺度的ORB描述子,有兴趣可以去看一下。
言归正传,接下来要进入正题了!
!
词袋组成与结构
1、词典生成流程
在目前流行的SLAM过程中,但凡用了回环检测的,基本上都使用了BoW,包括号称鲁棒与效果兼备的ORB_SLAM;使用词袋模型分为两个步骤,产生一个词典,然后利用这个词典,前者是离线生成的,注意是离线生成的(就像小时候看书的时候还没认识那么多字,但是想看书,怎么办,去书店买一本词典吧,一遍读,一遍看;可能这个比方不是很恰当);在后面的步骤中,需要产生一个数据库,用了记录一下查词典时所用到的单词,方便回来看的时候能快速找到,不用辛辛苦苦的再去找一遍。
在实际使用的过程中,第一步我们得训练产生一本词典,就像前面提到的那样,单词就是一些特征聚类的结果。
摆在我们面前的可能是几十万甚至几百万张训练的图片,我们需要依次提取特征,这真是个浩大的工程,然后在特征空间中就会有n多个特征信息,接下来我们要用这些特征聚类产生单词了,聚类成多少?
这是个问题,这取决于我们选择的树形结构(后面会提到),整个过程就像下面图一样
黑色的就是最原始的,提取到的特征,为了简单,把这些特征放在二维空间了,实际上应该256维的,所以上面这张中,这些特征点和他们在实际图片中的位置信息没有任何关系。
黑色—>红色—>绿色—>蓝色,这就是聚类的步骤,黑色的特征聚类成红色节点,红色节点聚类成绿色节点,然后绿色节点再聚类成根节点(蓝色)
Vocabularybranchfactor:
kw
Vocabularydepthlevels:
Lw
整个步骤流程如下图
:
产生词典树形结构的步骤:
所有特征描述子分布在特征空间->
根据设定好的树形结构参数,进行kmean++聚类,产生叶子结点->
对产生的节点依次进行kmean++聚类,直至产生根节点。
结点个数(等比数列):
2、inverseindexword
1、逆序索引单词涵盖了所有出现的单词
2、每一个单词指向包含它的一系列图像
3、采用投票机制选取候选者,加速搜索
加快搜索示意图
3、directindeximage
主要用途:
在回环检测的最后阶段——几何结构验证阶段,可以加速匹配候选图像与当前图像之间的特征点对
结构如下图所示,左图是2011会议论文所采用的存储结构,以word为单位,右图是2012在TRO期刊上使用的存储结构,以node为单元。
回环检测流程
1、基础知识介绍
2、数据库查询
3、组匹配
4、时间一致性校验
5、结构一致性校验
1、基础知识介绍
这时候要要利用了训练之后的词典了。
BoW模型主要就是利用了训练词典产生了高度差异型模型,因此每一张图片通过词典检索,都会得到一个独一无二的直方图向量,向量的维度就是词典个数(一般都是100万)。
在具体写程序的时候不会产生这么大一个维度的链表,可以有一个等效的模型。
从图像—>BoW向量流程:
1、输入一张图像I,进行特征检测与特征描述,特征点数量最多不超过约定值(300)。
2、将每个特征通过树形结构的字典,得到BoW向量v,该向量的维度为特征数量(程序中),论文中认为维度为叶节点(words)数量。
其中向量v的数据单元结构为map—>(index,value)即(wordindex,weight)
Wordindex解释如下:
将每个特征从树形字典的根节点?
叶节点(words),依次与当前所在节点的子节点进行比较,选取汉明距离最小的节点作为中继节点,以此类推,直到所在节点为叶节点
Weight解释如下:
每个单词的权重有一个归一化过程,权重的组成由tf和idf两部分构成,对于前者,分子为当前图片中出现单词i的个数,分母为总共包含的单词个数,这是在线得到的;后者是词典的属性,已经离线生成,不会发生改变,分子为生成词典时所包含的训练图片数量,分母为出现单词i的图片个数,这个比重分量主要为了凸显差异型,认为在训练时经常出现的单词差异性较小,权重赋予的小一些,举例:
如果一个单词在每一张图片都能出现,那么词典所给予的权重分量应该是0,因为太常见了,所以会忽略它。
在得到了两张图片的BoW向量之后,需要比较两者的相似性:
给出公式:
在实际程序中公式如下:
注:
L1-score指的是一范数得分,后面的绝对值也指的是求取一范数,最后得到的是一个标量
实际中不可能存一个100万维的BoW向量,向量是稀疏的,只存下出现某个单词的索引及权重
论文和实际公式等效:
一些需要用的基础知识和结构已经介绍完了,接下就是回环检测了
回环检测:
数据库查询
查询的数据库就是上述在线更新和维护的inverseindexword
利用inverseindexwords数据库简化检索过程;不采用暴力匹配,只匹配包含相同单词的个别图像信息,加快检索过程。
得到归一化得分函数如下:
1、防止因分母过小,而引起的得分过大,需要对分母增加条件(有特征点数要求或者得分要求)
2、需要对最后得分设立阈值,过滤得分较少的候选图像,保留符合要求的候选图像进入组匹配进行校验
回环检测流程——组匹配
当图像It,It′'>It,It′,表示了一个真正的回环,则It'>It同样也和It±Δt,It±2Δt'>It±Δt,It±2Δt有着较高的相似性,定义相似得分和函数如下:
其中VTi'>VTi表示候选图像所在集合从Vtni'>Vtni到Vtmi'>Vtmi1、防止连续图像在数据库查询时存在的竞争关系,但是不会考虑同一地点,不同时间的关键帧。
2、防止误匹配
回环检测流程——时间一致性校验
在经过组匹配之后,得到了最佳组匹配VT′'>VT′,此时需要检验该组匹配的时间一致性。
一般来说,对于组匹配<vt,VT′>'><vt,VT′>,与当前帧的前k'>k帧图像得到的组匹配<vt,VT1>'><vt,VT1>,…,<vt,VT2>'><vt,VT2>
有着较大的重叠区域。
在经过时间一致性校验之后,只保留一组匹配<vt,vt′>'><vt,vt′>
判断标准在所在组得分最高,成为唯一的候选对象,进入结构一致性校验
回环检测流程——结构一致性校验
词袋是一个无序的模型,好比我打了小明,小明打了我这两句话,意思正好相反,但是词袋的模型却是同一个,这就很要命,会带来误匹配。
所以需要增加约束,该约束就是几何结构上的约束,即各个特征点在空间中的位置是唯一不变的,以基础矩阵建立约束。
1、在使用词袋进行回环检测的过程中,并未考虑特征之间的结构约束;
2、在检测的最后一个流程中,在得到对应特征点的基础上,通过使用RANSAC和基础矩阵解算,计算满足要求的特征点对数目(12)。
过程关键点:
1、使用directimageindex,加速校验前特征点对的获取
2、同时为了获取足够数量的特征点,不能直接选取words作为匹配
索引;同时凸显特征之间的区分度,也不能采用采用较高层数
的节点(词袋树形结构)。
所需要的结构就是已经介绍过的
至此,整个回环检测的流程已经结束了
论文还给出了实验评估,评估的标准就是精度—召回曲线,如下:
评价标准
精度:
正确回环检测占总检测回环数目的比率
召回:
正确回环检测占测试样本总回环的比率实验评估
这里简单涉及一下,论文中所涉及的参数和实验结果
参数设置:
数据集(前三个作为训练,后两个作为测试)
与FAB-MAP的实验结果比较(貌似Magaga6L的训练集数目不对等)
有兴趣可以去看一下08年的FAB-MAP,程序也是开源的。
CumminsM,NewmanP.FAB-MAP:
ProbabilisticLocalizationandMappingintheSpaceofAppearance[J].InternationalJournalofRoboticsResearch,2008,27(6):
647-665.
开源代码库DBoW的简单介绍
整个开源的DBoW2程序如下图分布:
整个结构非常紧凑,写的也很好,给用户的选择比较多,可以使用各种特征描述方式,遗憾的是,论文作者并未把所涉及到的算法全部开源,只是框架开源,所以无法重现结果。
demo
程序中有一个简单的demo,可以帮助了解整个框架,包括建立词典到测试词典
demo程序和结果:
demo数据集因为是由四张图片产生的词典(差异度不够),用来测试图片,所以效果并不十分凸显,可以使用ORB_SLAM2开源的词库进行测试。
关于DBoW的总结
1、理解词袋模型:
在理解论文的基础上,需要结合开源代码,对算法有一个更为深入的了解;需要加强对数据结构的使用和操作,词袋模型大量使用了list、map、vector及自定义的数据结构。
2、需要客观看待:
在回环准确性和时间开销,需要一个取舍,虽然在文中FAST+Brief取得了一个不错的结果;但是这样的特征检测和描述方式,没有对尺度和旋转的不变性,在平面移动机器人+前置(侧置)摄像头中尚能取得较好的效果。
3、使用开源程序:
ORB_SLAM2,也同样使用了开源库DBoW2。
整体而言,离线产生的词典对于回环检测时有帮助的,因为有一个差异度足够高的模型,这一点是在线所无法比拟的,但是总有一种作弊的感觉,也有很多关于onlinevisualvocabulary的论文,但是并不十分流行。
有问题可加群(移动机器人导航与控制群:
199938556)讨论交流,进群修改备注。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浅谈回环检测中的词袋模型bag of words 浅谈 回环 检测 中的 模型 bag
![提示](https://static.bdocx.com/images/bang_tan.gif)