一种基于改进YOLOv8并与ORB-SLAM3融合的动态环境密集点云同步定位与建图(SLAM)方法

本文基于A method of dense point cloud SLAM based on improved YOLOV8 and fused with ORB-SLAM3 to cope with dynamic environments文章总结

文章提出了一种基于改进 YOLOv8 与 ORB-SLAM3 融合的动态环境稠密点云 SLAM 方法,通过引入GSConv 卷积模块VoVGSCSP 特征融合模块优化 YOLOv8 的轻量性,结合实时目标检测与语义分割技术去除动态特征点,显著提升了动态场景下的位姿估计精度。实验表明,在 TUM 数据集的快速动态场景中,该方法的绝对位姿误差(RMSE)较 ORB-SLAM3 降低96.28%,相对位姿误差(RMSE)降低51.57%,且运行时间仅为38.16 ms / 帧,实现了高效鲁棒的 SLAM 性能。

 

 

  1. 研究背景
    智能机器人的发展依赖于 SLAM 技术,但传统视觉 SLAM 在动态环境中存在定位和建图误差大的问题。深度学习的引入为解决动态环境鲁棒性问题提供了新途径,但现有方法存在模型复杂、实时性不足的挑战。

  2. 提出方法

    • 改进 YOLOv8
      • 引入 GSConv 卷积模块,平衡模型精度与计算负载。
      • 采用 VoVGSCSP 特征融合模块优化 Neck 结构,实现轻量化。
    • 融合 ORB-SLAM3
      将改进的 YOLOv8 实时目标检测与语义分割能力整合到 ORB-SLAM3 框架中,动态环境下过滤动态特征点,提升定位与建图精度。
  3. 实验验证

    • 数据集:使用 TUM RGB-D 数据集的动态序列(fr3_sitting_xyz 和 fr3_walking_xyz)。
    • 指标:比较绝对位姿误差(APE)和相对位姿误差(RPE)。
    • 结果
      • 在快速动态环境中,APE 的 RMSE 比 ORB-SLAM3 降低 96.28%,RPE 的 RMSE 降低 51.57%。
      • 运行时间和资源占用优化显著,平均跟踪时间 38.16ms / 帧,分割时间 19.10ms / 帧。
  4. 创新点

    • 首次将改进的 YOLOv8 与 ORB-SLAM3 结合,实现动态环境下的高精度 SLAM。
    • 通过模块优化(GSConv 和 VoVGSCSP)实现模型轻量化,平衡性能与效率。
    • 提出密集点云建图方法,提升环境描述的直观性。
  5. 结论
    该方法在动态环境中显著优于传统 SLAM 算法,尤其在快速运动场景中表现突出,为智能机器人在复杂环境中的应用提供了有效解决方案。


1. GSConv 技术是什么?

GSConv(Group Shuffle Convolution,分组混洗卷积)是一种改进的卷积方法,旨在平衡模型精度与计算效率。其核心思想是将标准卷积(SC)与深度可分离卷积(DSC)结合,通过分组和通道重组优化特征提取过程。

技术细节
  • 结构
    • 标准卷积(SC):对输入特征图进行常规卷积,生成中间特征(通道数为原通道的一半)。
    • 深度可分离卷积(DSC):对 SC 输出的每个通道独立进行卷积,减少计算量。
    • 混洗模块(Shuffle):将 SC 和 DSC 的输出按通道拼接后重新排列,增强特征交互。
作用
  • 轻量化:通过 DSC 减少参数和计算量,适合实时性要求高的场景(如 SLAM)。
  • 保留精度:SC 部分保留通道间的相关性,避免 DSC 导致的特征丢失。
  • 平衡性能:在 YOLOv8 中替换部分传统卷积层,减少模型复杂度但维持检测精度。

2. Backbone 层和 Neck 层是什么?

Backbone 层
  • 定义: 模型的主干网络,负责从输入图像中提取多尺度特征(如浅层的边缘、纹理,深层的语义信息)。
  • YOLOv8 中的 Backbone: 基于 CSPDarknet,包含多个卷积层和残差模块,通过下采样逐步压缩空间尺寸、扩展通道数。
  • 改进点: 在 Backbone 的部分阶段引入 GSConv,替代传统卷积层,减少计算量同时保留特征表达能力。
Neck 层
  • 定义: 位于 Backbone 和 Head 之间,通过特征融合优化多尺度检测性能。
  • YOLOv8 中的 Neck: 原结构为 C2f 模块(Cross Stage Partial Network),通过横向连接和通道拆分增强特征多样性。
  • 改进点: 提出VoVGSCSP 模块,用 GSConv 替代部分 C2f 中的卷积层,进一步降低计算复杂度,同时通过 E-ELAN(高效通道注意力)抑制冗余背景特征。

3. 为何调整这些结构能提升动态环境 SLAM 性能?

  • GSConv 的作用
    • 减少 YOLOv8 的模型参数量和计算耗时,使其更适合实时性要求高的 SLAM 系统。
    • 保留关键特征(如动态物体的轮廓和运动模式),确保分割精度,避免误删静态特征点。
  • Backbone 和 Neck 的改进
    • 轻量化:通过结构优化降低模型体积,减少 GPU 内存占用(如文中 YOLOv8 分割时间仅 19.10ms / 帧)。
    • 增强动态特征感知:GSConv 和 VoVGSCSP 模块更关注动态物体的语义和几何特征,提升分割准确性。
  • 平衡精度与速度: 保留部分传统卷积层(如在 Backbone 的关键阶段),避免因过度轻量化导致检测性能下降,确保 SLAM 的位姿估计精度(如快速动态环境中 APE 降低 96.28%)。

总结

GSConv 通过融合标准卷积与深度可分离卷积,在轻量化和精度间取得平衡;Backbone 和 Neck 的改进则通过结构优化进一步提升模型效率和动态特征处理能力。这些技术共同解决了传统视觉 SLAM 在动态环境下的实时性与精度矛盾,为复杂场景中的机器人导航提供了更可靠的解决方案。


需要注意的是该方法的动态特征点剔除是基于YOLOv8 的目标检测框而非语义分割的精细区域。具体实现逻辑如下:

1. 剔除策略的核心依据

  • YOLOv8 的目标检测框: 文档明确指出,改进的 YOLOv8 框架通过目标检测生成动态物体的边界框(Bounding Box),并基于此框判断特征点是否属于动态区域

  • 未采用语义分割掩码: 尽管 YOLOv8 具备实例分割能力,但文档中未提及使用分割掩码(Mask)进行特征点筛选。推测原因是分割掩码的计算量较大,而检测框方法更高效,符合实时性需求。

2. 检测框剔除的局限性

  • 误删静态特征点: 检测框可能包含动态物体周围的静态区域(如人物手持的静态物品),导致部分静态特征点被错误剔除。
  • 精度损失: 与基于分割掩码的方法相比,检测框方法的位姿误差略高,但速度优势显著。

3. 平衡实时性与精度的设计

  • 轻量化优先: 文档强调通过 GSConv 和 VoVGSCSP 模块优化 YOLOv8 的推理速度(段落 1-56 至 1-61),确保检测框处理时间仅 19.10ms / 帧,满足 SLAM 实时性要求。
  • 动态场景适应性: 检测框方法在快速动态环境中仍能有效降低位姿误差(如 APE 的 RMSE 比 ORB-SLAM3 降低 96.28%),证明其对动态干扰的鲁棒性。

结论

该方法采用目标检测框进行动态特征点剔除,而非语义分割的精细区域。这一设计在实时性与精度间取得平衡,通过牺牲少量静态特征点保留率,确保了 SLAM 系统在动态环境中的实时运行能力。若需更高精度,可结合分割掩码,但需权衡计算成本。

### YOLOv8ORB-SLAM3的集成方法 YOLOv8作为最新一代的目标检测算法,在速度和准确性方面都有显著提升。而ORB-SLAM3则是一个先进的同步定位(SLAM)框架,能够实现实时三维重和姿态估计。两者结合可以增强系统对于动态环境中移动物体的理解能力。 为了实现YOLOv8ORB-SLAM3的有效融合,主要思路是在像输入阶段先利用YOLOv8执行目标检测任务,获取场景内的动态物体边界框位置信息[^2]。接着将这些信息传递给ORB-SLAM3模块,使得后者能够在后续处理过程中忽略掉由动态物体带来的不稳定特征点,从而提高整体系统的稳定性和可靠性[^3]。 具体来说: 1. **初始化配置** 安装必要的依赖库以及下载预训练好的YOLOv8模型权重文件。确保ORB-SLAM3已经正确编译完成且可以在本地正常工作[^1]。 2. **数据流管道设计** 构一条从摄像头采集到的数据流向两个分支传输路径:一路送入YOLOv8用于实时目标检测;另一路直接进入ORB-SLAM3进行常规SLAM流程计算。两条支路上的结果会在适当时候汇合以便进一步分析处理。 3. **代码示例** ```python import cv2 from ultralytics import YOLO # 加载YOLOv8模型 model = YOLO('path/to/yolov8_model') def process_frame(frame): results = model.predict(source=frame, stream=True) dynamic_objects_boxes = [] for result in results: boxes = result.boxes.cpu().numpy() if len(boxes)>0: dynamic_objects_boxes.extend([box.xyxy.tolist() for box in boxes]) return frame, dynamic_objects_boxes ``` 上述Python脚本展示了如何加载YOLOv8模型对每一帧视频画面做预测操作,最终返回含有所有被标记出来的动态物体边界的列表形式结果。 4. **优化议** 对于YOLO版本的选择上,考虑到性能平衡问题,可以选择适中的型号如`yolov5m`或`yolov5l`而非一味追求最大尺寸的模型以免造成资源浪费甚至过拟合现象的发生[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值