基于改进YOLOv5的钢材表面缺陷检测系统-yolov5
项目描述 基于改进YOLOv5的钢材表面缺陷检测系统
本项目是一个基于改进 YOLOv5 的钢材表面缺陷检测系统。针对工业钢铁表面缺陷检测中目标对比度低、形态细长且容易漏检的问题,项目以 YOLOv5s 作为基线模型,从特征表达增强和网络轻量化两个维度进行了重构,构建了 YOLOv5s-CBAM 精度增强模型与 YOLOv5s-Ghost 轻量化模型,并使用 NEU-DET 钢材表面缺陷数据集完成训练与验证,同时搭配 Flask Web 界面提供在线检测能力。
项目功能
项目支持 crazing 裂纹、inclusion 夹杂、patches 斑块、pitted_surface 麻点、rolled-in_scale 轧制氧化皮、scratches 划痕共 6 类缺陷的检测。内置 Baseline、CBAM、Ghost 三个已训练模型;用户可以选择任一模型进行推理,并对比检测效果。Web 界面支持拖拽或点击上传图片,检测后会实时返回带标注的结果图,以及缺陷类别、置信度和坐标详情。检测参数可以调节,包括置信度阈值、IoU 阈值和推理尺寸(320/416/640)。页面还会展示推理耗时、检测框数量与使用模型等统计信息。除 Web 界面外,项目还完整保留了 YOLOv5 的训练、验证与批量推理脚本。
运行环境
项目实测环境为 Windows 系统上的 Python 3.11.9。由于本机没有 NVIDIA GPU,当前全部使用 CPU 推理,安装的是 torch 2.14.1+cpu 与 torchvision 0.29.1+cpu。主要依赖包括 ultralytics 8.4.184、numpy 2.4.6、opencv-python 5.0.0、Flask 与 PyYAML,pip 源配置为清华镜像。在 CPU 下,单张 640×640 图像推理约耗时 155 至 191 毫秒,其中 Ghost 模型最快。模型训练需要 GPU 环境,CPU 仅适合推理与验证。
项目技术
检测框架基于 YOLOv5,核心流程包括 DetectMultiBackend 加载模型、letterbox 图像预处理、前向推理、非极大值抑制后处理,以及使用 Annotator 绘制检测框。改进点有两处:一是 CBAM 注意力模块,通过通道注意力与空间注意力增强微弱缺陷的特征表达,参数量仅增加约 2%,mAP50 提升至 0.699;二是 Ghost 模块,通过卷积冗余压缩将参数量降至 3.23M、计算量降至 7.1 GFLOPs,权重仅 6.6MB,mAP50 达到 0.701,在三个模型中最高。数据处理方面,项目提供 VOC 标注转 YOLO 格式的工具脚本,NEU-DET 数据集划分为训练集 1440 张、验证集 360 张。评估指标涵盖 mAP50、mAP50-95、精确率、召回率、F1 曲线、混淆矩阵与 PR 曲线;训练策略采用 SIoU 损失,共 100 个 epoch。Web 层采用 Flask 后端,在服务启动时一次性预加载三个模型并常驻内存,通过 /api/detect 接口接收上传图片,以 JSON 加 Base64 形式回传标注图像与检测框数据;前端使用原生 HTML/CSS/JavaScript 实现,未引入任何框架依赖。
以上系统源码经过技术整理与调试,确保能正常运行


