YOLOv5至YOLOv12升级:交通标志识别系统的设计与实现(完整代码+界面+数据集项目)
摘要:交通标志识别在智能驾驶与道路安全中扮演关键角色,本文给出一套基于 YOLOv5 至 YOLOv12 的交通标志识别系统,支持限速/禁令/警告等多类目标的实时检测与分类;以 PySide6 实现桌面 UI,适配图片、视频与摄像头输入,内置热力图、类别统计、Conf/IOU 调节与结果可视化;提供 SQLite 数据库用户管理与结果持久化;随文附代码与数据集,并对各模型的 mAP、F1、PR 与训练曲线进行系统对比分析,便于复现与工程落地。
YOLOv5至YOLOv12全集:交通标志识别系统的设计与实现
文章目录
- 1. 前言综述
- 2. 数据集介绍
- 3. 模型设计与实现
- 4. 训练策略与模型优化
- 5. 实验与结果分析
- 6. 系统设计与实现
- 6.1 系统设计思路
- 6.2 登录与账户管理
- 7. 下载链接
- 8. 参考文献
➷点击跳转至文末所有涉及的完整代码文件下载页☇
1. 前言综述
交通标志识别(Traffic Sign Recognition, TSR)是智能网联汽车与高级驾驶辅助系统(ADAS)的基础能力,核心难点在于道路场景中小尺度、密集、遮挡、强反光与光照/天气剧变条件下依然要保持实时且稳健的检测与分类。早期基准 GTSRB 以分类任务出发,揭示了类内形变与类间相似带来的识别挑战[1]。随后 TT100K 与 MTSD 等大规模、多地域数据集将研究推向更贴近实景的长尾与跨域问题,促使方法从单纯分类走向端到端检测与分层识别[2][3]。近年来,CCTSDB 2021 等工作进一步强调不同国家/道路环境与采集设备造成的域偏移,并提出更全面的评测方案以考察模型的泛化能力[4]。
从方法脉络看,YOLO 系列以单阶段范式在实时检测上长期占优:自 YOLO 提出端到端回归式检测后,YOLOv3 通过 Darknet-53 与多尺度预测显著提升鲁棒性[5][6]。YOLOv4 系统化整合 CSP、Mosaic、CIoU 等“bag-of-freebies/specials”,而 YOLOv5 在工程化训练、推理与部署流程上形成事实标准[7][8]。随后的 YOLOv6/YOLOv7/YOLOv8 分别在工业级高吞吐、可训练 freebies(E-ELAN)、锚点无关解耦头与多任务扩展上取得进展[9][10][11]。YOLOv9 引入 PGI/GELAN 缓解信息瓶颈并增强梯度可塑性,YOLOv10 以一致的双重分配实现 NMS-free 端到端训练,显著降低后处理延迟[12][13]。在此基础上,YOLOv11 延续多任务与效率迭代,YOLOv12 进一步转向注意力中心架构并强化小目标可分性[14][15]。
面向“交通标志”这一小目标、细粒度且强规则的视觉对象,近年的改进集中在多尺度特征融合、注意力机制、匹配/分配策略、低照度增强与鲁棒训练等方向。以 DSF-YOLO 为例,其动态序列融合 FPN 结合 Wise-IoU 与蛇形卷积,在雨雪雾等恶劣天气下显著提升小目标检测的稳定性与 mAP[16]。夜间场景的 NTS-YOLO 将图像增强与 CBAM 注意力、OTA 分配结合,在低照度与强反光干扰条件下获得可观增益[17]。同时,轻量级 Efficient ViT 通过全局上下文与局部卷积先验的结合,在小样本交通标志检测中体现出较好的泛化,但端侧部署仍需裁剪与加速[18]。
结合工程落地,交通标志识别的主要技术难点可归纳为四点。其一,小目标与多尺度:远距离标志常仅占数十像素,需更浅层分支(如 P2)与高质量上采样/融合以保留精细结构[2]。其二,复杂环境:雨雪雾、逆光与夜间低照度会导致对比度下降与高光反射,需在数据增强、注意力与去噪/增亮链路上协同设计[16][17]。其三,长尾与跨域:国家/地区标志体系与成像条件差异显著,必须采用重采样/重加权和跨域验证以提高模型的稳健性[3][4]。其四,损失与分配:IoU 家族(如 CIoU)与一致匹配/双重分配在收敛稳定性与端到端时延上更具优势,NMS-free 策略有助于简化部署链路[7][13]。
基于上述背景与现状,本文围绕“YOLOv5 至 YOLOv12:交通标志识别系统的设计与实现”开展系统研究:一方面,我们在统一数据与评测协议下系统比较 YOLOv5–YOLOv12 的精度、速度与资源占用,并针对小目标与低照度/恶劣天气提出面向交通标志的结构与训练策略[8][15]。另一方面,我们构建可复现的工程系统(PySide6 + SQLite),实现图片/视频/摄像头多源输入、热力图与统计可视化、阈值可调与结果持久化,并随文提供完整代码与示例数据以便复用与二次开发[8]。
为便于纵览,选取部分具有代表性的研究如下表所示(每行仅给出核心参考):
方法/年份 | 使用算法或核心改进 | 数据集 | 主要优点 | 局限/代价 |
---|---|---|---|---|
Zhu et al., 2016 | 检测 + 细粒度分类,发布 TT100K | TT100K | 大规模复杂工况,提出小目标与长尾难题 | 早期方法对密集小目标仍不足 [2] |
MTSD, 2020 (ECCV) | 全球多国家标志,检测 + 分类 | MTSD | 覆盖地域广,验证跨域迁移 | 类别极长尾与标注稀疏 [3] |
DSF-YOLO, 2025 | 动态序列融合 FPN、Wise-IoU、蛇形卷积 | TT100K、GTSDB、BDD100K | 恶劣天气下小目标鲁棒 | 结构更复杂、显存成本上升 [16] |
NTS-YOLO, 2025 | 夜间增强 + CBAM + OTA | 夜间自采集集 | 低照度显著增益 | 推理速度下降与显存开销 [17] |
Efficient ViT, 2023 | 轻量 ViT + 局部卷积先验 | GTSDB | 全局上下文,小样本稳定 | 端侧需进一步裁剪与加速 [18] |
博客的主要贡献:本文(1)基于 YOLO 系列实现端到端的交通标志检测识别系统,并提出面向恶劣天气/夜间的小目标增强策略;(2)构建与清洗任务适配的数据子集及评测方案,横向对比 YOLOv5–YOLOv12 的效果;(3)完成 PySide6 + SQLite 的交互式 UI 与结果持久化工程实现,并提供完整代码与数据资源包以供参考。
主要功能演示:
(1)启动与登录 系统启动后首先出现登录/注册界面,支持本地 SQLite 账户管理、头像与偏好设置的加载,演示中展示登陆成功后载入用户配置并进入主界面。
(2)多源输入与实时检测(摄像头/视频/图片/文件夹) 界面左侧为输入源控制(摄像头选择、文件/文件夹导入、视频播放控制),中间为实时画面预览与检测结果叠加(边框、类别、置信度);右侧展示实时类别统计与可交互的检测结果列表,支持逐帧浏览与导出单帧结果。该场景演示即时从摄像头捕获并完成检测、标注与统计的完整闭环。
(3)模型选择与对比演示 界面提供下拉列表切换 YOLO 族模型(v5–v12,各规模 n/s),并能在同一画面执行模型 A/B 对比(并列或切换),实时显示 FPS、延迟与 mAP 报表摘要,方便直观比较不同模型在同一输入下的差异。
(4)新具有主题修改功能,支持实时更换背景、图标与文字样式或者删除不想用的控件、即时预览与热加载,并可保存/导出为个人主题以实现界面个性化与持久化。
2. 数据集介绍
本研究数据集共 7444 张图像,训练/验证/测试分别为 6516/632/296 张(约 87.5%/8.5%/4.0%),涵盖城市、乡村与城郊道路,包含晴天、阴天、逆光、弱光与雨雪等复杂条件;从你提供的拼图可见,存在噪点、雨滴与运动模糊等真实退化。数据按 YOLO 目录组织为 images/{train,val,test}
与 labels/{train,val,test}
,标注采用 YOLO 文本格式(class cx cy w h
,坐标相对归一化)。类别为 11 类,中英映射为:限速40/50/60/70/80、注意让行、禁止驶入、泊车、行人、环形交叉、停车。类别柱状图显示“行人”实例显著占优,其余限速/禁令/指示类在 500–600 实例量级,“禁止驶入”偏少,呈现明显长尾; ( c x , c y ) (cx,cy) (cx,cy) 散点在图像中部偏上聚集,宽高散点集中于 w , h ∈ [ 0.02 , 0.15 ] w,h\in[0.02,0.15] w,h∈[0.02,0.15] 且近似 1:1,说明小目标占比高且形状规则(圆形限速、三角让行、八边形停车等)。据此,评估建议同时报告宏/微平均,以减少高频类主导效应。
为提升小目标可分性,博主在网络侧建议保留更浅层分支(如 P2)并维持较高输入分辨率(640/800),锚框制式(YOLOv5/7)可基于当前尺寸分布重新聚类锚框,无锚头(YOLOv8/10/11/12)则提高小目标正样本权重与解耦头正负样本比;长尾问题可结合类重加权、重采样与 Focal/Varifocal 损失缓解。预处理采用 letterbox 保持纵横比与颜色归一化;增强以 Mosaic、随机仿射为主,辅以 MixUp/Copy-Paste 扩充小目标组合关系,并以小概率注入雨/雾/雪、运动模糊与噪声等“真实退化”以贴近分布,训练末期逐步关闭 Mosaic 保持目标形态一致性。标注经合法性与重叠冲突清洗,统一近义类别映射;结合中英标签字典,数据可无缝融入训练脚本与 PySide6 可视化界面,为后续 YOLOv5–YOLOv12 的对比实验与系统演示提供稳定基座。
3. 模型设计与实现
为面向交通标志这一小目标、密集且光照/天气剧变的场景,老思将系统默认主模型设为 YOLOv12-n(界面可一键切换 YOLOv5/6/7/8/9/10/11/12),并在保持实时性的前提下做“小目标友好”的结构化改造:
(1) 在颈部–检测头加入 P2(stride 4)高分辨率分支,并对浅层特征引入轻量注意力(ECA/CBAM 或 YOLOv12 的 Area-Attention)以增强细粒度纹理;(2) 对无锚解耦头进行小物体加权与阈值温度调节,在保持 NMS 兼容的同时,对 YOLOv10 路线支持一致双重分配的一对一/一对多分支以获得 NMS-free 的低延迟推理;(3) 结合数据统计(中心点集中、 w , h ∈ [ 0.02 , 0.15 ] w,h\in[0.02,0.15] w,h∈[0.02,0.15] 且近似 1:1),在 YOLOv5/7 等锚框制式下重聚类锚框(近 1:1 小尺寸簇),在 YOLOv8/10/11/12 无锚头下提高小物体正样本权重。以 YOLOv12 热力图对比为例:
3.1 基线与结构
基线选择:YOLOv12-n 作为默认部署模型,原因在于其注意力中心(attention-centric)设计与 R-ELAN 聚合在小目标与复杂背景下具备更强的可分性,同时仍保持实时推理;在算力更强的场景可切换 s/m/l/x 规模。(Ultralytics Docs)
主干(Backbone):保持 CSP/ELAN 家族的高效卷积堆叠,在 C2f/C3 模块处嵌入通道注意力(ECA/SimAM/CBAM 三选一,默认 ECA)以放大标志纹理与边缘轮廓;YOLOv12 路线在 stage3–stage4 处启用 Area-Attention(支持 FlashAttention,可选)。(Ultralytics Docs)
颈部(Neck):在 PAFPN/ELAN-FPN 的 P3–P5 之外新增 P2 分支,上采样采用最近邻 + 深度可分离 3×3 Conv,减少别名效应;跨层融合处引入可学习权重的 Bi-FPN 风格聚合,保证浅层高频细节能不被深层低频淹没。
检测头(Head):无锚解耦头(cls/reg 分支)+ DFL(分布式边框回归);对 P2 层设置更高的正样本上限与更低的匹配阈值;若选择 YOLOv10 路线则开启一致双重分配(One-to-One + One-to-Many)并可取消 NMS 以降低端到端延迟。(Ultralytics Docs)
3.2 任务建模与损失函数
分类/对象性:默认采用 BCE with Logits,并对类别失衡加入类重加权或 Focal Loss( γ ∈ [ 1.5 , 2.5 ] \gamma\in[1.5,2.5] γ∈[1.5,2.5];小类更高 α \alpha α):
F L ( p t ) = − α ( 1 − p t ) γ log ( p t ) , p t = { σ ( x ) , y = 1 1 − σ ( x ) , y = 0 \mathrm{FL}(p_t)=-\alpha(1-p_t)^\gamma \log(p_t),\quad p_t=\begin{cases} \sigma(x), & y=1\\ 1-\sigma(x), & y=0 \end{cases} FL(pt)=−α(1−pt)γlog(pt),pt={σ(x),1−σ(x),y=1y=0
为减轻噪声与重标,分类支路可加标签平滑( ε ∈ [ 0.05 , 0.1 ] \varepsilon\in[0.05,0.1] ε∈[0.05,0.1]),即 y ← ( 1 − ε ) y + ε / K y\leftarrow(1-\varepsilon)y+\varepsilon/K y←(1−ε)y+ε/K( K K K 为类别数)。
边框回归:小目标下 IoU 波动大,建议采用 CIoU/WIoU 族并结合 DFL 做离散化边框分布学习:
L CIoU = 1 − IoU + ρ 2 ( b , b ∗ ) c 2 + α v , v = 4 π 2 ( arctan w ∗ h ∗ − arctan w h ) 2 \mathcal{L}_{\text{CIoU}}=1-\text{IoU}+\frac{\rho^2(\mathbf{b},\mathbf{b}^*)}{c^2}+\alpha v,\quad v=\frac{4}{\pi^2}\left(\arctan\frac{w^*}{h^*}-\arctan\frac{w}{h}\right)^2 LCIoU=1−IoU+c2ρ2(b,b∗)+αv,v=π24(arctanh∗w∗−arctanhw)2
L DFL = − ∑ i [ t i log q i + ( 1 − t i ) log ( 1 − q i ) ] , t i ∈ [ 0 , 1 ] \mathcal{L}_{\text{DFL}}=-\sum\nolimits_{i}\big[t_i\log q_i+(1-t_i)\log(1-q_i)\big],\ \ t_i\in[0,1] LDFL=−∑i[tilogqi+(1−ti)log(1−qi)], ti∈[0,1]
其中 DFL 将连续偏移量量化为若干 bin,以相邻 bin 的软标签 t i t_i ti 学习分布,能在小尺寸框上获得更稳定的梯度(YOLOv8/11/12 默认采用)。(Ultralytics Docs)
3.3 正负样本匹配与分配策略
默认使用 SimOTA/Task-Aligned 的候选筛选 + 代价最小匹配;当选择 YOLOv10 路线时,启用一致双重分配:一对一头用于最终评测与导出(提升定位精度、便于端到端部署),一对多头用于训练期提供密集正样本(提升召回与稳定性),推理时可移除 NMS。这在多密度小目标(如“限速/让行/停车”等同时出现)下显著降低后处理延迟与重叠误检。(arXiv)
3.4 最小实现片段
在 YOLOv8/11/12 配置中增加 P2 分支并上调小物体权重(YAML 伪代码):
# head (anchor-free, decoupled) with P2
head:- [Conv, 256, 3, 1] # P3- [Conv, 128, 3, 1] # P2 (new, stride 4)- [Detect, nc:${NUM_CLASSES}, reg_max:16, strides:[4,8,16,32]] # include P2
loss:cls: bce # or varifocal=Truebox: dfl+ciouweights: {p2: 2.0, p3: 1.5, p4: 1.0, p5: 0.6} # emphasize small objects
assigner:type: simota # or yolov10_dual_assign=True (NMS-free)
以上设计在你的数据统计(中心偏上、小尺度、类间长尾)上经过针对性优化;下一节“训练策略与模型优化”将给出可直接复现的超参数与迁移/微调流程,并结合 PySide6 系统完成端到端打通。
4. 训练策略与模型优化
总体流程采用“三段式”:预热(3 epoch 线性升温)→ 主训练(余弦退火)→ 收敛稳态(关闭 Mosaic、细化匹配)。默认主模型 YOLOv12-n(含 P2),AMP 混合精度 + EMA,显卡以 RTX 4090 为基准。损失用 Focal/Varifocal(缓解长尾)+ DFL+CIoU(稳边框);匹配用 SimOTA/Task-Aligned,选 YOLOv10 路线时启用一致双重分配取得 NMS-free 低延迟。数据增强遵循“轻强结合、后期收敛”:letterbox + 归一化 + HSV 常开;Mosaic + 随机仿射为主,少量 MixUp/Copy-Paste 扩小类间差异;雨/雾/雪/噪声/运动模糊小概率注入;训练末 最后 10 个 epoch 关闭 Mosaic。针对小目标与长尾:提高 P2/P3 权重与正样本上限、类感知采样/重加权;若用锚框制式(YOLOv5/7),按当前尺寸分布重聚类锚框。常用稳定化:冻结前两级热身→全网解冻微调;早停(patience=50);必要时梯度累积与 SyncBN。
训练超参数
项目 | 数值 | 说明 |
---|---|---|
epochs | 120 | 最多训练轮数 |
batch | 16 | 24GB↑可增至 32 |
imgsz | 640 | 小目标可试 800 |
lr0 / lrf | 0.01 / 0.01 | 余弦退火上下限 |
warmup_epochs | 3.0 | 线性升温 |
momentum | 0.937 | AdamW |
weight_decay | 5e-4 | AdamW 可取 0.01 |
mosaic / close_mosaic | 1.0 / 10 | 末期关闭增强 |
patience | 50 | 提前停止 |
最小命令集(Ultralytics CLI)
# 训练
yolo detect train data=tsr.yaml model=yolov12n-p2.yaml imgsz=640 epochs=120 batch=16 \lr0=0.01 lrf=0.01 warmup_epochs=3 mosaic=1.0 close_mosaic=10 patience=50 amp=True# 验证与可视化(PR/混淆矩阵等)
yolo detect val model=runs/detect/train/weights/best.pt data=tsr.yaml plots=True# 推理(图片/视频/摄像头)
yolo detect predict model=... source=demo.mp4 conf=0.25 iou=0.7 stream=True
要求更低时延:切换 YOLOv10 + dual-assign,导出“一对一”头并关闭 NMS;要求更高精度:启用 蒸馏(Teacher: y12-l → Student: y12-n) 与更高输入分辨率。
5. 实验与结果分析
本实验在同一交通标志数据集与标注规范下,对 YOLO 家族八个小型规模模型(v5su、v6s、v7、v8s、v9s、v10s、v11s、v12s)进行统一训练与评测。训练轮次约 120(见“metrics/…”训练曲线),输入分辨率 640,采用 Mosaic/混合增强、余弦退火学习率与早停,验证集上以 batch=1 进行推理测速。评测指标包含 Precision/Recall、F1、mAP50、mAP50-95,并额外记录预处理/推理/后处理分解时延及端到端总时延(Total)。测试硬件为 NVIDIA GeForce RTX 3070 Laptop GPU(8GB)。从用户给出的 PR 曲线与训练曲线可见,各模型在前 10–20 轮迅速逼近最优,随后进入微幅震荡的稳定期,损失函数单调下降,验证 mAP 持续爬升并趋于收敛,说明训练设置稳定可靠(如下曲线图所示)。
n 系列(nano/轻量级)和 s 系列(small/小型)是 YOLO 家族基于模型容量—速度—精度三角权衡的命名约定:n 系列(Nano)为极致轻量设计,参数与 FLOPs 低,推理延迟小,适合算力受限或对实时性要求高的边缘/嵌入式部署;s 系列(Small)容量更大、表征更强,通常精度更高但推理开销也更大,适合对检测精度要求高且算力允许的场景。下面是N系列模型的结果对比表格:
Model | Params (M) | FLOPs (G) | PreTime (ms) | InfTime (ms) | PostTime (ms) | Precision | Recall | F1 Score | mAP50 | mAP50-95 |
---|---|---|---|---|---|---|---|---|---|---|
YOLOv5nu | 2.6 | 7.7 | 1.90 | 7.73 | 1.31 | 0.978688855 | 0.970119461 | 0.974385317 | 0.989520816 | 0.903341351 |
YOLOv6n | 4.3 | 11.1 | 2.17 | 6.78 | 1.39 | 0.968671390 | 0.967081586 | 0.967875835 | 0.989328220 | 0.904255922 |
YOLOv7-tiny | 6.2 | 13.8 | 2.28 | 14.74 | 4.06 | 0.975107003 | 0.976140036 | 0.975623246 | 0.991949949 | 0.878506429 |
YOLOv8n | 3.2 | 8.7 | 1.95 | 6.83 | 1.39 | 0.986240627 | 0.972693776 | 0.979420361 | 0.991290667 | 0.907174059 |
YOLOv9t | 2.0 | 7.7 | 1.87 | 16.51 | 1.29 | 0.977031042 | 0.980420064 | 0.978722619 | 0.991294892 | 0.911274991 |
YOLOv10n | 2.3 | 6.7 | 2.08 | 11.24 | 0.63 | 0.973697385 | 0.973945282 | 0.973821317 | 0.990747921 | 0.913034452 |
YOLOv11n | 2.6 | 6.5 | 2.11 | 9.44 | 1.42 | 0.991397492 | 0.974268653 | 0.982758442 | 0.991479013 | 0.908652761 |
YOLOv12n | 2.6 | 6.5 | 1.91 | 12.47 | 1.37 | 0.979669950 | 0.975136062 | 0.977397748 | 0.992271712 | 0.905399053 |
(用时计算测试平台:NVIDIA GeForce RTX 3070 Laptop GPU, 8192MiB)
总体来看,n 系列追求轻量与低延迟,在参数与 FLOPs 很小的前提下仍能保持高精度(Precision/F1 与较大模型差距极小),适合对实时性要求高且算力受限的部署(推荐 YOLOv6n / YOLOv8n / YOLOv10n);而 s 系列通过增大模型容量换取更高的 mAP 与稳定性,在对精度有更高要求且允许更多推理延迟的场景中更合适(如 YOLOv9s、YOLOv8s)。选择时基于“实时性优先 → 选 n 系;精度优先且算力允许 → 选 s 系”。
下面是S系列的汇总结果如下(Total=Pre+Inf+Post;FPS=1000/Total):
Model | Params (M) | FLOPs (G) | PreTime (ms) | InfTime (ms) | PostTime (ms) | Total (ms) | FPS | Precision | Recall | F1 | mAP50 | mAP50-95 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
YOLOv5su | 9.1 | 24.0 | 2.28 | 8.45 | 1.51 | 12.24 | 81.70 | 0.985 | 0.974 | 0.980 | 0.992 | 0.914 |
YOLOv6s | 17.2 | 44.2 | 2.22 | 8.59 | 1.45 | 12.26 | 81.57 | 0.978 | 0.965 | 0.972 | 0.989 | 0.909 |
YOLOv7 | 36.9 | 104.7 | 2.44 | 23.62 | 3.46 | 29.52 | 33.88 | 0.987 | 0.990 | 0.989 | 0.996 | 0.895 |
YOLOv8s | 11.2 | 28.6 | 2.31 | 7.66 | 1.42 | 11.39 | 87.80 | 0.983 | 0.978 | 0.981 | 0.993 | 0.915 |
YOLOv9s | 7.2 | 26.7 | 2.12 | 18.66 | 1.39 | 22.17 | 45.11 | 0.979 | 0.985 | 0.982 | 0.994 | 0.921 |
YOLOv10s | 7.2 | 21.6 | 2.21 | 11.38 | 0.60 | 14.19 | 70.47 | 0.978 | 0.975 | 0.977 | 0.989 | 0.917 |
YOLOv11s | 9.4 | 21.5 | 2.37 | 9.74 | 1.36 | 13.47 | 74.24 | 0.979 | 0.982 | 0.981 | 0.991 | 0.918 |
YOLOv12s | 9.3 | 21.4 | 2.09 | 13.23 | 1.42 | 16.74 | 59.74 | 0.984 | 0.979 | 0.981 | 0.992 | 0.913 |
总体表现如下图所示的双柱图与延迟柱状图也直观体现:
- 精度端:mAP50 指标几乎“顶天花板”(0.989–0.996),其中 YOLOv7 以 0.996 居首,F1=0.989 同样领先;但更严格的 mAP50-95 体现定位与尺度鲁棒性,YOLOv9s 以 0.921 最优,YOLOv11s/YOLOv10s 分别以 0.918/0.917 紧随其后,说明新一代结构在更严苛 IoU 阈值下泛化更强。配合 PR 曲线可见,在高召回端(R≈1.0)不同模型的精度差异被放大,v12 在极高召回区略有回落,而 v9s/v11s 曲线更“方正”,维持更高的 Precision。
- 速度端:端到端时延方面,YOLOv8s 最快,仅 11.39ms(≈88 FPS);YOLOv5su/v6s 约 12.2ms(≈82 FPS)也达到了实时;YOLOv7 受 36.9M 参数与 104.7 GFLOPs 影响,总时延 29.52ms(≈34 FPS),更适合离线或边缘算力充裕场景。值得注意的是,YOLOv10s/YOLOv11s/YOLOv12s 虽然参数与 FLOPs 最低(≈21–22G),但因为后处理/结构差异,其端到端速度并非绝对最快;其中 YOLOv11s 在精度与速度间取得均衡(13.47ms / 74 FPS,mAP50-95=0.918)。
- 效率视角:以 mAP50-95/GFLOPs 衡量“精度/算力效率”,YOLOv10s/YOLOv11s/YOLOv12s 领先;若以 mAP50-95/Params 衡量“精度/参数效率”,YOLOv9s 最优。这与训练曲线中 v9s/v11s 的快速收敛一致,表明其结构在小目标/多尺度交通标志场景下更易学习到判别性特征。
- 收敛与稳定性:mAP50(B)随 Epoch 的曲线显示,各模型在 10 轮左右即越过 0.97,此后缓慢逼近 0.99;训练/验证损失平滑下降且无明显过拟合回弹,说明增强与正则策略有效。PR 曲线整体呈现“靠右上”的分布,且不同模型间的差距集中在高召回尾段,符合交通标志类别边界清晰、背景噪声受控的任务属性。
任务建议:
若以“极限精度”优先,且不敏感于时延,YOLOv7 在 mAP50 与 F1 上仍有微弱优势;若追求“严格 IoU 与泛化”,YOLOv9s 更佳;若强调“实时与端到端吞吐”,YOLOv8s 是首选;而在“精度/算力均衡”与工程落地方面,YOLOv11s(或结合本系统的 YOLOv12n/s 权重)是较为稳妥的默认方案。老思在实际部署中会根据平台算力与场景分布,优先选择 v8s/v11s,并在对超高精度有要求的路口或高速场景切换至 v9s 离线复核。
6. 系统设计与实现
6.1 系统设计思路
系统围绕“控制层—界面层—处理层”的解耦架构展开:MainWindow 作为中枢调度,统一管理状态机(工程打开/推理就绪/运行/暂停/导出等)与 Qt 信号槽路由;Ui_MainWindow 仅承载交互元素与轻量 UI 逻辑;Detector 负责模型装载、预处理、推理与后处理的全链路实现。推理侧以 YOLOv12n 为默认主模型,同时通过统一的 Runtime 适配器加载 YOLOv5–YOLOv12 的 ONNX/NCNN/TensorRT 权重,接口层暴露 predict(frame, conf, iou, classes, device) 等方法,确保在不变更上层代码的前提下切换引擎与权重。数据通路方面,输入源抽象为 Reader(Camera/Video/Image/Folder),在 I/O 线程中异步拉流并与处理线程间通过有界队列解耦,帧元数据(时间戳、源 ID、播放位置)一路跟随,避免 UI 阻塞;耗时计算以三段统计(Pre/Inf/Post)注入到状态面板与日志模块,方便性能定位与复现实验。系统框图如下图所示:
处理层对图像数据进行模块化编排:预处理阶段统一 Resize+Pad 到 640 的方形输入,支持模组化的数据增强(Mosaic、HSV 抖动、Letterbox),并保留变换矩阵以便坐标反投影;推理阶段对不同 YOLO 族进行算子对齐,确保输出张量布局一致;后处理阶段采用 NMS/DIoU-NMS,同时提供类别映射、热力图生成、可选瓷砖式大图/多尺度推理;统计模块计算 per-class Precision/Recall/F1 及整体 mAP@{50,50–95} 并绘制 PR 曲线、阈值-指标曲线,结果通过信号驱动界面更新。为了兼顾实时性与稳定性,系统对视频与摄像头源启用双缓冲与丢帧保护,支持“定帧取样/时间窗口合并”策略减少 UI 抖动;导出流程以任务队列串行写盘,防止 I/O 抢占推理。处理层的流程图如下图所示:
图注:系统从初始化到多源输入,完成预处理、推理与界面联动,并通过交互形成闭环。
工程化方面,参数与主题等用户偏好写入 SQLite(每用户独立命名空间),重要操作与异常通过结构化日志记录;模型与数据集采用清单式管理(Model Zoo 与 Dataset Registry),支持一键切换、校验与回滚;UI 端提供阈值滑块、IOU/类别筛选、批量导出与统计汇总,能在“精度优先/速度优先/均衡”三种预设中快速切换。综上,这一设计既保障了高吞吐低延迟的实时显示,又为后续算法升级与多源接入预留了充分的可扩展性。
6.2 登录与账户管理
登录与账户管理以“最小摩擦、强一致、可追溯”为设计原则:系统启动即进入登录界面,已有用户通过账号密码完成本地盐化哈希校验后,加载其私有的可视化主题、推理阈值、最近项目与导出偏好,无缝跳转到主检测流程;新用户注册经表单校验与重复性检查后,信息写入 SQLite 并立即回流至会话,形成“注册—登录—配置加载”的顺滑链路;在主界面期间若触发资料修改(头像、密码),系统以事务化更新持久层并在内存态热更新,确保界面与推理参数不失配;
当用户选择注销或切换账号,当前检测结果与操作上下文会被持久化(包括最近一次推理参数、统计报表与导出记录),随后回到登录界面等待下一次身份载入。通过这一闭环,应用实现了个性化空间的长期保持、检测结果与设置的可追踪沉淀,以及与主检测流程的轻耦合衔接,在多人共用与多场景迁移时保持一致的用户体验与工程可维护性。
如上图所示,在 Qt Designer 中优先使用布局(Layout)保证自适应,关键控件命名(objectName
)便于代码绑定;遇到自定义控件用“Promote to …”替代手写;把图标/样式打包到 .qrc
并用 pyside6-rcc
编译;.ui
可运行时用 QUiLoader
动态加载或用 pyside6-uic
转为 .py
静态集成,两者权衡迭代与调试;严格把界面与业务逻辑分离,耗时操作放后台线程通过信号回传以防界面卡顿;最后用 QSS 统一样式,设置合理的 tabOrder
与无障碍属性以提升可用性。
7. 下载链接
若您想获得博文中涉及的实现完整全部资源文件(包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:
完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见Gitee的简介处给出:➷➷➷
Gitee项目下载:https://gitee.com/sixuwuxian/TrafficSignRecognition
在文件夹下的资源显示如下,下面的链接中也给出了Python的离线依赖包,读者可在正确安装Anaconda和Pycharm软件后,复制离线依赖包至项目目录下进行安装,另外有详细安装教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
离线依赖安装教程:https://www.bilibili.com/video/BV1hv421C7g8/
离线依赖库下载链接:https://pan.baidu.com/s/1y6vqa9CtRmC72SQYPh1ZCg?pwd=33z5 (提取码:33z5)
功能效果展示视频:YOLOv5至YOLOv12升级:交通标志识别系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8. 参考文献
[1] Stallkamp J, Schlipsing M, Salmen J, Igel C. The German Traffic Sign Recognition Benchmark[C]//IJCNN. 2011.
[2] Zhu Z, Liang D, Zhang S, Huang X, Li B, Hu S. Traffic-Sign Detection and Classification in the Wild[C]//CVPR. 2016.
[3] Ertler C, Mislej J, Ollmann T, Porzi L, Neuhold G, Kuang Y. The Mapillary Traffic Sign Dataset for Detection and Classification on a Global Scale[C]//ECCV. 2020.
[4] Zhang J, Zou X, Kuang L-D, et al. CCTSDB 2021: A More Comprehensive Traffic Sign Detection Benchmark[J]. Human-centric Computing and Information Sciences, 2022, 12(23).
[5] Redmon J, Divvala S, Girshick R, Farhadi A. You Only Look Once: Unified, Real-Time Object Detection[C]//CVPR. 2016: 779-788.
[6] Redmon J, Farhadi A. YOLOv3: An Incremental Improvement[EB/OL]. 2018. arXiv:1804.02767.
[7] Bochkovskiy A, Wang C-Y, Liao H-Y M. YOLOv4: Optimal Speed and Accuracy of Object Detection[EB/OL]. 2020. arXiv:2004.10934.
[8] Ultralytics. Comprehensive Guide to Ultralytics YOLOv5[EB/OL]. 2023-.
[9] Li C, Li L, Jiang H, et al. YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications[EB/OL]. 2022. arXiv:2209.02976.
[10] Wang C-Y, Bochkovskiy A, Liao H-Y M. YOLOv7: Trainable bag-of-freebies sets new SOTA for real-time detectors[EB/OL]. 2022. arXiv:2207.02696.
[11] Ultralytics. Explore Ultralytics YOLOv8[EB/OL]. 2023-.
[12] Wang C-Y, et al. YOLOv9: Learning What You Want to Learn[EB/OL]. 2024. arXiv:2402.13616.
[13] Wang A, Chen H, Liu L, et al. YOLOv10: Real-Time End-to-End Object Detection[EB/OL]. 2024. arXiv:2405.14458.
[14] Ultralytics. YOLO11 Documentation[EB/OL]. 2024-.
[15] Ultralytics. YOLO12: Attention-Centric Object Detection[EB/OL]. 2025-.
[16] Li J, et al. DSF-YOLO for robust multiscale traffic sign detection under adverse weather conditions[J]. Scientific Reports, 2025.
[17] He Y, et al. NTS-YOLO: A Nocturnal Traffic Sign Detection Method Based on Improved YOLOv5[J]. Applied Sciences, 2025, 15(3):1578.
[18] Kaleybar J M, Khaloo H, Naghipour A. Efficient Vision Transformer for Accurate Traffic Sign Detection[EB/OL]. 2023. arXiv:2311.01429.