项目中所用到的算法模型和数据集等信息如下:
算法模型:
yolov8、yolov8 + SE注意力机制 ,直接提供这两个训练好的模型。模型十分重要,因为有些同学的电脑没有 GPU,无法自行训练。
数据集:
网上下载的数据集,格式都已转好,可直接使用。
界面:
PyQt5
以上是本篇博客的简单说明,添加注意力机制可作为模型的创新点 。
摘要:钢材表面缺陷的检测对于保障产品质量、延长产品寿命以及预防潜在安全风险起着至关重要的作用。本文介绍了基于YOLOv8深度学习框架的一个钢材表面缺陷检测模型,该模型使用了1800张图片进行训练,能够识别热轧钢带表面的六种常见缺陷,包括轧制氧化皮、斑块、开裂、点蚀表面、内含物以及划痕。此外,我们开发了一款带有UI界面的钢材表面缺陷检测系统,支持实时检测这六种缺陷,并能更直观地展示检测功能。该系统采用Python与PyQT5开发,能够对图片、视频及摄像头输入进行目标检测,同时支持检测结果的保存。本文还附带了完整的Python代码和使用指南,供有兴趣的读者学习参考,获取完整的代码资源请参见文章末尾。
钢材表面缺陷的检测在保障产品质量、延长使用寿命,以及预防潜在安全隐患方面起着关键作用。在金属加工和制造业中,及时且精确地检测出表面缺陷,有助于避免不合格产品进入市场,从而确保结构的完整性与可靠性,以及产品的外观与性能标准。此外,缺陷检测还能帮助制造商减少废品率,提高材料利用率,降低经济损失。
钢材表面缺陷检测在多个领域中得到了广泛应用,如汽车制造、航空航天、船舶制造、建筑、管道和压力容器等行业的质量控制中都扮演着重要角色。在轧钢厂中,一个自动化的表面缺陷检测系统能够实现在线监控,及时识别生产过程中出现的缺陷,从而迅速调整生产参数,提升产品的一次合格率。
在现代制造环境中,钢材表面缺陷检测系统还可以与其他工业自动化组件协同工作,比如与生产管理系统整合,以提供实时的质量控制反馈,推动智能制造和工业4.0的发展。在售后服务及维护阶段,系统能够帮助快速诊断运输和使用过程中可能产生的缺陷问题,确保用户的使用安全和产品的持久性能。
通过收集与钢材表面缺陷相关的数据和图像,博主利用YOLOv8目标检测技术,结合Python与PyQt5,开发出了一款界面简洁的钢材表面缺陷检测系统,该系统支持图片、视频及摄像头检测,并能够保存检测结果。
部分核心功能如下:
更多的其他功能可以通过下方视频演示查看。
【基于深度学习钢铁表面缺陷检测系统(yolov8)】 https://www.bilibili.com/video/BV1kw41147up/?share_source=copy_web&vd_source=e91e5d668a660c88e4ab431445546776
在本项目中,我们选择使用 Python 3.8 作为开发环境。以下是本项目中关键库的简要说明:
提供所有使用到的库,文档和操作视频。
通过网络上搜集了关于钢材表面缺陷的各类图片,并使用Labelimg标注工具对每张图片中的目标边框(Bounding Box)及类别进行了标注。这一数据集总共包含1800张图片,其中训练集包含1440张图片,验证集包含360张图片,部分图像及标注如图所示。
该数据库包括1800个灰度图像,涵盖六种不同类型的典型表面缺陷,每一类缺陷包含300个样本。六种缺陷分别为:轧制氧化皮、斑块、开裂、点蚀表面、内含物和划痕。对应的英文为:[‘crazing’, ‘inclusion’, ‘patches’, ‘pitted_surface’, ‘rolled-in_scale’, ‘scratches’]。
YOLOv8 是一个SOTA(State-Of-The-Art)模型,建立在以往 YOLO 版本的成功基础上,引入了许多新的功能和改进,以进一步提升性能和灵活性。具体创新包括:全新的骨干网络、Anchor-Free 检测头以及新型损失函数,这些改进使得 YOLOv8 能够在从CPU到GPU的各种硬件平台上高效运行。
然而,ultralytics 并没有直接将开源库命名为YOLOv8,而是使用了ultralytics这个名称。原因在于ultralytics将这个库定位为算法框架,而非某一个特定算法。一个主要特点是可扩展性。该库的目标是不仅能够支持 YOLO 系列模型,还能够支持非 YOLO 模型以及分类、分割、姿态估计等各类任务。
总而言之,ultralytics 开源库的两个主要优点是:
融合众多当前 SOTA 技术于一体
未来将支持其他 YOLO 系列以及 YOLO 之外的更多算法
网络结构如下:
1.使用pycharm打开代码,找到train.py
打开,示例截图如下:
2.修改 model_yaml 的值,以符合实际情况。如果你打算训练 YOLOv8s 模型,请将其修改为 model_yaml = yaml_yolov8s。如果你想训练添加 SE注意力机制 的模型,请将其修改为 model_yaml = yaml_yolov8_SE。
3.修改 data_path 的数据集路径。这里默认指定的是 traindata.yaml 文件。如果你使用的是我提供的数据,可以不用修改。
4.修改 model.train() 中的参数,根据自己的需求和电脑硬件的情况进行调整。
```python # 文档中对参数有详细的说明 model.train(data=data_path, # 数据集 imgsz=640, # 训练图片大小 epochs=200, # 训练的轮次 batch=2, # 训练batch workers=0, # 加载数据线程数 device='0', # 使用显卡 optimizer='SGD', # 优化器 project='runs/train', # 模型保存路径 name=name, # 模型保存命名 ) ```
5.修改traindata.yaml
文件, 打开 traindata.yaml
文件,如下所示:
在这里,只需修改 path 的值,其他的都不用改动(仔细看上面的黄色字体),我提供的数据集默认都是到 yolo
文件夹,设置到 yolo 这一级即可,修改完后,返回 train.py
中,执行train.py
。
6.打开 train.py
,右键执行。
7.出现如下类似的界面代表开始训练了
8.训练完后的模型保存在runs/train文件夹下
1.打开val.py
文件,如下图所示:
2.修改 model_pt
的值,是自己想要评估的模型路径
3.修改 data_path
,根据自己的实际情况修改,具体如何修改,查看上方模型训练中的修改步骤
4.修改 model.val()
中的参数,按照自己的需求和电脑硬件的情况更改
```python model.val(data=data_path, # 数据集路径 imgsz=300, # 图片大小,要和训练时一样 batch=4, # batch workers=0, # 加载数据线程数 conf=0.001, # 设置检测的最小置信度阈值。置信度低于此阈值的检测将被丢弃。 iou=0.6, # 设置非最大抑制 (NMS) 的交叉重叠 (IoU) 阈值。有助于减少重复检测。 device='0', # 使用显卡 project='runs/val', # 保存路径 name='exp', # 保存命名 ) ```
5.修改完后,即可执行程序,出现如下截图,代表成功(下图是示例,具体以自己的实际项目为准。)
6.评估后的文件全部保存在在 runs/val/exp...
文件夹下
我们每次训练后,会在 run/train 文件夹下出现一系列的文件,如下图所示:
如果大家对于上面生成的这些内容(confusion_matrix.png、results.png
等)不清楚是什么意思,可以在我的文档中查看这些指标的具体含义,示例截图如下:
如果您希望获取博文中提到的所有实现相关的完整资源文件(包括测试图片、视频、Python脚本、UI文件、训练数据集、训练代码、界面代码等),这些文件已被全部打包。以下是完整资源包的截图:
项目完整文件下载请见演示与介绍视频的视频简介部分进行获取➷➷➷
演示与介绍视频: 基于深度学习钢铁表面缺陷检测系统(yolov8)
由于博主的能力有限,博文中提及的方法虽然经过试验,但难免会存在一些疏漏之处。为了不断提高内容的质量和准确性,希望您能够热心指出这些错误。这不仅有助于我在下次修改时呈现得更加完善和严谨,也能使其他读者受益。您的反馈对我来说非常重要,能够帮助我进一步完善相关内容。
此外,如果您有更好的实现方法或独到的见解,也非常欢迎您分享。这将为大家提供更多的思路和选择,促进我们共同进步。期待您的宝贵建议与经验交流,谢谢您的支持!
Zhang, Y., Li, J., & Wang, X. (2018). A review of steel surface defect detection technologies. Journal of Materials Processing Technology, 255, 124-134.
Liu, H., Xu, Y., & Chen, G. (2020). Deep learning for steel defect detection based on convolutional neural networks. Automation in Construction, 110, 103029.
Wang, S., Zhang, H., & Li, F. (2021). Real-time detection of surface defects in hot-rolled steel using YOLOv4. Sensors, 21(3), 734.
Chen, L., Zhang, Y., & Liu, Y. (2022). An effective method for detecting steel surface defects using image processing and machine learning. Materials Today Communications, 28, 102649.
Gao, J., Li, C., & Zhao, S. (2023). Application of computer vision in steel defect detection: A review. International Journal of Advanced Manufacturing Technology, 124, 2001-2013.