当前位置: 首页 > news >正文

【视觉SLAM入门】8. 回环检测,词袋模型,字典,感知,召回,机器学习

"见人细过 掩匿盖覆”

  • 1. 意义
  • 2. 做法
    • 2.1 词袋模型和字典
      • 2.1.2 感知偏差和感知变异
      • 2.1.2 词袋
      • 2.1.3 字典
    • 2.2 匹配(相似度)计算
  • 3. 提升

前言: 前端提取数据,后端优化数据,但误差会累计,需要回环检测构建全局一致的地图;

1. 意义

  • 通俗的讲,机器人两次经过同一个场景,为了检测是同一个场景,这就是回环检测。它可以用来构建全局一致的地图。有了时隔更加久远的约束,一定程度消除累计飘移。形象的想弹簧,就是把原来已经优化好的,拉的更贴近真实位置。
  • 回环检测还可以做重定位,在跟踪丢失的时候。

2. 做法

以下是几种做法:

  • 取当前图像和历史所有图像一一进行特征提取并比对,通过匹配的数量确定。O( n 2 n^2 n2),缺点资源;
  • 还是上边的方法,但不一一匹配,随机抽取,可检测到的帧少很多;
  • 里程计配合给一个大致位置,这里的进行回环检测,缺点里程计自带误差,只能小范围;
  • 基于外观,主流,其中一种就是词袋模型。

2.1 词袋模型和字典

2.1.2 感知偏差和感知变异

感知偏差(假阳性),感知变异(假阴性)

在这里插入图片描述

  • 准确率(检测正确的数量 / 检测的总数量): P r e c i s i o n = T P / ( T P + F P ) Precision = TP/(TP+FP) Precision=TP/(TP+FP)

  • 召回率(实际检测出来的数量 / 理应检测出来的数量): R e c a l l = T P / ( T P + F N ) Recall = TP/(TP+FN) Recall=TP/(TP+FN)

一般这两个数据呈矛盾,不取极端,只说在recall为多少,pre为多少时候效果最好,一般我们对P的要求更高。这是回环检测的严格性导致的。

2.1.2 词袋

  • 字典实际就是对所有图片中的特征进行提取,比如"人","车"等,它们是单词,对全部图像特征提取所有单词(特征)后构成一个字典。
  • 词袋说的是一帧图像中,能够提取出来的单词。

比如现在有一本4个特征的字典: D = [ x 1 , x 2 , x 3 , x 4 ] D = [x_1,x_2,x_3,x_4] D=[x1,x2,x3,x4]
而我们有两个 x 1 x_1 x1 一个 x 3 x_3 x3 特征的图像,那用词袋可以记为:
A = 2 ⋅ x 1 + 0 ⋅ x 2 + 1 ⋅ x 3 + 0 ⋅ x 4 A = 2\cdot x_1 + 0\cdot x_2 + 1\cdot x_3 + 0\cdot x_4 A=2x1+0x2+1x3+0x4
它的向量就是
A = [ 2 , 1 , 0 , 0 ] A = [2,1,0,0] A=[2,1,0,0]

那么检测两个图像,则举例可以用

s ( a , b ) = 1 − 1 W ∣ ∣ a − b ∣ ∣ 1 s(a,b) = 1 - \frac{1}{W}||a-b||_1 s(a,b)=1W1∣∣ab1

L1范数,各元素绝对值之和,向量完全一样则得到1,是回环。

2.1.3 字典

字典里的单词是某一类特征的组合,类似于一个聚类问题,UML(无监督学习常见问题)。

  • 假设要做 k k k 个单词的字典,可以用K-means,K-means++等实现,这里以K-means(均值)为例:
    在这里插入图片描述

字典规模大,要在字典中查找单词属于哪个,逐个查找复杂度 O ( n ) O(n) O(n),参考数据结构,这里有很多优化方法,这里以最简单的K叉树为例去优化字典结构:
在这里插入图片描述
又很像K-D树,聚类类中类,聚中聚哈哈。一棵深度为 d d d , 分支为 k k k 的树,可以容纳, k d k^d kd 单词。

2.2 匹配(相似度)计算

两个概念:

  • TF(Term Frequency)译频率: 某单词在一副图像中经常出现,它的区分度就高;
  • IDF(Inverse Document Frequency)逆文档频率: 某单词在字典中出现的频率低,它的区分度就高;
  1. 在做字典时候,用IDF,假设所有特征总数为 n n n, 当前要统计的单词特征 w i w_i wi 的数量为 n i n_i ni, 则此单词的IDF为:
    I D F i = l o g n n i IDF_i = log \frac{n}{n_i} IDFi=lognin

  2. 对一副图像而言,假设特征/单词 w i w_i wi 出现了 n i n_i ni 次,而这幅图一共出现的单词数量为 n n n,则TF为:
    T F i = n i n TF_i = \frac{n_i}{n} TFi=nni

  3. 基于以上知识,一个图像的特征点可以对应到很多单词,则它的词袋(BOW)为:
    A = ( w 1 , η 1 ) , ( w 2 , η 2 ) , . . . , ( w N , η N ) ⟺ v A A = {(w_1, \eta _1), (w_2, \eta _2), ... , (w_N, \eta _N)} \iff v_A A=(w1,η1),(w2,η2),...,(wN,ηN)vA
    词袋中有很多0值,因为它不能包含字典中所有词。

  4. 计算两图词袋的差异(匹配度),给出一种方式(一范数),还有很多:
    s ( v A − v B ) = 2 ∑ i = 1 N ∣ v A i ∣ + ∣ v B i ∣ − ∣ v A i − v B i ∣ s(v_A - v_B) = 2\sum^N_{i=1}|v_{Ai}| +|v_{Bi}|-|v_{Ai}-v_{Bi}| s(vAvB)=2i=1NvAi+vBivAivBi

3. 提升

对于回环检测,有几点可以提升的部分:

  1. 增加字典规模
  2. 相似性评分处理

对于环境外观相似,比如教室同款椅子很多,利用先验的相似度(某时刻关键帧图像与上一时刻关键帧的相似性)进行归一化:
s ( v t , v t j ) ′ = s ( v t , v t j ) / s ( v t , v t − Δ t ) s(v_t,v_{tj})' = s(v_t,v_{tj})/s(v_t,v_{t-\Delta t}) s(vt,vtj)=s(vt,vtj)/s(vt,vtΔt)

  1. 关键帧处理
  1. 相邻帧肯定满足回环检测条件,因为变化太小,所以回环检测的帧一般稀疏;
  2. 检测到的回环相邻帧意义不大,一帧就可以优化轨迹,因此会把相近的回环聚类成一类,使算法不会反复检测同一类。
  1. 验证

词袋没有顺序,相机颠倒也是回环,如何验证?
回环缓存机制是一种,单词检测到的回环不足以构成约束,在一段时间内一直检测到的回环才是正确的回环(时间上的一致性检测)

  1. 机器学习应用于类别

图像连续变化产生不同类别,甚至可以认为是连续的;
图像间相似性可以利用深度学习方法;
词袋方法的物体识别能力不如神经网络,回环检测类似。

相关文章:

【视觉SLAM入门】8. 回环检测,词袋模型,字典,感知,召回,机器学习

"见人细过 掩匿盖覆” 1. 意义2. 做法2.1 词袋模型和字典2.1.2 感知偏差和感知变异2.1.2 词袋2.1.3 字典 2.2 匹配(相似度)计算 3. 提升 前言: 前端提取数据,后端优化数据,但误差会累计,需要回环检测构建全局一致的地图&…...

SpringBean的生命周期

SpringBean的生命周期 SperingBean的生命周期是从Bean实例化之后,即通过反射创建出对象之后,到Bean成为一个完整对象,最终存储到单例池中,这个过程被称为Spring Bean的生命周期。Spring Bean的生命周期大体上分为三个阶段 Bean的…...

uni-app 之 picker选择器

uni-app 之 picker选择器 同步滚动&#xff1a;开 uni-app 之 picker选择器 一、普通选择器 二、多列选择器 三、时间选择器 四、日期选择器 一、普通选择器 <template><view><picker change"bindPickerChange" :value"index" :range&q…...

整合车辆出险报告Api接口,轻松管理车险理赔!

随着车辆保有量的不断增加&#xff0c;车辆出险的情况也越来越普遍。对于车主来说&#xff0c;如何高效地管理车险理赔&#xff0c;处理保险事故是非常重要的。这时候我们就可以借助整合车辆出险报告API接口&#xff0c;实现快速定位理赔信息&#xff0c;轻松管理车险理赔。 一…...

eNSP基础网络学习-v02

一、eNSP 1.什么是eNSP eNSP(Enterprise Network Simulation Platform)是一款由华为提供的免费的、可扩展的、图形化操作的网络仿真工具平台&#xff0c;主要对企业网络路由器、交换机进行软件仿真&#xff0c;完美呈现真实设备实景&#xff0c;支持大型网络模拟&#xff0c;让…...

mac环境安装多个node版本(可切换)

出现问题 mac m1pro版&#xff08;前段时间刚换的&#xff09;,环境安装的都是最新的。node 18.17.1 前端跑的是react 18 的项目&#xff08;antD&#xff09;, 又跑了一个相对环境配置比较低的项目&#xff0c;然后启动不起来了&#xff1b; 分析控制台报错&#xff0c;推断是…...

Linux 操作技巧

目录 一、shell-命令解释器 二、Linux中的特殊符号 三、命令历史--history 一、shell-命令解释器 shell——壳&#xff0c;命令解释器&#xff0c;负责解析用户输入的命令 ——内置命令&#xff08;shell内置&#xff09; ——外置命令&#xff0c;在文件系统的某个目录下&…...

一个电子信息工程学生的历程和内心感想

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、我对大学三年专业课程的理解二、我为什么本科选择研究嵌入式这个方向&#xff1f;1.可以把理论变为实际应用——兴趣是最好的老师。2.嵌入式方向可以打的比赛非…...

【zookeeper】zk集群安装与启动踩坑点

zk安装我也踩了一些坑。特别是第一点&#xff0c;zk官网好像都没什么说明&#xff0c;导致直接下错了&#xff0c;搞了好几个小时。 踩坑点如下&#xff1a; 1&#xff0c;在zk官网下载包时&#xff0c;注意3.5以后的版本&#xff0c;要下载带-bin的&#xff0c;3.5之后&…...

【计算机网络】 拥塞控制

文章目录 背景TCP的四种拥塞控制算法慢开始与拥塞避免&#xff1a;快重传&#xff1a;快恢复&#xff1a; 流量控制和拥塞控制本质上的 区别 背景 网络中的链路容量和交换节点中的缓存和处理机都有着工作的极限&#xff0c;当网络的需求超过他们的工作极限时&#xff0c;就出现…...

【react】慎用useLayoutEffect转而使用useEffect

由于useLayoutEffect钩子是在dom获得后、渲染组件前。因此&#xff0c;如果在useLayoutEffect中设置一些长耗时的&#xff0c;或者死循环之类的任务&#xff0c;会导致内存堆栈溢出。这时候需要转用useEffect。 // 适配全局宽度拉动变化时&#xff0c;legend显示数量React.use…...

基于微信小程序的美食推荐系统设计与实现(源码+lw+部署文档+讲解等)

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…...

laravel框架 - 消息队列如何使用

业务场景&#xff1a;项目里边有很多视频资源需要上传到抖音资源库&#xff0c;通过队列一条一条上传。 参考实例&#xff1a;发送邮件&#xff0c;仅供参考 (1)创建任务【生成任务类】 在你的应用程序中&#xff0c;队列的任务类都默认放在 app/Jobs 目录下。如果这个目录不存…...

Dependency ‘org.redisson:redisson:‘ not found解决方法 三种刷新Maven项目的方法

报错情况 在pom中导入redisson包 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId> </dependency> 爆红&#xff0c;还显示Dependency org.redisson:redisson: not found。 由于报错已经解决&#xff0c;…...

Mysql高级——索引优化和查询优化(1)

索引优化 1. 数据准备 学员表插50万条&#xff0c; 班级表插1万条。 建表 CREATE TABLE class (id INT ( 11 ) NOT NULL AUTO_INCREMENT,className VARCHAR ( 30 ) DEFAULT NULL,address VARCHAR ( 40 ) DEFAULT NULL,monitor INT NULL,PRIMARY KEY ( id ) ) ENGINE INNO…...

Oracle for Windows安装和配置——Oracle for Windows数据库创建及测试

2.2. Oracle for Windows数据库创建及测试 2.2.1. 创建数据库 1&#xff09;启动数据库创建助手&#xff08;DBCA&#xff09; 进入%ORACLE_HOME%\bin\目录并找到“dbca”批处理程序&#xff0c;双击该程序。具体如图2.1.3-1所示。 图2.1.3-1 双击“%ORACLE_HOME%\bin\dbca”…...

【1993. 树上的操作】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一棵 n 个节点的树&#xff0c;编号从 0 到 n - 1 &#xff0c;以父节点数组 parent 的形式给出&#xff0c;其中 parent[i] 是第 i 个节点的父节点。树的根节点为 0 号节点&#xff0c;所以 par…...

LeetCode【1. 两数之和】

穷通有命无须卜&#xff0c;富贵何时乃济贫&#xff1b;角逐名场今已久&#xff0c;依然一幅旧儒巾。 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输…...

3D成像技术概述

工业4.0时代,三维机器视觉备受关注,目前,三维机器视觉成像方法主要分为光学成像法和非光学成像法,这之中,光学成像法是市场主流。 飞行时间3D成像 飞行时间成像(Time of Flight),简称TOF,是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉…...

Centos7 安装部署 Kubernetes(k8s) 高可用集群

1&#xff1a;基础环境准备 宿主机系统集群角色服务器IP主机名称容器centos7.6master192.168.2.150ks-m1dockercentos7.6master192.168.2.151ks-n1dockercentos7.6master192.168.2.152ks-n2docker 1.1 服务器初始化及网络配置 VMware安装Centos7并初始化网络使外部可以访问*…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...