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 多任务模型进行自己的项目开发。希望这能帮助您快速启动并在多个计算机视觉任务上取得优异成绩。

最后

计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,远程协助,代码定制,私聊会回复!
相关推荐
武子康3 分钟前
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大数据·人工智能·学习·算法·机器学习·数据挖掘
deephub4 分钟前
Tokenformer:基于参数标记化的高效可扩展Transformer架构
人工智能·python·深度学习·架构·transformer
Q81375746010 分钟前
数据挖掘在金融交易中的应用:民锋科技的智能化布局
人工智能·科技·数据挖掘
qzhqbb13 分钟前
语言模型的采样方法
人工智能·语言模型·自然语言处理
qzhqbb16 分钟前
基于 Transformer 的语言模型
人工智能·语言模型·自然语言处理·transformer
___Dream17 分钟前
【CTFN】基于耦合翻译融合网络的多模态情感分析的层次学习
人工智能·深度学习·机器学习·transformer·人机交互
极客代码24 分钟前
【Python TensorFlow】入门到精通
开发语言·人工智能·python·深度学习·tensorflow
义小深27 分钟前
TensorFlow|咖啡豆识别
人工智能·python·tensorflow
Tianyanxiao1 小时前
如何利用探商宝精准营销,抓住行业机遇——以AI技术与大数据推动企业信息精准筛选
大数据·人工智能·科技·数据分析·深度优先·零售
撞南墙者1 小时前
OpenCV自学系列(1)——简介和GUI特征操作
人工智能·opencv·计算机视觉