yolov8多任务模型-目标检测+车道线检测+可行驶区域检测-yolo多检测头代码+教程

你只需看一次:实时且通用的多任务模型

A-YOLOM 插图
贡献
  1. 轻量化集成模型:我们开发了一种轻量级模型,能够将三个任务整合到一个统一的模型中。这对于需要实时处理的多任务场景尤其有利。
  2. 自适应连接模块:特别为分割架构的颈部区域设计了新颖的自适应连接模块。此模块可以无需手动设计就能自动连接特征,进一步增强了模型的泛化能力。
  3. 简洁通用的分割头:设计了一个轻量、简单且通用的分割头。对于同一类型的头部任务,我们使用了统一的损失函数,这意味着无需为特定任务定制设计;它仅由一系列卷积层构成。
  4. 广泛实验:基于公开可用的自动驾驶数据集进行了大量实验,证明我们的模型在推理时间和可视化方面优于现有工作。此外,我们在真实道路数据集上也进行了测试,结果表明我们的模型显著优于目前最先进的方法。
结果
  • 参数与速度

    模型 参数 (M) FPS (bs=1) FPS (bs=32)
    YOLOP 7.9 26.0 134.8
    HybridNet 12.83 11.7 26.9
    YOLOv8n(det) 3.16 102 802.9
    YOLOv8n(seg) 3.26 82.55 610.49
    A-YOLOM(n) 4.43 39.9 172.2
    A-YOLOM(s) 13.61 39.7 96.2
  • 交通对象检测结果

    模型 召回率 (%) mAP50 (%)
    MultiNet 81.3 60.2
    DLT-Net 89.4 68.4
    Faster R-CNN 81.2 64.9
    YOLOv5s 86.8 77.2
    YOLOv8n(det) 82.2 75.1
    YOLOP 88.6 76.5
    A-YOLOM(n) 85.3 78.0
    A-YOLOM(s) 86.9 81.1
  • 可行驶区域分割结果

    模型 mIoU (%)
    MultiNet 71.6
    DLT-Net 72.1
    PSPNet 89.6
    YOLOv8n(seg) 78.1
    YOLOP 91.6
    A-YOLOM(n) 90.5
    A-YOLOM(s) 91.0
  • 车道线检测结果

    模型 准确度 (%) IoU (%)
    ENet N/A 14.64
    SCNN N/A 15.84
    ENet-SAD N/A 16.02
    YOLOv8n(seg) 80.5 22.9
    YOLOP 84.8 26.5
    A-YOLOM(n) 81.3 28.2
    A-YOLOM(s) 84.9 28.8
  • 消融研究 1: 自适应连接模块

    训练方法 召回率 (%) mAP50 (%) mIoU (%) 准确度 (%) IoU (%)
    YOLOM(n) 85.2 77.7 90.6 80.8 26.7
    A-YOLOM(n) 85.3 78.0 90.5 81.3 28.2
    YOLOM(s) 86.9 81.1 90.9 83.9 28.2
    A-YOLOM(s) 86.9 81.1 91.0 84.9 28.8
  • 消融研究 2: 不同多任务模型和分割结构的结果

    模型 参数 mIoU (%) 准确度 (%) IoU (%)
    YOLOv8(segda) 1,004,275 78.1 - -
    YOLOv8(segll) 1,004,275 - 80.5 22.9
    YOLOv8(multi) 2,008,550 84.2 81.7 24.3
    YOLOM(n) 15,880 90.6 80.8 26.7
注意事项

本工作中参考的工作包括 Multinet、DLT-Net、Faster R-CNN、YOLOv5s、PSPNet、ENet、SCNN、SAD-ENet、YOLOP、HybridNets 以及 YOLOv8。感谢他们的出色贡献。

可视化
  • 实际道路
系统要求
  • Python 版本:3.7.16
  • PyTorch 版本:1.13.1
  • 推荐 GPU:NVIDIA GeForce RTX 4090 或更高性能的 GPU
  • 如果使用 NVIDIA GeForce GTX 1080 Ti,建议批量大小为 16。尽管训练时间会更长,但仍可行。

强烈建议创建纯净环境并遵循指示进行设置,以避免因 YOLOv8 自动检测环境包而可能引起的变量值变化问题。

数据准备及预训练模型
  • 下载图像
  • 预训练模型:A-YOLOM(包含两个版本,分别为 "n" 和 "s")
  • 下载检测标注
  • 下载可行驶区域分割标注
  • 下载车道线分割标注

推荐的数据集目录结构如下:

# 根据 id 表示对应关系
├─dataset root
│ ├─images
│ │ ├─train2017
│ │ ├─val2017
│ ├─detection-object
│ │ ├─labels
│ │ │ ├─train2017
│ │ │ ├─val2017
│ ├─seg-drivable-10
│ │ ├─labels
│ │ │ ├─train2017
│ │ │ ├─val2017
│ ├─seg-lane-11
│ │ ├─labels
│ │ │ ├─train2017
│ │ │ ├─val2017

更新您的数据集路径于 ./ultralytics/datasets/bdd-multi.yaml 文件中。

训练
  • 设置训练配置文件 ./ultralytics/yolo/cfg/default.yaml
  • 运行 python train.py 开始训练
  • 可以根据需要修改 train.py 中的设置,如模型路径、数据路径、GPU 设备编号等
评估
  • 设置评估配置文件 ./ultralytics/yolo/cfg/default.yaml
  • 运行 python val.py 进行评估
  • 修改 val.py 中的相关路径和设置
预测
  • 运行 python predict.py 进行预测
  • 修改 predict.py 中的源图像路径、设备选择、输出尺寸等参数
扩展性

代码易于扩展至任何多任务分割和检测任务,只需修改模型 YAML 和数据集 YAML 文件中的信息,并按照我们的标签格式创建您的数据集即可。请记住,在检测任务名称中保留"det",在分割任务名称中保留"seg"。

当您更改检测任务类别数量时,请相应地调整 dataset.yamlmodel.yaml 中的 "tnc" 值。"nc_list" 也需要更新,应与您的 "labels_list" 顺序相匹配。例如,如果您的 "labels_list" 包括检测对象、可行驶区域和车道线,则 "nc_list" 应设置为 [7,1,1]。

通过这些详细说明,您可以开始使用 YOLOv8 多任务模型进行自己的项目开发。希望这能帮助您快速启动并在多个计算机视觉任务上取得优异成绩。

最后

计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,远程协助,代码定制,私聊会回复!
相关推荐
QQ同步助手几秒前
如何正确使用人工智能:开启智慧学习与创新之旅
人工智能·学习·百度
AIGC大时代3 分钟前
如何使用ChatGPT辅助文献综述,以及如何进行优化?一篇说清楚
人工智能·深度学习·chatgpt·prompt·aigc
流浪的小新8 分钟前
【AI】人工智能、LLM学习资源汇总
人工智能·学习
martian6651 小时前
【人工智能数学基础篇】——深入详解多变量微积分:在机器学习模型中优化损失函数时应用
人工智能·机器学习·微积分·数学基础
人机与认知实验室2 小时前
人、机、环境中各有其神经网络系统
人工智能·深度学习·神经网络·机器学习
黑色叉腰丶大魔王2 小时前
基于 MATLAB 的图像增强技术分享
图像处理·人工智能·计算机视觉
迅易科技5 小时前
借助腾讯云质检平台的新范式,做工业制造企业质检的“AI慧眼”
人工智能·视觉检测·制造
古希腊掌管学习的神6 小时前
[机器学习]XGBoost(3)——确定树的结构
人工智能·机器学习
ZHOU_WUYI6 小时前
4.metagpt中的软件公司智能体 (ProjectManager 角色)
人工智能·metagpt
靴子学长7 小时前
基于字节大模型的论文翻译(含免费源码)
人工智能·深度学习·nlp