DS-SLAM阅读笔记

主要思想:(语义+几何)

1.SegNet进行语义分割(单独一个线程);

2.对于前后两帧图像,通过极线几何检测外点;

3.如果某一物体外点数量过多,则认为是动态,剔除;

4.建立了语义八叉树地图。

讨论:这种四线程的结构以及极线约束的外点检测方法得到了很多论文的采纳,其缺点在于:

1.极线约束的外点检测方法并不能找到所有外点,当物体沿极线方向运动时这种方法会失效

 2.用特征点中的外点的比例来判断该物体是否运动,这用方法存在局限性,特征点的数量受物体纹理的影响较大

3.SegNet2016年剔除的语义分割网络,分割效果有很大提升空间,实验效果不如Dyna-SLAM

摘要

DS-SLAM 中有五个线程并行运行:跟踪、语义分割、局部映射、闭环和密集语义图创建。DS-SLAM 将语义分割网络与移动一致性检查方法相结合,以减少动态对象的影响,从而在动态环境中极大地提高了定位精度。 同时,生成了一个密集的语义八叉树地图,可用于高级任务。

八叉树:将一个体素划分为八份,可以更加精细的描述地图,如果八份都是true那么只需要用一个大的体素表示(不用展开这个节点),这样子就减少了地图的存储数据量。

引言

DS-SLAM 贡献点:

使用语义分割网络和光流相结合的方法减少视觉SLAM中动态物体造成的影响。

1. 基于ORB-SLAM2提出了动态环境中的完整语义SLAM系统(DS-SLAM),可以减少动态对象对姿态估计的影响。 该系统的有效性在 TUM RGB-D 数据集 上进行评估。 结果表明,DS-SLAM 在动态环境中的准确性和鲁棒性方面明显优于 ORB-SLAM2。 该系统还与机器人操作系统(ROS)集成,并通过在真实环境中对机器人进行 DS-SLAM 测试来验证其性能。

2.将语义分割网络单独的放在一个线程当中,将语义分割和运动一致性检查的方法(光流法(通过计算光流的不一致性来区分静态背景和运动目标))相结合,过滤掉场景中的动态物体。从而提高了定位模块和建图模块在动态场景下的鲁棒性和准确性。

3. DS-SLAM 创建一个单独的线程来构建一个密集的语义 3D 八叉树图 。密集语义 3D 八叉树图采用 log-odds score(对数优势记分法) 方法过滤掉不稳定的体素并更新这些体素的语义。

log-odds score(对数优势记分法):是一种统计测试,通常用于人类、动物和植物种群的连锁分析。LOD 分数将在两个基因确实相关时获得测试数据的可能性与纯粹偶然观察到相同数据的可能性进行比较。正 LOD 分数有利于存在连锁,而负 LOD 分数表明连锁的可能性较小。

计算体素被占用的概率。

相关工作

在以前的工作中,语义图通常由两部分组成:几何部分和语义部分。语义方法预先训练了对象识别子系统,并将语义信息附加到识别的对象模型上。他们的工作仅集中在语义映射和对象识别上,而语义信息在其他部分的信息却没有很好地使用。近期工作利用场景中的几何属性和语义属性共同估计相机的姿势,点和对象,从而显著提高了对象识别的准确性。

在本文中,语义信息不仅用于生成基于八叉树的环境表示,而且还用于在动态环境中跟踪过程中过滤异常值。

系统介绍

1.DS-SLAM整体框架

该系统的框架如上图所示。Kinect2捕获的原始RGB图像在跟踪线程和语义分割线程中同时进行处理。跟踪线程首先提取ORB特征点,然后粗略检查特征点的移动一致性并保存潜在的异常值。然后跟踪线程等待具有由语义分割线程预测的像素级语义标签的图像。分割结果到达后,将根据分割结果和之前检测到的潜在异常值,丢弃位于运动物体中的ORB特征点异常值。然后,通过匹配其余的稳定特征点来计算变换矩阵。

2.语义分割

DS-SLAM采用SegNet提供基于caffe的像素级实时语义分割。在PASCAL VOC数据集[18]上训练的SegNet总共可以分割20个类。在实际应用中,人最有可能是动态对象,因此我们假设位于人身上的特征点最有可能是异常值。

SegNet:

  • SegNet: 编码-解码结构
  • SegNet具有编码器网络和相应的解码器网络,接着是按最终像素的分类层。

2.1. Encoder编码器

  • 在编码器处,执行卷积和最大池化。
  • VGG-16有13个卷积层。 (不用全连接的层)
  • 在进行2×2最大池化时,存储相应的最大池化索引(位置)。

2.2. Decoder解码器

  • 使用最大池化的索引进行上采样:
  • 在解码器处,执行上采样和卷积。最后,每个像素送到softmax分类器。
  • 在上采样期间,如上所示,调用相应编码器层处的最大池化索引以进行上采样。
  • 最后,使用K类softmax分类器来预测每个像素的类别。

缺点:

  • 大尺寸目标的准确度更高。
  • 小尺寸目标的准确度较低。

速度还是比较慢,在本文中,segnet仅检测分割20类物体,时间开销达到37ms。(从时间开销上可进行改进使得整体系统更加具有实时性)

3.移动一致性检查

由于运动分割是耗时的,语义分割结果可以从另一个线程得到,我们只需要判断分割结果中的关键点是否在移动。如果确定分割对象内的某些点是动态的,则可以将该对象视为动态对象。本文中移动点检测的想法很简单。第一步是计算光流金字塔,得到当前帧匹配的特征点。那么如果匹配对离图像边缘太近或者匹配对中心的3×3图像块的像素差太大,匹配对将被丢弃。第三步是使用具有最多内点的 RANSAC 找到基本矩阵。然后使用基本矩阵计算当前帧中的极线。最后判断匹配点到其对应的极线的距离是否小于某个阈值。如果距离大于阈值,则匹配点将被确定为移动。(这一块被后面被经常沿用)

       利用F矩阵(基本矩阵)计算极线:

       计算两个点之间的距离:

       判断移动点的算法:

       输入:上一帧F1,上一帧特征点P1,当前帧F2;

       输出:动态点集合S;

1. 利用calcOpticalFlowPyrLK(计算LK光流金字塔)计算P2;

2.移除P2中的外点;

3. 计算基本矩阵FM;

4.对于每个匹配的点循环:

5.计算极线

4.计算距离

7.如果距离大于阈值:

8.将p2加入到动态点集合S中;

9.结束if;

10.结束循环;

4.离群点剔除

由于人体等运动物体的柔性变形和复杂运动,移动一致性检查方法很难提取完整动态区域的轮廓,更何况提取整个轮廓的时间开销非常大。在DS-SLAM中,由于采用了语义分割网络,可以很容易地获得物体的完整轮廓。我们的想法是将语义信息和移动一致性检查结果结合起来,完成两级语义知识库的建立:

(1)对象是否移动。如果在分割对象的轮廓中存在通过移动一致性检查而产生的一定数量的动态点,则确定该对象正在移动。

(2)如果确定分割对象正在移动,则删除位于对象轮廓中的所有特征点。通过这种方式,可以精确地消除异常值。此外,错误分割的影响也可以在一定程度上降低。

此外,可以充分利用跟踪线程等待另一个线程的语义分割结果的时间。在等待期间,可以进行移动一致性检查。在接下来的实验结果部分,表 IV 给出了 DS-SLAM 中的消耗时间。可以看出,在跟踪线程中使用的时间大约等于语义分割线程。

在本文的其余部分中,我们将人类作为动态对象的典型代表。从理论上讲,DS-SLAM适用于任何多个已识别和分段的动态对象。

语义分割结果出来后,如果没有人被检测到,那么所有的ORB特征将直接与最后一帧匹配以预测姿势。否则,请使用移动一致性检查结果来确定人员是否在移动。如果确定人是静态的,则直接预测姿势,否则在匹配之前删除所有属于人的轮廓内的ORB特征点。这样,可以显着降低动态对象的影响。

5.密集语义3D八叉地图构建

语义八叉树映射线程从跟踪线程获取新的关键帧,从语义分割线程获取分割结果。关键帧的变换矩阵和深度图像用于生成局部点云。然后,本地点云将被转换并维护在全局八点树地图中。我们采用八叉树表示,是因为它灵活,紧凑且可更新。八元树地图被高效存储,并且易于用于导航。

语义信息被合并到八叉树地图中。八叉树地图中的每个体素都与特定的颜色相关联,并且每种颜色都代表一个语义标签。例如,红色的体素代表它属于沙发,而粉红色的体素代表它属于一个人。建模和语义融合的所有过程均以概率方式完成,因此可以方便地更新体素的属性。这样,密集的语义3D八叉树地图可以为移动机器人完成高级任务提供基础。

DS-SLAM 面向处理动态环境,因此动态对象不应该存在于地图中。语义分割结果可以帮助我们有效地过滤掉动态对象。然而,语义分割的准确性是有限的。在复杂情况下,例如对象相互重叠,语义分割结果可能不完整甚至错误。为了解决这个问题,DS-SLAM 中使用了log-odds score(对数优势记分法)来最小化动态对象的影响。 log-odds score用于表示单个体素被定量占用的可能性。令p表示一个体素被占用的概率,l表示该概率的log-odds score。  可以通过logit变换计算:

如果体素n被观察到被占用那么L = τ,否则为0。增量τ是一个预定义的值。当重复观察到该体素被占用时,该体素的log-odds score会增加,否则会减少。一个体素的占据概率p可以通过逆logit变换来计算。只有当占用概率p大于预先定义的阈值时,才认为体素被占用,并将在八叉树图中可视化。换言之,被观察到被多次占据的体素被认为是稳定占据体素。使用这种方法,我们可以很好地处理动态环境中的地图构建问题。

实验部分

所有实验均在配备 Intel i7 CPU、P4000 GPU 和 32GB 内存的计算机上进行。

旋转漂移的结果:

平移漂移的结果:

绝对轨迹误差的结果:

时间评估:

结论

本文提出了一个完整的实时鲁棒语义SLAM(DS-SLAM)系统,该系统可以减少动态对象对姿态估计的影响,同时提供八叉树地图的语义表示[8]。DS-SLAM中有五个线程并行运行:跟踪、语义分割、局部映射、循环闭合和密集映射创建。将实时语义分割网络SegNet与移动一致性检查相结合,过滤出场景中的动态部分,如行走的人。然后将匹配的特征点从检测到的动态区域中去除,从而提高动态场景下的鲁棒性和准确性。此外,稠密语义3D八叉树地图采用对数优势分数法过滤不稳定体素,可用于机器人导航和复杂任务。在TUM RGB-D数据集中具有挑战性的动态序列上测试了该系统对动态对象的有效性。结果表明,在高动态环境下,DS-SLAM在准确性和鲁棒性方面显著优于ORB-SLAM2。

然而,DS-SLAM仍然存在一些问题。例如,在语义分割网络中可以识别的对象类型受到限制,这限制了其应用范围。当检测到循环闭合时,必须重新构建八叉树映射。将来,我们将通过优化移动一致性检查方法来提高DS-SLAM的实时性能。此外,移动机器人将采用密集的语义八叉树图来完成高级任务。

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VoladorL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值