摘要:PCB 板缺陷检测对工业质检的效率与一致性至关重要。本文围绕 YOLOv5 至 YOLOv12 的升级路线,讲解如何构建可落地的 PCB 缺陷检测系统,并提供完整代码、可运行界面与数据集工程。系统支持图片、视频与摄像头检测,输出缺陷类别、置信度、标注框与统计结果,可调 Conf/IoU 阈值并支持结果保存与导出;界面采用 PySide6 实现多模型权重导入与一键切换,结合 SQLite 完成登录注册与历史记录持久化,便于多用户管理与结果追溯。算法部分在统一数据集上对 YOLOv5---YOLOv12 多模型进行对比评测,给出 mAP、F1、PR 曲线与可视化分析,讨论小缺陷与复杂背景下的检测表现与优化方向。
讲解视频地址 :https://www.bilibili.com/video/BV1heQuBkEWR/
文章目录
- [1. 前言综述](#1. 前言综述)
- [2. 数据集介绍](#2. 数据集介绍)
- [3. 模型设计与实现](#3. 模型设计与实现)
- [4. 训练策略与模型优化](#4. 训练策略与模型优化)
- [5. 实验与结果分析](#5. 实验与结果分析)
-
- [5.1 实验设置与对比基线](#5.1 实验设置与对比基线)
- [5.2 度量指标](#5.2 度量指标)
- [5.3 结果分析与讨论](#5.3 结果分析与讨论)
- [6. 系统设计与实现](#6. 系统设计与实现)
-
- [6.1 系统设计思路](#6.1 系统设计思路)
- [6.2 登录与账户管理](#6.2 登录与账户管理)
- [7. 下载链接](#7. 下载链接)
- [8. 参考文献(GB/T 7714)](#8. 参考文献(GB/T 7714))
1. 前言综述
印制电路板(PCB)作为电子产品中承载互连与结构支撑的关键载体,其表面与线路缺陷(如开路、短路、毛刺、缺口、异物等)会在下游贴装与电测环节被放大,进而引发批量返工与可靠性风险,因此在制造端构建高一致性、高吞吐的缺陷检测能力已成为工业质检的核心诉求之一1。随着PCB走向高密度互连与更小线宽线距,缺陷尺度进一步逼近成像噪声与纹理起伏,传统人工目检与半自动复核在稳定性、效率与可追溯性方面的短板愈发突出,这一趋势在国内机器视觉检测综述研究中也被系统归纳为"高精度与实时性并重"的长期矛盾2。(ScienceDirect)
从方法谱系看,早期AOI软件多依赖模板比对、图像差分与规则化特征工程来定位异常,但这类方法对配准误差、光照漂移与工艺变化敏感,往往需要频繁调参才能覆盖多样化缺陷形态3。围绕这一痛点,公开数据集与端到端学习范式开始推动研究范式转向,其中DeepPCB以"无缺陷模板图---待测图"成对输入并提供6类常见缺陷标注,为对齐场景下的检测与评测提供了可复用基准3。(arXiv) 近年更强调真实产线采集与更细粒度类别覆盖的数据资源也开始出现,例如Scientific Data发布的DsPCBSD+将缺陷划分为9类并给出万级图像与缺陷框标注,为跨模型对比与泛化讨论提供了更贴近工程的数据支撑4。(Nature)
表1 PCB 缺陷检测方向代表性研究对比
| 序号 | 代表性工作 | 方法范式 | 数据集/场景 | 关键改进点(摘要式) | 工程启示与局限 |
|---|---|---|---|---|---|
| 1 | PCB 视觉缺陷检测综述(2025)1 | 综述 | 多数据源汇总 | 归纳图像处理、机器学习、深度学习与混合方法谱系 | 便于把"离线指标"与"产线约束"统一讨论,但不提供可直接复用的实现细节 |
| 2 | 国内综述(2025)2 | 综述 | 国内研究与工程实践 | 总结 AOI 工程痛点与深度学习落地难点 | 对国内应用问题的归纳更贴近工程,但对跨数据集可复现实验仍依赖后续工作补齐 |
| 3 | DeepPCB(2019)3 | 模板对齐 + 深度检测 | 1500 对模板/待测图,6 类缺陷 | 成对输入、分组金字塔池化以覆盖多尺度缺陷 | 对"有标准板/可配准"的产线非常友好,但流程对配准质量敏感 |
| 4 | 合成 PCB 数据集与参考法(2019)[4](https://link.springer.com/article/10.1007/s11227-024-06739-w "Lightweight improved YOLOv5 algorithm for PCB defect detection | The Journal of Supercomputing | Springer Nature Link") | 数据集 + 参考定位/分类 | 1386 图,6 类缺陷 |
| 5 | DsPCBSD+(2024)5 | 大规模真实标注数据集 | 10259 图,20276 缺陷框,9 类 | 更大规模与更细类划分,支撑泛化评测 | 更接近真实分布,但类别不均衡与跨设备差异仍要求数据治理与采集策略配合 |
| 6 | YOLO 端到端检测起点(2016)6 | 一阶段检测 | 通用基准 | 将检测重写为单次回归推理,强调实时性 | 为 AOI 在线推理奠定范式,但小目标与前景稀疏场景需结构/损失进一步适配 |
| 7 | 类别不均衡缓解(2017)[7](https://link.springer.com/chapter/10.1007/978-3-031-72751-1_1 "YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information | Springer Nature Link") | 损失函数 | 通用基准 | 通过 Focal Loss 抑制易分类负样本主导梯度 |
| 8 | 改进 YOLOv5 的精度增强(2023)9 | YOLO 改造 | PCB 缺陷任务 | 增加 P2 检测头、改造特征融合并引入注意力/Transformer | 对小缺陷召回有效,但结构复杂化后要重新评估时延与显存占用 |
| 9 | YOLOv5-TGs(2023)[10] | 轻量化 + 注意力/Transformer | 公共 PCB 数据集 | Swin Transformer + Ghost 卷积 + 全局注意力 + SIoU | 体现"轻量化与表征增强并行"的工程思路,但不同硬件上的加速收益需实测验证 |
| 10 | TRSBi-YOLO(2025)[11] | YOLO 改造(Transformer 化) | PCB 缺陷检测 | 引入 Transformer 相关模块与轻量注意力并重构融合路径 | 在精度与速度间追求折中,但模块组合的可解释性与跨域稳定性仍是风险点 |
| 11 | Lite-DETR(2025)[12] | 轻量 Transformer 检测 | PCB 微小缺陷 | 轻量主干 + 特征增强 + 跨尺度融合以适配 tiny defects | 对极小缺陷更有潜力,但端侧部署复杂度与算子支持度需考虑 |
| 12 | SGT-YOLO(2025)[13] | 轻量 YOLO | HRIPCB 等 | 以大幅压缩参数/算力为目标,同时提升 mAP | 适合边缘端或多相机并行,但对训练数据质量与标注一致性更敏感 |
| 13 | YOLOv10(2024)[14] | 端到端、NMS-free | 通用基准 | 以一致性双分配推进 NMS-free,降低后处理与延迟 | 对系统集成友好,适合做"低延迟推理链路"的工程底座 |
| 14 | YOLOv12(2025)[15] | 注意力中心化 YOLO | 通用基准 | 强化注意力建模并保持实时延迟 | 对"纹理复杂+小缺陷"场景具有吸引力,但注意力算子在不同部署栈上的性能要复核 |
在深度学习检测框架层面,两阶段检测器以候选区域生成与精细分类回归获得较高上限,但其推理链路较长、算力与时延开销较大,典型代表如Faster R-CNN奠定了现代两阶段检测的基本范式5。与之对应,YOLO将检测建模为单阶段的端到端回归,在速度与部署友好性上具备天然优势,因此更容易进入实时质检与边缘端推理场景6。面向PCB缺陷"正负样本极度不均衡、微小目标占比高"的训练分布,Focal Loss通过下调易分类样本的损失权重来缓解类别不均衡对优化的主导效应,为后续大量密集检测与工业小目标任务提供了可迁移的损失函数思路7。
进一步沿着"YOLOv5至YOLOv12升级路线"观察,工业界与学术界的改进重点逐渐从单一结构调参转向更系统的结构设计与训练推理一体化优化,例如YOLOv6面向工业应用对网络结构与训练策略做了更强的工程化整合8。在结构可重参数化与训练技巧层面,YOLOv7通过可训练的bag-of-freebies与结构设计在实时检测精度边界上持续推进,并成为后续一系列改进工作的参照系9。面向PCB缺陷这一典型"小目标+复杂背景"任务,已有研究尝试在YOLOv5框架内引入轻量化卷积与特征融合机制以兼顾精度与边缘部署效率[10]。(Springer) 国内也出现了围绕小缺陷表征增强与多尺度融合的改造方案,如Multi-CR YOLO通过改造主干与融合模块提升小目标缺陷的特征表达与实时检测能力[11]。(jemi.etmchina.com) 在YOLOv8系的工程应用研究中,轻量化特征融合、改进卷积与边界框损失的组合也被用于在降低参数量的同时提高PCB小缺陷检测精度[12]。(jemi.etmchina.com) 与此同时,YOLOv9在ECCV 2024提出可编程梯度信息与GELAN结构以改善信息流与参数利用率,体现出"训练信号设计---结构设计"协同演进的趋势[13]。(Springer) 为进一步降低部署链路的后处理开销,YOLOv10在NeurIPS 2024提出面向端到端与NMS-free的整体效率驱动设计,使"延迟---精度"权衡更贴近实际系统约束[14]。(OpenReview) 最新的YOLOv12则强调以注意力为核心的实时检测框架,试图在保持实时性的同时释放注意力机制的建模收益,为复杂纹理背景下的缺陷判别提供新的结构选择[15]。(arXiv)
将上述研究落到PCB板缺陷检测系统的工程实现,仍面临若干共性难题:其一,缺陷往往呈现"尺度微小、形态细碎、与铜箔/丝印纹理相似"的外观特征,导致特征金字塔与检测头对低层细节的利用效率成为性能上限的关键;其二,真实产线存在光照反射、污染物遮挡、相机视角与对焦差异等域偏移因素,模型在跨批次、跨设备场景下的稳健性需要通过数据治理与训练策略共同保障;其三,质检系统不仅要追求mAP等离线指标,更要在端侧延迟、吞吐、误报成本与结果可追溯之间取得可解释的工程平衡,这要求算法评测与系统设计同步闭环。
基于此,老思在本文(博客)中的主要贡献可以概括为:围绕PCB缺陷检测任务完成YOLOv5至YOLOv12多版本模型的统一训练与对比评测,并给出可复现实验指标与可视化分析;面向任务构建并整理可直接训练的缺陷数据集工程(标注、预处理与划分流程完备);以PySide6实现可运行的检测界面,支持图片/视频/摄像头输入、多模型权重导入与一键切换,并结合SQLite完成登录注册与历史记录持久化,最终提供可直接落地的"代码+界面+数据集"项目资源。
主要功能演示:
(1)启动与登录:系统启动后先进入登录页,支持注册、登录与密码校验;登录成功后加载该用户的历史检测记录与个性化配置(如默认阈值、主题样式),并进入主界面。老思在实现上将账户信息与配置存入 SQLite,保证跨次启动的一致性与可追溯性。

(2)多源输入与实时检测(摄像头/视频/图片/文件夹):主界面提供四类输入源切换,图片与文件夹模式支持批量推理与缺陷统计汇总;视频与摄像头模式按帧推理并实时刷新显示区,叠加缺陷框、类别与置信度,同时输出帧率与当前统计。阈值侧提供 Conf/IoU 在线调节,便于在"漏检---误检"之间快速定位更合适的工作点。

(3)模型选择与对比演示:检测模块支持导入并切换 YOLOv5--YOLOv12 各版本权重,界面侧以统一入口完成模型加载、推理与后处理;对比演示时可在同一输入上快速切换模型,观察检测框稳定性、置信度分布与误检类型差异,并将不同模型的结果按时间戳写入数据库,便于后续复核与报告导出。

(4)主题修改功能:系统提供主题切换与外观自定义(如明暗模式、主色调、背景图、图标与字体大小等),修改后即时作用于主界面与结果视图;同时将主题参数持久化到 SQLite 的用户配置表,实现"每个账号一套外观",并与检测流程解耦,避免影响推理链路的实时性。

2. 数据集介绍
本项目面向 PCB 板典型外观缺陷的目标检测任务构建数据集,整体包含 9,961 张 已标注图像,覆盖 漏孔(missing_hole) 、鼠牙洞(mouse_bite) 、开路(open_circuit) 、短路(short) 、毛刺(spur) 与 杂铜(spurious_copper) 共 6 类缺陷。数据在工程组织上遵循 YOLO 系列训练的通用约定:图像与标注一一对应,标注采用矩形框并以归一化坐标写入 TXT 文件,便于在 YOLOv5--YOLOv12 间直接复用同一套数据与划分策略;老思在清洗阶段主要处理了重复样本、明显失焦样本与标注越界等问题,并保持类别命名在训练、推理与界面展示中的一致性(英文标签用于模型训练,中文标签用于系统端显示)。

python
Chinese_name = {'missing_hole': "漏孔", 'mouse_bite': "鼠牙洞", 'open_circuit': "开路", 'short': "短路", 'spur': "毛刺", 'spurious_copper': "杂铜"}
从分布特征看,各类别实例数量整体接近,属于相对均衡的缺陷数据配置,有利于避免训练过程被单一大类主导;同时,标注框的宽高主要集中在较小范围内并呈现长尾分布,反映出 PCB 缺陷"目标尺度小、形态细碎"的典型属性,这类数据往往更依赖多尺度特征表达与更稳定的正负样本分配策略。在划分上,数据集包含 6,975 张训练集(约 70%) 、**1,989 张验证集(约 20%)**与 997 张测试集(约 10%) ,验证集用于监控模型的泛化与早停决策,测试集用于最终对比不同 YOLO 版本在同一数据分布下的客观性能差异。

📊 数据集规格说明 (Dataset Specification)
| 维度 | 参数项 | 详细数据 |
|---|---|---|
| 基础信息 | 标注软件 | LabelImg |
| 标注格式 | YOLO TXT (Normalized) | |
| 数量统计 | 训练集 (Train) | 6,975 张 (≈70.02%) |
| 验证集 (Val) | 1,989 张 (≈19.97%) | |
| 测试集 (Test) | 997 张 (≈10.01%) | |
| 总计 (Total) | 9,961 张 | |
| 类别清单 | Class ID: 0 | missing_hole(漏孔) |
| Class ID: 1 | mouse_bite(鼠牙洞) |
|
| Class ID: 2 | open_circuit(开路) |
|
| Class ID: 3 | short(短路) |
|
| Class ID: 4 | spur(毛刺) |
|
| Class ID: 5 | spurious_copper(杂铜) |
|
| 图像规格 | 输入尺寸 | 640 * 640(训练阶段统一缩放/letterbox) |
| 数据来源 | 实拍 PCB 板图像(清洗后整理为工程数据集) |
3. 模型设计与实现
面向 PCB 板缺陷检测这一类"目标尺度小、背景纹理强、类别间外观差异细微"的工业场景,老思在模型侧的核心诉求并不是单纯追求更大的骨干网络,而是让特征表达在细粒度缺陷边缘与局部几何上更稳定,同时保证推理端具备可落地的实时性。因此,本系统将 YOLO 系列作为统一检测框架:默认以 YOLOv12n 作为主模型(兼顾速度与精度),并在界面层支持导入 YOLOv5---YOLOv12 的不同权重一键切换,用于同一数据集上的对照评测与工程部署取舍。YOLOv12 在 Ultralytics 体系中被定义为注意力主导的实时检测模型,其设计强调以 Area Attention 扩大有效感受野、以 R-ELAN 改善特征聚合与优化稳定性,并可选配 FlashAttention 以降低注意力的访存开销。 (Ultralytics Docs)

从"骨干---颈部---检测头"的结构视角看,YOLO 的骨干网络本质上承担了传统分类网络(如 ResNet、MobileNet、EfficientNet)在下游检测任务中的特征提取职责:低层侧重边缘/纹理,高层侧重语义与形状。区别在于,YOLO 系列往往通过跨阶段部分连接(CSP)与高效特征聚合模块减少冗余计算,使其在实时检测中更具性价比。以 YOLOv5 为例,其骨干采用 CSPDarknet 思路,颈部结合 SPPF 与 PAN 进行多尺度特征融合,检测头输出多尺度预测以覆盖不同目标尺度。 (Ultralytics Docs) 对 PCB 缺陷而言,多尺度融合并非"可选项",而是直接决定了对微小缺陷(如毛刺、漏孔边缘异常)的召回能力:颈部网络通过自顶向下与自底向上的路径聚合,将高层语义与低层细节对齐,减少"只看得见背景纹理、看不清缺陷边界"的问题。
在 YOLOv5---YOLOv12 的升级脉络中,检测头与匹配策略的演进同样关键。较早期的 YOLOv5 仍保留了更偏经典的一阶段检测范式;而 YOLOv8 在 Ultralytics 文档中被描述为采用 anchor-free 的 split head ,将分类与回归解耦,以提升训练与推理的稳定性。 (Ultralytics Docs) YOLOv10 则进一步针对端到端推理效率提出 one-to-many(训练)与 one-to-one(推理)双头并行 的框架,用一致的匹配度量把两种监督对齐,从而实现 NMS-free 的推理形态。 (Ultralytics Docs) 对 PCB 场景而言,这类"监督更一致、后处理更简化"的设计,往往能缓解密集小目标下 NMS 误抑制导致的漏检风险,同时也便于在系统端做低延迟部署。
任务建模方面,本系统采用标准目标检测三要素输出:类别置信度、目标存在性(或等价质量分数)、边界框回归。综合损失可以写为
L = λ box L ∗ box + λ ∗ cls L ∗ cls + λ ∗ obj L ∗ obj . \mathcal{L}=\lambda_{\text{box}}\mathcal{L}*{\text{box}}+\lambda*{\text{cls}}\mathcal{L}*{\text{cls}}+\lambda*{\text{obj}}\mathcal{L}*{\text{obj}}. L=λboxL∗box+λ∗clsL∗cls+λ∗objL∗obj.
其中, L ∗ cls \mathcal{L}*{\text{cls}} L∗cls 与 L ∗ obj \mathcal{L}*{\text{obj}} L∗obj 通常采用二元交叉熵或其变体以适应类别不均衡;边界框回归部分在 Ultralytics 体系中普遍以 IoU 系列损失为核心,并常见采用 CIoU 来同时约束重叠面积、中心点距离与宽高比一致性,其形式可概括为
L ∗ CIoU = 1 − IoU + ρ 2 ( b , b ∗ ) c 2 + α v , \mathcal{L}*{\text{CIoU}}=1-\text{IoU}+\frac{\rho^2(\mathbf{b},\mathbf{b}^*)}{c^2}+\alpha v, L∗CIoU=1−IoU+c2ρ2(b,b∗)+αv,
其中 ρ \rho ρ 为预测框与真值框中心距离, c c c 为最小外接框对角线长度, v v v 描述宽高比差异。 (arXiv) 对于更偏现代的 anchor-free 检测头,回归往往不直接预测 ( x , y , w , h ) (x,y,w,h) (x,y,w,h) 的单点值,而是预测离散分布并用 Distribution Focal Loss(DFL) 做监督,以提升定位精度与可学习的不确定性表达;这一思想可追溯到 Generalized Focal Loss 对"分布式边界框"表征的讨论。 (arXiv) 在 PCB 缺陷中,许多缺陷框本身尺度很小、边界易受反光与焊盘纹理干扰,DFL 这类"分布式回归"的收益通常体现在定位抖动减小、mAP@0.5:0.95 更稳定。
实现层面,博主建议把"训练/验证/导出"和"GUI 推理"解耦:算法侧统一使用 Ultralytics 的 YOLO() 接口加载 *.pt 权重或 *.yaml 结构文件,系统侧在 Detector 类中封装输入源(图片/视频/摄像头)、预处理(letterbox 到 640×640)、推理与后处理(阈值过滤、类别映射、可视化叠框与统计)。YOLOv12 的 Python 用法在官方文档中给出了标准范式,例如 YOLO("yolo12n.pt") 直接完成推理与训练入口的统一。 (Ultralytics Docs) 结合你给出的类别中英映射(漏孔、鼠牙洞、开路、短路、毛刺、杂铜),系统在 UI 层对输出进行中文标签渲染,并将置信度、框坐标与时间戳写入 SQLite,保证质检追溯与多用户隔离空间的工程可用性。
4. 训练策略与模型优化
PCB 缺陷检测的训练目标并不止于"把 mAP 做高",更重要的是在真实产线条件下维持稳定的召回与可控的误报。老思在这一项目中采用"预训练迁移 + 逐步增强 + 以验证集为中心的早停与选模"的训练主线:以 COCO 等通用数据上的预训练权重作为初始化,使骨干网络先具备纹理与边缘的通用表征,再在 PCB 六类缺陷数据上进行全量微调,从而加速收敛并降低小数据分布带来的过拟合风险。训练过程中始终以验证集曲线作为调参依据,最终以验证集最优权重(best.pt)作为系统默认推理模型,同时保留 last.pt 便于后续继续训练或做消融对照。
在数据增强上,PCB 缺陷的难点在于"小目标、细长形态与强背景重复纹理",因此增强策略需要"适度扰动、不过度破坏缺陷外观"。具体做法是:训练前期启用 Mosaic 等组合增强以扩大上下文与尺度覆盖,提升模型对多缺陷同框场景的鲁棒性;训练后期按计划关闭 Mosaic(close_mosaic),让模型回到更接近真实成像分布的样本上精修定位与置信度标定。几何增强侧以轻量随机仿射、缩放和平移为主,控制旋转幅度以避免引入不符合产线的极端姿态;光照增强侧适度引入亮度/对比度抖动与轻微模糊,以覆盖反光、曝光差异与轻微失焦。针对缺陷框普遍较小这一特点,训练时保持输入分辨率为 640×640,并在验证阶段固定 letterbox 规则,避免评测时尺度策略漂移导致的指标波动;若后续追求更高的微小缺陷召回,优先考虑提高输入分辨率或采用切片推理(tile inference)而非盲目加深网络。
优化器与学习率策略方面,博主建议优先使用框架的自动优化器选择(optimizer=auto),让其在 SGD/AdamW 等候选中结合 batch 与模型规模给出更稳健的默认值;学习率采用预热(warmup)衔接余弦退火,使初期梯度更平滑、后期收敛更充分。余弦退火可写为
l r ( t ) = l r min + 1 2 ( l r 0 − l r min ) ( 1 + cos ( π t T ) ) , lr(t)=lr_{\min}+\frac{1}{2}\left(lr_0-lr_{\min}\right)\left(1+\cos\left(\pi \frac{t}{T}\right)\right), lr(t)=lrmin+21(lr0−lrmin)(1+cos(πTt)),
其中 T T T 为总训练步数。正则化侧以权重衰减抑制过拟合,并保持 BN 统计在训练/验证阶段一致;推理侧开启 AMP/FP16 以降低显存与延迟,并建议保留 EMA 权重用于导出与部署,以获得更平滑的泛化表现。最后,在"误报成本较高"的质检场景中,阈值并非固定常数:Conf 与 IoU(或 NMS 阈值/一对一匹配阈值)建议依据验证集 PR 曲线与误报样例做联合选择,并在 GUI 中提供在线调节以匹配不同工位的容错需求。
下面给出本项目可复现的一组默认训练配置(GPU 为 RTX 4090),其目标是保证训练稳定性与工程可迁移性,而非对某一次实验做极限调参。
| 名称 | 作用(简述) | 数值 |
|---|---|---|
| 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 |
实现上,老思建议统一用 Ultralytics 的训练入口来管理 YOLOv5--YOLOv12 的实验协议,确保不同模型对比时"数据划分、输入尺寸、增强策略、早停准则与评测口径"保持一致。示例命令如下(以 YOLOv12n 为例,切换模型只需替换权重名或结构配置):
bash
yolo train model=yolo12n.pt data=pcb.yaml imgsz=640 epochs=120 batch=16 device=0 \
optimizer=auto lr0=0.01 lrf=0.01 warmup_epochs=3.0 weight_decay=0.0005 \
mosaic=1.0 close_mosaic=10 patience=50
完成训练后,部署侧通常以"导出加速 + 后处理简化 + 阈值标定"为核心:将 best.pt 导出为 ONNX/TensorRT(FP16 优先),并在系统端复用同一套 letterbox 与尺度策略,保证离线评测与在线推理的一致性;对多模型切换演示,则统一输出字段(类别、置信度、框坐标、时间戳)写入 SQLite,便于对比追溯与误报复核。
5. 实验与结果分析
5.1 实验设置与对比基线
本节在同一 PCB 六类缺陷数据集上对 YOLOv5--YOLOv12 的多版本模型进行统一对比,评测划分采用你给出的 Train/Val/Test = 6975/1989/997 ,输入尺寸固定为 640×640 ,推理侧保持一致的预处理与后处理流程(含置信度阈值过滤与 NMS/端到端输出的等价筛选)。对比对象分为两组:其一是轻量组(n_type),包含 YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12n;其二是中等规模组(s_type),包含 YOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s、YOLOv12s。推理耗时统计来自同一硬件环境(CSV 记录显示为 NVIDIA GeForce RTX 3070 Laptop GPU 8GB ),并拆分为预处理、纯推理与后处理三段时间,便于从系统部署角度讨论"延迟从哪里来"。

5.2 度量指标
检测性能采用精确率(Precision)、召回率(Recall)、F1 与 mAP 两类指标。对单一类别而言,
Precision = T P T P + F P , Recall = T P T P + F N , \text{Precision}=\frac{TP}{TP+FP},\qquad \text{Recall}=\frac{TP}{TP+FN}, Precision=TP+FPTP,Recall=TP+FNTP,
F 1 = 2 ⋅ Precision ⋅ Recall Precision + Recall . F1=\frac{2\cdot \text{Precision}\cdot \text{Recall}}{\text{Precision}+\text{Recall}}. F1=Precision+Recall2⋅Precision⋅Recall.
其中 T P / F P / F N TP/FP/FN TP/FP/FN 分别表示真阳性、假阳性与假阴性。mAP@0.5 与 mAP@0.5:0.95 分别表示在 IoU=0.5 与 IoU 从 0.5 到 0.95(步长 0.05)下的平均精度均值,更能反映定位质量对整体性能的影响。
5.3 结果分析与讨论
首先从阈值敏感性看,F1-Confidence 曲线表明该任务在较宽的置信度区间内具有稳定的性能平台期,整体最优点出现在 Conf≈0.611 时 F1≈0.86 ,各类别曲线形态一致(如下 F1-Confidence Curve 图所示)。这意味着系统默认阈值可直接取 0.60 左右 作为"误报可控且召回不明显下降"的折中点;若产线更强调"宁可多报不可漏报",则应将 Conf 下调并配合复检策略,否则在高召回区域 Precision 会快速下滑(这一趋势在 PR 曲线高召回端的陡降段同样清晰)。

进一步看类别 PR 曲线(如下 Precision-Recall Curve 图所示),各类 mAP 存在可解释的差异:例如 mouse_bite、open_circuit、short 的曲线更靠近右上角,而 spur 相对更弱,通常与"毛刺类目标更细小、边缘更不规则、与铜箔纹理更易混淆"一致;这类差异在工程上往往需要通过更高分辨率训练、P2 级小目标检测头或切片推理来补足,而不是简单堆叠模型规模。

对比 n_type 结果时(如下 PCBback-n_type: F1 & mAP50 Comparison 图所示),整体呈现"多数模型性能非常接近、差异主要体现在极小幅度的 mAP 与延迟侧"的特征。按 mAP@0.5 排序,**YOLOv9t(0.819)**略占优势,而 YOLOv10n 在 **mAP@0.5:0.95(0.505)**上取得最高值,说明其在更严格 IoU 阈值下定位质量更稳定;与此同时,YOLOv6n 获得最低推理时延(约 6.78 ms ),更适合作为对实时性要求更苛刻的默认部署模型。相反,YOLOv7-tiny 在本任务上表现出"精度与速度同时不占优"的现象:mAP 与 F1 明显低于其他模型,推理与后处理耗时也更高,这通常与其结构与实现路径在该工程栈下的算子效率、后处理开销有关,提示在工业部署中"轻量"并不必然等价于"更快"。

s_type 的对比结论与 n_type 类似,但整体上限略有抬升(如下 PCBback-s_type: F1 & mAP50 Comparison 图所示)。其中 **YOLOv10s(mAP50≈0.825、Recall≈0.767)**在召回与 mAP@0.5 上最突出,**YOLOv6s(mAP50-95≈0.550)**在更严格的定位指标上优势明显,说明其对框回归质量更友好;而 **YOLOv9s(F1≈0.860)**体现了较好的精确率-召回平衡。需要强调的是,s_type 的收益主要来自"更稳的定位与略高的上限",但代价是参数量与推理时间上升,例如 YOLOv9s 的推理时间在该设备上显著高于 YOLOv8s/YOLOv6s,这会直接影响到 GUI 实时刷新与多路相机并行的可扩展性。老思更建议将 n_type 作为实时在线检测默认,s_type 作为复检/抽检或单路高精度工位的备选,并在系统中通过"一键切换权重"让两类模型形成互补。

从收敛过程看,mAP50 随 epoch 的曲线在约 30--50 轮后进入稳定区间(如下 PCBback-mAP50(Epoch) 图所示),配合 results.png 中 train/val 损失的同步下降,可以认为本组训练不存在明显的过拟合反弹;其中个别模型早期震荡更大(例如部分曲线在前 10 轮出现短暂下探),更符合"学习率预热阶段、增强强度较大或正负样本分配未稳定"导致的暂态,而并非最终泛化不足。对工程部署而言,这也支持在训练策略上采用"前期强增强、后期关闭 Mosaic 精修定位"的做法,并在验证集上以 best 权重固定部署,避免人为挑选 epoch 引入的偏差。
最后给出两组对比的关键数值表,便于在正文中直接引用(推理时间为纯 InfTime,单位 ms):
表 5-1 n_type 模型对比(PCBback)
| Model | Params(M) | FLOPs(G) | InfTime(ms) | Precision | Recall | F1 | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|
| YOLOv5nu | 2.6 | 7.7 | 7.73 | 0.979 | 0.764 | 0.858 | 0.815 | 0.483 |
| YOLOv6n | 4.3 | 11.1 | 6.78 | 0.981 | 0.760 | 0.856 | 0.811 | 0.469 |
| YOLOv7-tiny | 6.2 | 13.8 | 14.74 | 0.863 | 0.756 | 0.806 | 0.755 | 0.376 |
| YOLOv8n | 3.2 | 8.7 | 6.83 | 0.981 | 0.762 | 0.858 | 0.813 | 0.498 |
| YOLOv9t | 2.0 | 7.7 | 16.51 | 0.984 | 0.763 | 0.859 | 0.819 | 0.501 |
| YOLOv10n | 2.3 | 6.7 | 11.24 | 0.976 | 0.763 | 0.857 | 0.814 | 0.505 |
| YOLOv11n | 2.6 | 6.5 | 9.44 | 0.982 | 0.763 | 0.858 | 0.812 | 0.472 |
| YOLOv12n | 2.6 | 6.5 | 12.47 | 0.981 | 0.762 | 0.858 | 0.816 | 0.495 |
总体表现 如下图所示的双柱图与延迟柱状图也直观体现:

表 5-2 s_type 模型对比(PCBback)
| Model | Params(M) | FLOPs(G) | InfTime(ms) | Precision | Recall | F1 | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.1 | 24.0 | 8.45 | 0.979 | 0.762 | 0.857 | 0.816 | 0.492 |
| YOLOv6s | 17.2 | 44.2 | 8.59 | 0.985 | 0.760 | 0.858 | 0.818 | 0.550 |
| YOLOv7 | 36.9 | 104.7 | 23.62 | 0.900 | 0.718 | 0.799 | 0.774 | 0.380 |
| YOLOv8s | 11.2 | 28.6 | 7.66 | 0.980 | 0.762 | 0.857 | 0.820 | 0.515 |
| YOLOv9s | 7.2 | 26.7 | 18.66 | 0.981 | 0.765 | 0.860 | 0.824 | 0.532 |
| YOLOv10s | 7.5 | 25.6 | 13.35 | 0.980 | 0.767 | 0.861 | 0.825 | 0.535 |
| YOLOv11s | 9.4 | 21.5 | 9.74 | 0.982 | 0.762 | 0.858 | 0.819 | 0.522 |
| YOLOv12s | 9.3 | 21.4 | 13.23 | 0.984 | 0.763 | 0.859 | 0.824 | 0.543 |
总体表现 如下图所示的双柱图与延迟柱状图也直观体现:

6. 系统设计与实现
6.1 系统设计思路
本系统以"界面交互稳定、推理链路可控、结果可追溯"为设计约束,采用 PySide6 的信号-槽机制将 UI 事件与推理计算解耦:界面层负责输入源选择、参数调节与结果展示,处理层负责模型加载、推理与后处理,控制层负责状态机与资源生命周期管理。老思在工程上采用对象组合组织模块,避免 UI 线程直接执行重计算;当输入源切换、阈值变化或模型替换时,仅通过信号传递必要参数与帧数据,确保界面刷新与推理吞吐之间不互相阻塞。

分层上可抽象为三类核心对象:Ui_MainWindow 负责控件布局与样式加载(含主题切换与控件显隐),MainWindow 作为控制中枢实现槽函数、播放/暂停、数据源管理与状态管理,Detector 封装模型加载、预处理(letterbox/归一化)、推理与后处理(阈值过滤、NMS/端到端筛选、类别映射与统计)。在多源输入方面,图片与文件夹模式偏向批处理与统计汇总,视频与摄像头模式偏向按帧推理与实时刷新,二者在 MainWindow 侧统一抽象为"帧生产者",由 Detector 输出结构化结果(框坐标、类别、置信度、耗时、统计)供界面渲染与表格更新。
结果管理上,系统同时支持"即时可视化"和"可追溯存储"。推理输出在界面上叠加检测框与中文类别(由英文标签映射),并同步记录到 SQLite:每条记录包含用户、输入源标识、时间戳、模型版本、阈值参数、缺陷类别、置信度与框坐标;在此基础上提供筛选、回放与导出(CSV/图片/视频片段)能力,保证对误报/漏报的复核链路闭合。主题系统则作为独立配置项写入用户表,在不影响推理路径的前提下实现界面观感与使用习惯的个性化。
图 系统流程图

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

登录与账户管理被老思作为系统可用性的基础设施来实现:注册与登录阶段完成账号信息写入与校验,成功后立即加载该用户的主题偏好、默认阈值与历史检测记录,使"个性化配置"和"结果追溯"在进入主检测流程前就具备确定的上下文;在主界面内,用户可随时修改头像与密码并持久化到 SQLite,从而保证不同操作者的使用习惯与检测记录互不混淆,注销/切换账号则用于将同一套推理能力安全地复用于多用户场景,并与多源输入、模型切换和结果导出形成一致的闭环体验。

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

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷
项目介绍地址: https://my.feishu.cn/wiki/PyY8wqWuViFnHukc6UPcoUoFnrh
讲解视频地址 :https://www.bilibili.com/video/BV1heQuBkEWR/
功能效果展示视频:YOLOv5至YOLOv12升级:交通标志识别系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8. 参考文献(GB/T 7714)
1 HE Z, LIAN Y, WANG Y, LU Z. A comprehensive review of research on surface defect detection of PCBs based on machine vision[J]. Results in Engineering, 2025, 27: 106437. DOI:10.1016/j.rineng.2025.106437.
2 徐一奇, 肖金球, 汪俞成, 顾逸韬, 赵红华. 基于机器视觉的PCB表面缺陷检测研究综述[J]. 微电子学与计算机, 2025, 42(4): 1-15. DOI:10.19304/J.ISSN1000-7180.2024.0186.
3 TANG S, HE F, HUANG X, YANG J. Online PCB defect detector on a new PCB defect dataset[EB/OL]. arXiv:1902.06197, 2019.
4 LV S, OUYANG B, DENG Z, LIANG T, et al. A dataset for deep learning based detection of printed circuit board surface defect[J]. Scientific Data, 2024, 11: 811. DOI:10.1038/s41597-024-03656-8.
5 REN S, HE K, GIRSHICK R, SUN J. Faster R-CNN: Towards real-time object detection with region proposal networks[C]//Advances in Neural Information Processing Systems 28. 2015: 91-99.
6 REDMON J, DIVVALA S, GIRSHICK R, FARHADI A. You only look once: Unified, real-time object detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 779-788.
7 LIN T Y, GOYAL P, GIRSHICK R, HE K, DOLLÁR P. Focal loss for dense object detection[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017: 2999-3007. DOI:10.1109/ICCV.2017.324.
8 LI C, LI L, JIANG H, WENG K, et al. YOLOv6: A single-stage object detection framework for industrial applications[EB/OL]. arXiv:2209.02976, 2022.
9 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[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023: 7464-7475.
10\] XIE Y, ZHAO Y. Lightweight improved YOLOv5 algorithm for PCB defect detection\[J\]. The Journal of Supercomputing, 2025, 81: 261. DOI:10.1007/s11227-024-06739-w. \[11\] 姜媛媛, 蔡梦南. 轻量化的印刷电路板缺陷检测网络Multi-CR YOLO\[J\]. 电子测量与仪器学报, 2023, 37(11): 217-224. \[12\] 王天洋, 刘路, 王太勇, 沙宗泰, 江浩. 基于改进YOLOv8s的轻量级PCB缺陷检测算法\[J\]. 电子测量与仪器学报, 2025, 39(3): 44-52. \[13\] WANG C Y, YEH I H, LIAO H Y M. YOLOv9: Learning what you want to learn using programmable gradient information\[C\]//Computer Vision -- ECCV 2024. Lecture Notes in Computer Science, vol 15089. Cham: Springer, 2024: 1-21. DOI:10.1007/978-3-031-72751-1_1. \[14\] WANG A, CHEN H, LIU L, CHEN K, et al. YOLOv10: Real-time end-to-end object detection\[C\]//NeurIPS 2024 (Poster). 2024. \[15\] TIAN Y, YE Q, DOERMANN D. YOLOv12: Attention-centric real-time object detectors\[EB/OL\]. arXiv:2502.12524, 2025.