重磅来袭————YOLOv12:Attention-Centric Real-Time Object Detectors
一.总述
中科院和布法罗大学联合提出的最新目标检测算法YOLOv12,长期以来,改进 YOLO 框架的网络架构一直是至关重要的,但尽管注意力机制在建模能力方面已被证明具有优势,但其改进却主要集中在基于 CNN 的改进上。这是因为基于注意力的模型无法与基于 CNN 的模型相媲美。本文提出了一种以注意力为中心的 YOLO 框架,即 YOLOv12,它既能达到以往基于 CNN 的速度,又能利用注意力机制的性能优势。YOLOv12 在准确度上超越了所有流行的实时物体检测器,速度也很有竞争力。例如,YOLOv12-N 在 T4 GPU 上实现了 40.6% 的 mAP,推理延迟为 1.64 ms,比先进的 YOLOv10-N / YOLOv11-N 高出 2.1%/1.2% mAP,速度相当。这一优势还延伸到了其他模型规模。YOLOv12 还超越了改进 DETR 的端到端实时探测器,如 RT-DETR / RTDETRv2: YOLOv12-S击败了RT-DETR-R18 / RT-DETRv2R18,运行速度提高了42%,仅使用了36%的计算量和45%的参数。
主要创新点:
- 提出了一个简单而有效的区域注意模块(A2),该模块保持大型接受场,同时以非常简单的方式降低了注意力的计算复杂性,从而提高了速度.
- 介绍剩余的效率层聚合网络(R-ELAN),以解决注意力(主要是大规模模型)引入的优化挑战。 R-Elan基于原始Elan 引入了两项改进:(i)具有缩放技术的块级剩余设计以及(ii)重新设计的特征聚合方法。
- 为了适应 YOLO 系统,我们在 vanilla 注意力之外做了一些架构上的改进
两大贡献:
1)它建立了一个以注意力为中心,简单而有效的Yolo框架,通过方法论创新和建筑改进,打破了CNN模型在Yolo系列中的优势。
2)在不依赖其他技术(例如预处理)的情况下,Yolov12以快速的推理速度和更高的检测准确性实现了最先进的结果,这表明了其潜力。
二.代码下载
文章地址:2502.12524
代码地址:GitHub - sunsmarterjie/yolov12: YOLOv12: Attention-Centric Real-Time Object Detectors
https://github.com/sunsmarterjie/yolov12?tab=readme-ov-file
点击code,Download ZIP可直接下载。
权重可根据需求下载。
三.部署
在autodl服务器上部署 yolov12,用于验证,训练及预测
租用合适的显卡,开机,上传下载的代码及权重文件。
3.1 创建虚拟环境
conda create -n yolov12 python=3.11
此处输入y
完成后激活环境
conda activate yolov12
解压压缩包,将权重文件放入yolo文件夹中
3.2安装需求文件
如果网络不好,可使用清华源
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -r requirements.txt
3.3 开发模式安装Python包
pip install -e .
4.训练、预测、验证、导出
4.1 训练
from ultralytics import YOLO
model = YOLO('yolov12n.pt')
# Train the model
results = model.train(
data='coco128.yaml',
epochs=600,
batch=256,
imgsz=640,
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",
)
创建train.py,运行python train.py
4.2 验证
from ultralytics import YOLO
model = YOLO('yolov12{n/s/m/l/x}.pt')
model.val(data='coco.yaml', save_json=True)
执行python命令
python val.py
4.3 预测
from ultralytics import YOLO
model = YOLO('yolov12{n/s/m/l/x}.pt')
model.predict()
4.4 导出
from ultralytics import YOLO
model = YOLO('yolov12{n/s/m/l/x}.pt')
model.export(format="engine", half=True) # or format="onnx"
4.5Demo
python app.py
# Please visit http://127.0.0.1:7860