使用YOLOv5训练NEU-DET数据集

一、下载YOLOv5源码和NEU-DET(钢材表面缺陷)数据集

YOLOv5源码
NEU-DET(钢材表面缺陷)数据集
这里的数据集已经经过处理了,下载即可

若通过其他途径下载的原始数据集标签为xml格式,需要转化为txt格式XML转txt格式脚本

二、数据集准备

NEU-DET(钢材表面缺陷)数据集中一共有六个类别缺陷共计1770张
在这里插入图片描述
train为训练集、valid为验证集、data.yaml为配置文件存放不同数据集的路径

无论train训练集还是valid验证集都需要有两个子文件夹,images图像和labels标签,(cache为缓存可以删掉)

Ⅰ,在train训练集中

在这里插入图片描述
labels和images要一一对应
images包含1770张照片,是模型所需要训练的所有图像
在这里插入图片描述
在这里插入图片描述

每个标签均有多行数字组成,这里有两行数字,表示有该图片有两个要检测的目标,0表示第0个类别,后面四个数据表示目标的xywh位置(归一化之后的结果)
在这里插入图片描述
YOLO中标签,只认txt格式,其他的不支持
也可以参考该篇博文,准备自己训练的数据三、自定义标签准备

Ⅱ,在valid验证集中也一样

images中仅有30中照片,验证集的目的是在进行模型训练的过程中时不时的进行小测试看看当前训练的效果
在这里插入图片描述

Ⅲ,data.yaml

train和val为训练集train和验证集vaild中images的位置
nc为类别数
names分别对应不同类别的名称
在这里插入图片描述

三、YOLOv5原始模型

Ⅰ,为方便后续操作,把数据集放到源码文件夹下

在这里插入图片描述

Ⅱ,train.py为整个模型的入口

在这里插入图片描述

Ⅲ,配置参数

若不配置参数会使用主函数中default默认值
在这里插入图片描述
data为配置文件路径,该配置文件存有训练数据的位置
cfg为所需要采用的模型架构5s、5m、5l等
batch为每次读取图像张数
在这里插入图片描述

Ⅳ,模型架构

YOLO为了适应更多的场合,提供了多个版本,也就是lms类比于衣服的大小号,其中yolo5l模型架构层数最多,训练层数最多,速度慢但效果好,最终训练出来的模型最大
在这里插入图片描述
以yolo5l.yaml为例
nc为检测的类别,这里数据集为6类,需要改成6

depth_multiple模型的层数
width_multiple模型中每一层特征值的个数
这两个参数控制模型的复杂度,这俩个值为系数,也就是在模型求解出来之后还需要再乘以这两个系数才是最后的结果,因为这个是5l,故为1.0,要是5s这两个参数都小于1

anchors为候选框的大小,若样本中待检测的数据较小,就把候选框改小点
在这里插入图片描述

四、模型训练

train.py右击run开始训练模型
在这里插入图片描述

每训练一次,会将结果保存到runs文件夹下,当然给主函数传入相应参数来改变保存路径
在这里插入图片描述
训练完成的模型为.pt文件,best为模型效果最好,last为模型的上一次训练结果,若遇到突发情况方便继续训练
在这里插入图片描述

五、模型效果验证

detect.py为验证模型
在这里插入图片描述

传参,有很多参数可以自己挨个试试看看效果
在这里插入图片描述
在这里插入图片描述
其中,weights为要用哪个模型进行测试
source为待测试图片位置
output为最后输出结果的位置

在detect.py右击run开始使用训练好的模型预测
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

带分页功能的SSH整合,DAO层经典封装

任何一个封装讲究的是,使用,多状态。Action:任何一个Action继承分页有关参数类PageManage,自然考虑的到分页效果,我们必须定义下几个分页的参数。并根据这个参数进行查值。然后在继承ServiceManage,Service…

leetcode 198. 打家劫舍 思考分析

目录1、题目2、求解思路3、代码1、题目 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动…

找不到Windows照片查看器解决方法

桌面创建一个txt文本 复制这些命令,之后将后缀改为.reg,右击管理员身份运行即可 Windows Registry Editor Version 5.00 ; Change Extensions File Type [HKEY_CURRENT_USER\Software\Classes\.jpg] "PhotoViewer.FileAssoc.Tiff" ; Change E…

伙伴分配器的一个极简实现

提起buddy system相信很多人不会陌生,它是一种经典的内存分配算法,大名鼎鼎的Linux底层的内存管理用的就是它。这里不探讨内核这么复杂实现,而仅仅是将该算法抽象提取出来,同时给出一份及其简洁的源码实现,以便定制扩展…

[USACO3.2.3 Spinning Wheels]

[关键字]:模拟 枚举 [题目大意]:有5个轮子,每个轮子优r个缺口并且会按一定速度不停转动,问什么时候可以使一条光线射过所有轮子。 // [分析]:从0到1000(或其他的)枚举分钟然后判断,当…

一、SQLServer2008安装(带密码)、创建数据库、C#窗体项目测试

一、下载和安装SQLServer2008 东西太大了,没法上传到资源里面,官网其他公众号都下载可以。 右击管理员身份 运行setup.exe 这个密钥不能用的话,也可以去百度其他密钥 JD8Y6-HQG69-P9H84-XDTPG-34MBB 建议改一下路径,我这边修…

【C++grammar】多态、联编、虚函数

目录1、多态概念1.多态性有两种表现的方式2、联编(实现多态)1.静态联编2.动态联编3、实现运行时多态1.为何要使用运行时多态?2.如何实现运行时多态3.多态的例子1.调用哪个同名虚函数?2. 用途:可以用父类指针访问子类对…

一 MVC - HtmlHelper

HtmlHelper类位于System.Web.Mvc.Html之中主要有七个静态类组成: FormExtensions - BeginForm, BeginRouteForm, EndForm InputExtensions - CheckBox, CheckBoxFor, Hidden, HiddenFor, Password, PasswordFor, RadioButton, RadioButtonFor, TextBox, TextBoxFor …

二、用户登录和注册

一、页面设计 一共四个页面 主页面Form1,登录页面login,注册页面resister,主菜单页面main_page 系统运行进入Form1,单击登录按钮跳转到login,数据库中得存在数据信息且输入正确才可登录成功,跳转到main_pa…

【C++grammar】访问控制与抽象类与纯虚函数

目录一、访问控制 (可见性控制)1.private、public、protected关键字2.关键字示例1、关键字对类数据成员访问的限制3. 公有继承4. 私有继承5. 保护继承6. 私有继承和保护继承的区别二、抽象类与纯虚函数1.什么是抽象类2.抽象函数/纯虚函数3.抽象类示例一、访问控制 (可见性控制)…

三、上传织物图片至SQL Server并提供name进行展示织物照片

一、数据库的建立 还是在fiber_yy数据库下创建images表 images表设计如下 二、页面完善设计 main_page页面进行功能完善 入库管理系统 warehousing页面 库存查询系统 query页面 登录注册页面前面几个博文已经实现过了,这里就再赘述了,仍是沿用前…

ARM MMU工作原理剖析[转]

一、MMU的产生 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当…

【原创】SharePoint Document library List Check out 文档时碰到的问题解决

环境:TFS(Team Foundation Server)集成的WSS 3.0(SharePoint Service 3.0) 问题:如题,祥见下图 解决:一般碰到没有经验的问题,大家当然是外事不决问谷歌了,于是谷歌搜到了这篇博客 h…

四、入库管理功能的完善

一、数据库的创建 在fiber_yy数据库下创建yy_textile表 先随便添加几条数据 二、页面的完善 登录注册页面我就不演示了,前几篇博文也都有介绍 warehousing入库页面 main_page页面进行功能完善 三、代码实现 warehousing页面 using System; using System.…

leetcode 232. 用栈实现队列 思考分析

题目 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返…

YCSB初步介绍

随着大数据时代的到来和云计算的不断发展,作为云计算最基础的设施存储产品也越来越多,开源分布式存储系统有BigTable-like系统HBase,dynamo-like系统Cassandra,voldemort,Riak,淘宝开源的OceanBase等。当然…

【C++grammar】动态类型转换、typeid与RTTI

目录动态类型转换1、为何需要动态类型转换2、dynamic_cast<>();运算符3、向上转换和向下转换( Upcasting and Downcasting)4、 基类对象和派生类对象的互操作5、Upcasting/Downcasting与继承链上不同类的对象之间的赋值有什么关系和区别&#xff1f;typeid 运行时查询类型…

五、库存查询功能的完善

一、数据库的建立 由于查询功能和之前的 入库管理功能 所用的数据库都一样&#xff0c;这里仍使用yy_textile表 在fiber_yy数据库下创建yy_textile表 初始数据库信息 二、页面的完善 登录注册页面我就不演示了&#xff0c;前几篇博文也都有介绍 query查询页面 main_page…

整合ajaxmin 和 less 到VS.net

我用的前端框架是bootstrap_extra, twitter团队做的&#xff0c;这个是他的一个扩展&#xff0c;首先从上面下载一个。至于ajaxmin&#xff0c;请参考这里1) 从bootstrap_extra的解压包中&#xff0c;复制build目录下三个文件到项目中去&#xff0c;这三个文件分别是BatchSubsi…

六、出库管理功能的实现

一、数据库的建立 这里仍使用yy_textile表 在fiber_yy数据库下创建yy_textile表 初始数据库信息 二、页面的完善 登录注册页面我就不演示了&#xff0c;前几篇博文也都有介绍 shipment出库管理页面 main_page页面进行功能完善 三、代码实现 shipment出库管理页面 u…