当前位置: 首页 > news >正文

论文于祥读及复现——《Multi-level Map Construction for Dynamic Scenes》

论文祥读之——动态场景的多层次地图构建

  • 0. 出发点(暨摘要)
  • 1. 引言
  • 2. 相关工作
  • 3.主要内容概括
    • 3.1 几何地图的构建
      • 3.1.1 密集点云地图和八叉图的构建
      • 3.1.2 平面地图的构建
    • 3.2 对象地图的构建
      • 3.2.1 对象参数化和数据关联
      • 3.2.2 对象的更新与优化
  • 4. 实验
    • 4.1 构建几何地图
    • 4.2 构建物体地图
    • 4.3 在真实环境中的稳健性测试
    • 4.4 动态物体跟踪实验
  • 5. 本文总结
  • 6. 个人读后感

论文网址:https://arxiv.org/pdf/2308.04000.pdf
源码网址:https://github.com/Hbelief1998/DyMLM-SLAM
注意 源码好像还没发不出来,git下来的文件里面只有一些图片。

0. 出发点(暨摘要)

在动态场景中,视觉SLAM中的定位和建图都面临着重大挑战。近年来,大量优秀的研究工作为定位问题提出了有效的解决方案。然而,针对动态场景下的长时间一致性地图构建的优秀研究工作较少,严重阻碍了地图应用的发展。
针对这一问题,设计了一种面向动态场景的多层次地图构建系统。该系统采用多目标跟踪算法、DBSCAN聚类算法和深度信息对目标检测结果进行校正,准确提取静态点云,并构建密集的点云图和八叉树图。提出一种面向动态场景的平面地图构建算法,涉及动态环境下平面的提取、过滤、数据关联和融合优化,从而生成平面地图。此外,还提出了一种针对动态场景的目标地图构建算法,包括目标参数化、数据关联和更新优化。在公开数据集和真实场景上的大量实验验证了所构建的多层次地图的准确性和所提算法的鲁棒性。最后,利用构建的目标映射展示了算法在动态目标跟踪中的实际应用前景。

1. 引言

下图1为动态场景多层次地图构建算法的系统框架。

  • 浅绿色部分为输入模块,输入RGB图像和深度图像。
  • 深绿色部分为预处理模块,主要负责语义信息的获取和预处理。
  • 黄色、蓝色和棕色模块为映射模块,分别表示构建密集点云地图和八叉树地图、平面地图、物体地图的一般过程。
  • 紫红色为输出模块,输出由映射模块构建的多级映射。
    系统框架图

本文的主要贡献有:

  1. 基于修正后的目标检测结果对点云进行过滤,构建干净的点云图和只包含静态元素的八叉树图。
  2. 提出一种在动态场景中构建平面地图的方法,实现对环境的结构感知。
  3. 提出一种在动态场景中构建物体地图的方法,使SLAM能够服务于更高层次的需求,如机器人环境理解、物体操纵和语义增强现实。
  4. 目前为止是第一个进行尝试在动态场景中,构建平面地图的工作,对物体进行精确参数化,构建精确完整的轻量化物体地图的。

2. 相关工作

对于动态场景制图,目前主要解决两个关键问题:

  • 解决语义信息缺失引起的动态噪声块
  • 提高映射效率

对于动态场景制图的研究,目前主要集中在:

  • 构建密集点云地图
  • 构建八叉图
  • 基于体素或TSDF的密集重建

为本文的分析打下基础的一些研究:

  • DS-SLAM使用log-odds评分来过滤不稳定的体素,并更新这些体素的语义,以构建密集的语义3D八叉树。
  • Detect-SLAM为每个关键点实时传播运动概率,并构建环境的实例级语义图。
  • Han等利用光流和PSPNet对动态点进行检测和剔除,同时创建了语义点云图和语义八叉树图。
  • Wen et al.利用深度误差、光度误差和重投影误差为静态点分配鲁棒权值,删除动态对象构建八叉树语义地图
  • Cheng等人将几何信息、语义信息和人类活动融合在一个精确可靠的3D稠密地图中。
  • RS-SLAM采用最大置信度融合方法进行语义更新,构建具有语义标签的静态背景语义八图。
  • SG-SLAM结合几何和语义信息快速去除动态特征,然后使用ROS接口构建语义对象图和全局octo图。
  • Yang等将改进的基于光流的移动一致性检测方法与深度信息调整的语义分割结果相结合,构建静态对象的语义八叉图。

仍然存在的问题:
密集映射可以满足增强现实等需求,但耗时较长。相比之下,平面映射以较低的计算需求实现了类似的功能,但缺乏相关研究。
目前面向动态场景的语义映射方案在对静态物体建模方面较为粗糙,缺乏对物体姿态、大小等信息的测量,且普遍缺乏物体数据关联和物体地图更新,即使部分工作存在这一环节,方法也相对简单,只适用于简单场景,缺乏强有力的实验支持来证明方法的有效性。此外,目前的研究工作主要集中在椅子和监视器两个物体的建模,忽略了场景中的其他物体。

3.主要内容概括

3.1 几何地图的构建

3.1.1 密集点云地图和八叉图的构建

处理工作:
在语义先验信息存在的情况下,可以根据语义类别删除目标检测框或者语义掩码中的点云,构建只包含静态因素的密集点云地图。
但是,这样操作会存在两个问题——漏检、欠分割。这两个问题会导致动态对象删除不完全。
本文使用YOLOX进行语义信息的获取对这两个问题的解决如下:

漏检利用多目标跟踪算法进行漏检补偿
欠分割首先,采用DBSCN类聚算法提取出潜在运动物体边界框内的前景点
然后,基于邻近像素沿着检测框边界和前景点的深度信息,适当扩展检测框
最后,为了避免DBSCAN聚类引起的错误,将检测框四个方向设置为扩展限制,限制为50个像素

建图工作:
在关键帧中,提取并映射到3D世界坐标系中的潜在移动对象的校正边界框外的像素。
然后,基于我们先前研究提供的相机姿态,将不同关键帧提取的点云进行拼接和融合,随后通过体素网格滤波进行下采样。
为了提高存储效率并支持导航和避障等任务,点云地图转换为八叉树地图

3.1.2 平面地图的构建

平面地图的初始化:

  • 平面提取的方法————>PEAC算法,得到当前相机坐标系下平面的参数和点云。
  • 提取平面的边缘点
  • 对平面进行二次拟合————>利用PCL点云库,获取精化后的参数和内点,移除平面边缘点的异常值

在此过程中,根据深度信息、内点比例以及与目标检测框的位置关系等各种因素对平面进行过滤
完成平面地图初始化后,遍历当前帧中检测到的平面和地图中已存在的平面,建立数据关联。

这样操作完会存在一定的问题,在复杂的动态场景中,检测到的平面常常会出现显著的错误和随机性,导致平面数据关联失败。但随着更多的观测,未成功关联的两个平面将朝着正确的方向进行优化,使得后续关联变得更加容易。

因此进行以下的操作:
在局部地图构建线程中,对地图中的平面进行成对比较。如果两个平面满足上述关联条件,它们将被视为潜在的未关联。然后,将观测次数较少的平面合并观测次数较多的平面中并进行优化,随后,将观测次数较少的平面从地图中移除

3.2 对象地图的构建

3.2.1 对象参数化和数据关联

由于要建模的对象通常属于背景,且远离相机,提取的地图点通常数量稀少且质量较差,使用聚类算法进行异常值去除是不可行的。因此每帧中使用密集点云进行对象建模,并利用DBSCAN密度聚类算法处理点云。

在当前帧k中,对于每个检测到的实例,我们对地图中的每个对象实例进行关联判断。运动IoU,投影IoU,3D-IoU和非参数统计是常见的对象数据关联策略。尽管它们存在限制,但在集成时,这些策略可以相互补充,从而产生更强大、准确和多功能的对象数据关联算法。

3.2.2 对象的更新与优化

分别使用密集点云稀疏地图点来对检测实例和对象实例进行参数化,这种方法弥补单个帧中地图点不足的缺点和多个帧中密集点云的显著耗时。在成功的数据关联之后,地图点和参数将会更新,随后,利用对象的地图点与平面或与对象关联的平面之间的距离以及孤立森林算法,从这些地图点中去除异常值
地图点的异常值剔除
图2为地图点的异常值剔除(a)确定桌面平面。(b)根据点到平面的距离剔除异常值。(c)使用隔离森林算法剔除异常值。

4. 实验

实验是在性能较高的笔记本电脑上运行的。在TUM RGB-D数据集上评估了算法性能,并在实际场景中应用算法进行动态物体跟踪。研究主要重点是地图构建,由于测试序列没有提供真值地图,实验主要旨在定性地展示地图构建结果。

4.1 构建几何地图

点云地图和八叉树地图

稠密点云地图和八叉树地图的构建结果如图3所示。可以观察到,由于缺乏处理动态物体的模块,ORB-SLAM2算法无法在高动态场景中进行定位和地图构建。在低动态场景中,该算法保留了动态物体的点云。由于物体检测中的漏检和完全覆盖潜在运动物体的边界框的挑战,通过删除位于原始潜在运动物体检测边界框内的点云构建的稠密点云地图包含了这些物体的大量残留痕迹。

下图为图3,点云地图和八叉树题图。顶部一行显示了使用ORB-SLAM2算法和密集建图模块构建的稠密点云地图。第二行展示了使用先前研究的方法 [9] 作为定位模块构建的稠密点云地图,其中排除了位于潜在运动物体检测区域内的点云。第三行展示了我们算法构建的稠密点云地图。底部一行展示了我们算法生成的八叉树地图。
点云地图和八叉树地图

平面地图

平面地图在动态场景中准确地感知静态背景平面结构。这可以应用于高级场景,如增强现实,并作为地标来增强相机姿态估计的准确性

下图为图4,相邻放置的重复物体的生成地图,左侧的图像提供了序列的概览
在这里插入图片描述

4.2 构建物体地图

在TUM数据集的8个动态序列上评估了物体地图构建的性能,如图5所示。为了验证物体地图构建的准确性,我们将构建的物体模型叠加在稠密地图上,并将它们投影到图像平面上。在高动态场景中,本文的算法能够准确地对场景中的几乎所有物体进行建模,不受相机不同的运动模式和环境中动态物体的影响。

然而,在低动态场景中,两个人一直坐在桌子旁边,导致了静态物体和背景的严重遮挡。因此,本文的算法对于某些物体缺乏足够的观测,导致了一些物体的建模不够准确,这是不可避免的。

实验结果表明,本文的算法在物体参数化、物体数据关联和物体优化策略方面具有很强的有效性,通过克服动态物体的影响,构建的物体地图为后续的应用,如语义导航、物体抓取和增强现实,提供了有力的支持。

下图为图5——物体地图。常规形状的物体,如显示器、书籍和键盘,使用立方体表示,而不规则形状的物体,如椅子、瓶子和泰迪熊,使用二次曲面表示。
物体地图

4.3 在真实环境中的稳健性测试

使用Realsense D435i相机在真实世界场景中对本文的方法进行了测试,来验证其有效性和稳健性。在实验中,一个人在相机的视野范围内进行了不规则的运动。为了验证算法的稳健性,评估了两种相机运动方式:

  1. 从场景的一端到另一端的移动;
  2. 几乎静止。多级地图构建的结果如图6所示。

实验结果表明,本文的算法能够在物体和相机的不同运动状态下构建准确的稠密点云地图、八叉树地图、平面地图和轻量级物体地图

下图为图6——真实世界场景中的多级地图构建结果,在上面一组图像中,相机从场景的一端移动到另一端;在下面一组图像中,相机几乎保持静止。图像(a)、(b)和©分别代表稠密点云地图、八叉树地图和平面地图。图像(d)展示了轻量级物体地图,其中物体被叠加在稠密点云地图上(图像(e)),并投影到图像上(图像(f)),以展示物体地图构建的有效性。

多层次地图构建在现实场景中产生效果

4.4 动态物体跟踪实验

进一步将构建的物体地图应用于动态物体跟踪,使用Pico Neo3设备捕获场景图像,并利用本文的算法构建物体地图。

在这种情况下,通过立体匹配获得地图点的深度信息,这些计算仅在关键帧上进行,以确保实时性能。构建的物体地图如图7(a)所示。

一旦构建了物体地图,用户可以选择目标物体进行跟踪。当用户移动物体时,系统使用KCF单物体跟踪光流跟踪算法计算物体的实时姿态。图7(b)-(d)展示了书、键盘和瓶子的动态跟踪结果。实验结果表明,本文的算法能够在动态环境中准确建模物体,为物体跟踪提供准确的物体模型和姿态,从而对实际应用非常有价值。此外,这也突显出我们的算法不依赖于特定设备,展示了其稳健性和通用性

下图为图7——实际场景中的物体建模和动态跟踪。
实际场景中的物体建模和动态跟踪

5. 本文总结

提出一种适应动态场景的多层次地图构建算法。本文成功地构建了密集的点云地图、八叉树地图、平面地图和在动态干扰存在下只包含静态背景和物体的物体地图。丰富了移动机器人的环境感知能力,拓展了动态环境下构建地图的应用场景。大量实验验证了算法的准确性和鲁棒性,动态目标跟踪实验进一步验证了算法的实用性。
未来,计划考虑除了人类之外其他可移动物体的真实运动,并以平面和物体作为地标优化相机姿态,进一步提高定位精度。

6. 个人读后感

整篇论文读下来感觉最创新的地方在于平面地图的构建与应用。整个操作就是用现有的知识和算法进行罗列和拼接,但是能达到自己的目的也挺好。

如果能在本文的基础上加上本论文实验的准确性和鲁棒性的数据值与其他算法比较的数据值的比较会更有说服力。

个人读后感只代表自己的感受,不喜勿喷,欢迎指正批评。

相关文章:

论文于祥读及复现——《Multi-level Map Construction for Dynamic Scenes》

论文祥读之——动态场景的多层次地图构建 0. 出发点(暨摘要)1. 引言2. 相关工作3.主要内容概括3.1 几何地图的构建3.1.1 密集点云地图和八叉图的构建3.1.2 平面地图的构建 3.2 对象地图的构建3.2.1 对象参数化和数据关联3.2.2 对象的更新与优化 4. 实验4…...

IDEA 报 Cannot resolve symbol ‘HttpServletResponse‘ 解决

springboot2版本换成springboot3之后,代码这里突然报红了, 首先要淡定,把原先Import的引入删掉,重新引入试试呢,是不是很简单哈哈。 原来,springboot3的路径是: import jakarta.servlet.http…...

linux-samba-window登不上

登不上查了很久发现是防火墙导致的 sudo firewall-cmd --list-all //查看所有的防火墙信息sudo firewall-cmd --permanent --zonepublic --add-servicesamba //service里添加sambafirewall-cmd --reload //重启 便可以登录了,小问题...

Java Web3J :使用web3j监听、查询、订阅智能合约的事件

前面有文章写如何使用Docker-compose方式部署blockscout浏览器+charts图表,区块链浏览器已经部署成功了,同时我们在链上增加了治理投票流程,如何实时的把治理事件快速同步到浏览器呢?这时就想到了Web3J来监听智能合约的事件,来达到同步事件的效果 目录 Web3J简介功能简介m…...

C语言入门 Day_13 二维数组

目录 前言: 1.字符串 2.创建二维数组 3.使用二维数组 4.易错点 5.思维导图 前言: 我们学习了字符类型char,我们可以用char来表示一个大写或者小写的字母,但真实应用中我们往往使用的是多个字符组成的一个单词或者句子。 …...

通过HFS低成本搭建NAS,并内网穿透实现公网访问

文章目录 前言1.下载安装cpolar1.1 设置HFS访客1.2 虚拟文件系统 2. 使用cpolar建立一条内网穿透数据隧道2.1 保留隧道2.2 隧道名称2.3 成功使用cpolar创建二级子域名访问本地hfs 总结 前言 云存储作为一个新概念,在前些年炒的火热,虽然伴随一系列黑天鹅…...

【SpringMVC】工作流程及入门案例

目录 前言 回顾MVC三层架构 1. SpringMVC简介 …...

【JVM】垃圾收集算法

文章目录 分代收集理论标记-清除算法标记-复制算法标记-整理算法 分代收集理论 当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”(Generational Collection)[1]的理论进 行设计,分代收集名为理论,实质是一套符…...

K8s的Pod出现Init:ImagePullBackOff问题的解决(以calico为例)

对于这类问题的解决思路应该都差不多,本文以calico插件安装为例,发现有个Pod的镜像没有pull成功 第一步:查看这个pod的描述信息 kubectl describe pod calico-node-wmhrw -n kube-system 从上图发现是docker拉取"calico/cni:v3.15.1&q…...

数据结构 -作用及基本概念

为什么要使用数据结构 学习数据结构是计算机科学和软件工程领域中非常重要的一门课程。以下是学习数据结构的几个重要原因: 组织和管理数据:数据结构提供了一种组织和管理数据的方式。通过学习不同的数据结构,你可以了解如何有效地存储和操作…...

数学建模--时间序列预测模型的七种经典算法的Python实现

目录 1.开篇版权提示 2.时间序列介绍 3.项目数据处理 4.项目数据划分可视化 5.时间预测序列经典算法1:朴素法 6.时间预测序列经典算法2: 简单平均法 7.时间预测序列经典算法3:移动平均法 8.时间预测序列经典算法4:简单指…...

nginx-反向代理缓存

反向代理缓存相当于自动化动静分离。 将上游服务器的资源缓存到nginx本地,当下次再有相同的资源请求时,直接讲nginx缓存的资源返回给客户端。 本地缓存资源有一个过期时间,当超过过期时间,则重新向上游服务器重新请求获取资源。…...

大模型重塑区域人才培养,飞桨(重庆)人工智能教育创新中心正式启动

2023年8月22日,重庆市高校人工智能产教融合院长研讨会暨飞桨(重庆)人工智能教育创新中心启动仪式在重庆大学成功召开。会上,由百度飞桨、重庆大学组织重庆市二十一所高校共建的飞桨(重庆)人工智能教育创新中…...

PAT 1164 Good in C 测试点3,4

个人学习记录,代码难免不尽人意。 When your interviewer asks you to write “Hello World” using C, can you do as the following figure shows? Input Specification: Each input file contains one test case. For each case, the first part gives the 26 …...

LabVIEW对EAST长脉冲等离子体运行的陀螺稳态运行控制

LabVIEW对EAST长脉冲等离子体运行的陀螺稳态运行控制 托卡马克是实现磁约束核聚变最有希望的解决方案之一。电子回旋共振加热(ECRH是一种对托卡马克有吸引力的等离子体加热方法,具有耦合效率高,功率沉积定位好等优点。陀螺加速器是ECRH系统中…...

Fragment

Fragment是Android开发中的一个重要组件,用于构建灵活且可重用的用户界面模块。它可以作为Activity的一部分来展示用户界面,并且可以嵌套在其他Fragment中,从而形成复杂的界面层级。 以下是一个简单的示例,展示了如何在Android中…...

哈希表-救赎金

Leetcode: https://leetcode.cn/problems/ransom-note/?envTypestudy-plan-v2&envIdtop-interview-150 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true …...

vue3+vite+ts项目适配各种分辨率解决方案

现在的电脑屏幕和尺寸越来越多样化,对于前端开发来说,适配各种屏幕成了大难题,开发中一个实际例子:开发一个导航栏,ui给的是1920*60的尺寸,前端开发的时候,在自己电脑缩放比例中开发的&#xff…...

Python Opencv实践 - 矩形轮廓绘制(直边矩形,最小外接矩形)

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/stars.png") plt.imshow(img[:,:,::-1])img_gray cv.cvtColor(img, cv.COLOR_BGR2GRAY) #通过cv.threshold转换为二值图 ret,thresh cv.threshold(img_gray,…...

大数据HBASE的详细使用

摘要:本文将深入探讨大数据HBASE的使用步骤,帮助读者了解和掌握这一强大的分布式数据库系统的基本概念和操作技巧。通过本文的阅读,读者将能够熟悉HBASE的基本设置,了解其核心概念,掌握基本的查询和管理操作&#xff0…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...