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

最后

复制代码
计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,远程协助,代码定制,私聊会回复!
相关推荐
xywww1683 小时前
大模型 API 选型实战:GPT、Gemini、Claude 接入时该看哪些指标?
运维·服务器·人工智能·python·gpt·langchain
私人珍藏库7 小时前
[Android] PeakFinder AR v4.8.89 (山峰全景识别+增强现实山峰查看器)
android·人工智能·智能手机·ar·工具·软件
CS创新实验室8 小时前
算法、齿轮与硅基大脑:数值计算发展简史
人工智能·算法·数值计算
能有时光8 小时前
PyTorch KernelAgent 源码解读 ---(4)--- ExtractorAgent
人工智能·pytorch·python
fthux9 小时前
GitZip Pro 源码解析:一个 GitHub 文件/文件夹下载扩展是如何工作的(一)整体架构与扩展入口
人工智能·ai·开源·github·open source
aqi009 小时前
15天学会AI应用开发(十七)使用LangGraph实现会话记忆功能
人工智能·python·大模型·ai编程·ai应用
xixixi777779 小时前
三大 AI 安全里程碑:Akamai 高危风险预警、智能体水印强制落地、PQC 量子安全全产业链统一
大数据·人工智能·安全·ai·大模型·智能体·政策
AI小码10 小时前
LLM 应用的缓存工程:当每次 API 调用都在燃烧成本
java·人工智能·spring·计算机·llm·编程·api
code 小楊10 小时前
AI函数调用:Function Calling从理论到实战全解析
人工智能
delishcomcn10 小时前
智切未来:AI算法如何重塑不干胶标签分切机的精度与效率边界
人工智能·神经网络·计算机视觉