摘要:面向智慧交通与停车管理等场景,构建稳定、可部署的车牌检测系统对于提升数据采集效率与降低人工核验成本具有现实意义。本文以车牌目标检测为核心任务,系统性梳理并复现 YOLOv5 至 YOLOv12 的关键升级脉络,给出从数据集构建、训练评估到工程落地的一套完整实现。算法侧在统一数据与评测协议下,对不同 YOLO 版本的结构差异、训练策略与推理效率进行对比分析,结合 mAP、F1、PR 曲线、混淆矩阵与训练曲线 讨论精度与速度的权衡,并给出适配车牌小目标、强反光与遮挡等难点的实践要点。工程侧基于 PySide6 设计可交互的桌面端界面,支持图片/视频/摄像头输入、阈值参数调节、检测结果可视化与批量处理;结合 SQLite 实现用户注册登录、配置持久化与结果存储导出,形成从模型选择到数据管理的闭环流程。文末提供可复现的 完整代码、界面工程与数据集组织方式,便于读者在真实业务场景中直接迁移与二次开发。
完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷
项目介绍地址:https://my.feishu.cn/wiki/UpPywFCxuixpFXkhjZvcZKA6nsL
功能效果展示视频:YOLOv5至YOLOv12升级:车牌检测系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
@
- 1. 前言综述
- 2. 数据集介绍
- 3. 模型设计与实现
- 4. 训练策略与模型优化
- 5. 实验与结果分析
- 6. 系统设计与实现
- 6.1 系统设计思路
- 6.2 登录与账户管理
- 7. 下载链接
- 8. 参考文献(GB/T 7714)
➷点击跳转至文末所有涉及的完整代码文件下载页☇
1. 前言综述
车牌检测(License Plate Detection, LPD)作为自动车牌识别(ALPR)流水线的入口模块,既要在道路监控、园区门禁与城市级交通治理等场景下保持高召回,又要满足实时性与稳定性约束,因此研究界开始在检测框架中引入对比学习等机制以增强特征判别性并提升复杂背景下的定位鲁棒性1。在公开评测方面,早期工作将车牌识别任务按应用形态拆分并构建了面向实际业务变量的基准数据集,强调“不同应用对应不同成像分布”的实验范式,这一思路至今仍影响着车牌检测的评测与数据构建方式2。随着深度学习成为主流,CCPD 等大规模、强扰动的中文车牌数据集进一步推动了端到端检测与识别研究,使得算法能够在更接近真实路侧采集条件的分布上进行训练与对比3。在更强非受控条件下,面向车载移动拍摄与车辆运动引起的模糊、尺度变化与视角偏转,UFPR-ALPR 等数据与系统化实验揭示了商业系统在真实分布上的性能衰减,也为鲁棒车牌检测提供了可复现实证基础[4]。同时,针对透视畸变与多角度车牌,基于几何校正与深度网络结合的检测识别方案强调“先对齐、再识别”的结构优势,使得多方向车牌定位在不牺牲端到端效率的前提下更易收敛并提升可用性[5]。
表 1 代表性车牌检测研究与 YOLO 系列演进要点对比
| 代表工作/模型 | 典型数据集 | 核心思路或改进点 | 优点 | 局限性/代价 |
|---|---|---|---|---|
| 端到端对比学习车牌检测器(CLPD)1 | 多数据集评测 | 在检测训练阶段引入对比学习分支以增强表征判别性 | 复杂背景下更稳健、推理阶段不引入额外分支 | 训练更复杂、对采样策略较敏感 |
| AOLP 基准与应用导向范式2 | AOLP | 按应用类别组织评测变量并提供可调参数的参考方案 | 强调应用分布差异,利于评测设计 | 数据规模与场景覆盖受限于年代 |
| CCPD 数据集与基线3 | CCPD | 大规模中文车牌数据与端到端基线 | 覆盖多扰动因素,利于鲁棒训练 | 数据偏差与标注形式对使用方式有约束 |
| UFPR-ALPR 与鲁棒系统化实验[4] | UFPR-ALPR | 面向移动采集的真实分布与端到端系统评测 | 更贴近真实路测分布 | 场景区域性强,跨域仍需适配 |
| 非受控场景检测识别框架(含几何对齐)[5] | 多地区数据 | 强调透视矫正与非约束采集适配 | 多角度车牌更易定位与识别 | 引入对齐模块与额外工程复杂度 |
| 顶点与主体同步检测精定位[6] | CCPD | 主体框之外显式建模顶点区域并后处理约束几何 | 精定位效果好、利于矫正 | 需要顶点级标注或等价监督信号 |
| 轻量级多方向旋转车牌检测(YOLOX 路线)[7] | CCPD | 旋转解耦头与轻量化特征提取 | 多方向车牌更友好、速度与精度兼顾 | 旋转框标注与训练实现复杂 |
| YOLO 基础范式[8] | 通用检测基准 | 一阶段回归式检测统一框架 | 实时性强、工程链路清晰 | 对小目标与密集场景需专门优化 |
| Ultralytics YOLOv5[9] | COCO/迁移车牌 | 成熟训练推理工具链与工程实现 | 易复现、易部署 | 结构较早,性能上限受限于时代设计 |
| YOLOv7[10] | COCO/迁移车牌 | 强化训练策略与结构设计以提升实时检测性能 | 精度效率平衡更优 | 实现与训练细节更依赖工程经验 |
| Ultralytics YOLOv8[11] | COCO/迁移车牌 | 更统一的多任务实现与工程接口 | 便于系统化对比与快速迭代 | 不同任务/后处理一致性仍需工程约束 |
| YOLOv9(ECCV 2024)[12] | COCO/迁移车牌 | 引入可编程梯度信息等机制改善训练与参数利用 | 训练可控性增强 | 结构理解与调参复杂度上升 |
| YOLOv10(NeurIPS 2024)[13] | COCO/迁移车牌 | 端到端、免 NMS 的训练范式与效率导向设计 | 延迟更稳定、部署链路更简洁 | 需要适配新的训练与后处理假设 |
| Ultralytics YOLO11[14] | COCO/迁移车牌 | 在参数与精度之间进一步优化 | 更利于边缘端落地 | 不同硬件后端需单独标定性能 |
| YOLOv12(注意力中心)[15] | COCO/迁移车牌 | 在实时检测中系统引入注意力建模能力 | 复杂场景潜在收益更大 | 注意力带来的显存与延迟需精细控制 |
国内研究在“精定位”与“多方向”两条路线推进较快,其中一类工作通过同步检测车牌主体与顶点局部区域,在常规矩形框检测之外引入顶点级几何约束,以更好地服务后续矫正与字符识别环节[6];另一类工作则面向多方向车牌的旋转边界框建模与轻量化部署需求,通过旋转解耦检测头与注意力等结构改造,在复杂环境中兼顾精度、参数量与推理速度[7]。从更宏观的目标检测技术演化来看,YOLO 将检测统一为单网络回归问题并奠定了一阶段实时检测范式,为车牌这类“小目标、强纹理、强反光”的工业任务提供了高吞吐的工程基础[8]。在工程落地上,Ultralytics YOLOv5 以较低的使用门槛与完善的训练推理工具链被广泛采用,成为许多车牌检测系统的事实基线[9]。随后,YOLOv7 在网络设计与训练策略上持续强化实时检测的精度效率平衡,使得轻量模型在边缘端部署更具可行性[10]。Ultralytics YOLOv8 则进一步完善任务谱系与实现细节,促使同一训练框架下的检测、分割与关键点等任务更易统一管理,从而方便在车牌业务中进行快速迭代与多模型对照[11]。在更近的工作中,YOLOv9 通过可编程梯度信息等机制改善梯度传递与参数利用率,为实时检测的可训练性与泛化提供了新的结构化视角[12];YOLOv10 则系统性探索端到端、免 NMS 的实时检测训练范式,强调在延迟与精度之间获得更稳定的工程折中[13]。Ultralytics YOLO11 在保持工程易用性的同时进一步压缩参数并提升精度,使得在同等算力预算下更容易获得可部署的车牌检测模型[14];而 YOLOv12 以注意力为中心构建实时检测框架,试图在不显著牺牲速度的前提下吸收注意力机制的建模能力,从而为复杂背景、小目标与细粒度定位带来新的潜在增益[15]。
尽管检测框架不断升级,车牌检测在真实业务中仍面临一组相对稳定且彼此耦合的技术难点:其一,车牌往往以小尺度出现在高分辨率画面中,且边缘字符纹理与背景栅格频繁产生混淆,导致定位误差会被后续透视矫正与 OCR 放大;其二,夜间反光、雨雪污渍、遮挡以及运动模糊会显著改变车牌的局部统计特性,使得仅依赖静态训练分布的模型在跨城市、跨摄像机与跨季节迁移时性能波动明显;其三,多方向车牌对边界框表示提出额外要求,水平框虽推理开销低但易引入背景冗余,旋转框与关键点虽更贴近几何真实却增加标注与后处理复杂度;其四,工程系统往往需要在不同算力平台上统一推理链路,涉及模型导出、量化、后处理一致性与 GUI 交互延迟控制等问题,这些因素会把“论文级指标”与“可交付系统”之间的差距进一步拉大。
在这篇博客里,老思将围绕“YOLOv5 至 YOLOv12 的升级脉络”给出一个可直接运行的车牌检测系统实现:在同一数据集与同一评测协议下完成多版本 YOLO 的训练与对比,给出可复现实验记录与权重管理方式;同时构建面向实际使用的 PySide6 图形界面,支持图片/视频/摄像头多输入源与阈值交互控制,并配套结果导出与基础数据管理;最后提供数据集组织、标注与预处理脚本及完整项目结构,使读者能够从“数据—训练—评测—部署—界面集成”的闭环角度复现并扩展该系统。
主要功能演示:
(1)启动与登录:系统启动后首先进入登录页,用户可选择注册新账号或使用已有账号登录;登录成功后加载用户个性化配置与历史检测记录,并将本次会话的推理参数(如置信度阈值、IOU 阈值、输出路径)写入用户空间,保证“不同账号互不干扰、结果可追溯”。
启动与登录界面图

(2)多源输入与实时检测(摄像头/视频/图片/文件夹):主界面提供统一的输入入口,支持单张图片即时推理、视频流逐帧检测、摄像头实时检测以及文件夹批处理;界面同步显示检测框、类别与置信度,并给出本帧/本批次的统计信息,便于快速核查漏检与误检。
多源输入与实时检测演示图

(3)模型选择与对比演示:在同一界面下可切换 YOLOv5–YOLOv12 不同权重(如 n/s/m 等轻量与中型配置),并在相同输入上进行对比推理;系统记录每次推理的耗时与关键指标汇总(如批处理平均延迟、检测数量分布),用于直观呈现不同版本在车牌小目标与复杂光照条件下的差异。
模型选择与对比演示图

(4)主题修改功能:系统提供主题切换与样式自定义入口,支持对界面背景、主色调、按钮图标与字号等进行修改,并将主题配置持久化到用户配置表中;在不改变推理链路的前提下,使界面在不同部署环境(室内门禁、路侧监控、实验室评测)下保持可读性与一致的交互体验。
主题修改功能演示图

2. 数据集介绍
本文车牌检测系统采用自建四类目标检测数据集开展训练与评测,数据集中共包含 5,555 张清晰度较高的道路场景图像,覆盖俯视与斜视等多种摄像机视角,并包含一定比例的遮挡、强反光与尺度变化样本(从训练批次可视化中可观察到车牌在整幅图像中呈现显著的小目标特性)。数据集同时标注车牌与车辆类型信息,类别集合为 License_Plate(车牌)、cars(汽车)、motorcyle(摩托车)、truck(卡车),以支持“车牌定位 + 车辆粗粒度语义”在同一检测头下的联合学习;标注文件采用 YOLO 系列通用的 TXT 归一化格式(中心点坐标与宽高均归一化到 \([0,1]\)),便于直接接入 Ultralytics 训练与推理管线。

Chinese_name = { "License_Plate": "车牌", "cars": "汽车", "motorcyle": "摩托车", "truck": "卡车" }
在数据划分上,训练集 5,102 张、验证集 432 张、测试集 21 张,分别占比约为 91.84%、7.78% 与 0.38%,其中验证集用于早停与超参数选择,测试集用于最终泛化评估。预处理方面,训练阶段统一将输入经 letterbox 方式缩放至 \(640\times 640\) 并进行归一化,配合 Mosaic、随机仿射、HSV 颜色扰动与随机翻转等增强以提升模型在不同光照与运动模糊条件下的鲁棒性;验证与测试阶段则仅保留确定性的缩放与归一化以保证指标可比性。从标签统计图可见,车牌实例数显著多于车辆类别,且类别分布呈现一定长尾特征(truck 数量相对较少),这会使得模型更容易首先学到车牌定位能力,而车辆类型的分类边界需要依赖更强的数据增强与更充分的负样本覆盖;框的宽高与中心点分布也显示车牌框主要集中在较小宽高区域,进一步说明该任务本质上属于典型的小目标检测问题,需要在训练中重视多尺度特征与低层纹理信息的保留。

📊 数据集规格说明 (Dataset Specification)
| 维度 | 参数项 | 详细数据 |
|---|---|---|
| 基础信息 | 标注软件 | LabelImg(工程默认) |
| 标注格式 | YOLO TXT (Normalized) | |
| 数量统计 | 训练集 (Train) | 5,102 张 (91.84%) |
| 验证集 (Val) | 432 张 (7.78%) | |
| 测试集 (Test) | 21 张 (0.38%) | |
| 总计 (Total) | 5,555 张 | |
| 类别清单 | Class ID: 0 | License_Plate(车牌) |
| Class ID: 1 | cars(汽车) |
|
| Class ID: 2 | motorcyle(摩托车) |
|
| Class ID: 3 | truck(卡车) |
|
| 图像规格 | 输入尺寸 | 640 * 640 |
| 数据来源 | 道路场景多视角图像(人工清洗与筛选) |
3. 模型设计与实现
车牌检测任务在工程侧通常同时追求两类指标:其一是对小尺度目标的稳定召回(避免车牌漏检导致后续识别链路“无输入”),其二是面向视频流的实时推理吞吐(保证摄像头或路侧视频的在线处理能力)。因此,本系统在算法选型上以“可复现、可部署、可对比”为先,默认采用 YOLOv12n 作为主推理模型,并在同一套接口下兼容 YOLOv5 至 YOLOv12 的权重切换,以支持版本间公平对照与快速回归测试。YOLOv12 的核心定位是“注意力中心的实时检测器”,在保持实时性的同时,引入更强的注意力建模与更易优化的聚合结构;但其文档也明确提示该模型更偏研究基准,可能出现训练不稳定、显存占用升高以及 CPU 侧吞吐较慢等工程权衡,因此系统实现中保留了 YOLOv11/YOLOv8 等更稳健版本作为部署备选。(Ultralytics Docs)
从实现结构看,YOLO 系列在 v5–v12 的演进并未改变检测器的“三段式范式”:骨干网络负责多尺度特征抽取,颈部网络完成跨层特征融合,检测头将融合特征映射为分类与回归输出。差异主要集中在三处:第一,检测头从锚框(anchor-based)逐步转向 anchor-free 与更强的标签分配策略,减少了手工锚框超参对跨域车牌数据的敏感性;第二,骨干与颈部的“高效聚合”结构不断迭代以改善梯度流与参数利用率;第三,YOLOv12 将注意力机制系统性引入主干,使模型更擅长在复杂背景、遮挡与强反光条件下捕捉车牌边缘纹理与局部几何线索。(Ultralytics Docs)

在骨干网络层面,早期的一阶段检测器常以 ResNet 作为通用特征提取器,移动端则更偏好 MobileNet、EfficientNet 等轻量骨干;然而车牌检测属于典型的小目标定位问题,除参数量外更依赖“浅层纹理与深层语义的有效融合”。因此,YOLO 系列主干通常采用 CSP、ELAN 等强调跨阶段部分连接与层聚合的结构,以在不显著增加计算的前提下改善特征复用与梯度传播。以 YOLOv5 为例,其骨干可概括为 CSPDarknet 风格的分阶段特征抽取,配合 SPPF 扩大感受野;颈部采用 PAN 结构将高层语义向低层分辨率回灌,从而增强小目标的可分辨性。YOLOv12 延续“聚合优先”的设计哲学,并通过 R-ELAN 在聚合块级别引入残差与缩放,缓解注意力模型在大尺度/深层配置下的优化困难,使训练更稳定、梯度更可控。(Ultralytics Docs)
注意力机制的引入是 YOLOv12 与前代最显著的结构差别之一。标准自注意力的主要瓶颈在于 token 两两交互带来的二次复杂度与显存访问开销,难以满足实时检测的延迟预算。YOLOv12 采用 Area Attention 将特征图划分为若干区域并在区域粒度上重排计算,以更低代价获得较大的有效感受野;同时在实现层面借助 FlashAttention 降低显存读写开销,并用 \(7\times7\) 的可分离卷积作为“位置感知器”在不显式引入位置编码的情况下补偿位置信息,这些改动共同服务于“实时约束下的注意力可用性”。(Ultralytics Docs)
任务建模方面,本系统采用标准的检测头输出形式:对每个候选位置预测类别概率与边界框参数。设预测框为 \(b\)、真实框为 \(b^*\),训练目标通常由分类损失与回归损失构成:
分类项常用二元交叉熵(多标签形式):
其中 \(C\) 为类别数,\(p_c\) 为预测概率。回归项在 YOLO 系列中通常采用 IoU 家族损失(如 CIoU/GIoU 等),用几何一致性约束定位;在 anchor-free 头中,还常配合分布式回归(DFL 等)提升边界精细度。对于 YOLOv10,系统额外需要理解其“端到端、免 NMS”的训练假设:通过 one-to-many 与 one-to-one 的一致双分配提供丰富监督,并使推理阶段可不依赖传统 NMS 后处理,这对 GUI 实时流的延迟稳定性具有直接价值。(Ultralytics Docs)
工程实现上,老思在代码层将模型加载与推理流程统一封装为 Detector 类:初始化时根据用户在界面选择的版本(v5–v12)加载对应权重与类别配置(本任务为 4 类:车牌、汽车、摩托车、卡车),并对输入执行与训练一致的 letterbox 预处理;推理后进行阈值过滤与(必要时的)NMS/端到端解码,最终输出 xyxy + conf + cls 供界面绘制与统计。Ultralytics 的统一接口使“同一份 UI、同一份推理后处理框架”下的多模型切换成为可能,系统只需在权重路径与模型类型上做薄封装即可完成版本对照。(Ultralytics Docs)
4. 训练策略与模型优化
车牌检测属于典型的小目标检测任务,训练阶段的核心矛盾在于:一方面需要通过足够强的增强与多尺度特征学习来提升召回,另一方面又要避免过强扰动导致定位抖动与收敛不稳定。为保证 YOLOv5–YOLOv12 的横向对比具有可解释性,博主在实验中统一使用相同的数据划分、输入分辨率与评测协议,并尽量保持训练超参数一致;仅当不同版本框架对某些参数存在强依赖时,才进行最小幅度的适配。训练环境采用 Python 3.12 与单卡 RTX 4090,默认开启 AMP 混合精度与 cudnn 加速,并设置随机种子与确定性选项以降低重复实验的波动。迁移学习策略上,所有模型优先加载 COCO 预训练权重,从而将优化过程聚焦于“车牌纹理与车辆外观”的域内适配:前若干轮允许骨干与颈部共同更新以快速形成车牌边缘与字符纹理的基础表征,随后依赖早停机制与验证集监控避免在长尾类别上发生过拟合。
在优化器与学习率策略上,本系统延续 Ultralytics 训练管线的默认做法,optimizer=auto 由框架在 SGD/AdamW 等候选中根据模型规模与数据特性自动选择,并配合 warmup 与余弦退火实现平滑收敛。设总训练步数为 \(T\),第 \(t\) 步学习率为 \(\eta_t\),余弦退火可写为
其中 \(\eta_0\) 为初始学习率,\(\eta_{\min}=\eta_0\cdot \text{lrf}\) 为最终学习率下界;warmup 阶段则在前若干轮内线性提高学习率并逐步引入动量项,以缓解大 batch 与强增强叠加时的梯度震荡。早停策略设置 patience=50,当验证集指标在连续若干轮未提升时停止训练并保留最佳权重,这一策略对车牌类这种“易学但易过拟合”的目标尤为关键。
为增强小目标的可分辨性与跨场景鲁棒性,数据增强以 Mosaic 为主并结合几何与颜色扰动:Mosaic 能显著增加车牌在不同尺度、不同背景下的出现频率,从而提升检测头对低层纹理的敏感性;但在训练后期继续强扰动往往会带来定位偏差,因此采用 close_mosaic=10 在收敛阶段关闭 Mosaic,使模型在更接近真实分布的输入上细化边界框回归。对于类别分布不均(例如 truck 相对较少)的情况,训练中更依赖增强带来的“有效样本重采样”效应,同时在推理侧通过类别置信度阈值与 NMS 设置来抑制长尾类的误检扩散;若后续发现长尾类召回不足,可优先采用定向补标、难例挖掘与少量重采样,而不是盲目增大分类损失权重,以免破坏车牌主类的定位稳定性。
训练默认超参数(本项目基线)
| 名称 | 作用(简述) | 数值 |
|---|---|---|
| epochs | 最大训练轮数 | 120 |
| patience | 早停耐心 | 50 |
| batch | 批大小 | 16 |
| imgsz | 输入尺寸 | 640 |
| pretrained | 预训练权重 | true |
| optimizer | 优化器 | auto |
| lr0 | 初始学习率 | 0.01 |
| lrf | 最终学习率占比 | 0.01 |
| momentum | 动量系数 | 0.937 |
| weight_decay | 权重衰减 | 0.0005 |
| warmup_epochs | 预热轮数 | 3.0 |
| mosaic | Mosaic 强度/概率 | 1.0 |
| close_mosaic | 后期关闭 Mosaic | 10 |
模型优化面向两条路径展开:其一是训练期的收敛与泛化优化,其二是部署期的推理效率优化。训练期除上述学习率与增强策略外,老思建议统一记录每个版本的最佳轮次、验证集曲线与错误样例(漏检、误检、定位偏移),用“问题驱动”的方式微调增强强度与阈值,而不是在超参数空间做盲目搜索。部署期则建议将最佳权重导出为 ONNX 或 TensorRT(FP16)以降低 GUI 实时视频流的推理延迟,并在导出前固定 imgsz=640 与后处理参数,确保不同模型版本在系统端的输出一致性与可复现性;若目标设备算力受限,可进一步评估 INT8 量化,但需用验证集分布一致的校准集避免小目标(车牌)在量化后发生置信度塌缩。
5. 实验与结果分析
本节在相同数据划分(Train 5102 / Val 432 / Test 21)、相同输入尺度(\(640\times640\))与一致的训练轮数(120 epochs)下,对 YOLOv5–YOLOv12 的轻量模型进行横向对比。评估指标采用 Precision、Recall、\(F1\) 与 COCO 风格的 \(mAP@0.5\)、\(mAP@0.5:0.95\);其中 \(F1\) 定义为
用于描述“查准率—查全率”的综合平衡。推理耗时统计来自脚本输出(包含预处理、网络前向与后处理),硬件信息记录为 NVIDIA GeForce RTX 3070 Laptop GPU(8GB),因此本文更侧重“同机对比”的相对结论,而非跨设备的绝对延迟对标。
图5-1:F1-Confidence 曲线

如图5-1所示,四类目标在不同置信度阈值下的 \(F1\) 呈现明显分层:车牌(License_Plate)与摩托车(motorcyle)曲线几乎贴近 1.0,说明在当前数据分布下模型对这两类的可分性强,阈值变化对性能影响较小;汽车(cars)在较宽阈值范围内保持稳定的 \(F1\) 平台,体现出较好的鲁棒性;卡车(truck)则随着阈值升高出现持续下滑,表明该类更依赖低阈值维持召回,一旦阈值提高,漏检对 \(F1\) 的打击会迅速放大。粗蓝线给出的全类最优点为 \(F1\approx0.86\)、confidence \(\approx0.422\),这意味着在系统默认阈值设置上,老思更倾向将 conf 初值设置在 0.40–0.45:既能抑制大量低置信误检,又不会过度牺牲长尾类(truck)的召回。
图5-2:PR 曲线(含各类 AP)

图5-2进一步揭示了类别层面的难度差异:车牌与摩托车的 AP@0.5 均接近 0.995,汽车约为 0.867,而卡车仅为 0.627,从而将全类 \(mAP@0.5\) 拉低到 0.871。这一结构性差异与数据分布高度一致:卡车样本通常更少、外观形态变化更大(货箱遮挡、车头结构差异、运动模糊更显著),同时其车牌区域往往更易被遮挡或过曝。对系统部署而言,这意味着“整体 \(mAP\) 很高”并不等价于“所有车辆类型都同样可靠”,卡车类的漏检/误检更需要通过补标与难例挖掘来修复,而不是简单继续加大训练轮数。
图5-3:训练/验证曲线(loss 与 mAP)

从图5-3可见,box_loss、cls_loss 与 dfl_loss 在训练集与验证集上均呈现稳定下降,且验证损失未出现显著反弹,说明在当前增强策略与早停机制下,模型并未进入明显的过拟合区间;同时 metrics/recall(B) 的上升趋势更平滑,而 metrics/precision(B) 在早期出现较大波动,符合 Mosaic 与强几何增强带来的分布扰动特征:早期模型更容易“多报”以换取召回,随着后期关闭 Mosaic 并进入精细收敛阶段,precision 才逐步稳定提升。对应的 mAP50(B) 与 mAP50-95(B) 在中后期进入平台区,提示继续增加 epochs 的边际收益有限,更有效的改进通常来自于类别均衡(尤其 truck)与标注质量治理。
图5-4:n 型(轻量)模型 F1 与 mAP50 对比柱状图

为了覆盖“极限实时”部署需求,本文首先比较 n 型轻量模型(YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12n)。图5-4直观显示 YOLOv8n 在 F1 与 mAP50 两个维度上均处于领先或并列领先区间,而 YOLOv7-tiny 明显落后,说明“更大/更老的轻量结构”并不必然带来收益,架构与训练范式的匹配更关键。为便于精确对照,表5-1给出 n 型模型的量化结果(含参数量、FLOPs 与耗时拆解)。
表5-1 n 型模型在验证集上的精度与效率对比(同机统计)
| 模型 | Params(M) | FLOPs(G) | Precision | Recall | F1 | mAP50 | mAP50-95 | Pre(ms) | Inf(ms) | Post(ms) | Total(ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| YOLOv5nu | 2.6 | 7.7 | 0.855 | 0.841 | 0.848 | 0.862 | 0.767 | 1.90 | 7.73 | 1.31 | 10.94 |
| YOLOv6n | 4.3 | 11.1 | 0.864 | 0.852 | 0.858 | 0.877 | 0.797 | 2.17 | 6.78 | 1.39 | 10.34 |
| YOLOv7-tiny | 6.2 | 13.8 | 0.769 | 0.778 | 0.774 | 0.761 | 0.600 | 2.28 | 14.74 | 4.06 | 21.08 |
| YOLOv8n | 3.2 | 8.7 | 0.902 | 0.856 | 0.879 | 0.889 | 0.794 | 1.95 | 6.83 | 1.39 | 10.17 |
| YOLOv9t | 2.0 | 7.7 | 0.842 | 0.897 | 0.869 | 0.880 | 0.796 | 1.87 | 16.51 | 1.29 | 19.67 |
| YOLOv10n | 2.3 | 6.7 | 0.972 | 0.768 | 0.858 | 0.871 | 0.796 | 2.08 | 11.24 | 0.63 | 13.95 |
| YOLOv11n | 2.6 | 6.5 | 0.879 | 0.821 | 0.849 | 0.874 | 0.779 | 2.11 | 9.44 | 1.42 | 12.97 |
| YOLOv12n | 2.6 | 6.5 | 0.838 | 0.872 | 0.855 | 0.883 | 0.797 | 1.91 | 12.47 | 1.37 | 15.75 |
从表5-1可以看到,YOLOv8n 在本任务上呈现“精度与速度同时占优”的特征:其 F1=0.8785、mAP50=0.8893,且总耗时 10.17ms 为该组最低。这说明在当前四类检测设置下,YOLOv8n 的特征表达与标签分配策略对“小目标车牌 + 大目标车辆”的混合场景更友好。YOLOv9t 的 Recall 达到 0.8974,但 InfTime 显著上升(16.51ms),更像是以更激进的召回换取延迟开销;而 YOLOv10n 的 Precision 高达 0.9720 且 PostTime 仅 0.63ms,这与其端到端解码、弱化 NMS 的后处理特征相吻合,但其 Recall 偏低导致综合 \(F1\) 未能拉开差距,更适合“宁可漏检也要减少误检”的阈值偏保守场景。
图5-5:n 型模型 mAP50 随 epoch 变化曲线

图5-5展示了不同 n 型模型的收敛速度与稳定性。整体上,各模型在前 20–30 epochs 提升最快,之后进入缓慢爬升期并逐步收敛到 0.85–0.89 区间;YOLOv12n 与 YOLOv8n 在中后期更接近上包络,说明其在长训练阶段仍能持续获得小幅收益,而部分模型在早期波动较大,通常与强增强下的梯度噪声与类别不均衡(truck)有关。对于工程训练策略而言,这类曲线往往提示“继续堆 epochs 的收益不如补齐长尾数据”。
图5-6:n 型模型平均 PR 曲线对比

图5-6的平均 PR 曲线给出了更细粒度的结论:在中高召回区间,曲线位置更靠上的模型通常在实际部署中更“抗阈值漂移”,即在不同 conf 设置下性能波动更小。该图对应的 \(mAP\) 显示 YOLOv8n(约 0.891)与 YOLOv12n(约 0.884)表现较强,而 YOLOv5nu(约 0.863)在高召回区域精度下滑更明显,这解释了为何在同等阈值下,老思更倾向选择 v8n 作为默认在线模型。
图5-7:s 型(中小型)模型 F1 与 mAP50 对比柱状图

在 s 型模型对比中(YOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s、YOLOv12s),图5-7显示各模型差距整体收敛,性能更多体现为“微小优势 + 明显延迟差异”。表5-2给出对应量化结果。
表5-2 s 型模型在验证集上的精度与效率对比(同机统计)
| 模型 | Params(M) | FLOPs(G) | Precision | Recall | F1 | mAP50 | mAP50-95 | Pre(ms) | Inf(ms) | Post(ms) | Total(ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.1 | 24.0 | 0.871 | 0.832 | 0.851 | 0.874 | 0.778 | 2.28 | 8.45 | 1.51 | 12.24 |
| YOLOv6s | 17.2 | 44.2 | 0.839 | 0.879 | 0.859 | 0.880 | 0.819 | 2.22 | 8.59 | 1.45 | 12.26 |
| YOLOv7 | 36.9 | 104.7 | 0.809 | 0.859 | 0.833 | 0.812 | 0.700 | 2.44 | 23.62 | 3.46 | 29.52 |
| YOLOv8s | 11.2 | 28.6 | 0.891 | 0.847 | 0.869 | 0.876 | 0.798 | 2.31 | 7.66 | 1.42 | 11.39 |
| YOLOv9s | 7.2 | 26.7 | 0.894 | 0.839 | 0.866 | 0.887 | 0.820 | 2.12 | 18.66 | 1.39 | 22.17 |
| YOLOv10s | 7.2 | 21.6 | 0.894 | 0.792 | 0.840 | 0.873 | 0.803 | 2.21 | 11.38 | 0.60 | 14.19 |
| YOLOv11s | 9.4 | 21.5 | 0.873 | 0.862 | 0.867 | 0.881 | 0.799 | 2.37 | 9.74 | 1.36 | 13.47 |
| YOLOv12s | 9.3 | 21.4 | 0.859 | 0.851 | 0.855 | 0.871 | 0.799 | 2.09 | 13.23 | 1.42 | 16.74 |
表5-2体现出两点更具工程意义的规律:其一,YOLOv9s 的 \(mAP50/mAP50\text{-}95\) 达到该组最高(0.887/0.820),但其 InfTime 上升到 18.66ms,使总耗时达到 22.17ms,在实时视频流场景中可能带来帧率压力;其二,YOLOv8s 依然保持较强的综合平衡(最高 \(F1\),且总耗时最低),更适合作为“画面实时交互 + 兼顾精度”的 GUI 默认模型。YOLOv10s 的 PostTime 同样显著更低(0.60ms),符合端到端后处理的特点,但其 Recall 偏低导致 \(F1\) 与 \(mAP\) 受到限制。
图5-8:s 型模型 mAP50 随 epoch 变化曲线

图5-8显示 s 型模型在中后期逐步收敛到 0.87–0.89 区间,模型间差异更多体现在“达到平台的速度”与“平台附近的抖动幅度”。当曲线在 60–80 epochs 后进入缓慢爬升期时,继续训练带来的收益通常来自定位微调与难例适配;若此时仍存在 truck 类明显短板,则更推荐通过数据层面治理(补标、抽取夜间/遮挡难例)改善上限。
图5-9:s 型模型平均 PR 曲线对比

如图5-9所示,YOLOv9s 在多数 recall 区间内保持更高 precision,从而获得更大曲线面积(\(mAP\) 约 0.889);而 YOLOv8s、YOLOv11s 的曲线更“平”,在阈值变化时更稳定,这也是工程上选择默认模型时常被忽略但更关键的属性。综合本任务的四类结构与长尾特征,老思建议系统默认采用 YOLOv8n(极限实时)/YOLOv8s(更稳健的综合平衡),并将 conf 初值设在 0.40–0.45;若业务对精度上限更敏感且允许更高延迟,则可将 YOLOv9s 作为“高精度模式”的备选,同时针对 truck 类补齐数据与难例,以避免整体指标掩盖长尾类别的实际风险。
6. 系统设计与实现
6.1 系统设计思路
本系统以“桌面端可交互部署”为目标,采用 Python 3.12 与 PySide6 构建界面层与控制层,检测推理由独立处理层承载,并以 SQLite 作为账户与结果的持久化载体。整体结构遵循清晰的分层思路:Ui_MainWindow 负责界面元素与布局呈现,MainWindow 作为中枢调度器管理按钮事件、状态机与业务流程,Detector 负责模型加载、推理与后处理;三者之间通过 Qt 信号槽解耦通信,使得输入源切换、模型切换、阈值调节与结果导出不会相互缠绕,从而便于后续维护与扩展。

为了保障视频流与摄像头场景下的界面响应,推理链路通常放置于工作线程中执行:界面线程只负责帧的展示与交互反馈,Detector 在后台完成预处理、YOLO 前向与 NMS/解码等后处理,再将结构化结果(检测框、类别、置信度与统计信息)以信号形式回传 MainWindow,最终由 Ui_MainWindow 完成绘制与表格刷新。该模式能显著降低“推理阻塞 UI”的风险,尤其在多模型对比(v5–v12 权重热切换)与批处理(文件夹推理)并存时,可避免界面卡顿与状态错乱。
在业务闭环上,系统把“交互控制”视为与推理同等重要的组成部分:用户可在检测过程中动态调整 conf/IOU 阈值、切换不同 YOLO 版本权重、暂停/继续视频流,并将结果以图像、文本或数据库形式导出。主题切换与界面外观参数同样纳入用户配置管理,登录后自动加载并在退出或注销时写回 SQLite,实现跨会话的一致体验;这使得系统不仅能完成检测任务,还能形成“输入—推理—展示—筛选—归档”的可复用工作流。
图 系统流程图

图注:系统从初始化到多源输入,完成预处理、推理与界面联动,并通过交互形成闭环。
6.2 登录与账户管理

登录与账户管理模块以 PySide6 的登录页作为入口,通过 SQLite 完成用户注册、凭据校验与会话隔离:注册时将账号信息与密码摘要写入 users 表,登录时执行查询与校验并在通过后加载该用户的主题偏好、阈值参数与历史检测记录,从而为每个账号提供独立的配置空间与结果空间;进入主界面后,用户可在不影响检测链路的前提下修改头像与密码并即时持久化,或在需要交接设备与任务时执行注销/切换账号,系统将本次会话的参数与主题设置写回数据库并清理状态,随后回到登录页重新建立用户上下文,使账户体系与“多源输入—推理—导出”的主检测流程形成稳定衔接并提升可追溯性与使用体验。

7. 下载链接
若您想获得博文中涉及的实现完整全部资源文件(包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷
项目介绍地址:https://my.feishu.cn/wiki/UpPywFCxuixpFXkhjZvcZKA6nsL
功能效果展示视频:YOLOv5至YOLOv12升级:车牌检测系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8. 参考文献(GB/T 7714)
1 Ding H X, Gao J Y, Yuan Y, et al. An End-to-End Contrastive License Plate Detector[J]. IEEE Transactions on Intelligent Transportation Systems, 2024, 25(1): 503-516.
2 Hsu G-S, Chen J-C, Chung Y-Z. Application-Oriented License Plate Recognition[J]. IEEE Transactions on Vehicular Technology, 2013, 62(2): 552-561.
3 Xu Z B, Yang W, Meng A J, et al. Towards End-to-End License Plate Detection and Recognition: A Large Dataset and Baseline[C]//Proceedings of ECCV 2018. Cham: Springer, 2018: 261-277.
[4] Laroca R, Severo E, Zanlorensi L A, et al. A Robust Real-Time Automatic License Plate Recognition Based on the YOLO Detector[EB/OL]. arXiv:1802.09567, 2018.
[5] Silva S M, Jung C R. License Plate Detection and Recognition in Unconstrained Scenarios[C]//Proceedings of ECCV 2018. Cham: Springer, 2018: 593-609.
[6] 徐光柱, 刘高飞, 匡婉, 等. 基于顶点与主体区域同步检测的精准车牌定位[J]. 北京航空航天大学学报, 2024, 50(2): 376-387.
[7] 雷景生, 章志豪, 钱小鸿, 等. 改进YOLOX的轻量级多方向车牌检测算法[J]. 计算机工程与应用, 2025, 61(4): 230-240.
[8] Redmon J, Divvala S, Girshick R, et al. You Only Look Once: Unified, Real-Time Object Detection[C]//Proceedings of CVPR 2016. IEEE, 2016: 779-788.
[9] Ultralytics. ultralytics/yolov5: YOLOv5 in PyTorch[EB/OL]. (2020- ). (访问日期: 2026-02-19).
[10] Wang C-Y, Bochkovskiy A, Liao H-Y M. YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors[EB/OL]. arXiv:2207.02696, 2022.
[11] Ultralytics. Ultralytics YOLOv8 Documentation[EB/OL]. (发布: 2023-01-10). (访问日期: 2026-02-19).
[12] Wang C-Y, Yeh I-H, Liao H-Y M. YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information[C]//Proceedings of ECCV 2024. Cham: Springer, 2024.
[13] Wang A, Chen H, Lin Z, et al. YOLOv10: Real-Time End-to-End Object Detection[C]//Advances in Neural Information Processing Systems (NeurIPS 2024). 2024.
[14] Ultralytics. Ultralytics YOLO11 Documentation[EB/OL]. (发布: 2024-09-10). (访问日期: 2026-02-19).
[15] Tian Y J, Ye Q X, Doermann D. YOLOv12: Attention-Centric Real-Time Object Detectors[EB/OL]. arXiv:2502.12524, 2025.
