基于Pytorch的热轧钢带表面缺陷分类挑战

本文介绍了利用PyTorch框架进行图像分类任务的完整流程,包括数据集的选择(东北大学发布的热轧钢带表面缺陷数据库)、数据预处理、模型训练(选用ResNet-50网络结构)、损失函数(交叉熵)和优化器(Adam)。作者详细阐述了数据增强、训练过程以及模型验证,以实现对六种表面缺陷的精确分类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 简介

实现一个完整的图像分类任务,大致需要五个步骤:

  1. 选择开源框架
    目前常用的深度学习框架主要有caffe、tesorflow、pytorch、mxnet、keras、paddlepaddle等。
  2. 构建并读取数据集
    构建或获取数据集,根据选择开源框架进行数据集读取。
  3. 训练模型搭建
    选择合适的网络模型、损失函数以及优化方式,完成整体的训练模型搭建。
  4. 训练并调试参数
    通过训练选定合适参数。
  5. 测试准确率
    在测试集上验证模型的最终性能。

本次实战选择pytorch开源框架,按照上述步骤实现一个基本的图像分类任务,并详细阐述其中的细节。

2. 数据集

2.1 数据集选取

表面缺陷检测是生产制造过程中必不可少的一步,尤其在带钢原料钢卷的轧制工艺过程中形成的表面缺陷是造成废、次品的主要原因,因此必须加强对带钢表面缺陷检测,通过缺陷检测,对于加强轧制工艺管理,剔除废品等都有重要的意义。

本次实战选择的数据库为由东北大学(NEU)发布的热轧钢带表面缺陷数据库,收集了热轧钢带的六种典型表面缺陷,即轧制氧化皮(RS),斑块(Pa),开裂(Cr),点蚀表面( PS),内含物(In)和划痕(Sc)。该数据库包括1,800个灰度图像:六种不同类型的典型表面缺陷,每一类缺陷包含300个样本。

数据库下载地址 NEU-CLS
提取码:175m

下面展示了6中缺陷样本的图像
在这里插入图片描述

2.2 数据集处理

首先需要将数据集分类处理成pytorch可以读取的形式,即是将缺陷图像按类别放置在不同的文件夹中。代码如下:

import os
import shutil

### 数据集根目录
root_dir = '数据集绝对地址'

### 数据集转移目录
shutil_dir = '处理数据集绝对地址'

all_images = os.listdir(root_dir)   #读取所有文件

images_classes= ['Cr', 'In', 'Pa', 'PS', 'RS', 'Sc']

for img in all_images:
    img_shutil_dir = os.path.join(shutil_dir, str(images_classes.index(img[0:2])))
    if not os.path.isdir(img_shutil_dir):
        os.mkdir(img_shutil_dir)
    shutil.copyfile(os.path.join(root_dir, img), os.path.join(img_shutil_dir, img))

运行后,数据集形式如下:每个文件夹中放置的是同类型的缺陷图像。
在这里插入图片描述

2.3 数据集加载

在这一步,需要实现数据集的加载和数据集划分,数据集加载运用ImageFolder()DataLoader(), 数据集划分运用random_spilt(),同时实现数据集加载时的数据增强。
数据增强介绍:数据增强
Pytorch常用图像处理和数据增强方法:Pytorch

import torch.utils.data as Data
import torchvision
import torchvision.transforms as transforms

train_transform 
【项目介绍】 基于深度学习的热轧表面缺陷自动检测设计与实现python源码+答辩PPT+模型(毕设项目).zip 该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶, 或者实际项目借鉴参考! 当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 基于深度学习的热轧表面缺陷自动检测技术 1 基于Pytorch框架初步搭建了一套用于缺陷检测的CNN网络(Convolutional Neural Networks),借助标签数据,使用交叉验证的数据集分配方法,对网络进行训练和检测,实验表明,在训练轮次为100轮的条件下,我们的网络识别正确率可达68%; 2 为了充分利用现有数据集,提高模型的泛化性能,我们给现有数据集加上高斯噪声,对数据集进行旋转平移等操作; 3 为了减弱网络模型的过拟合现象,我们采用神经元随机失活(Dropout)方法,通过随机让部分神经元临时不参与计算的方式,减少神经元之间的依赖,迫使网络学习更加普适化的特征; 4 为了减少参数数量,提升运算速度,我们改变最初的网络,采用一种轻量化的网络(EffNet),这种网络相比于传统轻量化网络(SqueezeNet、MobileNet等),在参数量基本相同的情况下,识别精度更高; 5 为了增加自动检测系统的交互性能,我们借助pyqt5设计了具有统计缺陷数量和显示识别结果功能的GUI界面,并将相关代码移植到Linux操作系统下,通过树莓派运行,经检测识别正确率可达94%;
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值