摘要:面向工业现场中机械器件种类多、尺度变化大、遮挡与背景干扰强等问题,本文构建了一套基于深度学习的机械器件检测与识别系统,并给出从数据到部署的实现路径。系统以 YOLO 系列目标检测网络为核心,实现对轴承、螺栓、法兰、齿轮等典型器件的定位与分类,并通过对不同 YOLO 变体的对比实验,从精度与速度两方面评估其在同一数据集上的适配性。为满足工程化落地需求,系统采用 PySide6 设计可交互的图形界面,支持图片/文件夹、视频流与摄像头多源输入,提供检测框叠加显示、类别与置信度统计、阈值(Conf/IoU)可调、结果保存与可视化分析等功能;同时引入 SQLite 完成用户注册登录、个性化配置与检测结果持久化管理,形成"推理---展示---存储---复用"的闭环。本文同步整理了可复现实验配置与代码组织方式,为机械视觉检测类应用的快速开发与二次扩展提供参考。
文章目录
- [1. 前言综述](#1. 前言综述)
- [2. 数据集介绍](#2. 数据集介绍)
- [3. 模型设计与实现](#3. 模型设计与实现)
- [4. 训练策略与模型优化](#4. 训练策略与模型优化)
- [5. 实验与结果分析](#5. 实验与结果分析)
-
- [5.1 实验设计与对比基线](#5.1 实验设计与对比基线)
- [5.2 度量指标与可视化结果解读](#5.2 度量指标与可视化结果解读)
- [5.3 不同 YOLO 版本的性能对比与分析](#5.3 不同 YOLO 版本的性能对比与分析)
- 6.系统设计与实现
-
- [6.1 系统设计思路](#6.1 系统设计思路)
- [6.2 登录与账户管理 --- 流程图](#6.2 登录与账户管理 — 流程图)
- [7. 下载链接](#7. 下载链接)
- 8.参考文献
1. 前言综述
在离散制造与智能装配场景中,机械器件(如轴承、螺栓、螺母、齿轮、法兰等)的自动识别不仅决定了无序分拣、在线装配与质量追溯的效率上限,也直接影响机器人抓取定位与过程闭环控制的可靠性1。传统视觉方案往往依赖边缘、纹理、几何与模板匹配等手工特征,并在受控光照与固定视角下表现尚可,但面对金属反光、油污、遮挡、尺度差异与复杂背景时,特征稳定性与可迁移性明显不足2。更关键的是,工业现场的"同类外观高度相似、异类差异细微"会放大类别间混淆,使得仅靠启发式规则难以兼顾精度与实时性3。深度学习以端到端特征学习替代人工设计,为机械器件识别提供了统一建模框架,并使系统能够在数据驱动下逐步适应场景差异4。从检测范式看,两阶段方法通过区域提议与分类回归分离建模,具有较强的定位与分类能力,但其推理链路更长、工程部署成本更高,难以在资源受限设备上稳定满足实时性约束5。与之对应,一阶段检测器以稠密预测实现端到端推理,在工业在线检测、移动端与边缘端部署中更具优势,而损失重加权等机制也缓解了前景背景极度不均衡带来的训练困难6。多尺度问题是机械器件检测的核心痛点之一,尤其在"螺纹、垫圈、销钉"等小目标与远距离成像条件下,特征金字塔结构成为提升召回与定位精度的关键基础模块7。在实时检测谱系中,YOLO 以单阶段统一回归思想奠定了速度优势,并推动目标检测从"可用"走向"可实时部署"8。围绕 YOLO 的持续演化,轻量化骨干与高效特征融合逐步成为工程实践的主流方向,例如 BiFPN 通过加权双向融合增强跨尺度信息流动,从而在计算预算受限时维持可观的精度9。与此同时,注意力机制以"突出有效、抑制冗余"的方式增强特征表达,CBAM 等模块因结构轻量、可插拔而在工业检测改进中被广泛采用10。近年来,Transformer 思想也进入检测领域,DETR 以集合预测与匹配损失简化后处理流程,提示了检测建模从锚框先验向全局关系建模拓展的可能性11。在 YOLO 分支内,YOLOX 等方法通过无锚框化与解耦头等策略进一步提升了检测精度与部署友好性,为工业场景的"精度---速度---可移植"权衡提供了新的实现路径12。聚焦国内研究,面向工程落地的改进型 YOLO 方法常从特征融合、注意力增强与轻量化结构入手,以在保证实时性的同时提升复杂背景与小目标条件下的识别鲁棒性13。在机械零件这一更具体的任务域中,针对光照扰动、小目标漏检与误检问题的改进 YOLOv5s 方案已在北大核心等刊物中给出较系统的结构替换与融合策略,反映出"轻量化与多尺度增强并重"的研究共识14。此外,工业机器人抓取等应用更强调检测框的几何可用性与位姿相关信息,一些工作已将旋转检测与关键点/抓取点定位纳入同一流水线,从而提升遮挡与杂乱堆叠条件下的操作成功率15。
基于上述背景与现状,老思在本文中将围绕"基于 PySide6 与 YOLO 系列(v5--v12)的机械器件识别系统"展开工程化实现:一方面以 YOLO 系列为核心完成多类机械器件的检测识别,并在同一数据集上对多版本 YOLO 的精度与速度进行对比评估;另一方面面向任务构建并标注特定数据集,完成预处理与训练验证测试划分;同时以 PySide6 设计可交互界面并结合 SQLite 实现用户与结果的持久化管理,最终提供可复现实验配置与代码资源包,便于复用与二次开发(该段为本文贡献概述,不另行编号引用)。 (CV Foundation)
主要功能演示:
系统的主要功能演示可以从"账户体系---主界面信息组织---模型能力切换---界面个性化"四条主线来呈现,使读者在最短路径内理解该系统如何完成从权限入口到检测闭环的全流程体验。首先在注册与登录环节,系统提供注册、登录、修改密码与注销/切换账号等完整路径:用户在登录页完成身份校验后,程序会从 SQLite 中读取该用户的历史配置(如上次使用的模型权重、默认置信度阈值、IoU 阈值、保存目录等)以及历史检测记录,并在进入主界面时自动恢复会话状态。由于检测结果与配置均与用户账号绑定,系统能够实现多用户共享同一台设备时的隔离与追溯,避免"阈值设置混用、结果文件覆盖、历史记录丢失"等工程常见问题;同时,注册流程对账号唯一性与密码规则进行约束,登录失败会给出明确提示,从而在交互层面形成稳定的权限入口与可解释的异常处理逻辑。

进入主页面后,页面布局遵循"输入区---显示区---控制区---结果区"的信息流组织原则:左侧或顶部提供输入源选择(单张图片、图片文件夹、视频文件、摄像头)与加载状态提示,中部为检测可视化显示区域,实时叠加目标框、类别标签与置信度;右侧/下方则集中承载推理控制与结果统计,包括开始/暂停/停止、帧率与耗时展示、置信度与 IoU 阈值滑条、NMS 开关或策略提示,以及按类别汇总的数量统计与结果列表(可按时间、类别或置信度排序/筛选)。这样的布局把"看得到的检测效果"和"可操作的推理控制"放在同一视觉焦点附近,既减少了工业现场操作者的认知切换,也便于在调参时直接观察误检、漏检与框抖动等现象,从而完成快速迭代。

在模型选择方面,系统将 YOLO 族权重的加载与推理解耦为独立处理模块(Detector),并在界面上提供可切换的模型下拉框或按钮组,默认使用 YOLOv12n,同时兼容导入 YOLOv5--YOLOv12 的自训练权重文件。切换模型时,系统会自动完成权重卸载与重载,并对输入尺寸、类别映射与后处理参数进行一致性校验,确保不同模型在同一套输入与展示逻辑下可横向比较;同时,在结果区同步显示当前模型名称、参数规模提示与实时速度指标,使读者直观理解"轻量模型更快但可能略损精度、较大模型更稳但对算力更敏感"的工程权衡。通过这种"一键切换---同域评测---统一展示"的设计,系统既满足了论文/博客中的对比实验复现,也为后续部署时的模型选型提供了直接依据。

主题修改功能则用于解决"工业软件长期使用的视觉疲劳与环境适配"问题。系统支持明亮/暗色等主题切换,并允许对背景图、图标集与关键控件字体进行替换;主题变更会即时作用于按钮、标签、表格与状态栏等组件,同时将主题配置写入 SQLite 或本地配置文件,在下一次登录时自动恢复。更重要的是,主题系统与检测流程相互独立,既不会引入推理线程阻塞,也不会影响检测结果的渲染逻辑,从而保证在高帧率视频推理时仍能保持界面响应与操作流畅。通过上述四个方面的演示,读者可以清晰看到系统从"账号入口"到"主界面组织"、从"模型能力切换"到"界面个性化适配"的完整实现闭环。

2. 数据集介绍
本项目面向工业视觉场景中的典型机械器件检测需求,自建并整理了一个包含"实物拍摄图、网络商品图、设备/装配现场图以及少量工程图纸/渲染图"的混合数据集。由于机械器件普遍存在金属反光、背景杂乱、遮挡叠放与尺度跨度大的问题,数据采集阶段刻意保留了不同光照条件、不同拍摄距离与不同背景纹理,从而让模型在训练阶段能够学习到更强的域内鲁棒性。标注采用矩形框目标检测范式,对同一图像中出现的多实例目标进行逐一标注;从你给出的样例可见,齿轮、轴承等目标既包含"单目标居中"的清晰样本,也包含"多目标密集堆叠"的复杂样本,同时还覆盖了工程图纸类的"线稿外观",这会显著增强模型对外观分布漂移的适应能力。标签统计图(如标签相关性与中心点分布图)也提示了目标中心在图像中部区域出现频率更高、宽高尺度呈长尾分布的典型特征,这与工业采集时"主体居中构图、小目标占比高"的规律一致;因此在数据预处理上,数据集统一为 YOLO 规范化坐标格式,并在训练时配合常见的数据增强以缓解小目标漏检与尺度敏感问题(例如随机缩放、随机裁剪/平移、颜色扰动与 Mosaic/混合增强等),使得模型对复杂背景与密集目标场景的稳定性更好。

在数据划分方面,数据集总计 5,914 张图像,按训练/验证/测试三部分组织:训练集 3,931 张用于参数学习,验证集 1,183 张用于超参数选择与早停判据,测试集 800 张用于最终泛化评估。类别体系覆盖 6 类机械器件,分别为 bearing(轴承)、bolt(螺栓)、flange(法兰)、gear(齿轮)、nut(螺母)、spring(弹簧)。从样例可直观看到 gear 类样本数量与场景类型更丰富,属于更"高频+多样"的类别,而 bolt/nut/spring 等在密集小目标与遮挡条件下更容易发生互相混淆,这意味着后续实验中需要重点关注小目标召回、类别间误检(尤其是紧固件类)以及在不同外观域(实拍/商品图/图纸)之间的性能一致性。

📊 数据集规格说明 (Dataset Specification)
| 维度 | 参数项 | 详细数据 |
|---|---|---|
| 基础信息 | 标注软件 | LabelImg |
| 标注格式 | YOLO TXT (Normalized) | |
| 数量统计 | 训练集 (Train) | 3,931 张 (66.5%) |
| 验证集 (Val) | 1,183 张 (20.0%) | |
| 测试集 (Test) | 800 张 (13.5%) | |
| 总计 (Total) | 5,914 张 | |
| 类别清单 | Class ID: 0 | bearing(轴承) |
| Class ID: 1 | bolt(螺栓) |
|
| Class ID: 2 | flange(法兰) |
|
| Class ID: 3 | gear(齿轮) |
|
| Class ID: 4 | nut(螺母) |
|
| Class ID: 5 | spring(弹簧) |
|
| 图像规格 | 输入尺寸 | 640 * 640 |
| 数据来源 | 混合数据集:实地拍摄 + 网络公开图片(人工清洗) + 少量工程图/渲染图 |
3. 模型设计与实现
面向机械器件检测这一典型工业视觉任务,老思在模型侧优先选择"实时性强且部署生态成熟"的 YOLO 系列作为统一基线,并以 YOLOv12n 作为默认主模型完成系统级实现与后续横向对比。该选择的核心动机在于:机械器件目标既包含齿轮、法兰等中大尺度结构件,也包含螺栓、螺母、弹簧等小目标与密集实例,模型需要在多尺度表达、局部纹理判别与复杂背景抑制之间取得平衡;而 YOLO 框架在单阶段密集预测范式下具备更短的推理链路,便于在边缘端或产线工控机上以稳定帧率运行。YOLOv12 相比早期 CNN 主导的 YOLO 架构,引入了更"注意力中心化"的设计,通过区域化注意力(Area Attention)、R-ELAN 等结构增强跨区域依赖建模,同时保持面向实时检测的工程约束(例如可选用 FlashAttention 以降低注意力计算的显存访问开销)。这些特性使其在复杂背景与外观域变化较大的工业数据上更容易获得稳健的特征表达。(Ultralytics Docs)
从网络结构上看,YOLOv12n 仍可抽象为"Backbone--Neck--Head"的三段式流水线。Backbone 负责从输入图像中抽取层级化语义特征;在机械器件任务中,这一阶段不仅要识别轮齿、螺纹等细粒度纹理,还要在金属反光、遮挡与背景杂波下维持边缘与结构稳定性,因此实际工程常在精度与速度之间做骨干网络选型:以 ResNet 为代表的残差骨干具备良好的优化稳定性,适合数据域变化大或训练轮次较长的场景;MobileNet、EfficientNet 等轻量骨干则更适合低功耗与高帧率约束,但对小目标细节的保持往往更依赖 Neck 的多尺度融合质量。YOLOv12 的改进更倾向于在骨干/聚合模块中引入高效注意力与改良的层聚合结构,以在相近参数规模下增强特征"可分性",对齿轮与法兰等具有重复几何结构的类别尤其关键。(Ultralytics Docs) 进入 Neck 后,网络将不同分辨率的特征进行跨层融合(可视作 FPN/PAN 思想的延续),通过自顶向下与自底向上的信息交互同时兼顾语义与细节,从而缓解"螺栓/螺母小目标召回不足"与"多实例堆叠场景漏检"的矛盾。最终在 Head 端输出多尺度预测张量,将融合后的特征映射为分类分数与边界框回归量;Ultralytics 体系下的 YOLO 检测头通常采用解耦设计,将分类与回归分支分离,以减少梯度竞争并提升收敛效率,进一步契合工业数据中"类别相似但定位要求严格"的特性。(GitHub)
任务建模层面,本系统采用标准的边界框检测建模:对每个候选位置预测类别分布与边界框参数,并在后处理阶段执行置信度阈值过滤与非极大值抑制(或使用框架内置的等价去重策略)得到最终检测结果。训练目标一般由分类损失与定位损失共同构成。分类端采用二元交叉熵(多标签形式更利于密集预测):
L ∗ c l s = − ∑ ∗ c = 1 C [ y c log ( p c ) + ( 1 − y c ) log ( 1 − p c ) ] , \mathcal{L}*{cls} = -\sum*{c=1}^{C}\left[y_c\log(p_c) + (1-y_c)\log(1-p_c)\right], L∗cls=−∑∗c=1C[yclog(pc)+(1−yc)log(1−pc)],
其中 C C C 为类别数, y c ∈ 0 , 1 y_c\in{0,1} yc∈0,1 表示类别标签, p c p_c pc 为预测概率。定位端通常以 IoU 类损失作为核心度量,IoU 定义为
I o U = ∣ B ∩ B g t ∣ ∣ B ∪ B g t ∣ , IoU = \frac{|B\cap B^{gt}|}{|B\cup B^{gt}|}, IoU=∣B∪Bgt∣∣B∩Bgt∣,
并在此基础上引入更强的几何约束(如中心距离与长宽比惩罚项)以提升收敛速度与框质量。若采用 CIoU 思路,其形式可写为
L ∗ b o x = 1 − I o U + ρ 2 ( b , b g t ) c 2 + α v , \mathcal{L}*{box}=1-IoU+\frac{\rho^2(\mathbf{b},\mathbf{b}^{gt})}{c^2}+\alpha v, L∗box=1−IoU+c2ρ2(b,bgt)+αv,
其中 ρ ( ⋅ ) \rho(\cdot) ρ(⋅) 表示预测框与真值框中心点欧氏距离, c c c 为最小外接框对角线长度, v v v 为长宽比一致性度量, α \alpha α 为自适应权重。对密集小目标而言,IoU 类损失往往在早期梯度稀疏,因此 Ultralytics 系列实现中还常配合分布式回归思想(DFL)以提升边界框回归的表达分辨率,使模型对"螺纹端部、齿尖边缘"等细节更敏感。(GitHub) 综合而言,总损失可概括为
L = λ ∗ b o x L ∗ b o x + λ ∗ c l s L ∗ c l s + λ ∗ d f l L ∗ d f l , \mathcal{L}=\lambda*{box}\mathcal{L}*{box}+\lambda*{cls}\mathcal{L}*{cls}+\lambda*{dfl}\mathcal{L}*{dfl}, L=λ∗boxL∗box+λ∗clsL∗cls+λ∗dflL∗dfl,
其中 λ ∗ b o x , λ c l s , λ d f l \lambda*{box},\lambda_{cls},\lambda_{dfl} λ∗box,λcls,λdfl 为权重系数,实际取值由框架默认或在验证集上调优确定。
工程实现上,模型加载与推理解耦在 Detector 模块中完成:初始化阶段读取 YOLOv12n(或其它 YOLO 族)权重与类别映射表,推理阶段对输入图像执行尺寸规整(如 640 × 640 640\times640 640×640 的 letterbox)、归一化与张量化,随后前向得到多尺度输出;后处理阶段将输出解码为边界框坐标与类别置信度,并执行阈值过滤、去重与结果排序,最终将结构化结果(类别、中文别名、置信度、坐标)通过信号槽发送至 UI 层渲染。
4. 训练策略与模型优化
在机械器件检测任务中,训练策略的设计本质上是在"有限数据规模"与"复杂外观域变化"之间寻求可泛化的参数解:一方面,数据集中同时存在实拍、网络商品图与工程图纸等多域样本,导致纹理统计与背景先验差异显著;另一方面,小目标与密集目标占比高,使得正负样本极度不均衡、定位误差对评价指标更敏感。基于这一问题结构,老思在训练阶段采取"迁移学习初始化 + 多尺度增强驱动 + 后期稳态收敛"的总体路线:首先加载 COCO 等通用数据集上的预训练权重以获得稳健的低层边缘与中层形状先验,随后在本数据集上进行端到端微调,使模型逐步把注意力从通用语义迁移到齿轮轮齿、螺纹结构、轴承滚道等任务相关的细粒度判别线索。实践上,预训练权重不仅显著缩短收敛时间,也能在数据域差异较大时降低过拟合风险,尤其对验证集规模(1,183 张)相对有限的情形更为关键。
训练流程采用 Ultralytics YOLO 的标准范式:输入端统一以 640 × 640 640\times640 640×640 的 letterbox 方式规整分辨率,保证几何比例近似不变并便于批处理;优化器选择由框架自动策略或显式指定(常见为 SGD/AdamW),并配合动量与权重衰减以抑制梯度噪声与参数漂移。学习率调度上建议使用"预热 + 余弦退火"或等价的分段下降策略:预热阶段用较小学习率逐步拉升至 l r 0 lr_0 lr0,避免检测头在随机初始化或新域微调时产生不稳定梯度;中后期通过退火将学习率缓慢降低到 l r f lr_f lrf,以在接近最优解时获得更平滑的收敛轨迹。考虑到机械器件存在大量小目标与密集实例,batch size 取 16 在 4090 等级显卡上通常能兼顾显存与梯度估计稳定性;若显存压力较大,可通过梯度累积保持等效批量,从而减少小目标训练中常见的"指标震荡"。与此同时,早停机制(patience)用于在验证集指标长期不提升时终止训练,减少过拟合并节省算力成本。
数据增强是该任务的主要增益来源之一,因为它直接决定模型是否能在反光、遮挡、背景杂乱与尺度变化下保持稳定检测。训练前期启用 Mosaic、随机缩放/平移、轻量颜色扰动等增强,有助于提升小目标召回并缓解背景偏置;但增强强度过大也可能引入几何失真,使得边界框回归出现系统性偏差。因此在训练后期(例如最后 10 个 epoch)关闭 Mosaic 或降低其概率,目的是让模型在更接近真实分布的样本上"校准"边界框与分类置信度,改善推理阶段的定位精度与置信度可解释性。结合你给出的标签分布可视化(中心点分布与宽高长尾特征),这一"前期强增强、后期弱增强"的策略往往能在不牺牲速度的前提下提升 mAP 与 F1 的稳定性,尤其对 bolt/nut/spring 等易混淆小目标更明显。
模型优化层面,除常规超参数外,更值得关注的是与工业部署直接相关的推理侧优化与稳定性校准。第一类是阈值与后处理策略的"任务化"设定:在 UI 中将置信度阈值(Conf)与 IoU 阈值暴露为可调参数,允许操作者在不同应用目标下切换工作点------例如产线漏检代价更高时下调 Conf 以提高召回,而分拣误抓代价更高时上调 Conf/收紧 IoU 以减少误检与重复框。第二类是推理加速:在保证数值一致性的前提下,优先采用 ONNX/TensorRT 导出与半精度推理(FP16)以提升吞吐,配合 batch=1 的低延迟配置满足实时视频流;对于多模型切换的系统,还需要将模型加载与推理线程解耦,避免 UI 阻塞,并通过显存复用或延迟卸载降低频繁切换带来的抖动。第三类是鲁棒性校准:当数据集中含有工程图纸或高对比渲染图时,建议在验证阶段单独统计"域内子集"的误检类型,并针对性调整增强策略(例如降低颜色扰动、增强边缘保持的锐化/对比度扰动比例),从而减少模型把"图纸线条/水印"误判为齿轮轮廓的风险。综合这些训练与优化策略,最终目标是让模型不仅在离线指标上可观,更能在系统级实时交互中呈现稳定的检测框、可信的置信度与可复现实验配置,为后续的多版本 YOLO 横向对比与界面集成奠定一致的训练基准。
(若你希望这一节更"实验可复现",你把实际训练命令或 args.yaml、以及你最终采用的 optimizer、lr 调度与增强开关截图丢过来,老思可以把关键配置写成一段可直接复用的训练脚本说明,并补充"为什么这样配"对应到你这套 5,914 张混合域数据的原因。)
5. 实验与结果分析
5.1 实验设计与对比基线
本节实验围绕"同一数据集、同一输入尺度、同一评估协议"的原则展开,目的在于回答两个工程化问题:其一,在机械器件(轴承/螺栓/法兰/齿轮/螺母/弹簧)这类兼具小目标与密集实例特征的任务上,YOLO 不同代际与不同规模(n/s)模型的精度差异是否显著;其二,在可部署前提下,模型的推理延迟与后处理开销如何影响实时交互体验。对比基线选取 YOLOv5--YOLOv12 的轻量分支,其中 n 组覆盖 yolov5nu、yolov6n、yolov7-tiny、yolov8n、yolov9t、yolov10n、yolo11n、yolo12n;s 组覆盖 yolov5su、yolov6s、yolov7、yolov8s、yolov9s、yolov10s、yolo11s、yolo12s。所有模型均采用 640 × 640 640\times640 640×640 输入,测试环境为 NVIDIA GeForce RTX 3070 Laptop GPU(8192MiB),并统计端到端延迟的三段时间:PreTime(预处理)、InfTime(推理)、PostTime(后处理)。
为便于读者复现实验并对比系统交互体验,本文同时报告 Precision、Recall、F1、mAP@0.5(记为 mAP50)与 mAP@[0.5:0.95](记为 mAP50-95),并结合 PR 曲线、F1--Confidence 曲线、混淆矩阵与训练过程曲线进行解释性分析。
5.2 度量指标与可视化结果解读
从整体 PR 曲线看,模型在中高召回区间仍能保持较高精度,说明在该数据集上"误检抑制"总体较稳;但当 Recall 接近 1.0 时 Precision 快速下滑,反映出高召回工作点会显著引入背景误检与类间混淆,这是工业场景常见的阈值权衡现象。如下图所示的 PR 曲线给出了类别层面的 AP 差异:flange(法兰)AP=0.976 明显高于其他类别,而 gear(齿轮)AP=0.871 相对最低,这与齿轮在数据中更常出现"齿尖密集纹理、遮挡叠放、与复杂背景边缘相似"的情况一致,分类与定位都更容易在高召回区间发生置信度衰减。
PR 曲线图(如下图所示):
F1--Confidence 曲线进一步给出了"系统默认阈值"的可解释依据:总体曲线在 conf≈0.397 处达到 F1≈0.87 的峰值,意味着将 UI 默认置信度阈值设在 0.35--0.45 区间通常能取得更均衡的 Precision/Recall;若场景更强调"宁可少检也不误检"(例如分拣误抓代价高),可将 conf 上调到 0.6 左右以提高精度,但需接受召回下降。
F1 曲线图(如下图所示):
混淆矩阵从"类别可分性"层面揭示了误差来源。如下图所示,对角线占优说明总体分类可靠,其中 flange 的正确识别率约 0.95 ,而 gear 约 0.83 相对偏低;同时,"预测为 background"的比例在 gear 上更高(约 0.16),提示齿轮在小尺度或遮挡条件下更易漏检。另一方面,background 被误判为 bolt 的比例相对突出(约 0.31),这类误检通常由细长高对比边缘、螺纹状纹理或强反光条带触发,工程上可通过适度提高 conf、加强负样本背景多样性、或在训练增强中引入更贴近现场的反光与噪声扰动来缓解。
混淆矩阵图(如下图所示):
训练过程曲线显示,box/cls/dfl 损失在前 20--30 个 epoch 下降最快,随后进入平稳收敛阶段;mAP50 与 mAP50-95 在约 50--70 epoch 后趋于平台,说明模型已学到较稳定的判别特征与定位能力,后期训练主要起到小幅精修与置信度校准作用。
训练曲线图(如下图所示):
5.3 不同 YOLO 版本的性能对比与分析
为突出"精度---速度"的工程取舍,本文分别对 n 组与 s 组模型给出完整对比表,并结合你提供的对比柱状图、mAP 收敛曲线与平均 PR 曲线进行综合分析。
(1)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.8706 | 0.8363 | 0.8531 | 0.9021 | 0.7506 |
| YOLOv6n | 4.3 | 11.1 | 2.17 | 6.78 | 1.39 | 0.8763 | 0.8193 | 0.8469 | 0.8952 | 0.7525 |
| YOLOv7-tiny | 6.2 | 13.8 | 2.28 | 14.74 | 4.06 | 0.8667 | 0.8311 | 0.8485 | 0.8865 | 0.6971 |
| YOLOv8n | 3.2 | 8.7 | 1.95 | 6.83 | 1.39 | 0.8794 | 0.8304 | 0.8542 | 0.9018 | 0.7586 |
| YOLOv9t | 2.0 | 7.7 | 1.87 | 16.51 | 1.29 | 0.8708 | 0.8565 | 0.8636 | 0.9098 | 0.7718 |
| YOLOv10n | 2.3 | 6.7 | 2.08 | 11.24 | 0.63 | 0.8735 | 0.8308 | 0.8516 | 0.8980 | 0.7627 |
| YOLOv11n | 2.6 | 6.5 | 2.11 | 9.44 | 1.42 | 0.8695 | 0.8484 | 0.8588 | 0.9088 | 0.7651 |
| YOLOv12n | 2.6 | 6.5 | 1.91 | 12.47 | 1.37 | 0.8880 | 0.8410 | 0.8639 | 0.9108 | 0.7688 |
从精度指标看,n 组整体差距并不悬殊,但仍呈现清晰分层:YOLOv12n 在 Precision(0.8880)、F1(0.8639)与 mAP50(0.9108)上均为最优或并列最优 ,说明其在该数据集上对误检抑制更稳,适合作为系统默认模型;而 YOLOv9t 的 Recall(0.8565)与 mAP50-95(0.7718)最高 ,体现出其对"更严格 IoU 区间下的定位质量"更占优,适合对定位精度更敏感的场景(例如后续要做抓取/装配位姿近似估计时)。从速度侧看,若以端到端延迟(Pre+Inf+Post)衡量,YOLOv8n 与 YOLOv6n 处于更低延迟区间,说明在"极限实时"诉求下可以用轻微精度让渡换取更流畅的交互帧率;YOLOv7-tiny 与 YOLOv9t 的推理时间明显偏高,在本硬件与实现条件下并不占优势,属于"参数/算力没有转化为等价实时收益"的典型现象。

(2)s 组模型对比(精度上探与复杂场景鲁棒性)
| Model | Params(M) | FLOPs(G) | PreTime(ms) | InfTime(ms) | PostTime(ms) | Precision | Recall | F1 Score | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.1 | 24.0 | 2.28 | 8.45 | 1.51 | 0.8678 | 0.8398 | 0.8536 | 0.9019 | 0.7620 |
| YOLOv6s | 17.2 | 44.2 | 2.22 | 8.59 | 1.45 | 0.8731 | 0.8231 | 0.8474 | 0.8958 | 0.7554 |
| YOLOv7 | 36.9 | 104.7 | 2.44 | 23.62 | 3.46 | 0.8850 | 0.8547 | 0.8696 | 0.8907 | 0.7495 |
| YOLOv8s | 11.2 | 28.6 | 2.31 | 7.66 | 1.42 | 0.8729 | 0.8401 | 0.8562 | 0.9019 | 0.7644 |
| YOLOv9s | 7.2 | 26.7 | 2.12 | 18.66 | 1.39 | 0.8884 | 0.8398 | 0.8634 | 0.9155 | 0.7830 |
| YOLOv10s | 7.2 | 21.6 | 2.21 | 11.38 | 0.60 | 0.8739 | 0.8449 | 0.8592 | 0.9061 | 0.7726 |
| YOLOv11s | 9.4 | 21.5 | 2.37 | 9.74 | 1.36 | 0.8820 | 0.8430 | 0.8621 | 0.9090 | 0.7791 |
| YOLOv12s | 9.3 | 21.4 | 2.09 | 13.23 | 1.42 | 0.8649 | 0.8676 | 0.8662 | 0.9134 | 0.7756 |
s 组呈现出更典型的"精度上探但延迟波动更大"的特征。YOLOv9s 在 mAP50(0.9155)与 mAP50-95(0.7830)上达到全组最高 ,说明其对严格 IoU 阈值下的定位质量更强,适合对框质量要求更高的离线检测或较高算力预算的在线检测;与之对应,其 InfTime(18.66ms)显著高于 v8s(7.66ms)与 v11s(9.74ms),在本设备上会更直接地影响视频流帧率。YOLOv12s 的 Recall(0.8676)最高 ,意味着其对"尽量不漏检"的场景更友好,但 Precision 相对略低(0.8649),这与"扩大召回边界"带来的误检风险一致,因此在 UI 默认阈值上更建议结合前述 F1--Confidence 曲线,把 conf 设在峰值附近以获得更均衡输出。速度侧面,YOLOv8s 在 s 组中推理最短,且 mAP50 仍保持在 0.902 左右,是"可交互实时性"与"精度不显著退化"之间更稳妥的折中点;YOLOv7 虽 F1 略高,但 FLOPs 与推理时间都显著偏大,在该硬件上不具备部署经济性。

综合上述结果,若以"系统默认可用、误检更可控、UI 交互稳定"为目标,老思更倾向于采用 YOLOv12n 作为默认权重,并在界面中提供 YOLOv9t/YOLOv9s 作为"高定位质量"选项、提供 YOLOv8n/YOLOv8s 作为"更低时延"选项;同时,结合 F1--Confidence 峰值将默认 conf 设为约 0.4,并为齿轮(gear)这类更易漏检类别预留更灵活的阈值策略与数据增强空间,以保证在复杂堆叠与强反光条件下仍能维持稳定召回与可解释置信度输出。
6.系统设计与实现
6.1 系统设计思路
本系统以"界面层---控制层---处理层"的清晰分层来组织工程结构,其中界面层(Ui_MainWindow)负责控件布局与视觉呈现,控制层(MainWindow)负责状态机与槽函数调度,处理层(Detector)则封装模型加载、推理、后处理与结果结构化输出。老思在实现时刻意避免 UI 直接触碰推理细节:界面只关心"输入源、阈值、运行控制、结果展示",而推理细节(letterbox、张量化、NMS、类别映射、统计汇总)统一沉到处理层,以便后续无缝替换 YOLOv5--YOLOv12 的不同权重与推理后端(PyTorch/ONNX/TensorRT),同时降低维护成本与耦合风险。

跨层通信采用 Qt 的信号-槽机制组织,使主线程 UI 渲染与推理线程解耦:推理侧每完成一帧处理就发射结构化结果(检测框、类别、置信度、统计信息、耗时),控制层在槽函数中完成数据落库、表格刷新、图像叠加与状态栏更新;当用户在界面上调节 Conf/IoU、切换模型或暂停/继续时,控制层仅更新共享状态或触发重载信号,不直接阻塞推理主循环。由于输入源同时支持图片、视频与摄像头,系统在控制层抽象出统一的帧读取接口,并在退出/切换输入时按流程释放句柄、清空队列与写入日志,从而保证长时间运行下仍能维持稳定的资源占用与响应性。
在数据管理方面,SQLite 用于承载用户体系与结果持久化:用户表保存账号、加盐哈希密码与头像路径等元信息;配置表保存每个用户的模型偏好与阈值偏好;结果表保存检测时间、输入源、模型版本、检测框与统计汇总等可追溯记录。这样做的直接收益是把"可复现的推理工作点"与"可追溯的检测证据链"固化在系统内部,使得同一设备在多人、多任务切换下仍能保持一致的体验与可审计性。
图 系统流程图

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

登录与账户管理被设计为主检测流程的"前置门控与个性化上下文加载器":用户在登录页完成身份校验后,系统即从 SQLite 中加载该账号绑定的阈值偏好、上次使用的模型权重与历史检测记录,并在进入主界面时恢复为可直接推理的工作状态;当用户在检测过程中调整 Conf/IoU、切换模型或修改界面主题,这些偏好会以"用户维度"持久化保存,从而保证多用户共用设备时互不干扰、且每次登录都能快速回到熟悉的工作点。资料修改(头像/密码)与注销/切换账号同样通过数据库事务与会话清理机制与主流程衔接:前者确保身份信息更新后立即作用于界面展示与权限校验,后者则在退出时释放推理资源并回写必要的运行日志与结果索引,使检测记录具备可追溯性与可检索性,最终把"检测---展示---存储---复用"闭环稳定落到工程实现上。
7. 下载链接
若您想获得博文中涉及的实现完整全部资源文件 (包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷
详细介绍文档博客 :YOLOv5至YOLOv12升级:机械器件识别系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8.参考文献
1 KRIZHEVSKY A, SUTSKEVER I, HINTON G E. ImageNet Classification with Deep Convolutional Neural Networks[C]//Advances in Neural Information Processing Systems. 2012. (NeurIPS Proceedings)
2 REN S, HE K, GIRSHICK R, et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149. (Europe PMC)
3 HE K, GKIOXARI G, DOLLÁR P, et al. Mask R-CNN[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017: 2961-2969. (CVF Open Access)
4 REDMON J, DIVVALA S, GIRSHICK R, et al. You Only Look Once: Unified, Real-Time Object Detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 779-788. (CV Foundation)
5 LIU W, ANGUELOV D, ERHAN D, et al. SSD: Single Shot MultiBox Detector[C]//Computer Vision -- ECCV 2016. Cham: Springer, 2016: 21-37. (Springer)
6 LIN T Y, GOYAL P, GIRSHICK R, et al. Focal Loss for Dense Object Detection[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017: 2980-2988. (CVF Open Access)
7 LIN T Y, DOLLÁR P, GIRSHICK R, et al. Feature Pyramid Networks for Object Detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 2117-2125. (CVF Open Access)
8 REDMON J, DIVVALA S, GIRSHICK R, et al. You Only Look Once: Unified, Real-Time Object Detection[J/OL]. arXiv:1506.02640, 2016. (arXiv)
9 TAN M, PANG R, LE Q V. EfficientDet: Scalable and Efficient Object Detection[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 10781-10790. (CVF Open Access)
10 WOO S, PARK J, LEE J Y, et al. CBAM: Convolutional Block Attention Module[C]//Computer Vision -- ECCV 2018. Cham: Springer, 2018: 3-19. (Springer)
11 CARION N, MASSA F, SYNNAEVE G, et al. End-to-End Object Detection with Transformers[C]//Computer Vision -- ECCV 2020. Cham: Springer, 2020: 213-229. (Springer)
12 GE Z, LIU S, WANG F, et al. YOLOX: Exceeding YOLO Series in 2021[J/OL]. arXiv:2107.08430, 2021. (arXiv)
13 邱天衡, 王玲, 王鹏, 等. 基于改进YOLOv5的目标检测算法研究[J]. 计算机工程与应用, 2022, 58(13): 63-73. (CEA)
14 宋小飞, 晁永生. 基于改进YOLOv5s网络的机械零件目标检测[J]. 组合机床与自动化加工技术, 2023(08). DOI:10.13462/j.cnki.mmtamt.2023.08.018. (Qikan)
15 安广林, 李宗刚, 杜亚江, 等. 基于深度学习的多工件抓取点定位方法[J]. 激光与光电子学进展, 2023. DOI:10.3788/LOP220857. (Researching)