钢材表面缺陷检测系统开发日志(Day 3):界面功能打磨 + 实验数据落地 + 消融实验启动

钢材表面缺陷检测系统开发日志(Day 3):界面功能打磨 + 实验数据落地 + 消融实验启动

今日概览

休整一天后回归项目,补完了原定的全部开发任务。今天的核心是把项目从「能用」打磨到「好用且能写进论文」:踩坑修复了多版本 YOLOv5 兼容问题,跑通了带参数调节的优化版可视化界面,提取了完整的验证集精度指标并整理成标准论文化素材,同时启动了第一组消融对比实验,为提升论文深度打下基础。

一、界面优化攻坚:多版本兼容踩坑全记录

针对基础版界面功能单一、兼容性差的问题,迭代开发了第二版可视化检测系统,新增置信度阈值调节、结果图一键保存等实用功能,过程中踩了多个 YOLOv5 版本兼容的经典坑,全部修复完毕。

踩坑修复清单

表格

报错信息核心原因最终解决方案
IndentationError 缩进错误复制代码时空格与 Tab 混用,层级错乱全量替换规范缩进的完整代码,避免手动调整
cannot import name 'scale_coords'本地 YOLOv5 版本函数名变更,接口不兼容自实现坐标缩放函数scale_boxes,彻底脱离官方内部依赖
'str' object has no attribute 'type'预热函数要求 device 为 torch 对象而非字符串移除模型预热逻辑,改用torch.device()统一设备对象
ModuleNotFoundError: No module named 'utils.general'相对路径导入不稳定,环境变量加载失败使用绝对路径写死 YOLOv5 源码目录,导入时优先插入 sys.path
运行后无界面弹窗,直接输出检测结果检测类文件末尾测试代码缩进错乱,导入时自动执行并退出彻底移除检测类中的测试代码,仅保留纯类定义,界面文件独立启动 Qt 事件循环

最终界面功能

优化后的界面采用分区布局,操作控制、参数调节、结果展示清晰分离:

  1. 操作控制区:支持选图、检测、保存结果图全流程交互
  2. 置信度滑块:0.05-0.95 区间无级调节,实时调整检测灵敏度,无需重启程序
  3. 结果详情区:结构化输出缺陷类别、置信度,附带异常捕获机制,不再无故闪退

实测验证:选择裂纹、划痕等不同类型缺陷图,均可正常输出带标注的检测结果,拖动阈值可直观看到检出数量的变化,整套交互闭环流畅可用。

二、实验数据落地:提取完整精度指标,产出论文素材

运行官方验证脚本完成了验证集全量评估,拿到了可直接写入论文的量化数据,完成了实验素材的核心整理。

整体性能指标

模型整体 mAP@0.5 达到 75.6%,精确率 67.1%,召回率 71.3%,对于 YOLOv5-nano 轻量化模型而言,满足工业表面缺陷检测的基础精度要求。

分类别性能分析

不同缺陷类别检测效果差异明显:

  • 第一梯队(优秀):划痕(scratches)、斑块(patches),mAP@0.5 均超 93%。这类缺陷形态清晰、对比度高,特征易于学习。
  • 第二梯队(良好):麻点表面、夹杂物、氧化铁皮压入,指标处于中等水平,满足基本检测需求。
  • 第三梯队(待优化):裂纹(crazing),召回率仅 23.6%。原因是裂纹多为细碎低对比度纹理,特征辨识度弱,容易漏检,是后续优化的重点方向。

产出成果

整理完成了两份标准化实验结果表格,以及配套的论文化分析表述,连同训练曲线、PR 曲线、检测样例图一并归档为论文素材,后续写论文可直接复用。

三、消融实验启动:轻量化模型对比实验

为提升论文深度和工作量,启动了第一组消融对比实验:YOLOv5-nano 与 YOLOv5s 性能对比实验。 实验控制单一变量,仅更换模型骨干网络,数据集、训练轮次、输入尺寸、优化器等参数完全一致,最终将从「精度、推理速度、模型体积」三个维度做对比,分析轻量化模型的工业落地性价比。

遇到的小插曲

训练启动后卡在预训练权重下载阶段,由于 GitHub 服务器在国内访问限速,自动下载速度极慢。属于环境网络问题,后续可通过手动放置权重文件解决,不影响实验本身的设计逻辑。

今日成果清单

✅ 完成可视化界面功能优化,新增置信度调节、结果保存等功能 ✅ 修复所有 YOLOv5 版本兼容问题,界面程序稳定运行 ✅ 完成验证集精度评估,提取整体 + 分品类完整指标 ✅ 整理出标准论文化的实验表格与分析文字,归档论文素材 ✅ 启动消融对比实验,完成实验方案设计与训练部署