【文献分享】DynaSLAM:你见过动态物体修补效果这么好的SLAM吗?

news2024/11/17 5:50:58

论文题目:DynaSLAM: Tracking, Mapping, and Inpainting in Dynamic Scenes

中文题目:DynaSLAM:动态场景中的跟踪、建图和图像修复

作者:Berta Bescos等

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

1 笔者个人体会

这篇文章提出的动态物体检测、剔除和修补算法非常清晰直观,我觉得有几个可以学习借鉴的地方:

  1. 使用了Mask R-CNN卷积神经网络+多视图几何的方法进行动态物体去除,这两种方法进行互补,对于几何方法,主要问题是初始化并不简单,因为它具有多视图的性质,但它可以解决长期地图中半静态物体问题。学习方法不存在这样的初始化问题,但它们无法识别半静态物体。

  2. 我觉得这篇文章的亮点还是在图像修复模块,在他们提供的视频中可以看到,这个修补效果确实很好,这个算法放到增强现实应用中应该很不错。

  3. 它的图像修复部分,对回环检测或者长期导航有很大帮助。

2 引言

目前绝大多数方法和数据集都假定是静态环境。因此,他们只能通过将动态内容分类为静态模型的异常值来管理一小部分动态内容。尽管静态假设适用于某些机器人应用,但它限制了视觉SLAM在许多相关情况下的适用性,例如长时间(long-term) 在人口稠密的现实环境中运行的智能自主系统。

在视觉SLAM中要完成这几个挑战:

  1. 防止使用动态物体tracking;防止将动态物体mapping到地图中
  2. 如何完成被移动物体暂时遮挡的3D地图部分

本文提出了一种在线算法来处理RGB-D,立体和单目SLAM中的动态目标。这是通过向最先进的ORBSLAM2系统添加前端阶段来完成的,目的是更准确地跟踪和可重复使用的场景地图。在单目和立体情况下,使用CNN 对帧中的先验动态对象(例如人和汽车)进行逐像素分割,这样SLAM算法就不会提取它们的特征。在RGB-D案例中,文章结合多视图几何模型和基于深度学习的算法来检测动态物体,并在将它们从图像中移除后,用正确的场景信息重新绘制被遮挡的背景。

3 算法框架

算法框架如下图所示。

1.首先,RGB通道通过一个CNN,该CNN按像素划分出所有先验的动态内容。

2.然后使用多视图几何从两个方面改进动态内容分割:对之前的动态对象分割进行细化、并将大多数时候静态的新对象实例标记为动态对象实例(即检测在CNN阶段未设置为可移动的移动对象)。

3.然后实现了一个低成本的跟踪模块,以在已经创建的场景地图中定位相机。

4.一旦完成了相机的完整动态目标检测和定位,然后用以前视图中的静态信息重建当前帧的遮挡背景。

3.1 使用CNN对潜在动态内容进行分割

使用Mask R-CNN逐像素的语义分割信息进行对象实例分割,使用Matterport实现TensorFlow。

Mask R-CNN的输入为RGB原始图像。这个想法是将那些可能是动态的或可移动的类(提前设计了一个数据库列表,保存了一些实例类)分割开来。作者认为,对于大多数环境,可能出现的动态对象都包含在上述列表中。如果需要其他类,在MS COCO上训练的网络可以用新的训练数据进行微调。

假设输入是一张大小为m×n×3的RGB图像,网络的输出是一个大小为m×n×l的矩阵,其中l为图像中物体的个数。对于每个输出通道i∈l,得到一个二进制掩码。通过将所有通道合并为一个通道,可以得到在一个场景图像中出现的所有动态物体的分割。

3.2 低成本跟踪

在对潜在的动态内容进行分割后,使用图像的静态部分跟踪摄像机的姿态,由于边缘轮廓通常为高梯度区域,容易出现跳变的点特征,所以没有考虑这些区域的特征。

在该算法的这个阶段实现的跟踪比ORB-SLAM2中的跟踪更简单,因此计算量更轻。它将地图特征投影到图像坐标系中,在图像的静态区域中搜索对应的地图特征,并最小化重投影误差以优化相机姿态。

3.3 基于Mask R-CNN和多视图几何的动态内容分割

通过使用Mask R-CNN,可以对大多数动态对象进行分割。然而,有些对象无法通过这种方法检测到,因为它们不是先验动态的,而是可移动的。比如:某人携带的一本书,某人正在移动的一把椅子,甚至是长期地图中家具的变化。
具体操作如下:

对于每个输入帧,通过考虑新帧和每个关键帧之间的距离和旋转,选择具有最高重叠的前5个关键帧。

然后使用ORB-SLAM2中的特征点提取方法提取特征点x,计算前一帧关键帧中每个关键点x到当前帧的投影 x ‘ x` x,以及它们的投影深度 z p r o j z_{proj} zproj。对于每个关键点,其对应的3D点为X,计算x与X的反投影之间的夹角,即视差角α。如果这个角度大于30°,该点可能被遮挡,将其忽略。

作者注意到在TUM数据集测试时,有时候视差角大于30°时,出现错将静态物体划分为动态物体的情况,所以提出了以下方法进一步完善:在考虑重投影误差的情况下,得到当前帧中剩余关键点的深度 z ‘ z` z(直接从深度测量中得到),并与 z p r o j z_{proj} zproj进行比较。若两者之差 Δ z = z p r o j − z ‘ Δz = z_{proj}−z` Δz=zprojz大于阈值 τ z \tau _z τz,则认为关键点x∈一个动态对象。

到目前为止,已经判断出哪些关键点属于动态对象。为了对所有属于动态对象的像素进行分类,在深度图像中围绕动态像素生长区域(理解为扩充)。

CNN的结果(图4b)可以与该几何方法的结果相结合,进行全动态目标检测(图4c)。

这两个模块是互补的,互补的方法是这样的:如果用两种方法都检测到一个对象,则分割掩码应该是几何方法的掩码。如果一个对象只被基于学习的方法检测到,分割掩码也应该包含这个信息。

3.4 跟踪和建图

该阶段系统的输入包含RGB和深度图像,以及它们的分割掩码。提取静态图像片段中的ORB特征。由于线段轮廓是高梯度区域,因此必须移除落在该交点上的关键点。

3.5 背景修复

对于每一个被移除的动态对象,应该用之前视图中的静态信息重新绘制被遮挡的背景,这样就可以合成一个没有移动内容的逼真图像。

因为知道之前和当前帧的位置,所以将所有之前关键帧的RGB和深度信息投射到当前帧的动态片段中。一些空白没有对应关系,被留白;一些区域不能被绘制,因为它们对应的场景部分到目前为止还没有出现在关键帧中,或者它出现了,但没有有效的深度信息。这些缝隙不能用几何方法重建,需要更精细的修复填补技术。

4 实验与结果

4.1 实验设置

在TUM RGB-D数据集和KITTI数据集中评估了,并在动态环境中与其他最先进的SLAM系统进行了比较。每个实验做10次,取中位数。

4.2 TUM数据集

对该数据集中的六个序列进行不同变化的结果如表1所示。DynaSLAM(N)是只有Mask R-CNN分割出先验动态对象的系统。DynaSLAM(G)表示仅使用基于深度变化的多视图几何方法检测动态目标。DynaSLAM(N+G)代表结合几何和深度学习方法检测动态对象的系统。DynaSLAM(N+G+BI)表示完整系统,并且将背景修复模块放在了Tracking and Mapping模块之前。

这个实验的动机是,如果将动态区域与静态内容进行修补,则系统可以使用修补后的图像作为静态假设下的SLAM系统。在此方案中,ORB特征提取算法同时在帧的真实区域和重建区域工作,找到与先前处理的关键帧的关键点匹配。

结果是:在大多数序列中,使用学习和几何的系统(N+G)是最精确的。

在摄像机定位之前添加背景修复阶段(BI)通常会导致跟踪精度降低。原因是背景修复与相机姿势有很强的相关性。因此,对于纯旋转运动的序列(rpy,halfsphere),估计相机姿势有更大的误差,导致不准确的背景重建。因此应该按照最开始论文的结构,将背景修复模块放在Tracking and Mapping模块之后。

表2显示了与ORB-SLAM2进行了比较。所提出的方法在高动态场景(walking)中优于ORBSLAM2,在静态场景中达到与原始ORB-SLAM2系统相似的误差。在低动态场景(sitting)的情况下,跟踪结果略差,因为跟踪的关键点发现自己比那些属于动态对象的关键点更远。下图显示了DynaSLAM和ORB-SLAM2的估计轨迹与地面真值的对比。

表III显示了所提出的系统与几个为动态环境设计的最先进的RGB-D SLAM系统之间的比较,考虑到和最先进的运动检测方法的有效性,还展示了在每种情况下使用的原始SLAM系统的各自改进值。

DynaSLAM在所有序列(高动态和低动态)中都明显优于它们。一般来说,误差在1-2厘米左右,与静态场景中的最新技术相似。提出的运动检测方法也优于其他方法。

表4显示了TUM数据集中ORB-SLAM和DynaSLAM(单目)的跟踪结果和跟踪轨迹的百分比。尽管DynaSLAM的精度略低,但它成功地引导了具有动态内容的系统,并生成了没有这些内容的地图(见图1),可用于长期应用。DynaSLAM精度略低的原因是估计的轨迹较长,因此存在累积误差的空间。

4.3 KITTI数据集

表V显示了11个训练序列中的结果,与立体ORB-SLAM2进行了比较。表6显示了ORB-SLAM和DynaSLAM单目在相同序列下的结果。

当不使用属于先验动态对象(即汽车、自行车等)的特征时,跟踪的准确性得到了提高;回环检测和重定位算法工作得更健壮,因为最终的地图只包含结构性对象,也就是说,地图可以被重用并在长期应用程序中工作。

4.4 时间分析

表7显示了其不同阶段的平均计算时间。注意,DynaSLAM没有针对实时操作进行优化。然而,它创建静态场景内容的终身地图的能力也与在离线模式下运行有关。

多视图几何阶段的增加是一个额外的减速,主要是由于区域增长算法。背景修复也引入了延迟,这也是为什么它应该在跟踪和映射阶段之后进行的另一个原因。

5 总结

本文提出了一个视觉SLAM系统,在ORB-SLAM的基础上,增加了一个运动分割方法,使其在动态环境中对单目、立体和RGB-D相机具有鲁棒性。提出的系统精确地跟踪相机,并创建一个静态的,因此可重复使用的场景地图。在RGB-D情况下,DynaSLAM能够获得没有动态内容和被遮挡背景的合成RGB帧,以及它们对应的合成深度帧,这对于虚拟现实应用可能非常有用。

这项工作的未来扩展可能包括,实时性能、基于RGB的运动检测器、或通过使用更精细的绘画技术来合成RGB帧的更逼真的外观。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript 的双问号 和 ?. 的含义和作用

1、?. (可选链运算符) ?. 表示:可选链操作符( ?. )允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每 个引用是否有效。操作符的功能类似于 . 链式操作符,不同之处在于,在引用为空(null 或…

详细解答T-SNE程序中from sklearn.manifold import TSNE的数据设置,包括输入数据,绘制颜色的参数设置,代码复制可用!!

文章目录 前言——TSNE是t-Distributed Stochastic Neighbor Embedding的缩写1、可运行的T-SNE程序2. 实验结果3、针对上述程序我们详细分析T-SNE的使用方法3.1 加载数据3.2 TSNE降维3.3 绘制点3.4 关于颜色设置,颜色使用的标签数据的说明cy 总结 前言——TSNE是t-D…

Apollo接入配置中心 -- 源码分析之如何获取配置

全文参考:https://mp.weixin.qq.com/s/G5BV5BIdOtB3LlxNsr4ZDQ https://blog.csdn.net/crystonesc/article/details/106630412 https://www.cnblogs.com/deepSleeping/p/14565774.html 背景:近期在接入行内配置中心,因此对配置的加载接入有了…

浅析三相异步电动机控制的电气保护

安科瑞 华楠 摘 要:要求三相异步电动机的控制系统不仅要保证电机正常启动和运行,完成制动操作,还要通过相关保护措施维护电动机的安全使用。基于此,本文以电动机电气保护作为研究对象,结合三相异步电动机的机械特点&…

electerm 跨平台的终端 /ssh/sftp 客户端

文章目录 electerm功能特性主题配色 electerm 每个程序员基本都离开SSH链接工具,目前市场上好用的基本都是收费的 给大家推荐一款国人开发的开源链接工具https://github.com/electerm/electerm 到目前为止star已经9.5K了,非常受欢迎 功能特性 支持ssh,telnet,serialport,本地和…

满满干货!搭建智能视频监控系统如何挑选前端设备?

在此前的文章中,小编也和大家讨论过如何选择适合场景需求又性价比高的摄像头。除了摄像头以外,智能监控系统的组成也少不了前端设备,今天就给大家介绍一下几大前端设备的区别与应用场景吧。 在智能视频监控中,前端设备一般分为四类…

功率放大器在介电弹性体测试中的应用案例

介电弹性体作为一种具有高介电常数的材料,近年来越来越受到人们的关注。由于其具有许多独特的性质,如高灵敏度、快速响应以及出色的循环稳定性,使其在许多领域都有广泛的应用,如电子皮肤、传感器和执行器等。在介电弹性体的测试中…

rocky8.9配置K8S集群kubernetes,centos同理

rocky8.9配置K8S集群 节点主机名IP地址mastertang1192.168.211.101node1tang2192.168.211.102node2tang3192.168.211.103 1)准备工作 全部主机都配置静态ip vi /etc/sysconfig/network-scriptsTYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DE…

AI智能识别如何应用于单病种上报?

何为AI? AI是人工智能(Artificial Intelligence)的英文缩写,它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是计算机科学的一个分支,该领域的研究包括机器人、语言识别…

C++算法 —— 贪心(3)

文章目录 1、买卖股票的最佳时机2、买卖股票的最佳时机Ⅱ3、K次取反后最大化的数组和4、按身高排序5、优势洗牌6、最长回文串7、增减字符串匹配 1、买卖股票的最佳时机 121. 买卖股票的最佳时机 这里最容易想到的就是暴力枚举,两层for循环,i 0&#xf…

TFA-Net

TFA SCA means ‘Self-Context Aggregation’ 作者未提供代码

JVM中如何实现垃圾收集

Java虚拟机(JVM)使用垃圾收集器(Garbage Collector)来管理内存,清理不再使用的对象以释放内存空间。垃圾收集的主要目标是自动化内存管理,使开发人员无需显式地释放不再使用的内存,从而降低了内…

EFAK-v3.0.1版部署与使用

一、前言 EFAK((Eagle For Apache Kafka,以前称为Kafka Eagle)用于在使用 Topic 的情况下监控 Kafka 集群。包含Offset 的产生、Lag的变化、Partition的分布、Owner、Topic的创建以及修改的时间等信息。 二、环境&安装包 官方下载连接E…

使用python 实现华为设备的SFTP文件传输

实验目的: 公司有一台CE12800的设备,管理地址位172.16.1.2,现在需要编写自动化脚本,通过SFTP实现简单的上传下载操作。 实验拓扑: 实验步骤: 步骤1:将本地电脑和ensp的设备进行桥接&#xff…

华为云之SFS弹性文件服务使用体验

华为云之SFS弹性文件服务使用体验 一、本次实践介绍1.1 实践环境简介1.2 本次实践目的 二、SFS弹性文件服务介绍2.1 SFS弹性文件服务简介2.2 SFS弹性文件服务特点 三、购买ECS弹性云服务器3.1 购买ECS弹性云服务器3.2 查看ECS弹性云服务器状态3.3 远程连接ECS3.4 检查操作系统版…

线程信息分析,生产环境问题

现象: 应用服务器启动不了 产生原因: 最近升级了,将单线程查询数据变成了多线程查询数据。 分析: 推测一、sql 查询时间太慢导致 排查sql 后发现,不是这个原因 取回线程启动过程的线程信息 发现线程死锁了&…

无线通信:基于深度强化学习

这里写自定义目录标题 异构蜂窝网络:用户关联和信道分配a stochastic gameMulti-Agent Q-Learning MethodMulti-Agent dueling double DQN Algorithm 分布式动态下行链路波束成形Limited-Information Exchange ProtocolDistributedDRL-Based DTDE Scheme for DDBCDi…

每日一题:LeetCode-102.二叉树的层序遍历

每日一题系列(day 03) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x1f50e…

使用Python对CSI相位进行矫正,并进行图像调整

一、前言 我记得我是最早将《MatLab对CSI的相位进行矫正》代码上传至网上的,后面陆续有人进行抄袭,不得已把一些细节和代码进行隐藏。今天整理之前Python代码的时候,发现一些不规范的问题,所以写了这篇博客。 二、使用Python对C…

大数据基础设施搭建 - Hive

文章目录 一、上传压缩包二、解压压缩包三、配置环境变量四、初始化元数据库4.1 配置MySQL地址4.2 拷贝MySQL驱动4.3 初始化元数据库4.3.1 创建数据库4.3.2 初始化元数据库 五、启动元数据服务metastore5.1 修改配置文件5.2 启动/关闭metastore服务 六、启动hiveserver2服务6.1…