DynaSLAM-6 DynaSLAM论文解读

news2024/11/17 16:33:47

目录

1.论文摘要解读

1.1 原论文内容

1.2 个人理解 

2.论文discusses related work部分

2.1 原论文内容

3.论文SYSTEM DESCRIPTION部分 

3.1 使用Mask R-CNN对潜在的动态内容进行分割

3.2 低成本追踪

3.3 使用Mask R-CNN和多视角几何对动态内容进行分割

3.4  跟踪线程与建图线程

3.5 Background Inpainting


1.论文摘要解读

1.1 原论文内容

        场景刚性的假设是SLAM算法中的典型。这样一个强有力的假设限制了大多数视觉SLAM系统在人口密集的真实世界环境中的应用,而这些环境是一些相关应用的目标,如服务机器人或自动驾驶汽车。

        在本文中,我们提出了DynaSLAM,一个视觉SLAM系统,在ORBSLAM2的基础上,增加了动态物体检测背景绘画的能力。DynaSLAM在单目、双目和RGB-D配置的动态场景中是ROBUST的。我们能够通过多视角几何学、深度学习或两者兼而有之的方式检测移动物体。有了静态的场景地图,就可以对被这些动态物体遮挡的画面背景进行涂抹。我们在公共单目、双目和RGB-D数据集中评估了我们的系统。我们研究了几个准确性/速度权衡的影响,以评估所提出方法的局限性。DynaSLAM在高动态情况下的准确性优于标准视觉SLAM基线。而且,它还能估计出场景的静态部分的地图,这对于现实世界环境中的长期应用是必须的。

1.2 个人理解 

        场景刚性的假设:传统的SLAM算法认为输入到SLAM系统内的图片是静态的,即输入的图片中没有动态物体,这会存在一个什么问题呢?我们建图时希望去除动态物体(比如你想做一个你家的三维实景构建,肯定不希望有人吧!),并且有动态物体会导致特征点匹配出问题(ORB-SLAM2中特征点的匹配是利用投影法,如果动态物体干扰,可能匹配不上特征点),我们也不希望提取出动态的特征点。因此,在现实环境中应用会很差。

        因此,要解决以下问题:

        1)如何检测图像中的这种动态物体以防止跟踪算法使用属于动态物体的匹配和映射算法将移动物体作为三维地图的一部分。即如何防止动态物体进行特征点匹配与建图。

        2) 如何完成三维地图中被移动物体在时间上遮挡的部分。即剔除动态物体后如何恢复遮挡静态物体的动态物体。

        作者的做法:

        在单目和双目情况下是使用CNN对帧中的先验动态物体(如人和车)进行像素化分割,这样SLAM算法就不会提取它们的特征。

        在RGB-D情况下使用多视图几何模型和基于深度学习的算法来检测动态物体,并在将它们从图像中移除后,用场景的正确信息来涂抹被遮挡的背景。

2.论文discusses related work部分

2.1 原论文内容

        在大多数SLAM系统中,动态物体被归类为假数据,因此既不包括在地图中也不用于摄像机跟踪。

        最典型的离群点剔除算法是RANSAC(例如在ORB-SLAM2中)和稳健成本函数(例如在PTAM中)。有几个SLAM系统更具体地处理动态场景内容。在基于特征的SLAM方法中,一些最相关的是:

        Tan等人通过将地图特征投射到当前帧中进行外观和结构验证,检测场景中发生的变化。

        Wangsiripitak和Murray追踪场景中已知的三维动态物体。

        Riazuelo等人[11]通过检测和跟踪人处理人类活动。

        Li和Lee的工作使用了深度边缘点,这些边缘点有一个相关的权重,表明其属于动态物体的概率。

        一般来说,直接方法对场景中的动态物体更加敏感。专门为动态场景设计的最相关的方法是:

        Alcantarilla等人通过双目摄像机的场景流表示法来检测移动物体。

        Wang和Huang使用RGB光流分割场景中的动态物体。

        Kim等人提出通过计算投射在同一平面上的连续深度图像的差异来获得场景的静态部分。

        Sun等人计算连续RGB图像之间的强度差异。像素分类是通过量化的深度图像的分割来完成的。

        所有的方法--包括基于特征的和直接的--只从序列中包含的信息来映射静态场景部分,当一个先验的动态物体保持静态,如停放的汽车或坐着的人,就不能估计出终身的模型。另一方面,Wangsiripitak和Murray以及Riazuelo等人会检测到那些先验的动态物体,但无法检测到静态物体产生的变化,例如,一个人正在推的椅子,或者一个人扔的球。也就是说,前者成功地检测到了移动物体,而后者则检测到了几个可移动物体。我们的建议,DynaSLAM,结合了多视角几何学和深度学习,以解决这两种情况。同样地,Anrus等人通过结合动态分类器和多视角几何学来分割动态物体。

3.论文SYSTEM DESCRIPTION部分 

双目和单目中,图像通过一个卷积神经网络(Mask R-CNN)来计算先验动态物体的像素语义分割,然后再用于映射和跟踪。
RGB-D情况下,增加了基于多视角几何的第二种方法,以实现更精确的运动分割,为此我们需要一种低成本的跟踪算法。一旦知道摄像机的位置(跟踪和映射输出),我们就可以对被动态物体遮挡的背景进行涂抹。红色虚线表示存储的稀疏地图的数据流。

        首先,RGB通道通过一个CNN,该CNN将所有先验的动态内容,如人或车辆,按像素分割出来。在RGB-D情况下,我们使用多视图几何学,以两种方式改进动态内容的分割。首先,我们对CNN之前获得的动态物体的分割进行细化。第二,我们将大部分时间都是静态的新物体实例标记为动态的(即检测在CNN阶段没有设置为可移动的移动物体)。为此,有必要知道摄像机的姿势,为此,我们实施了一个低成本的跟踪模块,在已经创建的场景图中对摄像机进行定位。这些分割的帧是用来获得摄像机轨迹和场景地图的。请注意,如果场景中的移动物体不在CNN类内,多视图几何阶段仍然会检测到动态内容,但准确度可能会下降。一旦完成了这个完整的动态物体检测和摄像机的定位,我们的目标是用以前的视图的静态信息重建当前帧的遮挡背景。这些合成帧与增强现实和虚拟现实等应用有关,也与终身制地图中的地点识别有关。

        在单目和双目的情况下,图像被CNN分割,因此属于先验动态物体的关键点既不被追踪也不被映射。

3.1 使用Mask R-CNN对潜在的动态内容进行分割

DynaSLAM-2 DynaSLAM中Mask R-CNN部分源码解析(Ⅰ)icon-default.png?t=N0U7https://blog.csdn.net/qq_41694024/article/details/128797090        在DynaSLAM中使用Mask R-CNN实例分割方法。Mask R-CNN可以同时获得像素化的语义分割和实例标签。在这项工作中,我们使用像素化的语义分割信息,但实例标签在未来的工作中可能对不同移动物体的跟踪很有用。

        Mask R-CNN的输入是RGB原始图像。我们的想法是将那些可能是动态或可移动的类别(人、自行车、汽车、摩托车、飞机、公共汽车、火车、卡车、船、鸟、猫、狗、马、羊、牛、大象、熊、斑马和长颈鹿)进行分割。我们认为,对于大多数环境来说,可能出现的动态物体都包含在这个列表中。如果需要其他类别,在MS COCO上训练的网络可以用新的训练数据进行微调。假设输入是一幅大小为m \times n \times 3的RGB图像,网络的输出是一个大小为m \times n \times l的矩阵,其中l图像中物体的数量。对于每个输出通道i\varepsilon l,都会得到一个二进制掩码。通过将所有通道合二为一,我们可以得到场景中一个图像中出现的所有动态物体的分割。 

3.2 低成本追踪

        在潜在的动态内容被分割后,使用图像的静态部分来跟踪摄像机的位姿。由于分割的轮廓线通常成为高梯度区域,突出的点特征往往会出现。我们不考虑这种轮廓区域的特征。在这个阶段实现的跟踪算法是ORB-SLAM2中的一个更简单的版本,因此计算量更小。它将地图特征投射到图像帧中,在图像的静态区域中寻找对应关系,并使重投误差最小,以优化摄像机的姿势。

3.3 使用Mask R-CNN和多视角几何对动态内容进行分割

        通过使用Mask R-CNN,大部分的动态物体可以被分割开来,不用于跟踪和建图。

        然而,有些物体不能用这种方法检测,因为它们不是先验的动态,而是可移动的。比如某人携带的书,某人正在移动的椅子,甚至是长期建图中的家具变化。

        本节将详细介绍处理这些情况所利用的方法。对于每个输入帧,我们选择重叠度最高的先前关键帧。这是通过考虑新帧和每个关键帧之间的距离和旋转来完成的,与Tan等人类似。在我们的实验中,重叠的关键帧的数量被设定为5个,作为计算成本和动态物体检测的准确性之间的折衷。

图3 --- 关键帧(KF)中的关键点x利用其深度和相机姿态投射到当前帧(CF)中,从而得到深度为z′的点x′。然后计算出投影深度zproj。如果差值∆z = zproj - z′大于阈值τz,则一个像素被标记为动态。

         我们计算每个关键点x从以前的关键帧到当前帧的投影,得到关键点x',以及它们的投影深度zproj,由相机运动计算得出。请注意,关键点x来自ORB-SLAM2中使用的特征提取器算法。对于每个关键点,其对应的三维点是X,我们计算XX'的背投影之间的角度,即它们的视差角\alpha。如果这个角度大于30^{\circ},该点可能被遮挡,并从那时起被忽略。我们观察到,在TUM的数据集中,对于视差角大于30^{\circ}的静态物体,由于它们的视点不同,被认为是动态的。考虑到重投误差,我们得到了当前帧中剩余关键点的深度z'(直接来自深度测量),并将其与zproj进行比较。如果差值\Delta z = zproj - z'超过阈值\tau _z,关键点x'就被认为是属于一个动态物体。

        这个想法如图3所示。为了设定阈值\tau _z,我们对TUM数据集中的30幅图像的动态对象进行了手工标记,并评估了不同阈值\tau _z下我们方法的精确度和召回率。

        通过最大化表达式0.7\times Precision+0.3\times Recall,我们得出结论,\tau _z = 0.4m是一个合理的选择。

        一些被标记为动态的关键点位于移动物体的边界上,可能会造成问题。为了避免这种情况,我们使用深度图像所提供的信息。如果一个关键点被设定为动态的,但在深度图中它周围的斑块有很高的差异,我们就把标签改为静态。

        到目前为止,我们知道哪些关键点属于动态物体,而哪些不属于。为了对所有属于动态物体的像素进行分类,我们在深度图中扩大动态像素周围的区域。图4a中可以看到一个RGB帧及其相应的动态遮罩的例子。CNN的结果图4b可以与这种几何方法的结果结合起来,进行全面的动态物体检测图4c。我们可以发现这两种方法的优点和局限性,因此有动机将它们结合使用。对于几何方法来说,主要的问题是,由于其多视图的性质,初始化并不简单。学习方法和他们使用单一视图的令人印象深刻的性能,没有这样的初始化问题。但它们的主要局限性是,本应是静态的物体可以被移动,而该方法却无法识别它们。这最后一种情况可以用多视图一致性测试来解决。

图4 --- 使用多视角几何学(左)、深度学习(中)以及几何学和学习方法的组合(右)对动态物体进行检测和分割。请注意,图4a不能检测到桌子后面的人,图4b不能分割出人携带的书,而两者的组合(图4c)表现最好。

         图4说明了面对移动物体检测问题的这两种方式。在图4a中,我们看到后面的人,可能是一个动态物体,没有被检测到。这有两个原因。首先,RGB-D相机在测量远处物体的深度时面临的困难。其次,可靠的特征位于确定的、因而也是附近的图像部分的事实。尽管,这个人是由深度学习方法检测出来的(图4b)。除此之外,一方面,我们在图4a中看到,不仅检测到了图像前面的人,而且还检测到了他所拿的书和他所坐的椅子。另一方面,在图4b中,两个人是唯一被检测到的动态物体,而且他们的分割也不太准确。如果只使用深度学习方法,图像中会留下一本漂浮的书,并且会错误地成为3D地图的一部分。由于这两种方法的优点和缺点,我们认为它们是互补的,因此它们的结合使用是实现精确跟踪和绘图的有效途径。为了实现这一目标,如果一个物体已经被两种方法检测到,那么分割掩码应该是几何方法的掩码。如果一个物体只被基于学习的方法检测到,分割遮罩也应该包含这一信息。上一段中的例子的最终分割图像可以在图4c中看到。被分割的动态部分被从当前帧和地图中移除。

        由于这两种方法的优点和缺点,我们认为它们是互补的,因此它们的结合使用是实现精确跟踪和映射的有效途径。为了实现这一目标,如果一个物体已经被两种方法检测到,那么分割掩码应该是几何方法的掩码。如果一个物体只被基于学习的方法检测到,分割遮罩也应该包含这一信息。上一段中的例子的最终分割图像可以在图4c中看到。被分割的动态部分被从当前帧和地图中移除。

3.4  跟踪线程与建图线程

        这个阶段的系统输入包含RGB和深度图像,以及它们的分割掩码。我们在分类为静态的图像段中提取ORB特征。由于片段的轮廓是高梯度的区域,落在这个交叉点的关键点必须被删除。

3.5 Background Inpainting

        对于每一个被移除的动态物体,我们的目标是用以前的视图中的静态信息对被遮挡的背景进行涂抹,这样我们就可以合成一个没有移动内容的现实图像。

        我们相信,这种包含环境静态结构的合成帧对于虚拟和增强现实等应用是非常有用的,也可以在地图创建后进行重新定位和摄像机跟踪。由于我们知道之前和当前帧的位置,我们将之前所有关键帧(我们实验中的最后20个)的RGB和深度通道投射到当前帧的动态段。有些空隙没有对应关系,被留为空白:有些区域不能被涂抹,因为它们对应的场景部分到目前为止还没有出现在关键帧中,或者,如果它出现了,它没有有效的深度信息。这些空隙不能用几何方法来重建,而需要一种更复杂的涂抹技术。

        图5显示了来自TUM基准的不同序列的三个输入帧的合成图像。请注意动态内容是如何被成功分割和去除的。另外,大部分被分割的部分已经用静态背景的信息进行了适当的涂抹。这些合成帧的另一个应用是:如果帧的动态区域被涂上静态内容,该系统可以作为静态假设下的SLAM系统使用涂上的图像工作。

图5 --- 在图5a中,我们展示了三个RGB输入帧,在图5c中,我们展示了我们系统的输出,其中所有的动态物体都已被检测到,背景也已被重构。图5b和5d分别显示了深度输入和输出,这也是经过处理的。图最好以电子格式查看。

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

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

相关文章

分享会上狂吹MySQL的4大索引结构红黑树、二叉树B+Tree,没想到~~~~

索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足 特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构 上实现高…

品优购网页制作

目录 favicon图标 TDK三大标签SEO优化 title网站标题 description网站说明 keywords关键字 首页制作 快捷导航模块 左浮动 右浮动 header头部模块制作 1.logo模块 2.search模块 3.热词模块 4.购物车模块 子绝父绝 nav导航模块 1.nav左边导航位置 2.上方导航位置 …

PCB覆铜很“上头”?一文帮你搞定实操要点和规范

1、覆铜覆盖焊盘时,要完全覆盖,shape 和焊盘不能形成锐角的夹角。2、尽量用覆铜替代粗线。当使用粗线时,过孔通常为非通常走线过孔,增大过孔的孔径和焊盘。修改后:3、尽量用覆铜替换覆铜走线的模式,后者常常…

11.深度优先搜索

一、算法内容 1.简介 深度优先搜索DFS(Depth First Search)按照深度优先的方式进行搜索,可以理解为“一条路走到黑”地穷举所有可行的方案,并不断尝试,直到找到一种情况满足问题问题的要求。那么这个方案就是一个问题…

shell 循环学习练习

目录 一,嵌套循环实现9*9乘法表 二,判定一个成绩: 三,循环创建用户:用户名为user01-user20 一,嵌套循环实现9*9乘法表 (for和while都可以) 选做:格式对齐,以及使用单层循环完成9*9乘…

精细管理——CRM销售漏斗管理

CRM销售漏斗涵盖了从接触客户到谈判、成单、回款的整个销售过程。一个典型的销售漏斗是由一个特定时间段里,例如一年或者一个季度或者一个月这个时间范畴之内,一系列有可能转化成订单的潜在销售机会所组成。在CRM客户管理系统中,销售漏斗管理…

Unity-TCP-网络聊天功能(四): 消息粘包、心跳机制保活(心跳包)、断线重连

8. 粘包Bug、心跳机制保活(心跳包)、断线重连粘包bug1:下线后,如果发送多条消息,在客户端上线时,一瞬间接收到,效果如同粘包,需要拆包。举例,连续发送三条160长度消息,可能实际显示2…

java常用类: System类直接常用方法

java常用类型: Ineteger等包装类 String类,StringBuffer类和StringBuilder类 Math类及常用方法 System类及常用方法 Arrays类及常用方法 BigInteger类和BigDecimal类及常用方法 日期类Date类,Calender类和LocalDateTime类 文章目录System简介System.exit(0) 退出Sys…

蓝桥杯重点(C/C++)(随时更新,更新时间:2023.2.2)

点关注不迷路,欢迎推荐给更多人,大约两天更新一次,建议点赞收藏加关注 本次更新内容:1.STL部分详细讲述,放到一篇新的文章中 2. 部分细节优化 目录 1 技巧 1.1 取消同步(节约时间,甚至能多…

Shield UI for JavaScript 1.7.44 Crack

Shield UI for JavaScript Shield UI JavaScript 框架提供具有响应式设计的 JavaScript HTML5 组件,这些组件经过优化以获得最佳性能。 Shield UI 在 70 多种小部件类型中提供了最快和高度可定制的网格和图表控件。每个单独的控件都由行业领先的 24/7 支持包提供支持…

以莫罗湾为例,利用高精度地形高程模型应对海岸环境变化

Morro Bay是位于加州 San Luis Obispo附近的浅海河口区,存在大量野生动物,也是人们户外活动的好去处。但是沉积变化和鳗草(大叶藻)的大量消失对河口景观产生了不利影响。为了更好地认识环境改变的路径并提取修复对策,M…

2023年山东最新建筑八大员(资料员)考试试题题库及答案

百分百题库提供建筑八大员(资料员)考试试题、建筑八大员(资料员)考试预测题、建筑八大员(资料员)考试真题、建筑八大员(资料员)证考试题库等,提供在线做题刷题,在线模拟考…

Vue实战第3章:主页设计之顶部导航栏

主页设计之顶部导航栏 前言 本篇在讲什么 本篇文章主要来制作一个导航栏,具体效果就按照下图来处理吧 本篇适合什么 适合初学Vue的小白 想了解建站的同学 本篇需要什么 对Html语法有简单认知 对CSS语法有简单认知 对Vue有简单认知 依赖VS Code编辑器 本…

【redis6】第十三章(主从复制)

是什么 主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 能干嘛 读写分离,性能扩展 容灾快速恢复 怎么玩 拷贝多个redis.conf文件include(写绝对路径) 开启daemonize yes Pi…

连接mysql5.7错误1045,重新设置root用户密码,已经springboot连接配置

错误: ERROR 1045 (28000): Access denied for user ‘root’‘localhost’ (using password: NO) 原因是: 是因为数据库中用户密码的问题。所以我们可以跳过数据权限验证,重新设置一下 一、修改my.ini配置文件 停止mysql服务 方法&#xff…

GJB 5000B二级-PMC项目监控

一、主要变化情况 新增2项(红色)、拆分3项(蓝色)、移除2项(黄色)、合并9项(绿色) 新增的主要内容-2项 增加多资源计划的监控要求:   军用软件系统具体设备间联系紧密,测试验证环节多、要求高等特点,其研发和测试需要众多软硬件资源支持,而这些资源往往是影响…

ConcurrentHashMap1.7和1.8的不同实现

ConcurrentHashMap 在多线程环境下,使用HashMap进行put操作时存在丢失数据的情况,为了避免这种bug的隐患,强烈建议使用ConcurrentHashMap代替HashMap,为了对更深入的了解,本文将对JDK1.7和1.8的不同实现进行分析。 J…

FreeRTOS中断管理 | FreeRTOS五

目录 说明: 一、中断基础 1.1、中断理解 1.2、中断执行步骤 1.3、中断寄存器选择位 1.4、中断优先级分类 二、中断优先级分组设置 2.1、分类 2.2、特点 三、中断有关寄存器 3.1、SHPR1寄存器 3.2、SHPR2寄存器 3.3、SHPR3寄存器 3.4、FreeRTOS中配置Pe…

最优传输问题与Sinkhorn算法

目录引言例子:分甜点最优传输问题Sinkhorn算法Sinkhorn距离算法流程代码实验引言 最近看到一篇特征匹配相关的论文,思想是将特征匹配问题转化为最优传输问题求解,于是我去学习了一下最优传输问题。 本文主要是对博文 Notes on Optimal Trans…

4.6 QR分解二:Householder变换

1 Householder reflector Householder反射是这样子的(图片来自瑞典皇家理工学院):   图中u是长度为1的向量。x是任意向量,H是u的Householder reflector。可见无论x是什么向量,HxHxHx始终除于和u正交的平面上。H和u的关系是: HI…