本文于 2025-02-23 13:21 更新,部分内容具有时效性,如有失效,请留言
综合介绍
YOLOv12 是由 GitHub 用户 sunsmarterjie 开发的一个开源项目,专注于实时目标检测技术。该项目基于 YOLO(You Only Look Once)系列框架,引入注意力机制优化传统卷积神经网络(CNN)的性能,不仅在检测精度上有所提升,还保持了高效的推理速度。YOLOv12 适用于多种场景,如监控系统、自动驾驶和图像分析等,提供 Nano、Small、Medium、Large、Extra-Large 五种模型规模,满足不同计算能力和应用需求。项目采用 GNU AGPL-3.0 许可证,用户可以免费下载代码并根据需求进行定制开发。开发者团队包括来自布法罗大学和中科院的研究人员,技术文档和安装指南详尽,便于用户快速上手。
功能列表
- 高效实时目标检测: 在 T4 GPU 上,YOLOv12-N 可实现 40.6% mAP,推理延迟仅 1.64ms。
- 多模型选择: 提供五种模型(Nano 到 Extra-Large),适配从低功耗设备到高性能服务器的多种硬件环境。
- 注意力机制优化: 引入“区域注意力”(Area Attention)和 R-ELAN 模块,提升检测精度并减少计算复杂度。
- 模型导出: 支持将训练模型导出为 ONNX 或 TensorRT 格式,方便部署到生产环境。
- 自定义数据集训练: 用户可使用自己的数据集训练模型,适用于特定目标检测任务。
- 可视化支持: 集成监督工具(supervision),方便展示检测结果和性能评估。
使用帮助
安装流程
YOLOv12 目前没有独立的 PyPI 包,需要从 GitHub 源码安装。以下是详细的安装步骤,适用于 Linux 系统(Windows 或 Mac 用户需调整环境配置):
- 准备环境
- 确保系统安装 Python 3.11 或更高版本。
- 安装 Git:
sudo apt install git
(Ubuntu 示例)。 - 可选:安装 NVIDIA GPU 驱动和 CUDA(推荐 11.8 或更高版本)以加速训练和推理。
- 克隆仓库
在终端运行以下命令,将 YOLOv12 仓库下载到本地:git clone https://github.com/sunsmarterjie/yolov12.git cd yolov12
- 创建虚拟环境
使用 Conda 或 venv 创建独立的 Python 环境,避免依赖冲突:conda create -n yolov12 python=3.11 conda activate yolov12
- 安装依赖
安装项目所需的依赖包,包括 PyTorch、flash-attn 和 supervision 等:wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl pip install flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl pip install -r requirements.txt pip install -e .
- 验证安装
运行以下命令检查环境是否正确配置:python -c "from ultralytics import YOLO; print('YOLOv12 installed successfully')"
使用方法
训练自定义模型
YOLOv12 支持用户使用自己的数据集进行训练,适合特定场景的目标检测任务。操作步骤如下:
- 准备数据集
- 数据需符合 YOLO 格式(包含 images 和 labels 文件夹,labels 为 .txt 文件,标注目标类别和边界框坐标)。
- 创建
data.yaml
文件,指定训练集、验证集路径和类别名称。例如:train: ./dataset/train/images val: ./dataset/val/images nc: 2 # 类别数量 names: ['cat', 'dog'] # 类别名称
- 加载模型并训练
使用 Python 脚本加载预训练模型并开始训练:from ultralytics import YOLO model = YOLO('yolov12s.pt') # 可选 n/s/m/l/x 模型 results = model.train(data='path/to/data.yaml', epochs=250, imgsz=640)
epochs
:训练轮数,建议 250 次以上以获得更好效果。imgsz
:输入图像尺寸,默认 640x640。
- 查看训练结果
训练完成后,结果保存在runs/detect/train
文件夹,包括模型权重(best.pt
)和混淆矩阵等。运行以下代码查看混淆矩阵:from IPython.display import Image Image(filename='runs/detect/train/confusion_matrix.png', width=600)
推理与测试
训练好的模型可用于图像或视频的目标检测:
- 单张图像检测
model = YOLO('path/to/best.pt') results = model('test.jpg') results.show() # 显示检测结果 results.save() # 保存结果到 runs/detect/predict
- 视频检测
使用命令行处理视频文件:python app.py --source 'video.mp4' --model 'path/to/best.pt'
- 性能评估
对验证集进行评估,获取 mAP 等指标:results = model.val(data='path/to/data.yaml') print(results.box.map) # 输出 mAP@0.5:0.95
模型导出
将模型导出为生产环境可用的格式:
model.export(format='onnx', half=True) # 导出为 ONNX,支持 FP16 加速
导出的模型可部署到边缘设备或服务器上。
特色功能操作
- 注意力机制优化
YOLOv12 的“区域注意力”模块无需手动配置,会自动在训练和推理中优化特征提取,提升小目标检测能力。用户只需选择合适的模型规模(如 Nano 用于低功耗设备),即可享受这一特性带来的精度提升。 - 实时检测
在支持 CUDA 的 GPU 上运行时,推理速度极快。例如,使用 T4 GPU 运行 YOLOv12-N 模型,单张图像检测仅需 1.64ms。用户可通过监督工具(supervision)实时可视化检测框和置信度:results = model('image.jpg') results.plot() # 显示带标注的图像
- 多场景适配
通过调整模型规模和训练数据,YOLOv12 可轻松适配不同任务。例如,在监控系统中检测行人,或在自动驾驶中识别车辆和交通标志。