基于深度学习的钢铁缺陷检测系统(yolov8、注意力机制、PyQt5界面、Python)

file

项目介绍

项目中所用到的算法模型和数据集等信息如下:

<font color=blue size=3 ><b>算法模型:<b> </font>

    yolov8yolov8 + SE注意力机制 ,<font color=#FF4500><b>直接提供</b></font>这两个<font color=#32CD32><b>训练好的模型</b></font>。模型十分重要,因为有些同学的电脑没有 GPU,无法自行训练。

<font color=green size=3 ><b>数据集:<b> </font>

    网上下载的数据集,格式都已转好,可直接使用。

<font color=#8A2BE2 size=3 ><b>界面:<b> </font>

    PyQt5

以上是本篇博客的简单说明,<font color=red size=3 ><b>添加注意力机制可作为模型的创新点<b> </font> 。


摘要:钢材表面缺陷的检测对于保障产品质量、延长产品寿命以及预防潜在安全风险起着至关重要的作用。本文介绍了基于<font color=#FF4500><b>YOLOv8深度学习框架</b></font>的一个<font color=#32CD32><b>钢材表面缺陷检测模型</b></font>,该模型使用了<font color=#1E90FF><b><u>1800张图片</u></b></font>进行训练,能够识别<font color=#DAA520 size=4><b>热轧钢带表面</b></font>的<font color=#8A2BE2 size=4><b>六种常见缺陷</b></font>,包括<font color=#FF6347><b>轧制氧化皮、斑块、开裂、点蚀表面、内含物</b></font>以及<font color=#FF6347><b>划痕</b></font>。此外,我们开发了一款带有UI界面的<font color=#4682B4><b><u>钢材表面缺陷检测系统</u></b></font>,支持<font color=#FF1493 size=4><b>实时检测</b></font>这六种缺陷,并能更直观地展示检测功能。该系统采用<font color=#FF69B4><b>Python与PyQT5</b></font>开发,能够对<font color=#FFD700><b><u>图片、视频及摄像头输入</u></b></font>进行目标检测,同时支持检测结果的保存。本文还附带了完整的Python代码和使用指南,供有兴趣的读者学习参考,获取完整的代码资源请参见文章末尾。

前言

    <font color=#FF4500 size=4><b>钢材表面缺陷的检测</b></font>在保障产品质量、延长使用寿命,以及预防潜在安全隐患方面起着关键作用。在金属加工和制造业中,<font color=#32CD32><b><u>及时且精确</u></b></font>地检测出表面缺陷,有助于避免不合格产品进入市场,从而确保结构的完整性与可靠性,以及产品的外观与性能标准。此外,缺陷检测还能帮助制造商<font color=#1E90FF><b>减少废品率</b></font>,提高材料利用率,降低经济损失。

    <font color=#DAA520 size=4><b>钢材表面缺陷检测</b></font>在多个领域中得到了广泛应用,如<font color=#FF6347><b>汽车制造、航空航天、船舶制造、建筑、管道和压力容器</b></font>等行业的质量控制中都扮演着重要角色。在轧钢厂中,一个自动化的表面缺陷检测系统能够实现<font color=#8A2BE2><b>在线监控</b></font>,及时识别生产过程中出现的缺陷,从而迅速调整生产参数,提升产品的<font color=#4682B4><b>一次合格率</b></font>。

    在现代制造环境中,<font color=#FF69B4><b>钢材表面缺陷检测系统</b></font>还可以与其他工业自动化组件协同工作,比如与生产管理系统整合,以提供实时的质量控制反馈,推动智能制造和工业4.0的发展。在售后服务及维护阶段,系统能够帮助快速诊断<font color=#FFD700><b><u>运输和使用过程中</u></b></font>可能产生的缺陷问题,确保用户的<font color=#FF1493><b>使用安全</b></font>和产品的<font color=#FF4500 size=4><b>持久性能</b></font>。

    通过收集与钢材表面缺陷相关的数据和图像,博主利用<font color=#32CD32><b>YOLOv8目标检测技术</b></font>,结合<font color=#1E90FF><b>Python与PyQt5</b></font>,开发出了一款界面简洁的<font color=#DAA520><b>钢材表面缺陷检测系统</b></font>,该系统支持<font color=#8A2BE2><b>图片、视频及摄像头检测</b></font>,并能够保存检测结果。

功能展示:

部分核心功能如下:

  • <font color=FF9900 size=3 >功能1: </font> 支持单张图片识别
  • <font color=98C091 size=3 >功能2: </font> 支持遍历文件夹识别
  • <font color=4DA8EE size=3 >功能3: </font> 支持识别视频文件
  • <font color=9D36EE size=3 >功能4: </font> 支持摄像头识别
  • <font color=F0678E size=3 >功能5: </font> 支持结果文件导出(xls格式)
  • <font color=F55D03 size=3 >功能6: </font> 支持切换检测到的目标查看

更多的其他功能可以通过下方视频演示查看。

【基于深度学习钢铁表面缺陷检测系统(yolov8)】 https://www.bilibili.com/video/BV1kw41147up/?share_source=copy_web&vd_source=e91e5d668a660c88e4ab431445546776


🌟 一、环境安装

在本项目中,我们选择使用 Python 3.8 作为开发环境。以下是本项目中关键库的简要说明:

  • Albumentations (1.3.1):用于图像数据增强,能够有效提升模型的泛化能力。
  • OpenCV (4.7.0.72):用于图像处理和计算机视觉任务,支持视频流的处理与目标检测。
  • Matplotlib (3.7.1) 和 Seaborn (0.12.2):用于数据可视化,帮助绘制图像、模型性能图表等。
  • Numpy (1.24.4):提供了高效的数值计算,支持矩阵操作和大量的科学计算功能。
  • Pandas (2.0.3):用于数据处理和分析,尤其适合大规模数据集的操作与统计分析。
  • PyQt5 (5.15.9):用于创建用户界面,结合Python进行应用开发。
  • Torch (1.9.0):深度学习框架,支持GPU加速训练,适用于本项目中YOLO模型的训练与推理。
  • CUDA 11.1:NVIDIA的并行计算平台,用于加速深度学习模型的训练和推理。

提供所有使用到的库,文档和操作视频。


🌟 二、数据集介绍

通过网络上搜集了关于<font color=#FF4500><b>钢材表面缺陷</b></font>的各类图片,并使用<font color=#32CD32><b>Labelimg标注工具</b></font>对每张图片中的目标边框(Bounding Box)及类别进行了标注。这一数据集总共包含<font color=#1E90FF><b>1800张图片</b></font>,其中<font color=#FF6347><b>训练集</b></font>包含<font color=#FFD700><b>1440张图片</b></font>,<font color=#8A2BE2><b>验证集</b></font>包含<font color=#DAA520><b>360张图片</b></font>,部分图像及标注如图所示。

该数据库包括<font color=#32CD32><b>1800个灰度图像</b></font>,涵盖六种不同类型的典型表面缺陷,每一类缺陷包含<font color=#FF4500><b>300个样本</b></font>。六种缺陷分别为:<font color=#FF6347><b>轧制氧化皮</b></font>、<font color=#DAA520><b>斑块</b></font>、<font color=#1E90FF><b>开裂</b></font>、<font color=#8A2BE2><b>点蚀表面</b></font>、<font color=#FFD700><b>内含物</b></font>和<font color=#FF4500><b>划痕</b></font>。对应的英文为:<font color=#FF6347><b>['crazing', 'inclusion', 'patches', 'pitted_surface', 'rolled-in_scale', 'scratches']</b></font>。

file

🌟 三、yolov8相关介绍

<font color=#FF4500 size=4><b>YOLOv8</b></font> 是一个<font color=#32CD32><b>SOTA(State-Of-The-Art)</b></font>模型,建立在以往 YOLO 版本的成功基础上,引入了许多新的功能和改进,以进一步提升<font color=#1E90FF><b>性能和灵活性</b></font>。具体创新包括:<font color=#FF6347><b>全新的骨干网络</b></font>、<font color=#DAA520><b>Anchor-Free 检测头</b></font>以及<font color=#8A2BE2><b>新型损失函数</b></font>,这些改进使得 YOLOv8 能够在从<font color=#FFD700><b>CPU</b></font>到<font color=#FF6347><b>GPU</b></font>的各种硬件平台上高效运行。

然而,<font color=#32CD32><b>ultralytics</b></font> 并没有直接将开源库命名为<font color=#FF4500><b>YOLOv8</b></font>,而是使用了<font color=#1E90FF><b>ultralytics</b></font>这个名称。原因在于<font color=#DAA520><b>ultralytics</b></font>将这个库定位为<font color=#FF6347><b>算法框架</b></font>,而非某一个特定算法。一个主要特点是<font color=#FFD700><b>可扩展性</b></font>。该库的目标是不仅能够支持 YOLO 系列模型,还能够支持<font color=#FF1493><b>非 YOLO 模型</b></font>以及<font color=#8A2BE2><b>分类、分割、姿态估计等各类任务</b></font>。

总而言之,<font color=#FF4500 size=4><b>ultralytics 开源库</b></font>的两个主要优点是:

  • <font color=#32CD32>融合众多当前 SOTA 技术于一体</font>

  • <font color=#1E90FF>未来将支持其他 YOLO 系列以及 YOLO 之外的更多算法</font>

file

网络结构如下:

file

🌟 四、模型训练步骤

1.使用pycharm打开代码,找到train.py打开,示例截图如下:

file

2.修改 <font color=#FF4500><b>model_yaml</b></font> 的值,以符合实际情况。如果你打算训练 <font color=#32CD32><b>YOLOv8s</b></font> 模型,请将其修改为 <font color=#1E90FF><b>model_yaml = yaml_yolov8s</b></font>。如果你想训练添加 <font color=#FFD700><b>SE注意力机制</b></font> 的模型,请将其修改为 <font color=#FF6347><b>model_yaml = yaml_yolov8_SE</b></font>。

3.修改 <font color=#32CD32><b>data_path</b></font> 的数据集路径。这里默认指定的是 <font color=#8A2BE2><b>traindata.yaml</b></font> 文件。如果你使用的是我提供的数据,可以不用修改。

4.修改 <font color=#1E90FF><b>model.train()</b></font> 中的参数,根据自己的需求和电脑硬件的情况进行调整。

```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 文件,如下所示:

file

在这里,只需修改 path 的值,其他的都不用改动(仔细看上面的黄色字体),我提供的数据集默认都是到 yolo 文件夹,设置到 yolo 这一级即可,修改完后,返回 train.py 中,执行train.py

6.打开 train.py ,右键执行。

file

7.出现如下类似的界面代表开始训练了

file

8.训练完后的模型保存在runs/train文件夹下

file

🌟 五、模型评估步骤

1.打开val.py文件,如下图所示:

file

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.修改完后,即可执行程序,出现如下截图,代表成功(下图是示例,具体以自己的实际项目为准。)

file

6.评估后的文件全部保存在在 runs/val/exp... 文件夹下

file

🌟 六、训练结果

我们每次训练后,会在 run/train 文件夹下出现一系列的文件,如下图所示:

file

   

如果大家对于上面生成的这些内容(confusion_matrix.png、results.png等)不清楚是什么意思,可以在我的文档中查看这些指标的具体含义,示例截图如下:

file

<font color=red size=5 ><b>🌟 获取方法<b> </font>

   如果您希望获取博文中提到的所有实现相关的<font color=#32CD32><b>完整资源文件</b></font>(包括<font color=#FF6347><b>测试图片、视频、Python脚本、UI文件、训练数据集、训练代码、界面代码</b></font>等),这些文件已被全部打包。以下是<font color=#1E90FF><b>完整资源包的截图</b></font>:

file

项目完整文件下载请见演示与介绍视频的视频简介部分进行获取➷➷➷

演示与介绍视频: 基于深度学习钢铁表面缺陷检测系统(yolov8)

file

结束语

由于博主的能力有限,博文中提及的方法虽然经过试验,但难免会存在一些疏漏之处。为了不断提高内容的质量和准确性,希望您能够热心指出这些错误。这不仅有助于我在下次修改时呈现得更加完善和严谨,也能使其他读者受益。您的反馈对我来说非常重要,能够帮助我进一步完善相关内容。

此外,如果您有更好的实现方法或独到的见解,也非常欢迎您分享。这将为大家提供更多的思路和选择,促进我们共同进步。期待您的宝贵建议与经验交流,谢谢您的支持!

参考文献:

  1. Zhang, Y., Li, J., & Wang, X. (2018). A review of steel surface defect detection technologies. Journal of Materials Processing Technology, 255, 124-134.
  1. Liu, H., Xu, Y., & Chen, G. (2020). Deep learning for steel defect detection based on convolutional neural networks. Automation in Construction, 110, 103029.

  2. Wang, S., Zhang, H., & Li, F. (2021). Real-time detection of surface defects in hot-rolled steel using YOLOv4. Sensors, 21(3), 734.

  3. 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.

  4. 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.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容