如何使用yolov5-master进行训练

主要记录配置完成的yolov5-master如何进行自定义数据集训练。

本人使用的设备是jetson-orin AGX,系统是英伟达官方魔改过的ubuntu18.04.。

一、修改配置

首先观察train.py的__main__部分,我们发现训练程序接受很多个参数。

 其中我们必须要关注的参数包括:

1、 --weight 初始权重设置,需要输入初始权重的路径,但也可以设置为 '' , 使得模型从零开始训练

2、 --cfg 模型配置设置,需要输入模型初始配置文件的地址

3、 --data 数据配置设置,需要输入数据配置文件的地址

4、 --device 使用何种设备训练? 设置为0,便可以使用gpu训练

1、配置--cfg 

如下所示,模型配置文件一般储存在models文件夹里。

打开后发现里面已经有yolov5s.yaml,yolov5m.yaml,yolov5l.yaml和yolov5x.yaml四个文件。模型配置文件储存的是神经网络的架构信息,譬如,第几层是什么样的卷积层,第几层是什么样的全连接层。而这四个文件,便对应着四种复杂度从低到高的配置,你可以选择一个复制出来,像我一样命名为myyolo.yaml(或者是其他名称)。

 打开这个配置文件,发现中间确实存着各种各样的架构信息。对于我这样的小白,这些都不重要,重要的是第一行nc这个参数,需要进行修改。

nc是什么呢?就是这个模型要识别多少种物体。比如你要识别人、电视、椅子这三种对象,就把它设置为3就行了

2、配置--data

打开主文件夹下的data文件夹,发现里面已经有很多配置文件了。打开coco128.yaml,我们查看一下其内容。

 我们可以复制一个coco128.yaml然后按照自己的需求修改,也可以直接改(train.py默认使用这个配置文件)

注意看,train和val后分别保存着训练数据集和验证数据集的地址(这个地址是相对train.py这个文件的);nc是识别物体种类数,names就是各个种类对应名称。

修改这些配置后就可以了,download不用管。

二、准备数据集

网上搜一搜coco128.zip这个文件,也可以点这个:

coco128数据集下载连接-CSDN博客

把文件解压在在coco128.yaml中配置的位置。打开后发现如下图所示,图片和数据是用12位数字命名的,而且数据和标记的主名称必须一样!

替换这些图片和数据,就可以使用自训练数据。

打开任意一个标记文件。发现它的格式如下所示:

 分别标记着物体对应标号(可以看看coco128.yaml,'person'的标号应该是0,也就是说,标号是在data配置文件中设置的

而后面四个浮点数,应该分别是:

x_center 横向坐标

y_center 纵向坐标

width 识别框宽度

height 识别框高度

当然,对这些数据进行手动标记太耗费时间,使用LabelImg这样的工具可以解决这个问题。这里不过多描述,如果只是像我一样的小白熟悉框架,可以使用coco128训练集!

三、开始训练

开始运行train.py

 python train.py --data ./data/coco128.yaml  --cfg ./models/myyolo.yaml --weights '' --device 0

输入我们刚才提及的一些系列参数配置,训练就开始了!如果一切顺利,那么皆大欢喜,但往往会遇到不少bug,这边建议联合gpt和百度搜索解决。

以下是几个我遇到的问题和解决方法:

1、np.int错误 

由于我们装的numpy是新版本,弃用了np.int这个类型,改用np.int64;而yolov5考虑的是老版本的numpy,所以会有不兼容的地方。

所以建议安装1.20版本以下的numpy,或者就只能手动把报错的np.int改为np.int64

2、pillow错误

YOLOV5训练过程中出现报错:module ‘PIL.Image‘ has no attribute ‘ANTIALIAS‘_image.antialias-CSDN博客

pillow版本太高也有问题,这里有对应解决办法。

3、tensor不能直接转nparray

TypeError: can‘t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to_return self.numpy() typeerror: can't convert cuda:-CSDN博客

4、cache错误 

yolov7 magic_number = pickle_module.load(f, **pickle_load_args) _pickle.UnpicklingError: STACK_G_magic number = pickle module.load(f **pickle load -CSDN博客

下载的coco128.zip原有的cache文件必须全部删去 

四、使用训练完毕的权重

这次训练的结果会被存在

./runs/expx

这个文件夹下,其中包括训练过程中各种数据和结果。结果在weights文件夹下,包括着测试集上的最好结果best.pt和最后一次的结果last.pt(感觉哪种都可能过拟合啊)

我把best.pt放到了myyolo主文件夹下,然后运行这样启动detect.py看看能不能跑。

 python ./detect.py --weight myweights.pt --device 0

会默认识别inference/images下面的图片,然后放到inference/output中。

然后我们发现,运气好的话,它还是能识别到一些东西的。但置信度和识别率都令我特别感动。所以我们还是需要好好改进训练流程的! 

然而这是正常的,coco128才128张图片,却要识别80个种类,能识别出一些就不错了!可以考虑使用预训练模型来加速这一进程!

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

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

相关文章

怎么扫描图片变成pdf格式?分享5个转换技巧,去试试!

怎么扫描图片变成pdf格式?图片和PDF文档已成为我们日常生活和工作中不可或缺的一部分。如果想要将扫描图片转成pdf格式,以便更好地管理和分享? ​ 下面就来给大家分享五种简单的转换方法,快来一起学习下吧! 图片转p…

使用docker搭建aria2-pro+ariang并在alist中配置

一、安装aria2-pro 1.创建映射目录 # 配置目录 mkdir -p /usr/local/docker/aria2/config # 下载目录 mkdir -p /share_root/download-aria22.创建容器 docker run -d \--name aria2-pro \--restart unless-stopped \--log-opt max-size1m \--network host \-e PUID$UID \-e …

告别杂音,从 AI 音频降噪开始

生活中,音频无处不在。无论是聆听动人的音乐,还是参与重要的电话会议,又或是沉浸于精彩的网课学习,清晰、纯净的音频质量都至关重要。然而,音频中的噪声却像不速之客,扰乱着这份美好。 音频中的噪声形式多样…

【C++ 面试 - 基础题】每日 3 题(十三)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…

排序算法之基数排序

title: 基数排序 date: 2024-7-25 14:29:53 0800 categories: 排序算法 tags:排序算法基数排序 description: 基数排序(radix sort)的核心思想与计数排序一致,也通过统计个数来实现排序。在此基础上,基数排序利用数字各位之间的递…

Modbus-RTU使用过程中的问题

此程序是在visual studio 2005的MFC程序中执行的,通过引入ModbusRTU.dll进行程序的编程,通过Dependency Walker工具查看ModbusRTU.dll中的静态函数如下: 在ModbusRTU.h文件中 MOD_API WORD RTUReadDiscreteInputs(BYTE nSlaveAddress, WORD …

旅游景区收银系统源代码

一、传统景区急需数字化升级 1.景区经营困境 景区内商户众多,收款方式不统一,收银pos五花八门,不清楚商户的流水情况 景区招商户入驻难,租金不好收取 景区合作的旅行社众多,无法统一管理,佣金高效结算 …

OLAP与OLTP:数据处理系统的两种核心架构

目录 一、什么是OLAP? 二、什么是OLTP? 三、OLAP与OLTP的主要区别 四、结论 在数据管理和分析的领域中,OLAP(在线分析处理)和OLTP(在线事务处理)代表了两种重要的数据处理模式。它们在功能、目标…

鸿蒙AI功能开发【卡证识别控件】场景视觉化服务

卡证识别控件 介绍 本示例展示了使用视觉类AI能力中的卡证识别能力。 本示例模拟了在应用里,跳转卡证识别控件,获取到验证结果并展示出来。 需要使用hiai引擎框架卡证识别验证接口kit.VisionKit.d.ts。 效果预览 使用说明: 在手机的主屏…

牛客JS题(四十)字体高亮

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; 正则表达式逆向思路 题干&#xff1a; 我的答案 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /></head><body><input type"text&…

鸿蒙(API 12 Beta3版)【音视频解封装】 文件解析封装

开发者可以调用本模块的Native API接口&#xff0c;完成音视频解封装&#xff0c;即从比特流数据中取出音频、视频等媒体帧数据。 当前支持的数据输入类型有&#xff1a;远程连接(http协议、HLS协议)和文件描述符(fd)。 支持的解封装格式如下&#xff1a; 媒体格式封装格式码…

MoonBit 周报 Vol.53:新增高级循环语法、引入字符串插值、MoonBit AI 支持代码解释!

weekly 2024-08-05 MoonBit更新 添加了基于 Iter 和 Iter2 类型的 for .. in 循环支持&#xff1a; fn main {for x in [ 1, 2, 3 ] {println(x)}for k, v in { "x": 1, "y": 2 } {println("\{k} > \{v}")} }for 与 in 之间可以使用 1&…

国产的Kimi,很牛逼!

国内大模型现在百花齐放&#xff0c;给大家推荐一下最近我一直在用的大模型工具&#xff1a;kimi kimi很强大&#xff0c;关键还免费&#xff08;这一点太良心了&#xff01;&#xff09; 在 长文本和文件处理 方面&#xff0c;kimi做的非常好。 不仅如此&#xff0c;kimi 里…

html+css网页制作 电商品优购5个页面(无js)

htmlcss网页制作 电商品优购5个页面&#xff08;无js&#xff09; 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xf…

使用Sanic和SSE实现实时股票行情推送

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

电机学习-基础知识

文章目录 1 基本物理概念1.1 左手定则1.2 安培定则1.3 感应电动势 2 电机简单分类2.1 直流有刷电机2.2 步进电机2.2.1 步进电机的驱动原理1.相与线2.极性3.步进电机的驱动 2.3 无刷电机2.3.1 充磁方式2.3.2正弦波电动势与梯型电动势 3 编码器3.1 霍尔编码器3.2 光电编码器3.3 增…

软件设计之MySQL(1)

软件设计之MySQL(1) 此篇应在JavaSE之后进行学习: 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 Navicat可以在软件管家下载 使用navicat连接mysql数据库创建数据库、表、转储sql文件&#xff0c;导入sql数据 学习内容&#xff1a; 数据库概述表、…

NOI Linux 2.0 的安装说明以及使用指南

关于 NOI Linux 2.0 NOI Linux 是 NOI 竞赛委员会基于 Ubuntu 操作系统开发的一款 Linux 桌面发行版&#xff0c;是一套免费的、专门为信息学奥林匹克竞赛选手设计的操作系统&#xff0c;是 NOI 系列赛事指定操作系统&#xff0c;适用于常见笔记本电脑和桌面电脑。 新建虚拟机…

卷大模型,还是卷应用?一次看明白

自从ChatGPT横空出世以来&#xff0c;中美之间围绕大模型的科技竞争愈演愈烈&#xff0c;也渐渐分化出两条差异化发展路线&#xff1a;一派侧重将AI能力投入应用场景&#xff0c;另一派则侧重让基础模型能力更强。于是&#xff0c;“卷应用”还是“卷大模型”成为中国许多新入场…

maven项目中pom.xml文件内容详解

一、什么是pom.xml文件&#xff1f; POM是项目对象模型&#xff08;Project Object Model&#xff09;的简称&#xff0c;它是Maven项目中的文件&#xff0c;XML格式&#xff0c;名称为 pom.xml&#xff0c;他是一个有关于maven操作的配置文件。每一个maven项目在创建时都会自动…