简单使用YOLOv5自己训练模型

news2024/10/6 8:31:01

使用YOLOv5自己训练模型

前言:本文基于我的另一篇文章作为基础,文章戳这里,主要还是实操为主,让大家能快速上手使用。

数据集构建

1.准备工作

数据收集:
  • 图片类型数据

  • 视频类型数据(使用opencv进行视频抽帧,相当于转为一张一张图片的数据)

    image-20231124142915206

    具体操作:

    1、建立如下目录

    image-20231124144123190

    2、PyCharm打开该路径

    image-20231124144253590

    3、放入视频文件、新建代码文件并配置jupyter,配置jupyter操作上面有说,结果如下图。

    image-20231124145750925

    4、接下来我们逐步输入代码

    ​ ①导入必要的包

    image-20231124150003477

    ​ ②读取视频文件

    image-20231124150339363

    ​ ③显示读取的帧

    image-20231124150359706

    这里可以发现图片颜色不对,这是因为原始图片是RGB格式,而这里imshow显示的是BGR格式,所以需要进行如下转换。

    image-20231124160917901

    ​ ④完整代码执行

    由于视频的帧数太多,所以设置参数每30帧读取一张图片。

    最后完整的代码如下(根据自己的文件路径),执行完后可以看到左侧的数据集。

    image-20231124161008111

标注工具:
  • labelimg(安装命令:pip install labelimg)

    结果如下

    image-20231124162009773

    下载好后终端输入labelimg,自动弹出该标注工具,这里如果出现了以下错误,看这篇文章,错误解决方法,设置一个系统环境变量即可。

    image-20231124163119486

再次运行,成功

image-20231124163233404

LabelImg操作方法:

点击openDir出现的选择框表示选择存图片的那个文件夹,点击Change Save Dir出现的选择框是选择把图片标注结果的目的文件夹。我在这里新建了一个label文件夹用于存放标注结果,在这里有一个小问题,Python3.10安装的labelimg无法识别jpg格式的图片,就算换成png也有别的错误,测试过别的版本python就可以正常识别,所以如果你使用的是Python3.10重新换一个版本吧(我在这里换成了3.9)。

image-20231124163754049

调整保存格式,labelImg打开默认保存是PascalVOC格式,我们需要点击把它改成yolo格式,如下图。

image-20231124175602598

点击save保存,打开AutoSavemode可以自动保存。

image-20231124175812210

此时我们可以正式开始标注图片。

右键点击CreateBox,用鼠标选择区域,并为这块区域命名,标注好后点击左侧nextImage进入下一张图片。

image-20231124180108521

快捷键: a上一张、d下一张、w画框框

标注好后打开label文件夹,可以看到很多txt文件,任意打开一个,第一个表示类别0(在class文件中可以看到类别),后面四个分别表示你画的框的中心点在整体图片中的一个比例以及宽和高对于整体图片的比例。

image-20231124180953139

这里有四个类别。

image-20231124181157489

2.开始训练

分装图片

image-20231124181340933

将images中的图片分为train和val两个文件夹放置(训练集多验证集少),如下图

image-20231124181748774

同样把labels也按相同操作放置一一对应的图片到train和val文件夹中,classes不用放。

关键参数

image-20231124182528862

我们可以打开train.py文件查看参数位置,可以看到data参数默认是coco128.yaml文件

image-20231124182901213

让我们打开coco128.yaml看看,path指定了数据集的位置,train指定的是数据集中训练集所在的位置,val指定的是数据集中测试集所在的位置,test是可选项,下面classes就是类别的定义。

image-20231124183743272

很明显,我们只需要整理好数据集改写对应的yaml文件同时更新train的,那么我们就可以训练了。

修改参数

复制一份coco128.yaml,更名为classroom

image-20231124184139455

并对文件内容进行修改,修改后如下图。

image-20231124185226839

train.py中修改参数

image-20231124184907785

点击运行,等待一会便训练成功

image-20231124192006615

模型训练时遇到的问题

image-20231124191952647

修改虚拟内存的方法:

image-20231124192225559

开始检测

训练完成后我们打开exp3,可以看到以下文件。

image-20231124192514512

best.pt表示训练过程中最好的那个模型,last.pt表示训练过程中最后一轮的模型,labels存放整体数据比例、分布这些内容、results.csv存的就是各项指标的变化(可以用于自己画图做分析)events开头的文件保存了训练过程中各种参数的变化,可以使用tensorboard来查看,命令如下

tensorboard --logdir runs

执行结果:

image-20231124192934300

按住ctrl点击网址即可查看结果。

image-20231124193005065

正式检测:

输入命令,weights指定刚刚训练时最好的模型,source指定我们一开始使用的视频,–view-img参数表示可以实时用可视化界面展示训练过程。

python detect.py --weights runs/train/exp3/weights/best.pt --source datasets/classroom.mp4 --view-img

hell
tensorboard --logdir runs


执行结果:

[外链图片转存中...(img-jcqtmzr8-1700826447637)]

按住ctrl点击网址即可查看结果。

[外链图片转存中...(img-09iWVA6H-1700826447637)]

**正式检测:**

输入命令,weights指定刚刚训练时最好的模型,source指定我们一开始使用的视频,--view-img参数表示可以实时用可视化界面展示训练过程。

```shell
python detect.py --weights runs/train/exp3/weights/best.pt --source datasets/classroom.mp4 --view-img

由于原视频中有我的同学们,这里就不做展示了,最终结果是符合预期的,简单场景基本能满足需求,但是如果一直在动或者动效效果比较大的时候,最终结果会有出入,但整体来说置信度还是可以的。

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

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

相关文章

矩阵论(Matrix)

​ 大纲 矩阵微积分:多元微积分的一种特殊表达,尤其是在矩阵空间上进行讨论的时候逆矩阵(inverse matrix)矩阵分解:特征分解(Eigendecomposition),又称谱分解(Spectral decomposition&#xf…

【MATLAB源码-第88期】基于matlab的灰狼优化算法(GWO)的栅格路径规划,输出做短路径图和适应度曲线

操作环境: MATLAB 2022a 1、算法描述 灰狼优化算法(Grey Wolf Optimizer, GWO)是一种模仿灰狼捕食行为的优化算法。灰狼是群居动物,有着严格的社会等级结构。在灰狼群体中,通常有三个等级:首领&#xff…

java中 自动装箱与拆箱,基本数据类型,java堆与栈,面向对象与面向过程

文章目录 自动装箱与拆箱基本数据类型与包装类的区别(int 和 Integer 有什么区别)应用场景的区别: 堆和栈的区别重点来说一下堆和栈:那么堆和栈是怎么联系起来的呢? 堆与栈的区别 很明显:延伸:关于Integer…

python opencv 边缘检测(sobel、沙尔算子、拉普拉斯算子、Canny)

python opencv 边缘检测(sobel、沙尔算子、拉普拉斯算子、Canny) 这次实验,我们分别使用opencv 的 sobel算子、沙尔算子、拉普拉斯算子三种算子取进行边缘检测,然后后面又使用了Canny算法进行边缘检测。 直接看代码,代…

【腾讯云云上实验室-向量数据库】基于向量数据的客户价值体系推荐系统设计

【腾讯云云上实验室-向量数据库】深入浅出-基于向量分析的客户价值体系推荐系统设计 前言 很早之前就有过想写推荐系统系列文章了,本人曾任职高级大数据工程师全程参与过推荐系统的搭建,故在搭建推荐系统算得上是有一定的经验。推荐系统搭建有相当多的…

UI自动化(selenium+python)之元素定位的三种等待方式!

前言 在UI自动化过程中,常遇到元素未找到,代码报错的情况。这种情况下,需要用等待wait。 在selenium中可以用到三种等待方式即sleep,implicitly_wait,WebDriverWait 一、固定等待(sleep) 导入time模块,设定固定的等待时间 缺…

【点云surface】无序点云快速三角化

1 介绍 GreedyProjectionTriangulation 是一种基于局部二维投影的三维点贪婪三角剖分算法的实现。它假定局部表面光滑,不同点密度区域之间的过渡相对平滑。 GreedyProjectionTriangulation算法的基本思想是通过逐步投影点云数据到一个三角化网格上来进行重建。它首…

Pycharm创建项目新环境,安装Pytorch

在python项目中,很多项目使用的各类包的版本是不一致的。所以我们可以对每个项目有专属于它的环境。所以这个文章就是教你如何创建新环境。 一、创建新环境 二、下载安装包 在下载安装包时,可以加入清华源,这样下载更快!不然有时…

消息推送到微信,快速实现WxPusher

文章目录 前言一、平台二、代码总结 前言 我的博客里也有其他方法,测试了下感觉这个方法还是比较实用。 一、平台 先仔细阅读下平台的使用方法。 平台地址请点击 二、代码 import requests text 孪生网络模型已经训练完成,请注意查阅相关信息。 req…

学习Pandas 二(Pandas缺失值处理、数据离散化、合并、交叉表与透视表、分组与聚合)

文章目录 六、高级处理-缺失值处理6.1 检查是否有缺失值6.2 缺失值处理6.3 不是缺失值NaN,有默认标记的 七、高级处理-数据离散化7.1 什么是数据的离散化7.2 为什么要离散化7.3 如何实现数据的离散化 八、高级处理-合并8.1 pc.concat实现合并,按方向进行…

Linux文件基础(文件查看及vim)

文件查看命令: (1)cat 1)查看文件内容(内容较少时使用):cat 文件名 2)合并文件:cat 文件名1 文件名2> 文件名3 3)往文件中写入数据,(Ctrld结束输入); (2)more more 文件名 文件内容较多时用more(空格,回车往下翻,b回滚) (3)less less 文件名 看完内容之后不会显示…

最重要的BI测试-适用于任何BI和分析平台

为什么 BI 测试是答案 相信你的数据可视化是成功执行商业智能 (BI) 和分析项目的关键因素。我敢肯定,你遇到过以下情况:业务主管或业务用户反馈说他们的分析看起来不对,他们的 KPI 看起来有问题,或者速度太慢而无法使用。要问自己…

【Spring篇】JDK动态代理

目录 什么是代理? 代理模式 动态代理 Java中常用的代理模式 问题来了,如何动态生成代理类? 动态代理底层实现 什么是代理? 顾名思义,代替某个对象去处理一些问题,谓之代理,那么何为动态&a…

项目环境配置 本地/测试/预发/生产

在本地目录下新建文件 dev测试环境 development 本地开发环境 production 生产环境 uat预发布环境 .env.dev VUE_APP_API_PATH /api # 测试 VUE_APP_API_PATH http:// # 生成dist名称 VUE_APP_DIST dist_dev .env.development # 本地开发环境 VUE_APP_API_PATH…

pat实现基于邻接矩阵表示的深度优先遍历

void DFS(Graph G, int v) {visited[v] 1;printf("%c ", G.vexs[v]);for (int i 0; i < G.vexnum; i) {if (!visited[i] && G.arcs[v][i]) DFS(G, i);} }

qPCR(荧光定量PCR)的Ct值

今天我们要说的问题&#xff0c;也是对qPCR的更高阶的认识。 1、Ct值到底是不是YYDS&#xff1f; 2、Ct值跟哪些因素有关&#xff1f; 3、同样的模板&#xff0c;Ct值大试剂盒就差吗&#xff1f;要不要换试剂盒&#xff1f; 还是从这个盗版来的图说起。你必须明白以下几个概…

政务大数据与资源平台建设解决方案:PPT全文75页,附下载

关键词&#xff1a;智慧政务解决方案&#xff0c;大数据解决方案&#xff0c;数据中心解决方案&#xff0c;数据治理解决方案 一、政务大数据与资源平台建设背景 1、政务大数据已成为智慧城市建设的必要基础 为响应国家不断加快5G基建、大数据、人工智能等新型基础设施建设布…

HTML CSS登录网页设计

一、效果图: 二、HTML代码: <!DOCTYPE html> <!-- 定义HTML5文档 --> <html lang="en"> …

开源语音大语言模型来了!阿里基于Qwen-Chat提出Qwen-Audio!

论文链接&#xff1a;https://arxiv.org/pdf/2311.07919.pdf 开源代码&#xff1a;https://github.com/QwenLM/Qwen-Audio 引言 大型语言模型&#xff08;LLMs&#xff09;由于其良好的知识保留能力、复杂的推理和解决问题能力&#xff0c;在通用人工智能&#xff08;AGI&am…

MySQL与Redis如何保证数据的一致性

文章目录 MySQL与Redis如何保证数据的一致性&#xff1f;不好的方案1. 先写 MySQL&#xff0c;再写 Redis2. 先写 Redis&#xff0c;再写 MySQL3. 先删除 Redis&#xff0c;再写 MySQL 好的方案4. 先删除 Redis&#xff0c;再写 MySQL&#xff0c;再删除 Redis5. 先写 MySQL&am…