如何使用yolov5-master进行训练

news2024/11/15 8:27:38

主要记录配置完成的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.coloradmin.cn/o/2033550.html

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

相关文章

【网络编程】UDP实现网络通信(C语言、Ubuntu实现)

代码实现&#xff1a;分为udpSer.c(服务器端)和udpCli.c(客户端) //udpSer.c #include <myhead.h>#define SER_PORT 9999 #define SER_IP "192.168.83.128"int main(int argc, const char *argv[]) {//1、创建用于通信的服务器套接字文件描述符int sfd sock…

AI大模型学习之白话笔记(三) -- Assistants API入门

经过上面两篇文章的学习&#xff0c;恭喜你开始进入了人工智能的世界&#xff01;在这篇文章中&#xff0c;你将跟我一起学习如何使用Assistants API快速构建一个针对特定领域的人工智能助手。 我们从基础开始&#xff0c;一步步带你用Assistants API完成一个应用的整个过程。…

智能分析/视频汇聚EasyCVR安防视频融合管理云平台技术优势分析

安防行业的发展历程主要围绕视频监控技术的不断改革升级&#xff0c;从最初的模拟监控到数字监控&#xff0c;再到高清化、网络化监控&#xff0c;直至现在的智能化监控&#xff0c;每一次变革都推动了行业的快速发展。特别是近年来&#xff0c;随着AI、大数据、物联网等技术的…

Proxmox LXC 部署ubuntu,centos

前言CT 在 Proxmox VE 中,“CT”是 Container(容器)的缩写。PVE 支持两种主要类型的容器:LXC 和 OpenVZ(针对较旧的 Linux 内核)。这些容器提供了一种轻量级的虚拟化方式,允许用户在一个操作系统实例上运行多个隔离的系统环境。 PVE CT 特别是指在 Proxmox 平台上创建…

深入探索MySQL C API:使用C语言操作MySQL数据库

目录 引言 一. MySQL C API简介 二. MySQL C API核心函数 2.1 初始化和连接 2.2 配置和执行 2.3 处理结果 2.4 清理和关闭 2.5 错误处理 三. MySQL使用过程 四. 实现CRUD操作 4.1 创建数据库并建立表 ​编辑 4.2 添加数据&#xff08;Create&#xff09; ​编辑 …

idea git 重新登录

&#xff08;切换本地项目绑定的git账户&#xff09; git config --system --unset credential.helper git config user.name git pull &#xff08;然后输入用户名&#xff08;输绑定邮箱&#xff09;&#xff0c;密码&#xff09;

easyExcel2.1.6自动trim()的问题

环境&#xff1a;easyExcel 2.1.6 问题&#xff1a;easyExcel会自动忽略String中的空格&#xff0c;调用trim()函数&#xff0c;导致excel中的空格失效。 代码如上所示&#xff0c;所以只需要把globalConfiguration的autoTrim()&#xff0c;设置为false即可 那么怎么设置confi…

stable diffusion学习(1)成功打开WEBUI

建议学习github上的资源 GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI 1.下载安装sd.webui.zip 1.1 Release v1.0.0-pre AUTOMATIC1111/stable-diffusion-webui GitHub 1.2安装python&#xff0c;设置阿里镜像 python -m pip config set gl…

Linux桥转发经过的netfilter钩子点

你是否也有这样的疑问&#xff0c;当我们路由器局域内的下挂设备&#xff0c;是怎么互相访问的呢。假设我的路由器当前的网段是192.168.1.1&#xff0c;有一台PC有线接入&#xff0c;IP地址为 192.168.1.142 &#xff0c;一台手机WiFi接入&#xff0c;IP地址为192.168.1.223&am…

FRTIMP_YTFRB_WEB

FRTIMP_YTFRB_WEB 林业资源交易信息管理平台

基于深度生物学引导辅助学习的多模态数据整合和插补来改进基因型-表型预测

DeepGAMI: deep biologically guided auxiliary learning for multimodal integration and imputation to improve genotype–phenotype prediction 代码&#xff1a;https://github.com/daifengwanglab/DeepGAMI abstract&#xff1a; background&#xff1a;基因型与疾病表…

【数据结构之C语言实现栈】

1.栈 的 概 念 与 结 构 栈&#xff1a; 一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据的插入和删除操作的一端称为栈顶&#xff0c;另一…

【代码随想录训练营第42期 Day26打卡 贪心Part1 - LeetCode 455.分发饼干 376. 摆动序列 53. 最大子序和

目录 一、贪心 二、题目与题解 题目一&#xff1a;455.分发饼干 题目链接 题解&#xff1a;排序双指针贪心 题目二&#xff1a;376. 摆动序列 题目链接 题解&#xff1a;贪心 题目三&#xff1a;53. 最大子序和 题目链接 题解1&#xff1a;暴力&#xff08;失败&…

立体相机镜面重建(二)双目立体镜面重建

使用双目相机&#xff0c;配合镜子、屏幕&#xff0c;可以直接获得镜面的三维数据&#xff0c;无需先验知识。因此使用双目镜面重建方式对镜子表面进行重建。 &#xff08;一&#xff09;重建步骤 使用左相机光线法来计算镜面点&#xff1a; 1.取一个像素点&#xff0c;计算其…

linux中安装达梦DM8

目录 场景&#xff1a; 安装准备 安装 新建 dmdba 用户 修改文件打开最大数 创建实例保存目录、归档保存目录、备份保存目录。 挂载镜像&#xff0c;命令行安装 ​编辑 配置环境变量 配置实例-命令行方式初始化实例 命令行注册服务 命令行启停数据库 数据库连接测试…

计算机网络部分基础知识

网络协议的意义 单台主机内部的设备之间需要发送和接收消息&#xff0c;那么和相隔很远的两台主机之间发送消息有什么区别呢&#xff1f;两台主机通过网络发送消息&#xff0c;相当于两个网卡设备之间进行通信&#xff0c;最大的区别在于距离变长了。而距离变长带来的结果就是&…

Gartner发布中国MDR托管检测和响应服务市场指南:中国不同类型的机构对MDR的需求对比

中国企业正越来越多地受益于提供现代安全运营中心功能的托管检测和响应服务。中国首席信息官和安全领导者应利用这项研究来了解中国的托管检测和响应市场及其动态。 主要发现 根据 CYBERSECURITY REVIEWS 的《2023 年中国网络安全运营市场研究报告》&#xff0c;超过 97%的中国…

【数据结构】六、图:4.图的遍历(深度优先算法DFS、广度优先算法BFS)

三、基本操作 文章目录 三、基本操作1.图的遍历1.1 深度优先遍历DFS1.1.1 DFS算法1.1.2 DFS算法的性能分析1.1.3 深度优先的生成树和生成森林 1.2 广度优先遍历BFS1.2.1 BFS算法1.2.2 BFS算法性能分析1.2.3 广度优先的生成树和生成森林 1.3 图的遍历与图的连通性 1.图的遍历 图…

synergy A problem occurred during installation, try installing.

系统&#xff1a;macos m2 解决方式&#xff1a; 在 ~/Library/LaunchAgents/ 目录下, 新建 com.symless.synergy3.plist 文件&#xff0c;并chown为当前用户。初始化成功

Latex或者word里面mathtype类型的数学公式如何变成mathematica里面的形式

详细步骤如下&#xff1a; 第一步&#xff1a;Latex里面的公式复制粘贴到word里面&#xff0c;转变成mathtype类型的数学公式&#xff08;若已经是word里面mathtype类型的数学公式&#xff0c;这一步可以省略&#xff09;&#xff0c;如下&#xff1a; 第二步&#xff1a;将ma…