摘要:交通标志识别在智能驾驶与道路安全中扮演关键角色,本文给出一套基于 YOLOv5 至 YOLOv12 的交通标志识别系统,支持限速/禁令/警告等多类目标的实时检测与分类;以 PySide6 实现桌面 UI,适配图片、视频与摄像头输入,内置热力图、类别统计、Conf/IOU 调节与结果可视化;提供 SQLite 数据库用户管理与结果持久化;随文附代码与数据集,并对各模型的 mAP、F1、PR 与训练曲线进行系统对比分析,便于复现与工程落地。


YOLOv5至YOLOv12全集:交通标志识别系统的设计与实现


➷点击跳转至文末所有涉及的完整代码文件下载页☇


1. 前言综述

交通标志识别(Traffic Sign Recognition, TSR)是智能网联汽车与高级驾驶辅助系统(ADAS)的基础能力,核心难点在于道路场景中小尺度、密集、遮挡、强反光与光照/天气剧变条件下依然要保持实时且稳健的检测与分类。早期基准 GTSRB 以分类任务出发,揭示了类内形变与类间相似带来的识别挑战[1]。随后 TT100KMTSD 等大规模、多地域数据集将研究推向更贴近实景的长尾与跨域问题,促使方法从单纯分类走向端到端检测与分层识别[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)=α(1pt)γ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=1IoU+c2ρ2(b,b)+αv,v=π24(arctanhwarctanhw)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+(1ti)log(1qi)],  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=True
  box: dfl+ciou
  weights: {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 体现定位与尺度鲁棒性,YOLOv9s0.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

功能效果展示视频: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.

Logo

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务

更多推荐