基于YOLOV5的钢材缺陷检测

这篇具有很好参考价值的文章主要介绍了基于YOLOV5的钢材缺陷检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据和源码见文末

1.任务概述

        数据集使用的是东北大学收集的一个钢材缺陷检测数据集,需要检测出钢材表面的6种划痕。同时,数据集格式是VOC格式,需要进行转化,上传的源码中的数据集是经过转换格式的版本。

2.数据与标签配置方法

        在数据集目录下,train文件夹下有训练集数据及YOLO标签,valid文件夹下是验证集数据及YOLO标签。data.yaml是数据的配置文件,需要在训练和测试时进行指定。基于YOLOV5的钢材缺陷检测

 train目录

基于YOLOV5的钢材缺陷检测

valid目录

基于YOLOV5的钢材缺陷检测

        data.yaml是数据的配置文件,里面指定了训练集和验证集数据的目录,这里是使用的相对路径,如果容易报错的话,可以改为绝对路径。nc是类别数,names是类别名称。 

 3.标签转换脚本

        原始标注文件格式是voc格式,但是YOLO并不支持这种格式的文件。因此需要使用一个脚本对标签进行转换。

import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import join
import glob


classes = ["crazing", "inclusion", "patches", "pitted_surface", "rolled-in_scale", "scratches"]

def convert(size, box):
    dw = 1./size[0]
    dh = 1./size[1]
    x = (box[0] + box[1])/2.0
    y = (box[2] + box[3])/2.0
    w = box[1] - box[0]
    h = box[3] - box[2]
    x = x*dw
    w = w*dw
    y = y*dh
    h = h*dh
    return (x,y,w,h)

def convert_annotation(image_name):
    in_file = open('./ANNOTATIONS/'+image_name[:-3]+'xml')
    out_file = open('./LABELS/'+image_name[:-3]+'txt','w')
    tree=ET.parse(in_file)
    root = tree.getroot()
    size = root.find('size')
    w = int(size.find('width').text)
    h = int(size.find('height').text)

    for obj in root.iter('object'):
        cls = obj.find('name').text
        if cls not in classes:
            print(cls)
            continue
        cls_id = classes.index(cls)
        xmlbox = obj.find('bndbox')
        b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text), float(xmlbox.find('ymax').text))
        bb = convert((w,h), b)
        out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')

wd = getcwd()

if __name__ == '__main__':
    for image_path in glob.glob("./IMAGES/*.jpg"):
        image_name = image_path.split('\\')[-1]
        #print(image_path)
        convert_annotation(image_name)

 4.YOLOv5的项目参数配置

        我们只选取重要的参数进行详细的说明

        --weights是指定预训练权重。

        --cfg指定模型,我们可以根据自己的需要,指定不同计算量的模型。

基于YOLOV5的钢材缺陷检测

         --hyp是超参数的配置文件,一般不需要进行修改

        进行训练,最重要的参数还有--epochs(训练的轮次),--batch-size(批量大小),--cos-lr是否使用余弦调度。

其中,参数我们可以在Anaconda的命令行中指定,也可以在Pycharm进行配置

基于YOLOV5的钢材缺陷检测

以下只是示例,参数需要根据自己的需要进行指定 

基于YOLOV5的钢材缺陷检测

 参数的含义:

 --weights:初始权重
    --cfg:模型配置文件
    --data:数据配置文件
    --hyp:学习率等超参数文件
    --epochs:迭代次数
    -imgsz:图像大小
    --rect:长方形训练策略,不resize成正方形,使用灰条进行图片填充,防止图片失真
    --resume:恢复最近的培训,从last.pt开始
    --nosave:只保存最后的检查点
    --noval:仅在最后一次epochs进行验证
    --noautoanchor:禁用AutoAnchor
    --noplots:不保存打印文件
    --evolve:为x个epochs进化超参数
    --bucket:上传操作,这个参数是 yolov5 作者将一些东西放在谷歌云盘,可以进行下载
    --cache:在ram或硬盘中缓存数据
    --image-weights:测试过程中,图像的那些测试地方不太好,对这些不太好的地方加权重
    --single-cls:单类别标签置0 
    --device:gpu设置  
    --multi-scale:改变img大小+/-50%,能够被32整除
    --optimizer:学习率优化器
    --sync-bn:使用SyncBatchNorm,仅在DDP模式中支持,跨gpu时使用
    --workers:最大 dataloader 的线程数 (per RANK in DDP mode)
    --project:保存文件的地址
    --name:保存日志文件的名称
    --exist-ok:对项目名字是否进行覆盖
    --quad:在dataloader时采用什么样的方式读取我们的数据,1280的大图像可以指定
    --cos-lr:余弦学习率调度
    --label-smoothing:
    --patience:经过多少个epoch损失不再下降,就停止迭代
    --freeze:迁移学习,冻结训练
    --save-period:每x个周期保存一个检查点(如果<1,则禁用)
    --seed:随机种子
    --local_rank:gpu编号
    --entity:可视化访问信息
    --quad:
    四元数据加载器是我们认为的一个实验性功能,它可能允许在较低 --img 尺寸下进行更高 --img 尺寸训练的一些好处。
    此四元整理功能会将批次从 16x3x640x640 重塑为 4x3x1280x1280,这不会产生太大影响 本身,因为它只是重新排列批次中的马赛克,
    但有趣的是允许批次中的某些图像放大 2 倍(每个四边形中的 4 个马赛克中的一个放大 2 倍,其他 3 个马赛克被删除)

配置好环境指定参数就可以进行训练了。

数据和源码链接:https://pan.baidu.com/s/1EaJT5Rganfy-Ph5S1gvyQg?pwd=uu48 
提取码:uu48 文章来源地址https://www.toymoban.com/news/detail-460798.html

到了这里,关于基于YOLOV5的钢材缺陷检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的布匹缺陷检测系统(Python+PySide6界面+训练代码)

    摘要:本文介绍了一种基于深度学习的布匹缺陷检测系统的代码,采用最先进的YOLOv8算法并对比YOLOv7、YOLOv6、YOLOv5等算法的结果,能够准确识别图像、视频、实时视频流以及批量文件中的布匹缺陷。文章详细解释了YOLOv8算法的原理,并提供了相应的Python实现代码、训练数据集

    2024年03月15日
    浏览(55)
  • YOLOv5 + Flask + Vue实现基于深度学习算法的垃圾检测系统源码+数据库

    YOLOv5🚀 :高效、准确的目标检测算法,实时识别检测图像和视频中的各种对象 PyTorch :机器学习框架,以动态计算图为基础,具有灵活性和易用性 OpenCV :计算机视觉库,提供了丰富的图像和视频处理功能 Vue3 :采用 Vue3 + script setup 最新的 Vue3 组合式 API Element Plus :Element

    2024年02月22日
    浏览(31)
  • 基于yolov5的PCB缺陷检测,引入CVPR 2023 BiFormer:Vision Transformer with Bi-Level Routing Attention提升检测精度

    目录 1.PCB数据集介绍 1.1 通过split_train_val.py得到trainval.txt、val.txt、test.txt  1.2 通过voc_label.py得到适合yolov5训练需要的 2.基于Yolov5 的PCB缺陷识别 2.1配置 pcb.yaml  2.2 修改yolov5s_pcb.yaml 2.3 超参数修改train.py 3.实验结果分析 3.1  CVPR 2023 BiFormer: 基于动态稀疏注意力构建高效金字塔

    2024年02月06日
    浏览(35)
  • YOLOv5实战之输电线路绝缘子缺陷检测识别

    在前面的文章中已经详细介绍了在本机上安装YOLOv5的教程,安装YOLOv5可参考前面的文章YOLOv5训练自己的数据集(超详细)https://blog.csdn.net/qq_40716944/article/details/118188085https://blog.csdn.net/qq_40716944/article/details/118188085 目录   一、数据集介绍 二、构建训练数据集  1、先构建数据集文件

    2024年02月02日
    浏览(39)
  • 基于YOLOv5 来训练头盔目标检测-附源码

    建筑工地头部头盔检测,基于目标检测工地安全帽和禁入危险区域识别系统,🚀😆附YOLOv5训练自己的数据集超详细教程!!! 目录 指标 yolov5s 为基础训练,epoch = 50 yolov5m 为基础训练,epoch = 100

    2024年02月13日
    浏览(36)
  • 深度学习目标检测-钢材缺陷检测系统上位机ui界面

    之前写过这个博客: 工业缺陷检测项目实战(二)——基于深度学习框架yolov5的钢铁表面缺陷检测 里面介绍了使用yolov5进行训练的步骤。今天我们一起学习利用qt将缺陷检测封装为一个系统。 首先看看效果: 我们运行,先可以看到登录界面: 如果密码和账号输入错误,会提示警

    2023年04月15日
    浏览(28)
  • 深度学习目标检测-钢材缺陷检测系统上位机ui和web界面

    之前写过这个博客: 工业缺陷检测项目实战(二)——基于深度学习框架yolov5的钢铁表面缺陷检测 里面介绍了使用yolov5进行训练的步骤。今天我们一起学习利用qt将缺陷检测封装为一个系统。 首先看看效果: 我们运行,先可以看到登录界面: 如果密码和账号输入错误,会提示警

    2024年02月01日
    浏览(28)
  • 【2023-Pytorch-检测教程】手把手教你使用YOLOV5做电线绝缘子缺陷检测

    随着社会和经济的持续发展,电力系统的投资与建设也日益加速。在电力系统中,输电线路作为电能传输的载体,是最为关键的环节之一。而绝缘子作为输电环节中的重要设备,在支撑固定导线,保障绝缘距离的方面有着重要作用。大多数高压输电线路主要架设在非城市内地

    2023年04月11日
    浏览(38)
  • 【目标检测】基于yolov5的交通标志检测和识别(附代码和数据集)

    写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 (专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内,不想订阅专栏的

    2024年02月04日
    浏览(43)
  • 基于深度学习的跌倒检测系统(UI界面+YOLOv5+训练数据集)

    摘要:跌倒监测系统用于智能化监测是否有行人跌倒,通过YOLOv5的深度学习技术对视频、图片、摄像头等画面进行跌倒检测,分析并安全提醒。在介绍算法原理的同时,给出 P y t h o n 的实现代码、 P y Q t 的UI界面及训练数据集。跌倒监测系统主要用于日常生活中行人跌倒情况

    2023年04月18日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包