YOLOv5至YOLOv12升级:金属锈蚀检测系统的设计与实现(完整代码+界面+数据集项目)

摘要:面向工业现场对金属构件锈蚀状态的快速巡检与定量评估需求,本文构建了一套基于深度学习的金属锈蚀检测系统。系统以目标检测/实例分割网络为核心,通过对锈蚀区域进行自动定位与类别判别,输出锈蚀位置、置信度与面积占比等统计信息,为后续的维护决策提供依据。为提升复杂光照、背景杂乱、纹理相似等工况下的鲁棒性,系统在数据侧引入标准化标注与增强策略,并在推理侧采用置信度与阈值可调的后处理机制以平衡漏检与误检。工程实现方面,系统提供图像、视频与摄像头等多源输入,支持检测结果可视化叠加、记录检索与导出,形成"采集---推理---统计---归档"的闭环流程。实验与实际测试表明,该系统能够在保证检测精度的同时满足较好的实时性与可用性,为金属表面锈蚀智能检测与数字化运维提供了可落地的技术方案。


文章目录

  • [1. 前言综述](#1. 前言综述)
  • [2. 数据集介绍](#2. 数据集介绍)
  • [3. 模型设计与实现](#3. 模型设计与实现)
  • [4. 训练策略与模型优化](#4. 训练策略与模型优化)
  • [5. 实验与结果分析](#5. 实验与结果分析)
  • 6.系统设计与实现
    • [6.1 系统设计思路](#6.1 系统设计思路)
    • [6.2 登录与账户管理 --- 流程图](#6.2 登录与账户管理 — 流程图)
  • [7. 下载链接](#7. 下载链接)
  • 8.参考文献

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


1. 前言综述

金属构件在海洋大气、化工介质与高湿粉尘等服役环境中普遍面临锈蚀演化问题,锈蚀不仅削弱截面承载力与疲劳寿命,还会诱发连接失效、涂层剥落与二次腐蚀等连锁风险,因此在设备点检、产线质检与基础设施管养中,如何以低成本实现"可视化、可量化、可追溯"的锈蚀检测与评估,一直是工程界与学术界共同关注的方向1。在实际场景中,锈蚀形态往往呈现颜色梯度不稳定、纹理细碎且与背景(油污、氧化皮、焊渣、阴影)高度混淆的特点,叠加拍摄距离变化、视角倾斜与反光眩光等因素,使得单纯依赖人工目测的方式在一致性、效率与安全性上都存在瓶颈2

早期的机器视觉锈蚀识别多建立在"人工特征+阈值/分类器"的范式上:先以边缘、纹理或颜色空间变换获得候选区域,再借助传统特征与浅层分类器完成判别[3-4]。这类方法在受控光照与单一背景下可取得可用效果,但在工业现场往往遭遇阈值敏感、跨场景迁移困难与小目标漏检等问题,其根源在于手工特征对锈蚀的多尺度形态与非刚性边界表达能力有限,且难以覆盖复杂成像条件下的分布漂移[5]。随着大规模数据与卷积神经网络的发展,深度学习通过端到端特征学习显著提升了对复杂纹理与语义的表征能力,为锈蚀检测从"经验规则"走向"数据驱动"提供了方法论基础[6]。

在深度学习视觉任务中,锈蚀检测通常可以被建模为目标检测与语义/实例分割两类问题:前者更适合快速定位与告警,后者更适合锈蚀面积占比、锈蚀率等量化指标计算以及与维护等级标准对齐[7-9]。在检测框架层面,二阶段方法以候选区域为中心逐级细化,具有较高的上限精度,但推理链路较长且对实时性不友好[8];一阶段方法以密集预测实现端到端推理,在工程落地中更易获得速度与精度的平衡[10]。与此同时,多尺度特征融合(如特征金字塔)被广泛用于增强对小尺度锈蚀与薄弱边界的响应能力[9],而注意力机制则通过动态重加权提升模型对关键腐蚀纹理与区域的聚焦,缓解背景干扰[12]。近年来视觉Transformer体系进一步强化了全局建模能力,为复杂腐蚀形态的长程依赖表征提供了新路径[11]。

围绕YOLO系列的一阶段检测器,社区在工程效率、训练策略与结构设计上持续演进:从YOLOv1提出端到端实时检测范式开始[10],后续版本不断在特征提取、特征融合与头部设计上迭代,并在工业缺陷与腐蚀类任务中形成大量面向场景的改进工作。以腐蚀分割为代表的研究表明,基于深度网络的像素级锈蚀分割能够更稳定地输出可解释的定量结果,并在公开或自建数据上体现出较强的自动化潜力[13];针对输电线路巡检等高空航拍场景,亦有研究在YOLO框架内引入专门的注意力与特征增强模块以提高锈蚀缺陷检出率[14]。更近一步,YOLOv12提出"注意力中心"的实时检测框架,目标是在保持实时性前提下系统性引入注意力建模,从而提升复杂场景下的检测精度与稳定性。(arXiv) 但就锈蚀这一细粒度纹理目标而言,仍面临若干共性难点:其一,锈蚀与非锈蚀背景存在外观相似性,且锈蚀等级往往呈连续变化,导致类别边界不清;其二,小面积点蚀、沿边界扩散的薄锈条带在下采样过程中易被抹平;其三,跨设备、跨涂层体系、跨光照的域偏移显著,模型容易在"看似合理"的错误纹理上过拟合;其四,工程系统需要在多源输入、可视化交互、结果存储与可追溯分析之间建立闭环,使算法性能能够转化为可用性与可维护性[15]。

为便于对研究脉络形成更具操作性的对照,老思将部分与锈蚀检测/分割密切相关的代表性工作按任务建模与改进重点做一份简表(仅列出与本文系统设计关联更强的方向):

代表工作 任务建模 典型数据形态/场景 方法要点与优缺点(面向锈蚀任务)
RustSEG[13] 语义分割 基础设施/构件近景 强调像素级腐蚀区域分割,利于面积量化;对标注质量与跨域泛化更敏感
RD-YOLO[14] 目标检测 航拍/巡检图像 针对远距离小目标与复杂背景进行结构增强;适合快速告警,但量化需结合后处理或分割
改进DeepLabV3+钢桥锈蚀[15] 语义分割 钢桥/机器人巡检 轻量主干与注意力增强有助于端侧部署;对不同锈蚀尺度的统一表达仍依赖多尺度设计

本文(本博客)的主要贡献可以概括为:一是面向金属锈蚀检测的实际需求,构建并标注任务数据集,完成清洗、增强与训练/验证/测试划分;二是以YOLO族模型为核心实现锈蚀检测,并对YOLOv5到YOLOv12等不同版本进行对比评测与适配;三是将模型推理、可视化与结果管理集成到基于PySide6的桌面系统中,形成支持图片/视频/摄像头多源输入、可调阈值与统计导出的闭环应用,并提供可复现实验与工程代码资源。


主要功能演示:

系统的主要功能演示可以从"账户体系---主界面组织---模型推理链路---交互可定制性"四条主线展开说明。首先是注册与登录模块:系统启动后默认进入登录界面,未注册用户可直接跳转注册页完成账号创建,注册信息写入 SQLite 以实现本地持久化;登录阶段则对用户名与口令进行校验,校验通过后自动加载该用户的历史检测记录、阈值偏好与界面主题等个性化配置,使用户在再次使用时能够无缝恢复到上一次的工作状态。该设计的价值在于把"检测结果"和"操作习惯"绑定到账号维度,既便于多人共用同一台设备,也能保证锈蚀巡检的结果留痕与可追溯性,避免手动管理文件带来的混乱与遗漏。

其次是页面布局与交互组织。主界面采用典型的工业视觉工作台布局:左侧为输入源与控制区,支持图片、视频与摄像头三类输入,并提供开始/暂停/停止、逐帧浏览与结果保存等操作;中部为可视化显示区,用于呈现原始画面与叠加检测框后的结果画面,必要时支持缩放、适配窗口与对比查看;右侧或下方为结构化信息区,实时展示当前帧的检测目标列表(类别、置信度、位置坐标/面积)、统计面板(各类别计数、锈蚀占比)以及运行状态(FPS、耗时、阈值参数)。整体交互通过 PySide6 的信号---槽机制串联:输入变化触发预处理与推理线程,推理完成后向界面发送结果信号,界面在主线程完成绘制与表格刷新,从而在稳定性与响应速度之间取得平衡。

第三是模型选择与推理策略的演示。系统在主界面提供模型管理入口,允许用户在 YOLO 族权重之间切换,例如默认使用轻量的 YOLOv12n 以满足实时性,也可根据精度需求选择更大规模的变体或对比 YOLOv5--YOLOv12 的不同版本。模型切换后系统会自动完成权重加载、类别映射与推理配置刷新,并在同一输入上输出一致格式的检测结果,便于进行横向对比与效果验证。为适配锈蚀"边界不规则、纹理细碎"的任务特性,界面端通常还提供置信度阈值与 NMS/IoU 阈值的滑条调节:当现场更关注漏检风险时可适当降低置信度阈值以提高召回;当背景干扰导致误检偏多时则可提高阈值或调整 IoU 策略以压制冗余框,从而把算法能力转化为可控的工程行为。

最后是主题修改与界面个性化。系统提供浅色/深色主题及主色调切换,支持对背景图、图标集、字体大小与关键按钮样式进行统一替换,并将主题配置与用户账号关联保存。其意义不只是"美观",更直接服务于不同工况下的可读性:例如强光环境下浅色主题与高对比字体更利于识别细小锈蚀框,夜间或暗光环境下深色主题可降低眩光疲劳;同时,主题与布局的可定制也便于将系统嵌入不同单位的既有软件风格或现场SOP之中,提升部署接受度与长期使用体验。若需要在论文或博客中展示,通常可以在同一张图中并列"同一帧输入在不同阈值/不同主题下的结果对比",直观体现系统从算法到交互的完整闭环。


2. 数据集介绍

本系统面向金属表面锈蚀目标的检测任务构建数据集,共计 5,218 张图像,覆盖了室外构件、板材/涂层表面、边角连接件与复杂纹理背景等多类典型场景。结合你提供的训练/验证批次可视化样例可以看到,锈蚀在形态上同时包含片状腐蚀、点蚀与沿边缘扩展的条带状腐蚀,且常与阴影、污渍、反光和材质纹理发生外观混淆;因此,数据集在采集与清洗阶段重点保留了跨光照、跨视角与跨背景的真实分布,以避免模型仅在"理想拍摄条件"下有效。标注以目标检测为主,将锈蚀区域以外接矩形框进行定位,类别采用单类设置(rust,中文名为"锈蚀"),从而将学习重点聚焦在"锈蚀区域的可靠定位与召回控制"上。根据标签相关图(labels correlogram)所反映的分布特征,目标框中心 ( x , y ) (x,y) (x,y) 在图像平面上整体较为均匀但存在轻微的中心区域聚集趋势,而框的宽度与高度呈明显长尾分布,绝大多数目标为小尺度框(归一化宽/高集中在较小区间),这意味着模型需要具备较强的小目标感受野与多尺度特征表达能力,同时训练阶段也更依赖合理的数据增强与正负样本分配策略来抑制漏检。

数据集划分遵循"训练充分、验证稳定、测试独立"的原则,按图像维度划分为训练集 4,177 张、验证集 782 张、测试集 259 张。预处理方面,训练阶段通常采用输入尺度统一(如 640 × 640 640\times 640 640×640)与像素归一化,并结合随机缩放、随机裁剪/平移、水平翻转以及颜色扰动(HSV 抖动)来提高对光照变化与拍摄条件漂移的鲁棒性;在不破坏锈蚀语义的前提下,可进一步引入 Mosaic 等组合增强来提升小目标出现概率与背景多样性。验证与测试阶段则保持确定性缩放与最小化增强,以保证评估指标可重复、可对比。总体上,该数据集的"单类锈蚀 + 小目标占比高 + 场景噪声强"的结构特征,与实际巡检任务的难点高度一致,也为后续在 YOLO 系列模型上开展结构对比与阈值策略分析提供了稳定的实验基础。

📊 数据集规格说明 (Dataset Specification)

维度 参数项 详细数据
基础信息 标注软件 LabelImg
标注格式 YOLO TXT (Normalized)
数量统计 训练集 (Train) 4,177 张
验证集 (Val) 782 张
测试集 (Test) 259 张
总计 (Total) 5,218 张
类别清单 Class ID: 0 rust(锈蚀)
图像规格 输入尺寸 640 * 640
数据来源 实地拍摄为主 / 混合数据源(人工清洗)

3. 模型设计与实现

本系统以单类"锈蚀(rust)"目标检测为核心任务,模型设计遵循"在保证实时性的前提下尽可能提高对小尺度、弱纹理目标的召回能力"的原则。考虑到锈蚀区域普遍呈现边界不规则、纹理细碎且易与污渍/阴影混淆的特点,老思在基线模型选择上优先采用 Ultralytics 体系下的 YOLOv12n 作为默认检测器:该模型在保持实时推理的同时,将注意力机制作为结构中心,引入更高效的区域化注意力与相对轻量的前馈配置,以在复杂背景中提升目标感知质量与特征选择性。(arXiv) 在工程落地层面,YOLOv12n 的轻量化尺度也更适合与 PySide6 桌面端交互联动,在摄像头/视频流场景下更容易获得稳定帧率。

从网络结构上看,YOLO 检测器仍可抽象为 Backbone--Neck--Head 的三级范式:Backbone 负责从输入图像中提取分层语义特征,Neck 通过自顶向下与自底向上的多尺度融合(典型形态对应 FPN/PAN 系列思想)把浅层细节与深层语义进行对齐,Head 则在多尺度特征图上完成分类与回归输出。对于锈蚀数据集中"小框占比高、尺度分布长尾"的现象,这种多尺度融合是必要的,因为它能在较高分辨率的特征层上保留细粒度纹理线索,同时借助更深层语义抑制背景伪纹理。你可以将整体结构理解为"特征提取---跨层融合---多尺度预测"的流水线,其中 YOLOv12 的关键差异在于把注意力模块更深地嵌入到特征建模过程中,用更强的上下文建模能力缓解锈蚀与背景之间的外观相似性问题。(Ultralytics Docs)(网络整体架构图如下图所示,本文在图源处给出可直接下载的示意图链接。)

任务建模与损失函数方面,单类锈蚀检测可以形式化为对每个候选位置同时预测类别概率与边界框参数。分类分支通常采用二元交叉熵损失:
L ∗ c l s = − ( y log ⁡ p + ( 1 − y ) log ⁡ ( 1 − p ) ) , \mathcal{L}*{cls} = -\Big(y\log p + (1-y)\log(1-p)\Big), L∗cls=−(ylogp+(1−y)log(1−p)),

其中 y ∈ 0 , 1 y\in{0,1} y∈0,1 表示该位置是否为锈蚀目标, p p p 为模型输出的锈蚀概率。定位分支更关注预测框与真实框的几何一致性,工程中常用 IoU 系列损失(如 CIoU)以同时约束重叠面积、中心距离与宽高比:
L ∗ b o x = 1 − IoU + ρ 2 ( b , b g t ) c 2 + α v , \mathcal{L}*{box} = 1-\text{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 α 为权重项。最终总损失一般写为加权和:
L = λ b o x L ∗ b o x + λ ∗ c l s L ∗ c l s + λ ∗ o b j L ∗ o b j , \mathcal{L} = \lambda_{box}\mathcal{L}*{box} + \lambda*{cls}\mathcal{L}*{cls} + \lambda*{obj}\mathcal{L}*{obj}, L=λboxL∗box+λ∗clsL∗cls+λ∗objL∗obj,

其中 L ∗ o b j \mathcal{L}*{obj} L∗obj 对应目标置信度/前景存在性约束(不同 YOLO 实现会有不同的具体定义), λ \lambda λ 为各分量权重。该建模方式的好处在于:锈蚀目标即使形态破碎,只要局部纹理触发了稳定的前景响应,回归分支仍可输出可用的定位框;而分类分支在注意力增强后对背景伪纹理更不敏感,从而能把误检压到可控水平。

实现层面,模型训练与推理基于 Ultralytics YOLO 框架完成,训练阶段读取 YOLO TXT 归一化标注并进行多尺度增强,推理阶段输出每个检测框的 ( x 1 , y 1 , x 2 , y 2 ) (x_1,y_1,x_2,y_2) (x1,y1,x2,y2)、类别与置信度,并通过 NMS/阈值策略生成最终结果。需要强调的是,桌面端系统并不直接"绑死"某一个权重:在 PySide6 的 Detector 模块中采用统一的推理接口封装模型加载与后处理,使得 YOLOv5--YOLOv12 族模型的权重都可以作为可切换的后端;界面侧则通过信号---槽机制在"输入帧到达---推理完成---绘制刷新"之间建立稳定的数据通道,保证实时播放时的交互响应与可视化一致性。作为对照理解,YOLOv5 的 Backbone/Neck/Head 结构图在 Ultralytics 文档中给出了非常直观的示意,它同样适用于解释本系统的模块分工与数据流组织方式。(Ultralytics Docs)

如果你希望这一节更贴合你代码实现(例如你在 Detector 里用的是 Ultralytics 的 YOLO() 还是自行导出的 ONNX/TensorRT),老思可以在下一步把"模型加载---预处理---后处理---结果结构体---UI绘制"按你现有类名与函数名对齐写成可直接放进博客的工程叙述。


4. 训练策略与模型优化

本系统的训练流程以"稳健收敛、兼顾小目标召回、降低跨场景误检"为核心目标展开。由于锈蚀目标在你给出的标签分布中呈明显长尾特征,小尺度框占比高且边界纹理弱,训练阶段若仅依赖默认配置,常见问题是前期容易出现定位不稳定、后期易在背景伪纹理上过拟合。因此老思在策略上采用"预训练权重初始化 + 逐步增强收敛 + 后期增强退火"的思路:首先加载 COCO 等通用数据上的预训练权重作为初始化,使 Backbone 的底层边缘/纹理滤波器具备较强的泛化起点;随后在训练中期保持较强的数据增强(尤其是尺度扰动与 Mosaic),以提高锈蚀小目标的出现频率与背景多样性;在训练后期逐步关闭高强度组合增强(例如设置 close_mosaic),让模型在更接近真实分布的样本上"精调"定位与置信度校准,从而降低推理阶段的框漂移与置信度虚高现象。该策略在工业缺陷类任务中通常能更好地平衡召回与误检,尤其适用于锈蚀这类"外观相似背景干扰强"的目标。

训练环境与超参数设置上,系统默认采用 Ultralytics YOLO 训练管线,硬件以 RTX 4090 为例,输入尺寸统一为 640 × 640 640\times 640 640×640,以保证小目标仍有足够的像素支持特征提取。优化器选择遵循框架的自动策略(optimizer=auto)或采用 SGD/AdamW 的等价实现,学习率采用余弦退火或多段下降,并配合 warmup 使早期梯度更新更平滑。可复现的一组常用配置如下:epochs=120batch=16imgsz=640lr0=0.01lrf=0.01momentum=0.937weight_decay=0.0005warmup_epochs=3.0patience=50mosaic=1.0close_mosaic=10。其中 batch=16 在 4090 上通常可以兼顾吞吐与显存余量;weight_decay 与动量项用于抑制背景噪声带来的过拟合;patience(早停)则用于在验证集指标长期无提升时及时终止训练,避免"越训越记忆化"的风险。对于单类锈蚀任务,建议持续监控验证集的 m A P 50 − 95 mAP_{50-95} mAP50−95 与召回率变化:若出现"训练集持续上升而验证集停滞甚至下降",往往意味着模型在局部纹理上过拟合,可通过加强颜色扰动、增加随机遮挡(Cutout 类增强)、或适度提高 weight_decay 来缓解。

在模型优化层面,除常规的超参调节外,更关键的是面向锈蚀小目标的结构性与训练性优化。其一,合理的多尺度训练(multi_scale)或更丰富的尺度抖动可以显著改善对远距离点蚀的检出,但需要控制尺度范围以避免过度缩小导致标签信息丢失;其二,针对目标框尺度长尾分布,适当提高小目标层(高分辨率特征层)的权重,或在训练中启用更合适的样本分配策略,有助于提升小框的正样本质量;其三,在推理端进行置信度阈值与 NMS IoU 的联合调节,可以把"模型输出"转化为"工程可控"的行为:低阈值偏向高召回但可能带来背景误检,高阈值则更利于稳定告警但可能漏掉早期轻微锈蚀。若系统用于巡检预警,通常优先保证召回并配合后处理过滤;若用于质检复核,则可提高阈值以减少无效框。最后,在部署侧可选用 ONNX 导出与 TensorRT 加速以提升视频流推理帧率;若需要在较低算力设备运行,则可引入蒸馏或剪枝以进一步压缩模型,但应在验证集上严格对比 m A P 50 − 95 mAP_{50-95} mAP50−95、F1 与漏检样例,确保压缩不会显著损害小目标性能。

如果你把实际训练日志里最关键的两三项(例如最终 m A P 50 − 95 mAP_{50-95} mAP50−95、最佳 epoch、FPS/耗时、以及你是否开启 multi_scalecos_lr)发我,老思还能把这一节进一步写成"与实验结果紧密对齐"的版本,把每个策略为什么有效直接落到你这套锈蚀数据分布特征上。


5. 实验与结果分析

本节围绕"锈蚀单类检测(rust)"任务,对 YOLO 系列在同一数据集、同一训练轮数与一致评估协议下的性能进行对比。实验的核心目的有两点:其一,验证轻量模型在锈蚀这类"小目标占比高、纹理与背景易混淆"的场景中能否获得可用的精度上限;其二,在满足实时性的工程约束下,明确不同 YOLO 版本与不同模型尺度(n/s)在精度、召回与端侧时延上的权衡关系,从而为系统默认模型选择与 UI 中的"可切换模型"策略提供依据。所有实验均在 NVIDIA GeForce RTX 3070 Laptop GPU(8GB 显存)环境下完成,时间开销分解为预处理(PreTime)、推理(InfTime)与后处理(PostTime)三段,以更贴近桌面端实时交互的实际链路。

在度量指标方面,本文采用 Precision、Recall、F1 Score、 m A P @ 0.5 mAP@0.5 mAP@0.5(记为 mAP50)与 m A P @ 0.5 : 0.95 mAP@0.5:0.95 mAP@0.5:0.95(记为 mAP50-95)作为主要评价标准。其中 Precision 衡量误检控制能力,Recall 衡量漏检风险,F1 作为二者的调和平均:
F 1 = 2 P R P + R , F1 = \frac{2PR}{P+R}, F1=P+R2PR,

用于刻画在给定置信度阈值下的综合检测质量;mAP50 与 mAP50-95 分别表征"宽松 IoU 条件下的检出能力"与"更严格定位一致性下的综合性能"。由于锈蚀目标框常呈碎片化、细长条带或边缘扩散形态,mAP50-95 往往对定位精细度更敏感,因此更能反映模型在复杂背景下的真实泛化能力。

从单模型训练过程来看(如下训练曲线图所示,results.png),训练集与验证集的 box/cls/dfl 损失均呈稳定下降趋势,Precision 与 Recall 随 epoch 增长持续上升且在后期趋于平缓,mAP50 与 mAP50-95 曲线无明显震荡回落,表明训练过程总体收敛良好、未出现显著的后期过拟合反转。

结合 PR 曲线(PR_curve.png)可以进一步观察到:在 Recall 约 0.7 之前,Precision 长时间保持在较高水平,说明模型能够较稳定地区分"锈蚀纹理"与"背景伪纹理";当 Recall 继续推高至 0.8 以上时 Precision 开始快速下降,这一现象通常意味着为了捕获更轻微、更小面积或更模糊的早期锈蚀,模型不得不降低判别门槛,从而引入更多背景误检。

与之对应,F1--Confidence 曲线(F1_curve.png)给出了较清晰的阈值选择依据:曲线在置信度约 0.356 左右达到峰值,最佳 F1 约为 0.82,这说明在工程部署时若希望获得"误检与漏检较均衡"的输出,默认 conf≈0.35 是较合理的起点;若系统更偏向巡检预警(强调"少漏检"),可适当下调阈值以提高 Recall;若偏向质检复核(强调"少误检"),则应上调阈值并配合 NMS/IoU 调节以压制冗余框。

进一步结合归一化混淆矩阵(confusion_matrix_normalized.png)可解释当前误差结构:模型对真实锈蚀目标的正确检出比例约为 0.77,同时约 0.23 的锈蚀样本被判为背景,反映出主要误差仍来自漏检而非大规模的类间混淆(任务为单类)。这与数据集"目标框尺度长尾、小目标占比高"的属性一致:细碎点蚀、弱对比度锈蚀与边缘薄锈条带在下采样与特征融合过程中更容易被背景吞没,导致 Recall 难以进一步拉升而不付出显著的 Precision 代价。

在多模型横向对比中,本文分别对 n 级轻量模型(YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12n)与 s 级模型(YOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s、YOLOv12s)开展评测,并给出统一的精度--速度--复杂度表。n 级模型的核心结论是:YOLOv12n 在综合指标上最优,mAP50 达到 0.8353、mAP50-95 达到 0.6481,Recall 也提升至 0.7330,同时 F1 达到 0.8158,体现出在保持较高 Precision(0.9197)的同时对小目标锈蚀的召回更充分。对照图可以看到,YOLOv12n 的 PR 曲线在高 Recall 区间更"靠外",说明其在尝试捕获更难样本时 Precision 损失相对更小;而 YOLOv8n 的 mAP50(0.7799)与 Recall(0.6841)相对偏低,显示在该数据集上其对复杂背景与小尺度锈蚀的鲁棒性略弱。值得注意的是,YOLOv7-tiny 的精度表现非常突出(mAP50=0.8588,F1=0.8402),但其推理与后处理耗时显著增加(InfTime=14.74ms、PostTime=4.06ms),这通常与其网络结构/输出密度以及后处理的候选框规模有关,在实时视频流场景下更容易形成瓶颈。因此,如果系统目标是"交互流畅、帧率稳定",YOLOv12n 在精度略低于 YOLOv7-tiny 的前提下提供了更可控的时延与更高的综合可用性;若目标是"离线批处理或精度优先"的检测场景,YOLOv7-tiny 仍是值得保留的备选模型。

从速度链路角度看,n 级模型推理耗时并不严格随 FLOPs 单调变化:例如 YOLOv6n 虽参数量更大(4.3M)但 InfTime 仅 6.78ms,而 YOLOv9t 在本环境下 InfTime 达到 16.51ms。该差异通常由算子类型、实现优化程度、内存访问与框架后端(以及是否触发特定算子融合)共同决定,因此在工程部署中不能仅依赖 Params/FLOPs 推断端侧速度,必须以实际硬件实测为准。就本文实验而言,YOLOv12n 的 InfTime 为 12.47ms,虽非最快,但结合其 mAP50-95 的优势与更高 Recall,在"精度--实时性"的折中上更均衡,适合作为系统默认模型;而 YOLOv6n/YOLOv8n 由于推理更快,可作为对实时性极敏感场景的轻量替代。

s 级模型的对比结果显示:扩大模型容量后,定位精度与召回能力总体进一步提升,但"速度成本"与"收益幅度"需要结合应用形态进行判断。表中 YOLOv7(非 tiny)在精度上显著领先,Precision=0.9345、Recall=0.8650、F1=0.8984,mAP50=0.9131、mAP50-95=0.7305,几乎可以视为当前数据集上的强上限模型;其代价是 Params=36.9M、FLOPs=104.7G,推理耗时达到 23.62ms,后处理也增加到 3.46ms,这对实时视频流(尤其需要界面渲染与数据库写入)会形成明显压力。相比之下,YOLOv11s 与 YOLOv8s 在精度与速度之间取得更温和的平衡:YOLOv11s 的 mAP50=0.8499、mAP50-95=0.6729 且 InfTime=9.74ms,整体表现更贴近"工程可部署"的节奏;YOLOv8s 的 mAP50=0.8485、mAP50-95=0.6681 且 InfTime=7.66ms,在速度侧更占优。YOLOv12s 的 mAP50-95 为 0.6624,虽略低于 YOLOv11s/YOLOv8s,但其 Recall 与 F1 仍保持在较高区间,结合曲线对比可看出其收敛过程稳定、PR 外包络不差,说明在该数据集上 YOLOv12 的优势更多体现在轻量尺度上,而在 s 级别可能需要进一步针对性调参(例如更精细的增强退火或更匹配的输入尺度策略)才能完全释放潜力。

综合来看,若以桌面端实时交互为主要目标,n 级别中 YOLOv12n 在 mAP50(0.8353)与 mAP50-95(0.6481)上给出了最均衡的精度收益,同时 Recall(0.7330)相对更高,能够降低"早期轻微锈蚀"漏检风险,适合作为系统默认后端;若以精度上限为优先且允许更高推理时延,YOLOv7(s 级)提供了最强的检测能力,尤其在 mAP50-95(0.7305)上对定位质量的提升更明显,更适合离线复核或低帧率巡检;而在"较高精度 + 仍需较好实时性"的中间区间,YOLOv11s/YOLOv8s 是更稳妥的工程型选择。后续系统部署时,建议将 UI 中的默认阈值设为 conf≈0.35(对应最佳 F1),并开放 Recall/Precision 偏好模式:巡检预警场景下适度下调阈值并提高容忍误检的后处理过滤,质检复核场景下上调阈值并强化 NMS 策略,从而把本节实验结论直接转化为可操作的交互策略。


6.系统设计与实现

6.1 系统设计思路

本系统面向"锈蚀单类检测"的桌面端落地需求,整体采用 Python 3.12 + PySide6 + SQLite 的工程栈,强调三点:第一,推理链路需要稳定地对接多源输入(图片/视频/摄像头),并在 UI 主线程保持高响应;第二,检测器后端需可插拔,允许在 YOLOv5--YOLOv12 族权重之间切换,便于对比实验结论在实际应用中的复现;第三,检测结果与用户偏好应具备持久化能力,使"阈值设定、主题样式、历史记录"能够跨会话复用,形成可追溯的巡检闭环。为此,系统采用典型分层:MainWindow 作为控制中枢负责状态机与槽函数调度,Ui_MainWindow 承担界面组件组织与呈现,Detector 作为处理层封装模型加载、预处理、推理与后处理,并通过信号---槽机制把"帧数据/推理结果/统计信息"回传给界面层完成绘制与表格刷新。

在运行时序上,主流程以"启动→选择输入→预处理→YOLO 推理→后处理/统计→界面更新→用户交互→循环/结束"为主线组织。输入侧对摄像头与视频流采用帧读取循环,对图片采用单帧触发;预处理侧完成尺寸对齐与归一化,保证与训练配置一致;推理侧输出候选框与置信度;后处理侧执行阈值过滤与 NMS,并同步生成类别计数、置信度分布等统计量;界面侧将检测框叠加到原图并更新表格/状态栏,同时允许用户实时调节 conf/iou、暂停播放、切换模型与导出结果。由于 PySide6 对 UI 线程安全要求严格,推理部分建议采用工作线程或异步队列,避免耗时操作阻塞主线程;而"绘制与控件更新"统一回到主线程执行,从而在实时性与稳定性之间取得更合理的平衡。

在数据管理方面,SQLite 既承担账户表(用户注册/登录/头像/密码摘要/个性化配置)也承担结果表(时间戳、输入源、模型名、阈值、检测框与统计摘要、导出路径等)。这种设计使得系统既能提供"结果落盘、可检索、可复查"的工程能力,也能把实验阶段的模型对比结论自然延伸到应用阶段:同一段视频在不同权重下的输出可被结构化记录,便于后续复核、对比与报告生成。

图 系统流程图

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

6.2 登录与账户管理 --- 流程图

登录与账户管理模块以"账号维度的个性化空间"为设计目标:注册阶段将用户信息写入 SQLite,登录阶段完成口令校验并加载该用户的主题样式、阈值偏好与历史检测记录,使系统在进入主界面时即可恢复到用户上一次的工作状态;在检测流程运行中,用户可随时修改头像、密码与偏好设置,相关配置以事务方式持久化,确保异常退出后仍可一致恢复;当用户注销或切换账号时,系统清理内存会话与缓存并回到登录页,从而实现多人共用设备场景下的隔离与可追溯。更重要的是,该模块与主检测链路并非割裂:模型选择、Conf/IoU、导出路径与结果记录都绑定到用户空间,使实验对比、巡检留痕与后续复核能够在同一套 UI 操作范式下完成,最终把"算法输出"转化为"可管理的业务数据"。


7. 下载链接

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

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷

详细介绍文档博客YOLOv5至YOLOv12升级:金属锈蚀检测系统的设计与实现(完整代码+界面+数据集项目)

环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程

或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程

数据集标注教程(如需自行标注数据):数据标注合集


8.参考文献

1 KOCH G H, BRONGERS M P H, THOMPSON N G, et al. Corrosion costs and preventive strategies in the United States [R]. Washington, DC: Federal Highway Administration, 2002.
2 CANNY J. A computational approach to edge detection[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence , 1986, 8(6): 679-698.
3 LOWE D G. Distinctive image features from scale-invariant keypoints[J]. International Journal of Computer Vision , 2004, 60(2): 91-110.

4\] DALAL N, TRIGGS B. Histograms of oriented gradients for human detection\[C\]//*Proceedings of CVPR 2005* . IEEE, 2005: 886-893. \[5\] KRIZHEVSKY A, SUTSKEVER I, HINTON G E. ImageNet classification with deep convolutional neural networks\[C\]//*Advances in Neural Information Processing Systems* . 2012. \[6\] HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition\[C\]//*Proceedings of CVPR 2016* . IEEE, 2016: 770-778. \[7\] RONNEBERGER O, FISCHER P, BROX T. U-Net: Convolutional networks for biomedical image segmentation\[C\]//*MICCAI 2015* . Springer, 2015: 234-241. \[8\] 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. \[9\] LIN T Y, DOLLÁR P, GIRSHICK R, et al. Feature pyramid networks for object detection\[C\]//*Proceedings of CVPR 2017* . IEEE, 2017: 2117-2125. \[10\] 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. \[11\] DOSOVITSKIY A, BEYER L, KOLESNIKOV A, et al. An image is worth 16×16 words: Transformers for image recognition at scale\[C\]//*International Conference on Learning Representations (ICLR)* . 2021. \[12\] WOO S, PARK J, LEE J Y, et al. CBAM: Convolutional block attention module\[C\]//*Proceedings of ECCV 2018* . Springer, 2018: 3-19. \[13\] BURTON H, et al. RustSEG: Automated segmentation of corrosion using deep learning\[EB/OL\]. arXiv:2205.05426, 2022. \[14\] LIU C, LIU J, WU Y, et al. RD-YOLO: Towards rust defect detection for future unmanned transmission lines maintenance\[J\]. *IEICE Transactions on Information and Systems* , 2025, 108(D)(11): 1348-1358. DOI:10.1587/transinf.2024EDP7265. ([J-STAGE](https://docs.ultralytics.com/models/yolo12/ "YOLO12: Attention-Centric Object Detection - Ultralytics YOLO Docs")) \[15\] 基于改进DeepLabV3+的钢桥锈蚀检测方法\[J\]. *重庆交通大学学报(自然科学版)* , 2025. ([CQJTU](https://docs.ultralytics.com/yolov5/tutorials/architecture_description/ "Ultralytics YOLOv5 Architecture - Ultralytics YOLO Docs"))

相关推荐
小追兵2 小时前
Claude Code API 中转站定价太乱,我做了个在线比价工具
人工智能·claude
北京软秦科技有限公司2 小时前
一份报告为何总被退回?IACheck结合AI报告审核给防静电地板检测合规性“补漏洞”
人工智能
yejqvow122 小时前
Pandas 高效实现组内跨行时间戳匹配与布尔标记
jvm·数据库·python
Agent产品评测局2 小时前
如何搭建一个药品市场价格监控智能体来实现100%价格一致性? —— 2026全渠道价格均衡化架构实战指南
人工智能·ai·chatgpt·架构
每日综合2 小时前
多元产业赋能数字未来:大洋集团全面进军教育、游戏与大健康赛道
人工智能·游戏
网瘾新之助2 小时前
像 Git 一样思考你的 Claude Code 会话
人工智能
科技新芯2 小时前
当AI信号不再可靠,Bidnex在内的程序化广告平台如何应对
人工智能
米小虾2 小时前
从"工具"到"同事":AI Agent 自主决策能力的工程化实践
人工智能·agent
qq_411262422 小时前
四博 AI 智能音箱 S3 三网上网双屏异显技术方案
人工智能·智能音箱