知乎文章

MIT的新文章,

摘要:他们提供了一个最先进的开源的C++库:实时带有标准语义的视觉惯性(visual-inertial)的SLAM框架,并且超越了现有的开源框架(ORB-SLAM,VINS-Mono,OKVIS,ROVIO)通过使计算机能够在3D的程度构建网格和语义标准。Kimera被设计成模块化的,而且有4个关键的组分:一个视觉惯性里程计模块,用于快速和准确的状态估计;一个稳健的因子图优化器用于全局轨迹优化;一个轻量级的用于快速网格重建3D网格模块;最后是一个稠密3D标准语义重建模块。这些模块能够单独运行,也可以以组合的方式运行,因此kimera可以很容易的退回到最先进的VIO或者完整的SLAM系统。Kimera可以在CPU上面实时的运行,并且可以从语义标记的图片产生3D标准的语义网格,其中语义标记的图片可以从深度学习方法得到。我们希望kimera提供的灵活的,节约计算资源,稳健准确能力可以为未来标准语义SLAM和感知研究构建坚实的基础,并且可以允许研究者获得他们的原型解决方案不用从草稿开始。

四个模块

1)kimera-VIO:visual-inertial odometry module(视觉惯性里程计模块)

这个模块实现了基于关键帧的的最大后验视觉惯性估计器。在我们的实现中,这个估计器可以执行全平滑(full smoothing)或者固定滞后平滑(fixed-lag smoothing),取决于特定的时间范围;我们一般使用后者因为他可以确保有界的估计时间。Kimera-VIO包括一个可以处理未经处理的传感器数据的前端,以及一个可以融合处理过的观测值来获得传感器的状态的一个估计(比如 位姿,速度,或者传感器偏差)的后端

1.1)VIO前端,我们的IMU前端在未经处理的IMU数据上执行多模态预积分,来获得两个连续帧之间的紧密的预整合的相对状态的观测。这个视觉前端检测shi-tomasi角点,使用Lukas-kanade追踪器来在帧之间追踪,找到在左右双目之间的匹配关系,并且执行几何检验、我们同时通过五点RANSAC算法来执行单目验证,通过3点RANSAC算法来执行双目立体几何验证。这个代码同时分别提供了可以使用IMU旋转并且执行单目和双目验证通过2点RANSAC 1点RANSAC的选项。未来检测,双目匹配和几何验证是在每一帧上执行的,尽管我们仅仅只在中间帧上追踪特征。

1.2)VIO后端:在每一帧上,预积分IMU和视觉观测被添加到一个固定时滞(fixed-lag)平滑器(也就是一个因子图),这个因子图构成了我们的后端。我们使用预积分IMU模型和无结构的视觉模型。这个因子图是使用了GTSAM的iSAM2的方法被求解的。

在每一轮的iSAM2迭代中,无结构视觉模型通过DLT方法估计观测的到的点的3D位置,并且解析的消除来自VIO的对应的3D点。在消除之前,退化的点(比如在相机后面的点,比如没有足够视差来三角化)和外点(带有很大重投影误差的点)会被去除,这个操作提供了额外的稳健层。最后从平滑范围里面掉出来的点会被边缘化,通过GTSAM。

2)robust pose graph optimization module

Kimera-RPGO负责 检测回环并且使用稳健PGO计算全局连续帧的位姿。

2.1) 回环检测:回环检测是依赖于DBoW2库,并且使用词袋表示来快速检测重复的回环 。对于每一个重复的回环检测,我们通过单目和双目几何验证来(就像IIA中描述)拒绝外点回环,并且把剩下的回环传递给稳健的PGO求解器。注意到作为结果的回环可能仍然包括外点,这是因为视觉错觉,比如两个完全一样的房间在同一个建筑的不同层。

2.2)稳健PGO:这个模块使用GTSAM来实现的,并且包括了一个现代的外点拒绝方法:增量式连续观测集最大化,(incremental consistent measurement set maximization ,PCM)我专门把这个方法给添加到了只有一个机器人的情况,并且做了线上部署,我们储存的单独的由kimera-vio产生的里程计边和由回环检测产生的回环;每次当PGO被执行的时候,我们首先通过一个改进版本的PCM来选择连续回环的最大集合,并且在包括了里程计和连续回环的位姿图上来执行GTSAM,

2.3)PCM原本是设计用在多机器人情况下的,并且只检测机器人内的回环是否连续骂我们开发了一个PCM的C++版本,(i)在回环添加了一个里程计一致性检验(ii)为了能够进行在线操作,我们使得PCM可以增量式的更新连续观测几何。里程计检验是为了确保每一个回环是与里程计始终保持一致的:在有噪声的情况下,通过里程计沿着环路形成的位姿和loop l1必须组成单位矩阵。正如在PCM中描述的那样,我把沿着环路积累的的误差与使用卡方检验得到的观测误差不一致的回环标记为上外点的标签

。如果一个在t时刻检测到的回环通过了里程计检验,我们会测试它是否成对与之前的回环一致(在fig2中检验回环l1,l2是否相互一致,连续)。在PCM中,他们构建了一个邻接矩阵:A (l x l),l是回环的个数,这个矩阵是为了追踪成对一致的回环。为了启用在线操作,而不是从草稿构建起一个矩阵A,每当检测到一个新的回环,我们仅仅给这个矩阵增加一个行和一个列,然而只把这个新回环和之前的回环进行比较。最后,我们使用快速最大子图方法来计算得到一个最大一致回环集合。一致观测集合连同里程计一起被添加到因子图,然后在GTSAM使用高斯牛顿方法来优化。

3)kimera 网格构建器

Kimera网格构建器能快速生成两种类型的网格(i)单帧的网格(ii)在VIO 固定时滞平滑器里面的跨越多个关键帧的多帧3D网格

3.1)单帧网格:我们对于在目前的关键帧上成功追踪的2D特征点(由VIO前端得到)上面实施了一个三角剖分,然后再对2D三角网格做一个反向投影操作,通过由VIO生成的3D点来生成一个3D网格。尽管单帧网格本来是设计用来做低延迟目标避障的,但是我同样提供了通过给生成的网格带上2D语义标记标签的选项

3.2)多帧网格:多帧网格生成器把由VIO(原文为VIO receding horizon,不好翻译)生成的单帧网格收集起来合并成一个大的网格,并且对平面做一些调整(正则化)。同时,单帧网格和多帧网格都被编码为一系列的节点位置,同时附带一个带有节点ID的三角形的列表。假设我们在时间t-1已经有了一个多帧网格,对于每一个在t时刻产生的单帧网格,我们查看并且添加所有在单帧网格里面却不在多帧网格里面的所有的节点和三角形。同时我们视察所有的多帧网格的节点并且更新他们的3D位置,这是根据最新的VIO(原文VIO time horizon)。结果就是一个在VIO时间范围内的实时更新并且跨越多个关键帧的3D网格。如果在网格中检测到平面状表面,正则化因子会被添加到VIO后端,这会早就一个紧密耦合的VIO后端和网格正则器。

4) 公制(米制)单位的语义分割

我们采取了捆集光线投射技术来构建一个准确的全局包括了整个轨迹的3D网格,并且给网格带上了语义标记

4.1)全局网格:我们的网格是建立在voxblox上的,使用了基于体素(TSDF)的模型来去除噪声并且提取全局网格。在每一个关键帧上,我们使用稠密双目立体算法(半全局匹配)来获得来自于当前双目照片对的3D点云。然后我们通过voxblox来应用捆集光线投射方法。这个处理是重复进行的在每一个关键帧上,并且产生了一个TSDF,这里一个网格是用前进方块法(marching cubes)来提取得到的。

4,2)语义标注:kimera-semantics使用了2D语义标注过的图片(在每一个关键帧上产生的)来对3D网格进行语义标注。像素级别的2D语义标记可以很方便通过现成的工具得到的,如深度神经网络。为了这个目的,在捆集光线投射中,我们同样传播了语义标签。使用2D语义分割技术,我们同样给由立体双目算法得到的3D点带上标签。然后,在捆集光线投射里面的每一束光线,我们构建了一个储存标签概率的向量,这个标签概率是来自于在光束集里面观测到的标签的频率,。然后我们仅仅在TSDF的截断距离里面沿着光线传播这个信息。换句话说,我们拿出计算上的努力来为空标签更新概率。

在沿着光线遍历整个体素的同时,我们使用贝叶斯方法来更新每一个体素的概率,每一个体素都有一个概率标签向量,在这里我们提取最可能的标签。最后的米制语义网格是用前进方块法提取的。结果就是更加的准确,但是非常慢。

语义slam_【语义SLAM】MIT 新开源语义VIOSLAM框架 kimera相关推荐

  1. 语义slam_语义SLAM: 接轨深度学习的新方向

    声明:本文首发于我的公众号[当SLAM遇见小王同学],谢绝私自转载,如有需要,可加我微信进行授权!!侵权必究! SLAM技术在计算机视觉和机器人领域中占有重要地位.传统的SLAM框架都将环境假定为静态 ...

  2. 动态SLAM:关于语义分割时间效率的讨论

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨Mr Qin 来源丨古月居 1. 语义slam中的时间效率问题 针对动态场景下的SLAM问题,解 ...

  3. 基于激光雷达和单目视觉融合的SLAM和三维语义重建

    文章:SLAM and 3D Semantic Reconstruction Based on the Fusion of Lidar and Monocular Vision 作者:Lu Lou, ...

  4. 穷人的语义处理工具箱之二:语义编辑距离

    /*版权声明:可以任意转载,转载时请标明文章原始出处和作者信息.*/ author: 张俊林 转自:http://blog.csdn.net/malefactor/article/details/50 ...

  5. tensorflow 语义slam_研究《视觉SLAM十四讲从理论到实践第2版》PDF代码+《OpenCV+TensorFlow深度学习与计算机视觉实战》PDF代码笔记...

    我们知道随着人工神经网络和深度学习的发展,通过模拟视觉所构建的卷积神经网络模型在图像识别和分类上取得了非常好的效果,借助于深度学习技术的发展,使用人工智能去处理常规劳动,理解语音语义,帮助医学诊断和支 ...

  6. tensorflow 语义slam_【论文阅读28】DynaSLAM

    主要内容 面向动态环境基于点的语义SLAM系统.ORB-SLAM2的动态环境扩展版本,面向单目,双目和RGB-D相机.具体内容如下:动态物体检测方法.使用深学习方法(Mask R-CNN检测可能运动的 ...

  7. 基于点云的语义单目SLAM

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:robot L 链接:https://zhuanlan.zhihu.com/p/13043758 ...

  8. h5的语义化部分_H5 部分新语义化标签

    1.header   页眉 2.footer 页脚 3.main 主体 4.hgroup  标题组合 5.nav 导航 注:以上标签结构中只能出现一次 6.article 独立的内容 7.aside ...

  9. 天池赛题解析:零基础入门语义分割-地表建筑物识别-CV语义分割实战(附部分代码)

    赛题内容 赛题背景 赛题以计算机视觉为背景,要求选手使用给定的航拍图像训练模型并完成地表建筑物识别任务.为更好的引导大家入门,我们为本赛题定制了学习方案和学习任务,具体包括语义分割的模型和具体的应用案 ...

  10. html5语义化布局分割代码,HTML5语义化标签布局的兼容性.html

    html5语义化标签布局兼容性调整 header, section, footer, aside, nav, main, article, figure { display: block; } bod ...

最新文章

  1. Google 全球 IP 地址库一览表(更新中)
  2. webview300毫秒点击问题
  3. [f]动态判断js加载完成
  4. 什么从什么写短句_2020抖音文案短句:爱情、励志、伤感合集,值得收藏!
  5. MySQL上线,检查数据库设计的“十条合规”
  6. 关于app.config不能即时保存读取的解决方案
  7. Linux内核网络参数的意义及应用
  8. InnoDB存储引擎有三大特性
  9. matlab产生年月日的时间序列,求助:在MATLAB里如何输入时间序列中的时间
  10. 乔姆斯基生成语法_乔姆斯基(乔姆斯基转换生成语法理论)
  11. WSO2 EI 最全操作手册
  12. 图像处理:理想低通滤波器、butterworth滤波器(巴特沃斯)、高斯滤波器实现(python)
  13. php验证码汉字显示音节,普通话拼音PHP 标调音节 1403个
  14. 必看,关于sql的慢查询及解决方案
  15. 腾讯云轻量8核16G服务器18M带宽CPU流量性能测评
  16. 【用pandas_alive几行代码绘制竞赛动图】全网首发pandas_alive数据可视化中文学习笔记合集,学不会来打我(配置好的venv虚拟环境+拿来即用测试代码+测试数据集+参数api解析)
  17. PMP-商业论证中的财务测量指标-动态投资回收期、净现值、内部收益率、效益成本率计算
  18. Android 高德地图给指定坐标显示图片,以及聚合显示
  19. shiro框架的基本理解
  20. 2-44钟静雯_day04

热门文章

  1. apach2.2+php5.35 windows环境下安装问题解决
  2. 点击流日志分析项目实战开发流程
  3. 凸优化有关的数值线性代数知识二:求解已经因式分解的矩阵的线性方程组
  4. 凸优化第八章几何问题 作业题
  5. 聊聊我所从事过的通信行业
  6. Git学习笔记:一台电脑上配置两个git账户
  7. C# 获取exe、dll中的图标,支持获取256x256分辨率
  8. 20个命令行工具监控 Linux 系统性能
  9. Java SPI机制简介
  10. 希哲求大神教 技术额