YOLOv12:以注意力为中心的实时目标检测器
YOLOv12:以注意力为中心的实时目标检测器
更新内容
YOLOv12 是一种创新的实时目标检测器,它在精度和速度上超越了所有流行的实时对象检测器。以下是 YOLOv12 的主要更新内容:
1.创新点
• 区域注意力机制(A2):将特征图划分为多个区域,在这些区域内进行注意力计算,显著降低了计算复杂度,同时保持了较大的感受野。避免了复杂的窗口划分操作,只需简单的重塑操作,从而提高了速度。
• 残差高效层聚合网络(R-ELAN):为解决注意力机制(尤其是大规模模型)引入的优化挑战,R-ELAN 基于原始 ELAN 引入了两个改进:基于缩放技术的块级残差设计;重新设计的特征聚合方法。
• 优化注意力架构:引入 FlashAttention 以克服注意力的内存访问问题,移除如位置编码等设计以使模型快速且简洁,调整 MLP 比例从 4 到 1.2 以平衡注意力和 FFN 之间的计算,减少堆叠块的深度以促进优化,尽可能多地使用卷积算子以利用其计算效率。
2.性能提升
• YOLOv12 在准确率上超越了所有流行的实时目标检测器,同时保持了有竞争力的速度。例如,YOLOv12-N 在 T4 GPU 上实现了 1.64ms 的推理延迟,达到 40.6%的 mAP,比先进的 YOLOv10-N/YOLOv11-N 分别高出 2.1%/1.2%的 mAP,且速度相当。
• 这一优势也扩展到其他模型规模。YOLOv12 还超越了改进 DETR 的端到端实时检测器,如 RT-DETR/RTDETRv2:YOLOv12-S 在运行速度上快 42%,仅使用 36%的计算资源和 45%的参数,就击败了 RT-DETR-R18/RT-DETRv2-R18。
3.模型变体
YOLOv12 开发了一组具有 5 个模型尺度的实时检测器:YOLOv12-N、S、M、L 和 X。这些模型在遵循 YOLOv11 的标准目标检测基准上进行了广泛的实验,证明了 YOLOv12 在这些尺度上提供了显著的改进。
4.支持的任务
YOLOv12 是一个多功能模型,支持多种核心计算机视觉任务,包括目标检测、实例分割、图像分类、姿态估计和定向目标检测(OBB)。这使得 YOLOv12 在各种应用场景中都具有强大的实用性。
使用教程
1.环境配置
推荐配置
• Python 版本:3.11
• 使用 Anaconda:推荐新手使用 Anaconda 进行环境管理,便于安装和管理依赖包。
安装步骤
```bash
# 创建并激活 conda 环境
conda create -n yolov12 python=3.11
conda activate yolov12
# 安装依赖包
pip install -r requirements.txt
# 安装 YOLOv12
pip install -e .
```
2.训练模型
准备数据集
将你的数据集按照 COCO 格式组织,或者使用其他支持的格式。如果需要从零开始训练,可以参考相关的教程。
训练命令
```bash
yolo task=detect mode=train model=yolov12n.yaml data=coco.yaml epochs=100 batch=64 imgsz=640
```
• `task`:指定任务类型,如`detect`表示目标检测。
• `mode`:指定模式,如`train`表示训练模式。
• `model`:指定模型配置文件,如`yolov12n.yaml`。
• `data`:指定数据集配置文件,如`coco.yaml`。
• `epochs`:训练的轮数。
• `batch`:批量大小。
• `imgsz`:输入图像的尺寸。
3.推理
推理命令
```bash
yolo task=detect mode=predict model=yolov12n.pt source=image.jpg
```
• `model`:指定预训练的模型权重文件,如`yolov12n.pt`。
• `source`:指定输入源,可以是图像文件、视频文件或摄像头。
4.部署
YOLOv12 支持多种部署方式,包括在服务器上部署、移动设备上部署以及使用 TensorRT 加速等。你可以根据实际需求选择合适的部署方案。
总结
YOLOv12 通过引入区域注意力机制、残差高效层聚合网络以及优化注意力架构等创新点,实现了在精度和速度上的双重提升。它的多功能性和高效性使其在各种计算机视觉任务中都表现出色。无论是进行目标检测、实例分割还是其他任务,YOLOv12 都是一个值得尝试的强大工具。