YOLOv12最全使用教程【含ONNX模型推理】

一、简介

在这里插入图片描述

  尽管注意力机制在建模能力上已证明具有优越性,但YOLO改进的重点一直放在基于CNN的改进上。这是因为基于注意力的模型无法与基于CNN的模型在速度上相匹配。本文提出了一种以注意力为中心的YOLO框架,即YOLOv12,它在保持与先前基于CNN的模型相同速度的同时,充分利用了注意力机制的性能优势。

  YOLOv12在所有流行的实时目标检测器中,在准确性方面超越了它们,并且速度具有竞争力。例如,YOLOv12-N在T4 GPU上实现了40.6%的mAP,推理延迟为1.64毫秒,相比先进的YOLOv10-N/YOLOv11-N,在相当的速度下,mAP提高了2.1%/1.2%。这种优势也扩展到了其他模型规模。YOLOv12还超过了那些改进DETR的端到端实时检测器,如RT-DETR/RT-DETRv2:YOLOv12-S在运行速度比RT-DETR-R18/RT-DETRv2-R18快42%的情况下,仅使用了36%的计算量和45%的参数量。

  • COCO数据集测试结果
Modelsize
(pixels)
mAPval
50-95
Speed
T4 TensorRT10
params
(M)
FLOPs
(G)
YOLO12n64040.61.642.66.5
YOLO12s64048.02.619.321.4
YOLO12m64052.54.8620.267.5
YOLO12l64053.76.7726.488.9
YOLO12x64055.211.7959.1199.0

  官方提供的demo测试网址有:Demo2,可以使用图像或者视频进行测试,也可以打开本地摄像头进行测试。
在这里插入图片描述

二、安装测试

  平台:Ubuntu
  基本环境要求:Pytorch2.2及以上,CUDA12.1及以上,Python3.11,基本CONDA环境。

1、克隆项目

git clone https://github.com/sunsmarterjie/yolov12.git
cd yolov12

2、安装依赖第三方库

  YOLOv12新增了对Flash-Attention的调用,用于加速注意力机制的计算。这里以pytorch2.2为例安装flash-attention(要求硬件: H100 / H800 GPU, CUDA >= 12.3),目前笔者并没有该硬件资源,所以后续测试的时候会提示FlashAttention不可用,但不影响测试代码的正常运行。

具体命令和其他第三方包安装命令如下:

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 -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

  其中,requirement,txt中的内容需要进行修改,具体内容如下:

torch==2.2.2 
torchvision==0.17.2
flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
timm==1.0.14
albumentations==2.0.4
onnx==1.14.0
onnxruntime==1.15.1
pycocotools==2.0.7
PyYAML==6.0.1
scipy==1.13.0
onnxslim==0.1.31
onnxruntime-gpu==1.18.1
gradio==4.44.1
opencv-python==4.9.0.80
psutil==5.9.8
py-cpuinfo==9.0.0
huggingface-hub==0.23.2
safetensors==0.4.3
numpy==1.26.4

  建议直接用conda安装pytorch和torchvision,具体安装命令如下:

conda install pytorch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 pytorch-cuda=12.1 -c pytorch -c nvidia

  在安装完pytorch和pytorchvision后,建议对其可行性进行验证,具体python脚本(名为val_version.py)内容如下所示:

import torch
print('PyTorch version: ' + str(torch.__version__))
print('CUDA available: ' + str(torch.cuda.is_available()))
print('cuDNN version: ' + str(torch.backends.cudnn.version()))
a = torch.tensor([0., 0.], dtype=torch.float32, device='cuda')
print('Tensor a =', a)
b = torch.randn(2, device='cuda')
print('Tensor b =', b)
c = a + b
print('Tensor c =', c)

import torchvision
print("Torchvision version: ", torchvision.__version__)

  当输出如下图所示的信息时,则说明已成功安装带CUDA的pytorch和torchvision,
在这里插入图片描述

3、编译YOLO项目

将YOLO项目编译为可执行的命令行,在终端输入命令如下:

pip install -e .

安装完后,输入以下命令可以查看yolo相关配置:

yolo help

在这里插入图片描述

4、验证COCO8验证集结果

from ultralytics import YOLO

model = YOLO('yolov12n.pt')   # yolov12{n/s/m/l/x}
model.val(data='coco8.yaml', batch=1, imgsz=640)

在这里插入图片描述

5、在COCO数据集上进行训练

  笔者使用coco.yaml中的配置文件进行训练测试,其中改动了yolov12/ultralytics/cfg/datasets/中的coco.yaml文件第12行的path定义为:path: ../datasets/coco,以此将数据集的路径指定到项目根路径的上一层路径名为datasets的coco文件夹中。

from ultralytics import YOLO

model = YOLO('yolov12n.yaml')

# Train the model
results = model.train(
  data='coco.yaml',
  lr0=0.001,
  epochs=10, 
  batch=64, 
  imgsz=320,
  scale=0.5,  # S:0.9; M:0.9; L:0.9; X:0.9
  mosaic=1.0,
  mixup=0.0,  # S:0.05; M:0.15; L:0.15; X:0.2
  copy_paste=0.1,  # S:0.15; M:0.4; L:0.5; X:0.6
  device="0",
)

# Evaluate model performance on the validation set
metrics = model.val()

# Perform object detection on an image
results = model("bus.jpg")
results[0].show()

  训练后的评价结果如下:
在这里插入图片描述
  注意:这里只是进行简单地训练测试,该模型的优化效果还有待后续微调。

6、推理测试

model = YOLO(model='yolov12n.pt')
res = model.predict(source="bus.jpg",imgsz=640)[0]
# res.show()
res.save(filename="res.jpg")  # 将结果保存为res.jpg文件

在这里插入图片描述

在这里插入图片描述

7、导出onnx格式

from ultralytics import YOLO

model = YOLO('yolov12n.pt')
model.export(format="onnx", imgsz=640, half=True)  # or format="engine"

在这里插入图片描述

  输入如下命令验证onnx模型的检测效果,用CPU测试具体命令如下:

yolo predict task=detect model=yolov12n.onnx imgsz=640 source=bus.jpg device="cpu"

在这里插入图片描述

  用GPU测试具体命令如下:

yolo predict task=detect model=yolov12n.onnx imgsz=640 source=bus.jpg device="cuda"

 同样地,可以使用以下python脚本进行测试:

from ultralytics import YOLO
model = YOLO(model='yolov12n.onnx')
res = model.predict(source="bus.jpg",imgsz=640)[0]
res.save(filename="res_onnx.jpg")

三、总结

 YOLOv12提出了一种新颖的网络,该网络利用区域注意力来降低计算复杂度,并利用残差高效层聚合网络(R-ELAN)来增强特征聚合,此外还优化了原始注意力机制的关键组件,以更好地适应YOLO的实时约束,同时保持高速性能。作者成功地将通常被认为对实时要求低效的以注意力为中心的设计融入了YOLO框架,实现了最先进的延迟-精度平衡。在性能上超越了YOLOv11和DETR代表的轻量级模型RT-DETRv2。

  • 遇到问题:
NumPy 2.2.3 as it may crash. To support both 1.x and 2.x
versions of NumPy, modules must be compiled with NumPy 2.0.
Some module may need to rebuild instead e.g. with 'pybind11>=2.12'

解决方法为重新安装numpy=1.xx.xx,终端输入命令如下:

pip install numpy==1.26.1

四、参考链接

[1] https://github.com/sunsmarterjie/yolov12?tab=readme-ov-file

[2] https://www.cnblogs.com/guohaomeng/p/18608875

<think>好的,我需要帮助用户在Windows上安装和运行YOLOv12。首先,我需要确认YOLOv12是否存在,因为目前主流的版本是YOLOv5、v8等,可能用户有笔误。如果是新版本,可能需要参考最新的官方文档。假设用户确实是指YOLOv12,我需要收集相关信息。 根据用户提供的引用,有关于YOLOv8和旧版本在Windows和Linux上的安装步骤。引用[3]提到在Windows下安装YOLOv2/v3需要MSVS、CUDA等工具,而引用[2]提到使用WSL2 Ubuntu进行开发。可能YOLOv12安装步骤类似,但需要确认官方推荐的环境。 首先,可能需要安装Python、PyTorch、CUDA等依赖。如果用户使用原生Windows,可能需要安装MSVC,但引用[2]建议使用WSL2,这可能简化环境配置。另外,用户可能需要克隆官方仓库,安装依赖包,下载预训练权重,并进行测试。 还要注意用户是否拥有NVIDIA GPU,以决定是否需要CUDA和cuDNN。如果用户没有GPU,可能需要用CPU模式运行,但速度较慢。需要提醒用户安装相应的驱动和工具包。 最后,生成相关问题,帮助用户解决可能遇到的后续问题,比如性能优化、环境配置错误等。</think>### 在Windows上安装和运行YOLOv12的步骤 (注:截至2024年7月,YOLOv12尚未正式发布,可能是用户笔误。以下步骤以YOLO系列通用安装方法为基础,结合最新版本如YOLOv8的实践经验整理。) #### 1. **环境准备** - **操作系统**: Windows 10/11 - **硬件要求**: 推荐NVIDIA GPU(支持CUDA)以提高推理速度[^3]。 - **安装依赖项**: - 安装[Python 3.8+](https://www.python.org/downloads/)并配置环境变量。 - 安装[Microsoft Visual Studio 2022](https://visualstudio.microsoft.com/)(需包“C++桌面开发”组件)以支持CUDA编译。 - 安装[NVIDIA CUDA Toolkit 12.1](https://developer.nvidia.com/cuda-toolkit)和[cuDNN 8.9+](https://developer.nvidia.com/cudnn)(若使用GPU)。 #### 2. **通过WSL2配置(可选)** 若需Linux兼容环境,可启用WSL2并安装Ubuntu: ```powershell wsl --install -d Ubuntu ``` 随后在WSL中安装Python、PyTorch等依赖[^2]。 #### 3. **安装YOLOv12代码库** 克隆官方仓库(假设仓库已发布): ```bash git clone https://github.com/ultralytics/yolov12.git cd yolov12 pip install -r requirements.txt ``` #### 4. **验证安装** 运行示例检测: ```python from yolov12 import YOLO model = YOLO("yolov12n.pt") # 下载预训练权重 results = model.predict("data/images/bus.jpg") results.show() ``` #### 5. **常见问题解决** - **CUDA错误**: 确保CUDA版本与PyTorch匹配,例如: ```bash pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 ``` - **缺少DLL文件**: 重新安装Microsoft Visual C++ Redistributable。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IRevers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值