【文献分享】动态环境下竟然能实现实时语义RGB-D SLAM??

论文题目:Towards Real-time Semantic RGB-D SLAM in Dynamic Environments

中文题目:动态环境下实时语义RGB-D SLAM研究

作者:Tete Ji, Chen Wang, and Lihua Xie

作者机构:新加坡南洋理工大学电气与电子工程学院 卡内基梅隆大学机器人研究所

论文链接:https://arxiv.org/pdf/2104.01316.pdf

大多数现有的视觉SLAM方法严重依赖于静态世界假设,在动态环境中很容易失效。本文提出了一个动态环境下的实时语义RGB-D SLAM系统,该系统能够检测已知和未知的运动物体。为了减少计算成本,其只对关键帧进行语义分割以去除已知的动态对象,并保持静态映射以实现稳健的摄像机跟踪。此外,文章还提出了一个有效的几何模块,通过将深度图像聚类到几个区域,并通过它们的重投影误差来识别动态区域,从而检测未知的运动物体。

1 前言

尽管现有很多的vSLAM系统都有很好的性能,但这些方法中的大多数严重依赖于静态世界假设,这极大地限制了它们在现实世界场景中的部署。

由于移动的人、动物和车辆等动态物体对姿态估计和地图重建有负面影响。尽管稳健的估计技术(如RANSAC)可以用于过滤掉一些异常值,但改进仍然有限,因为它们只能处理轻微的动态场景,当移动的物体覆盖大部分相机视图时,仍然可能失败。

由于计算机视觉和深度学习的最新进展,环境的语义信息已被集成到SLAM系统中,比如通过语义分割提取语义信息,预测被检测对象的标签并生成掩码。通过识别和去除潜在的动态目标,vSLAM在动态场景中的性能可以得到很大的提高。

然而,这些方法仍然存在两个主要问题:

  1. 强大的语义分割神经网络算法计算成本很高,不适用于实时和小规模机器人应用。
  2. 而对于轻量级网络,分割精度可能会降低,跟踪精度也会受到影响。另一个问题是,它们只能处理在网络的训练集中被标记的已知物体,面对未知的运动物体时仍然可能失败。

为了识别具有语义线索的动态对象,大多数现有方法对每个新帧进行语义分割。这将导致相机跟踪的显著放缓,因为跟踪过程必须等到分割完成。

本文主要贡献如下:

  • 提出了一种基于关键帧的语义RGB-D SLAM系统,能够减少动态环境中运动物体的影响。
  • 提出了一个有效和高效的几何模块,处理未知的运动物体,并结合语义SLAM框架。
  • 通过与最先进的动态SLAM方法对比实验,证明所提出的方法的准确性,同时能够在嵌入式系统上实时运行。

2 算法框架

整个算法的框架如下图所示:

2.1 语义模块

语义分割是预测像素标签,并使用基于深度学习的方法为输入RGB图像中检测到的对象生成掩码,语义模块采用了轻量级的语义分割网络SegNet

然后将分割网络在PASCAL VOC数据集上进行预训练,该数据集包含20类对象。在这些对象中,只处理那些高度移动或潜在动态的对象,如人、汽车、自行车等。这些目标将从分割图像中移除,与它们相关的特征点将不会用于相机跟踪和地图构建。

与大多数现有的基于学习的动态SLAM方法不同,该模型只在创建新的关键帧时执行语义分割,而不是对每个新帧执行语义分割。这大大降低了语义模块的计算成本,帮助实现语义信息的实时跟踪。此外,该进程在单独的线程中执行,因此对总体跟踪时间没有太大影响。

2.2 几何模块

由于单独的语义信息只能检测到训练集中被标记的固定数量的对象类,因此在存在未知运动对象的情况下,跟踪和映射仍然会受到影响,因此需要一个不需要先验信息的几何模块

首先使用K-Means算法将每个新的深度图像分割成N个簇,在3D空间中彼此接近的点被分组在一起。假设每个聚类都是一个物体的表面,并且聚类中的点共享相同的运动约束。因为单个对象可以被分割成几个簇,所以对象不需要是刚性的,而大多数语义SLAM方法都有这种刚性假设。

对于每个聚类 c j c_j cj,计算聚类内所有特征点 u i u_i ui相对于它们在三维空间中的匹配对应Pi的平均重投影误差 r j r_j rj,如(1)所定义,其中m为 c j c_j cj中匹配的特征数, T w c T_wc Twc为相机姿态,π表示相机投影模型,ρ为罚函数。
r j = 1 m ∑ ρ ( ∣ ∣ u i ′ − π ( T w c P i ) ∣ ∣ ) 2 r_j = \frac{1}{m}\sum \rho (||u'_i-\pi (T_{wc}P_i) ||)^2 rj=m1ρ(∣∣uiπ(TwcPi)∣∣)2

当一个集群的误差相对大于其他集群时,就将其标记为动态集群。动态聚类中的所有特征点将被移除,不再参与相机姿态估计。与识别单个特征点的动态状态相比,该聚类方法更加有效和高效。此外,它还可以防止由单点测量噪声引起的误检。它还允许我们通过几何聚类近似运动物体的大致形状。改方法的一些结果可以在下图的第三行中看到,其中动态集群用红色突出显示。该模块可以独立工作,不需要语义信息,因此可以检测未知的运动物体。

第一行显示了提议的语义模块(蓝色矩形点)和几何模块(红色点)检测到的动态特征。第二行是相应的语义分割结果。第三行显示深度图像的几何聚类结果,动态聚类以红色突出显示。(a)和(b)显示两个模块都检测到动态目标。©-(h)表示语义分割失败,而几何模块分割成功(几何模块可以在语义模块失效的情况下继续工作)。

作者在实验过程中发现了一个有趣的现象,一些半动态的物体也可以被识别出来。如上图(h)所示,其中左椅子被确定为动态的。原因是椅子目前是静态的,但当重新访问它时,它的位置发生了变化。这对于长期一致的地图构建是有帮助的。

2.3 关键帧和本地地图更新

只从关键帧中提取语义信息。因为新帧是用关键帧和局部地图跟踪的,我们只需要确保分割的关键帧和局部地图只包含场景的静态部分。关键帧选择策略继承自原ORB-SLAM2系统。当在跟踪过程中选择新的关键帧时,在单独的线程中执行语义分割并删除动态特征点。本地地图也通过删除相应的动态地图点来更新。

通过这种方式,维护了一个关键帧数据库和一个只包含静态特征和地图点的地图。

2.4 跟踪

继承于ORB-SLAM2对于每一个新帧都执行一个两阶段的跟踪。首先使用与当前帧重叠最大的最近关键帧进行初始跟踪,以获得初始姿态估计。由于关键帧已经经过了改进,删除了潜在的动态对象,因此这个初始估计将更加可靠。

然后在几何模块中使用初始姿态估计进行动态物体检测。几何模块去除当前帧中的动态点后,利用当前帧中观察到的所有局部地图点进行跟踪,利用局部束调整获得更精确的姿态估计。由于语义模块还在局部地图中删除了潜在的动态地图点,进一步降低了动态目标的影响,从而使姿态估计更加鲁棒和准确。

3 实验与结果

本文方法在广泛用于RGB-D SLAM评价的TUM RGB-D数据集上进行了测试。

评估指标:用于评估的误差指标是m的绝对轨迹误差(ATE)的常用均方根误差(RMSE),以及包含m=s的平移漂移和◦=s的旋转漂移的相对姿态误差(RPE)的RMSE。ATE测量轨迹的全局一致性,RPE测量每秒的里程漂移

3.1 不同模块的作用

ATE与基线ORB-SLAM2的RMSE比较如下表所示。

实验结果:

  1. 对于稍微动态的序列,提出的方法的结果与ORB-SLAM2相似,因为ORB-SLAM2可以通过RANSAC算法成功处理这些情况,因此改进幅度有限。

  2. 对于高度动态的序列,文中的语义模块和几何模块都取得了显著的精度提高,并且提出的组合系统取得了更好的结果。

下图为根据地面真值,ORBSLAM2和所提方法估算的轨迹对比

3.2 与最先进方法的比较

作者将所提出的方法与最先进的基于几何的动态SLAM方法MR-DVO、SPW、StaticFusion、DSLAM以及基于学习的方法MID-Fusion、EM-Fusion、DS-SLAM和DynaSLAM进行了比较。

ATE和RPE的比较分别总结于表2和表3。

可以看出,文中的方法在所有动态序列中都提供了具有非常好的的结果,并且优于所有其他动态SLAM方法,除了在语义框架中结合多视图几何的DynaSLAM。但是,DynaSLAM提供离线静态地图创建,由于其耗时的Mask-RCNN网络和区域增长算法,它无法实时运行。但是本文的方法在实现了实时操作的同时,提供了与之非常接近的结果。

3.3 真实环境下的鲁棒性检验

在真实的实验中,一个拿着书的人在相机前坐着走着,而相机几乎是静止的。下图是实时测试过程中动态点检测结果的几张截图,其中第二行和第三行分别是语义模块和提出的几何模块的分割结果。

书在网络模型中不是一个被标记的对象,因此它不能被识别,或者有时被语义模块错误地识别,如第二行所示。作为一个补偿过程,几何模块能够在测试中正确地将书作为移动对象提取出来,如第三行所示。这表明语义模块和几何模块都是动态环境下健壮的语义RGBD SLAM系统所必需的。该方法的平均弹道估计误差约为0:012m,而ORB-SLAM2由于运动物体引起的较大波动,误差约为0:147m。

4 总结

本文提出了一个实时语义RGB-D SLAM框架,该框架能够处理已知和未知的运动物体。

为了减少计算量,提出了一种基于关键帧的语义模块,并引入了一种基于几何聚类的有效几何模块来处理未知运动目标。广泛的评估表明,文中的系统提供了最先进的定位精度,同时仍然能够在嵌入式平台上实时运行。

未来改进:可以构建一个只包含静态部分的环境的长期语义地图,这对高级机器人任务很有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/51356.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++赋值运算符重载

运算符重载 C为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数函数名字:关键字operator后面接需要重载的运算符符号函数模型:返回值类型 operator操作符(参数列表) 注意事项: 1 不能通过连接其他符号…

【C++】开源:Muduo网络库配置与使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Muduo网络库配置与使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下…

网络知识整理

网络知识整理 网络拓扑网关默认网关 数据传输拓扑结构层面协议层面 网络拓扑 网关 连接两个不同的网络的设备都可以叫网关设备,网关的作用就是实现两个网络之间进行通讯与控制。 网关设备可以是交换机(三层及以上才能跨网络) 、路由器、启用了路由协议的服务器、代…

【Docker】云原生利用Docker确保环境安全、部署的安全性、安全问题的主要表现和新兴技术产生的详细讲解

前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介:热…

matplotlib实现动态显示图片

plt.ion()打开交互开关 plt.ioff()关闭交互开关 plt.pause(0.1)暂停0.1秒 plt.clf()#清除当前的Figure图像 plt.cla()#清除当前的Axex图像 import matplotlib.pyplot as plt import numpy as np import time from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg…

Unity自定义后处理——用偏导数求图片颜色边缘

大家好,我是阿赵。   继续介绍屏幕后处理效果的做法。这次介绍一下用偏导数求图形边缘的技术。 一、原理介绍 先来看例子吧。   这个例子看起来好像是要给模型描边。之前其实也介绍过很多描边的方法,比如沿着法线方向放大模型,或者用Ndo…

建设银行秋招指南,备考技巧和考试内容详解

建设银行秋招简介 银行作为非常吃香的岗位,每年都有不少同学通过投递简历,进入笔试,再到面试成功,成功到银行就职,也有相当一部分同学因为信息差,符合条件却没有报名。无法进入银行工作。 建设银行的秋招…

ACL原理

ACL原理 ACL是一种用于控制网络设备访问权限的技术,可以通过配置ACL来限制特定用户、应用程序或网络设备对网络资源的访问。 1、ACL(Access Control List) 2、ACL是一种包过滤技术。 3、ACL基于IP包头的IP地址、四层TCP/UDP头部的端口号、…

Transformer背景介绍

目录 Transformer的诞生Transformer的优势Transformer的市场 Transformer的诞生 论文地址 Transformer的优势 Transformer的市场

力扣热门100题之矩阵置0【中等】

题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 示例 2&#xff…

【计算机网络】第 4 课 - 物理层

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。 目录 1、物理层的基本概念 2、物理层协议的主要任务 3、物理层任务 4、总结 1、物理层的基本概念 在计算机网络中,用来…

ReentrantLock锁的实现

ReentrantLock基于AQS,在并发编程中可以实现公平锁和非公平锁来对同步资源进行控制,并且是可重入锁。 1.ReentrantLock中的类的继承结构: 2.构造方法: 3.非公平锁的实现 看是否能够通过CAS来设置state来获取到锁,如果…

Appium+python自动化(二十五)-获取控件ID(超详解)

简介 在前边的第二十二篇文章里,已经分享了通过获取控件的坐标点来获取点击事件的所需要的点击位置,那么还有没有其他方法来获取控件点击事件所需要的点击位置呢?答案是:Yes!因为在不同的大小屏幕的手机上获取控件的坐…

Pytorch个人学习记录总结 玩俄罗斯方块の深度学习小项目

目录 前言 模型成果演示 训练过程演示 代码实现 deep_network tetris test train 前言 当今,深度学习在各个领域展现出了惊人的应用潜力,而游戏开发领域也不例外。俄罗斯方块作为经典的益智游戏,一直以来深受玩家喜爱。在这个项目中&…

WEB:php_rce

背景知识 Linux命令 thinkPHPv5漏洞 题目 打开页面,页面显示为thinkphp v5的界面,可以判断框架为thinkPHP,可以去网上查找相关的漏洞 由题目可知,php rec是一个通过远程代码执行漏洞来攻击php程序的一种方式 因为不知道是php版…

JVM - 运行时数据区域

文章目录 程序计数器栈堆方法区知识延申 -- 字符串常量池 程序计数器 并发情况下,会发生线程之间的上下文切换,当 线程1 的CPU时间片用完后,需要程序计数器记录 线程1 的下一条JVM指令的地址,等下一次 线程1 继续运行的时&#x…

TCP/IP协议详解(二)

目录内容 TCP协议的可靠性 TCP的三次握手 TCP的四次挥手 C#中,TCP/IP建立 三次握手和四次挥手常见面试题 在上一篇文章中讲解了TCP/IP的由来以及报文格式,详情请见上一篇文章,现在接着来讲讲TCP/IP的可靠性以及通过代码的实现。 在TCP首部的…

layui框架学习(33:流加载模块)

Layui中的流加载模块flow主要支持信息流加载和图片懒加载两部分内容,前者是指动态加载后续内容,示例的话可以参考csdn个人博客主页,鼠标移动到页面底部时自动加载更多内容,而后者是指页面显示图片时才会延迟加载图片信息。   fl…

Excel的使用

1.EXCEL诞生的意义 1.1 找到想要的数据 1.2 提升输入速度 2.数据分析与可视化操作 目的是提升数据的价值和意义 3.EXCEL使用的内在意义和外在形式 4.EXCEL的价值 4.1 解读及挖掘数据价值 4.2 协作板块 4.3 展示专业度 4.4 共享文档内容 5.人的需求》》软件功能

Stephen Wolfram:神经网络

Neural Nets 神经网络 OK, so how do our typical models for tasks like image recognition actually work? The most popular—and successful—current approach uses neural nets. Invented—in a form remarkably close to their use today—in the 1940s, neural nets …