news 2026/10/27 18:21:37

实时目标检测新潮流 YOLO V12 整体介绍及微调训练

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
实时目标检测新潮流 YOLO V12 整体介绍及微调训练

一、YOLO V12

YOLO v12是YOLO系列中最新且最具创新性的版本,它将注意力机制引入到YOLO框架中,在保持高速推理的同时又显著提升了检测精度。成功打破了传统基于CNN在速度与性能之间的权衡困境。

YOLO v12在MS COCO数据集上取得了最先进的性能,在各个模型尺度上都超越了YOLOv11和YOLOv10等模型。与RT-DETR等端到端模型相比,YOLOv12在保持相似或更高精度的同时,又具有更快的推理速度和更低的计算成本。

YOLO V12在MS COCO上的表现以及和其他模型的对比:

YOLO V12的架构亮点:

YOLO V12最大的核心亮点便是引入了注意力机制,但YOLO V12的注意力机制和传统注意力机制还有所不同,传统注意力机制的计算复杂度为O(n^2),其中n为输入序列长度,这导致计算量随着输入尺寸的增加而迅速增长,限制了其在实时目标检测中的应用。而YOLO V12为解决该问题引入了区域注意力机制,通过将特征图划分为多个区域,将全局注意力转化为区域注意力,将计算复杂度降低到O(n^2/l),其中l为区域划分数量。例如,将特征图划分为4个区域,可以将计算复杂度降低到O(n^2/4)。并配合FlashAttention解决内存访问问题,显著提高推理速度。

但加入区域注意力机制后,另一个带来的挑战就是模型收敛情况,在传统的ELAN结构中,每个模块的输出都需要通过多个子模块进行处理,然后再进行拼接和过渡层操作。这种设计会导致梯度在传递过程中逐渐减弱,从而影响模型的收敛和稳定性。特别是在大型模型中更为明显。因此YOLO V12引入了R-ELAN,R-ELAN引入了块级残差连接,在每个子模块的输入和输出之间添加残差连接,并引入缩放因子来控制残差连接的强度。这种设计可以有效地缓解梯度阻塞问题,提高模型的稳定性。

YOLO V12除了优化了ELAN结构,还针对注意力机制中MLP的比例做了调整, 在传统的注意力机制中,MLP比例通常设置为4.0,这意味着注意力模块中MLP层的输入特征维度是输入特征维度的4倍。为减少参数量和计算量,YOLOv12将MLP比例调整为1.2,不仅能够有效提高模型的推理速度,同时仍然能够保持较高的检测精度。

YOLO V12论文地址:

https://arxiv.org/abs/2502.12524

YOLO V12Github代码地址:

https://github.com/sunsmarterjie/yolov12

在模型上V12和之前的版本类似,包括不同大小的模型,从小到大包括:

  • YOLO12n:用于资源极其有限环境的纳米版本。
  • YOLO12s:兼顾速度和精度的小型版本。
  • YOLO12m:通用中型版本。
  • YOLO12l:大型版本,精度更高,但计算资源增加。
  • YOLO12x:超大型版本可实现最高精度和性能。

模型的比较如下:

从官方Github中可以看到目前YOLO V12已更新至ultralytics框架中,这极大的方便了我们的使用和微调训练。

ultralyticsYOLO V12介绍地址:

https://docs.ultralytics.com/de/models/yolo12/

ultralyticsYOLO V12使用示例:

测试图片:

这里使用yolo12n模型,如果模型不存在会自动下载

fromultralyticsimportYOLO# Load a modelmodel=YOLO('yolo12n.pt')results=model.predict('./img/1.png')results[0].show()

二、微调训练

数据集使用本专栏前面实验YOLO-V10时标注的人脸数据集, 这里你可以收集一些自定义的图片,然后根据下面文章中介绍的方式进行标注:

基于 YOLO V10 Fine-Tuning 训练自定义的目标检测模型

微调训练,其中face.yaml文件内容和上面文章YOLO-V10时的一致:

fromultralyticsimportYOLO# 加载模型model=YOLO('yolo12n.pt')# 训练model.train(data='face.yaml',# 训练配置文件epochs=100,# 训练的周期imgsz=640,# 图像的大小device=[0],# 设备,如果是 cpu 则是 device='cpu'workers=0,lr0=0.001,# 学习率batch=8,# 批次大小amp=False# 是否启用混合精度训练)

运行后可以看到打印的网络结构:

训练过程:

训练结束后可以在runs目录下面看到训练的结果:

其中weights下面的就是训练后保存的模型,这里可以先看下训练时loss的变化图:

五、模型测试

在runs\detect\train\weights下可以看到best.pt和last.pt两个模型,表示最佳和最终模型,下面使用best.pt模型进行测试

fromultralyticsimportYOLOfrommatplotlibimportpyplotaspltimportos plt.rcParams['font.sans-serif']=['SimHei']# 测试图片地址base_path="test"# 加载模型model=YOLO('runs/detect/train/weights/best.pt')forimg_nameinos.listdir(base_path):img_path=os.path.join(base_path,img_name)image=plt.imread(img_path)# 预测results=model.predict(image,device='cpu')boxes=results[0].boxes.xyxy confs=results[0].boxes.conf ax=plt.gca()forindex,boxeinenumerate(boxes):x1,y1,x2,y2=boxe[0],boxe[1],boxe[2],boxe[3]score=confs[index].item()ax.add_patch(plt.Rectangle((x1,y1),(x2-x1),(y2-y1),linewidth=2,fill=False,color='red'))plt.text(x=x1,y=y1-10,s="{:.2f}".format(score),fontsize=15,color='white',bbox=dict(facecolor='black',alpha=0.5))plt.imshow(image)plt.show()

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 18:21:01

JimuReport积木报表v1.6.6部署实战:从报表引擎到图表嵌入

简介:JimuReport 积木报表 v1.6.6 是一款开源可视化报表设计工具,面向需要快速搭建数据展示模块的开发者、业务人员以及计算机相关专业学生。支持拖拽式设计,可减少手写代码成本,适合集成在 ERP、CRM、BI 或毕业设计等报表系统中。…

作者头像 李华
网站建设 2026/10/27 18:16:44

BGP 邻居建不起来怎么分析:从 TCP 179 到地址族能力的闭环

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/27 18:16:44

CEF源码下载遇到错误

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/27 18:15:02

SPI全双工原理与寄存器时序调试避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/27 18:14:58

STM32F1嵌入式开发实战:时钟、GPIO、定时器与DHT11驱动详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/27 18:14:49

SA9023与SA9027 USB音频芯片选型与设计指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华