SLAM中的二进制词袋生成过程和工作原理
长期视觉SLAM (Simultaneous Localization and Mapping)最重要的要求之一是鲁棒的位置识别。经过一段探索期后,当长时间未观测到的区域重新观测时,标准匹配算法失效。
当它们被健壮地检测到时,回环检测提供正确的数据关联以获得一致的地图。用于环路检测的相同方法可用于机器人在轨迹丢失后的重新定位,例如由于突然运动,严重闭塞或运动模糊。
词袋的基本技术包括从机器人在线收集的图像中建立一个数据库,以便在获取新图像时检索最相似的图像。如果它们足够相似,则检测到闭环。传统的文本分类主要采用基于词袋(bag of words)模型的方法。但BoW模型存在一个重要问题,即数据稀疏性。
由于文本中的单词通常非常多,而一篇文本中只包含其中的很小一部分,所以BoW模型构建的特征向量大多是零向量,非常稀疏。这会导致分类效果不佳和计算效率低下。BoBW模型(二进制词袋)克服了BoW模型的稀疏性问题。为解决BoW模型的稀疏性问题,研究者提出了基于二进制特征的bag of binary words(BoBW)模型。BoBW方法使用固定大小的二进制码(binary codes)表示文本,而不是高维的词频向量。
这样一来就克服了BoW模型中的稀疏性问题。BoBW模型还可以提高计算效率,由于BoBW模型使用低维的二进制特征,大大减少了计算量和内存需求。这使得BoBW模型在分类速度和效率上具有明显优势。
二进制词袋是一种特征表示方法,将文本中的词映射为有限长度的二进制向量。具体而言:首先,为文本设定一个词表,将文本中出现的所有不重复单词作为词表中的单词。然后, 对于特定文本,检查其中是否出现词表中的每个单词。如果出现,则为1;否则为0。这样便构建出一个固定长度的二进制向量来表示该文本,其中每个元素对应词表中的一个单词。
二进制特征表示使用FAST算法检测角点,FAST算法通过比较角点周围一个半径为3的Bresenham圆 的像素灰度来检测角点。这样只需比较少量像素,计算效率高。为每个FAST角点计算BRIEF描述子。BRIEF描述子是二值向量,每个元素是角 点周边patch中两个像素点亮度比较的结果。BRIEF描述子公式:
其中Bi(p) 是描述子的第i个元素,I()是像素处的亮度,ai和bi 是比较的两个像素点相对于patch中心的偏移量。给出patch大小S_b和元素数L_b,a_i 和 b_i在离线阶段随机选择。两个BRIEF描述子之间的距离使用汉明距离计算。使用二进制构建Bag of Words模型,通过二值聚类(k-medians)将二值描述子空间离散化为视觉词汇。实现了直接索引和反向索引,加快了相似图像检索和几何验证过程。通过考虑与之前匹配的一致性,有效处理了语义相似问题。最终算法的特征提取和语义匹配只需22ms,比SURF等特征快一个数量级。
图1 :词汇树和组成图像数据库的正反索引的例子。词汇是树的叶节点。逆指数存储单词在其出现的图像中的权重。直接索引将图像的特征及其关联节点存储在词汇树的某个级别上。
一、图像数据库建模
这一节介绍使用Bag of Words模型将图像特征转换为稀疏数字向量,方便处理大量图像。采用词汇树(vocabulary tree)将描述子空间离散化为W个视觉单词。不同于其他特征,这里离散的是二值描述子空间,建模更紧凑。语义树通过层次的k-medians聚类建立。
先对训练样本做k-medians聚类,取中心。然后递归地对每个聚类分支重复,建立Lw层语义树,W个叶节点作为最终视觉单词。每个语义单词根据其在训练语料中的频繁程度赋予权重,抑制高频低区分度的单词。使用tf-idf值。图像It转换为 bag-of-words向量vt,它的二值描述子从根开始遍历语义树,选择每一层与它汉明距离最小的中间节点,最终达到叶节点。两个bag-of-words 向量v1和v2的相似性计算为:
除了bag of words和反向 索引外,文章还提出使用直接索引,存储每个图像的单词及其对应特征。直接索引用于快速计算对应点,只比较属于同一个层次的祖先节点的特征。
二、回环检测
1.数据库查询
当获取最新图像It时,将It转换为bag-of-words向量vt。搜索数据库,结果是与vt最相似的图像<vt,vt1>, <vt,vt2>,...,与它们的分数s(vt,vtj )。计算与最佳匹配图像的归一化相似度:
其中s(vt,vt-∆t)是与前一张图像的分数,用于近似It的最高分。
2.匹配分组
为了防止连续图像竞争,将相似的连续图像分组。如果两个图像之间的时间差小,那么它们就属于同一个组。计算组的得分:
取分数最高的组作为初始匹配。
3.时间一致性
连续查询的一致性检查。匹配<vt,VT'>必须与k个前一匹配< vt-∆t,VT1>,...,< vt-k∆t,VT" > 一致,相邻组的时间间隔应较短。只保留使得η得分最大的<vt,vt'>作为候选回环匹配。
4.有效几何一致性
当给出一个匹配的图像对<It, It'>时,我们首先查询It'在直接索引里。直接索引存储每个图像相关的单词及其对应的特征。我们只对属于同一个词汇树层次l的父节点的特征进行比较。
参数l是一个权衡匹配点数量和时间成本的因子。当l = 0时,仅比较属于同一个单词的特征(速度最快),但得到的对应点较少。当l = Lw时,对应点数量不受影响但时间也没有获得改进。一旦获得足够的对应点,我们用RANSAC算法找出基础矩阵。虽然我们只需要基础矩阵来验证匹配,但计算出基础矩阵后,我们可以毫无额外代价地为SLAM算法提供图像间的数据关联。
三、实验测试
评估内容包括:使用5个公开数据集,涵盖室内外、静态动态环境。手动创建环回 ground truth ,包含匹配时间间隔。使用精确率和召回率度量正确性。使用不同的数据集调参和评价效果,证明算法鲁棒性。
与SURF进行比较,结果显示:BRIEF效果与SURF接近,在Bicocca25b上优于SURF64和U-SURF128。BRIEF更快,但对尺度和旋转变化敏感。BRIEF更适合匹配远距离对象,SURF适用于近距离变化大。
图2:在不进行几何检验的情况下,BRIEF、SURF64和U-SURF128在训练数据集上得到的Precision-recall曲线。
其次,需要一定数量的时间一致检测才能检测环回。k=3 的结果最佳,对于不同频率稳定。如下图所示:
图3 相似阈值α、时间一致匹配数k和处理频率f
在时间耗时方面,完整算法只需22ms,比SURF慢一个数量级。提取特征花费时间最多。使用大型词汇表虽花更多时间转换,但查询更快。
图4 使用BRIEF(左侧成对)和SURF64描述符(右侧成对)匹配的单词示例
四、结论
二进制特征在词袋方法中是非常有效和极其高效的。特别是,结果表明FAST+BRIEF特征与SURF(64维或128维且没有旋转不变性)一样可靠,用于解决移动机器人中常见的平面内相机运动的环路检测问题。
在不需要特殊硬件的情况下,执行时间和内存需求要小一个数量级。公共数据集描述了室内、室外、静态和动态环境,包括正面或侧面摄像头。与大多数以前的工作不同,为了避免过度调优,我们限制自己使用从独立数据集获得的相同词汇表和从一组训练数据集获得的相同参数配置来呈现所有结果,而不窥视评估数据集。
因此,我们可以声称我们的系统在广泛的实际情况下提供了健壮和高效的性能,而无需任何额外的调优。该技术的主要限制是使用缺乏旋转和尺度不变性的特征。
相关文章:
SLAM中的二进制词袋生成过程和工作原理
长期视觉SLAM (Simultaneous Localization and Mapping)最重要的要求之一是鲁棒的位置识别。经过一段探索期后,当长时间未观测到的区域重新观测时,标准匹配算法失效。 当它们被健壮地检测到时,回环检测提供正确的数据关联以获得一致的地图。…...
算法训练第五十九天
503. 下一个更大元素 II - 力扣(LeetCode) 代码: class Solution { public:vector<int> nextGreaterElements(vector<int>& nums) {vector<int> nums1(nums.begin(), nums.end());nums.insert(nums.end(), nums1.beg…...
二叉树oj题
目录 层序遍历(一) 题目 思路 代码 层序遍历(二) 题目 思路 代码 根据二叉树创建字符串 题目 思路 代码 二叉树的最近公共祖先 题目 思路 代码 暴力版 队列版 栈版 bs树和双向链表 题目 思路 代码 前序中序序列构建二叉树 题目 思路 代码 中序后序…...
华为数通方向HCIP-DataCom H12-831题库(单选题:1-20)
第1题 关于IPSG下列说法错误的是? A、IPSG可以防范IP地址欺骗攻击 B、IPSG是一种基于三层接口的源IP地址过滤技术 C、IPSG可以开启IP报文检查告警功能,联动网管进行告警 D、可以通过IPSG防止主机私自更改IP地址 答案: B 解析: IPSG(入侵防护系统)并不是基于三层接口的源I…...
TableConvert-免费在线表格转工具 让表格转换变得更容易
在线表格转工具TableConvert TableConvert 是一个基于web的免费且强大在线表格转换工具,它可以在 Excel、CSV、LaTeX 表格、HTML、JSON 数组、insert SQL、Markdown 表格 和 MediaWiki 表格等之间进行互相转换,也可以通过在线表格编辑器轻松的创建和生成…...
伦敦金实时行情中的震荡
不知道各位伦敦金投资者,曾经花过多长的时间来观察行情走势的表现,不知道大家是否有统计过,其实行情有60%-70%的时间,都会处于没有明显方向的震荡行情之中呢?面对长期的震荡行情,伦敦金投资者道理应该如何应…...
蓝桥杯打卡Day7
文章目录 阶乘的末尾0整除问题 一、阶乘的末尾0IO链接 本题思路:由于本题需要求阶乘的末尾0,由于我们知道2*510可以得到一个0,那么我们就可以找出2的数和5的数,但是由于是阶乘,所以5的数量肯定是小于2的数量…...
Mobile Vision Transformer-based Visual Object Tracking
论文作者:Goutam Yelluru Gopal,Maria A. Amer 作者单位:Concordia University 论文链接:https://arxiv.org/pdf/2309.05829v1.pdf 项目链接:https://github.com/goutamyg/MVT 内容简介: 1)方向&#…...
HTTP反爬困境
尊敬的程序员朋友们,大家好!今天我要和您分享一篇关于解决反爬困境的文章。在网络爬虫的时代,许多网站采取了反爬措施来保护自己的数据资源。然而,作为程序员,我们有着聪明才智和技术能力,可以应对这些困境…...
从零开始探索C语言(九)----函数指针与回调函数
函数指针 函数指针是指向函数的指针变量。 通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数。 函数指针可以像一般函数一样,用于调用函数、传递参数。 函数指针变量的声明: typedef int (*fun_ptr)(int,i…...
智慧工厂的基础是什么?功能有哪些?
关键词:智慧工厂、智慧工厂数字化、设备设施数字化、智能运维、工业互联网 1.智慧工厂的定义 智慧工厂是以数字化信息形式的工厂模型为基础,以实现制造系统离线分析设计和实际生产系统运行状态在线监控的新型工厂。智慧工厂的建设在于以高度集成的信息化…...
LeetCode 238. 除自身以外数组的乘积
题目链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目解析 使用前缀和进行解决该题,只不过与之前前缀和不同的是这个题目计算前缀和的时候不需要计算当前元素,也就是当前位置前缀和的值其实是不包含当前元素的前缀和。…...
点击劫持概念及解决办法
1.点击劫持的概念 点击劫持 (Clickjacking) 技术又称为界面伪装攻击 (UI redress attack ),是一种视觉上的欺骗手段。攻击者使用一个或多个透明的 iframe 覆盖在一个正常的网页上,然后诱使用户在该网页上进行操作,当用户在不知情的情况下点击…...
【Spring】手动实现Spring底层机制-问题的引出
🎄欢迎来到边境矢梦的csdn博文🎄 🎄本文主要梳理手动实现Spring底层机制-问题的引出 🎄 🌈我是边境矢梦,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一下…...
Java - List 去重,获取唯一值,分组列出所属对应集合
问题:List 去重,获取唯一值,分组列出所属对应集合 方案一:这个不需要额外的内存占用 //遍历后判断赋给另一个list集合public static void main(String[] args){List<String> list new ArrayList<String>(); lis…...
离散高斯抽样(Discrete Gaussian Sampling)
离散高斯抽样 离散高斯抽样(Discrete Gaussian Sampling)是一种常见于密码学和数学领域的随机采样方法。它通常用于构建基于格(lattice)的密码学方案,如基于格的加密和数字签名。Discrete Gaussian Sampling 的主要目…...
Elasticsearch:什么是生成式人工智能?
生成式人工智能定义 给学生的解释(基本): 生成式人工智能是一种可以创造新的原创内容的技术,例如艺术、音乐、软件代码和写作。 当用户输入提示时,人工智能会根据从互联网上现有示例中学到的知识生成响应,…...
责任链模式让我的代码精简10倍?
目录 什么是责任链使用场景结语 前言最近,我让团队内一位成员写了一个导入功能。他使用了责任链模式,代码堆的非常多,bug 也多,没有达到我预期的效果。实际上,针对导入功能,我认为模版方法更合适ÿ…...
Draw软件安装下载
Draw软件安装下载 1.软件简介2.软件下载3.安装方法 1.软件简介 Draw软件,全名为LibreOffice Draw,是一款免费、开源的2D矢量绘图软件,属于LibreOffice办公套件的一部分。它可以用来创建各种类型的图形,包括流程图、组织结构图、平…...
uniapp代码混淆ios上架43问题
参考文章:uniapp打包ios apk,混淆代码_uniapp 混淆_酸奶自由竟然重名了的博客-CSDN博客 uniapp打包ios,上传到ios应用市场时,会因为 4.3(代码重复率过高) 无法通过审核,此时可通过混淆代码来通过审核 1. 项目终端 安…...
Linux目录遍历函数
1.打开一个目录 #include <sys/types.h> #include <dirent.h> DIR *opendir(const char *name); 参数: -name:需要打开的目录的名称 返回值: DIR * 类型,理解为目录流 错误返回NULL 2.读取目录中的数据 #include <dirent.h…...
数据库-理论基础
目录 1.什么是数据库? 2.数据库与文件系统的区别? 3.常见的数据库由那些? 4.关系型数据库(MySQL)的特征及组成结构介绍 1.什么是数据库? 数据:描述事物的符号记录,可以是数字,文…...
【已解决】src/spt_python.h:14:20: 致命错误:Python.h:没有那个文件或目录
src/spt_python.h:14:20: 致命错误:Python.h:没有那个文件或目录 问题 其中重点的报错信息 src/spt_python.h:14:20: fatal error: Python.h: No such file or directory 思路 sudo yum install python-devel然后重新安装需要的依赖。 解决 成功。…...
基于Face++网络爬虫+人脸融合算法智能发型推荐程序——深度学习算法应用(含Python及打包exe工程源码)+爬虫数据集
目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境Pycharm 环境 模块实现1. Face.APl调用1)Face.APl介绍2)调用API 2. 数据爬取1)网络数据爬取步骤2)爬虫实现 3. 模型构建4. 用户界面设计1)需要调用的库文…...
Jetson nano嵌入式平台配置ip记录
背景 Jetson nano平台使用千兆网和PC连接时没有ip地址,在ubuntu的终端输入ifconfig显示eh0未设置ip,需要先在nano平台上配置ip地址,然后PC通过千兆网远程控制该平台。 配置ip 使用终端进入到network文件夹中, cd /etc/network…...
前端中的跨域请求及其解决方案
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 跨域(Cross-Origin)⭐CORS(跨域资源共享)⭐JSONP(JSON with Padding)⭐代理服务器⭐ WebSocket⭐服务器设置响应头⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:…...
SpringBoot2.0(mybatis-plus初始使用)
目录 一,介绍二,SpringBoot2.x整合MybatisPlus Lombok2.1,添加依赖 pom2.2,配置数据库信息 application.properties2.3,工程结构初始化 三,创建接口返回统一对象四,创建bean五,创建…...
游戏视频录制软件对比,哪款最适合你的需求?
随着电子竞技和游戏直播行业的迅速崛起,越来越多的玩家渴望记录并分享自己在游戏中的精彩瞬间。游戏视频录制软件正是满足这一需求的关键工具。本文将针对三款优秀的游戏视频录制软件进行对比分析,以便为读者提供选购建议。 游戏视频录制软件1࿱…...
耐蚀合金连续油管最新版 学习记录
声明 本文是学习GB-T 42858-2023 耐蚀合金连续油管. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了耐蚀合金连续油管的订货、材料、制造、检验试验、标记等。 本文件适用于油气井用耐蚀合金连续油管(以下简称"油管")…...
LoGoNet:基于局部到全局跨模态融合的精确 3D 目标检测
论文地址:https://arxiv.org/abs/2303.03595 论文代码:https://github.com/sankin97/LoGoNet 论文背景 激光雷达传感器点云通常是稀疏的,无法提供足够的上下文来区分远处的区域,从而造成性能次优。 激光雷达-摄像机融合方法在三…...
搜索引擎wordpress/seo网站建设优化
1.下面是Sping技术栈所包含的技术框架图 2.Spring Boot的一些知识点 3.Spring Boot 推荐的基础 POM 文件 名称说明spring-boot-starter核心 POM,包含自动配置支持、日志库和对 YAML 配置文件的支持。spring-boot-starter-amqp通过 spring-rabbit 支持 AMQP。spring-boot…...
定制网站开发报价/app推广赚钱平台
Java Q&A: 使用Factory Method模式 (转)[more]Java Q&A: 使用Factory Method模式Q: 阅读 "Polymorphism in its purest form" 一文时,我看到了一个不熟悉的术语 "Factory method"。你能解释一下什么是Factory method并说明如何使用它吗…...
女的男的做那个视频网站/天津网站seo设计
嘉年华杀阵已经是这么多年来的传统了,阵法怪物会各种各样的作弊技能,如何利用战术将其击杀是令无数玩家脸红心跳的。第一周放出的是天覆阵、风扬阵、雷绝阵以及大boss豹部高手。测试队伍:129级普陀、无底洞、五庄、天机城、狮驼岭,…...
wordpress 目录扫描/自己创建网页
一、环境搭建 1、安装nodejs node - v :查看版本 npm -v :查看npm 的版本 2、安装cnpm 疑问:npm和cnpm 都是什么? npm(node package manager):nodejs的包管理器,用于node插件管理(包括安装、卸载、管…...
网站估值/网站功能开发
在我们的日常工作生活中,许多时候需要将手机中的图片文字提取出来,然而很多人都不会,只会照着手打出来,但是这样做不仅效率不高,也很耗时。那么安卓华为手机如何识别图片中的文字?有没有什么快速简单的方法…...
网站开发类的合同/青岛seo外包公司
linux 系统监控、诊断工具之 top 详解 2016年04月15日 16:57:01 lovely可爱欧辰 阅读数:1304更多 个人分类: UNIX系统命令接触 linux 的人对于 top 命令可能不会陌生(不同系统名字可能不一样,如 IBM 的 aix 中叫 topas ࿰…...