你只需看一次:实时且通用的多任务模型
在这里插入图片描述
A-YOLOM 插图
在这里插入图片描述
贡献
- 轻量化集成模型:我们开发了一种轻量级模型,能够将三个任务整合到一个统一的模型中。这对于需要实时处理的多任务场景尤其有利。
- 自适应连接模块:特别为分割架构的颈部区域设计了新颖的自适应连接模块。此模块可以无需手动设计就能自动连接特征,进一步增强了模型的泛化能力。
- 简洁通用的分割头:设计了一个轻量、简单且通用的分割头。对于同一类型的头部任务,我们使用了统一的损失函数,这意味着无需为特定任务定制设计;它仅由一系列卷积层构成。
- 广泛实验:基于公开可用的自动驾驶数据集进行了大量实验,证明我们的模型在推理时间和可视化方面优于现有工作。此外,我们在真实道路数据集上也进行了测试,结果表明我们的模型显著优于目前最先进的方法。
结果
- 参数与速度 | 模型 | 参数 (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.yaml 和 model.yaml 中的 “tnc” 值。“nc_list” 也需要更新,应与您的 “labels_list” 顺序相匹配。例如,如果您的 “labels_list” 包括检测对象、可行驶区域和车道线,则 “nc_list” 应设置为 [7,1,1]。
通过这些详细说明,您可以开始使用 YOLOv8 多任务模型进行自己的项目开发。希望这能帮助您快速启动并在多个计算机视觉任务上取得优异成绩。
最后
计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,远程协助,代码定制,私聊会回复!
通过这些详细说明,您可以开始使用 YOLOv8 多任务模型进行自己的项目开发。希望这能帮助您快速启动并在多个计算机视觉任务上取得优异成绩。
## 最后
计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,远程协助,代码定制,私聊会回复!