如何使用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个种类,能识别出一些就不错了!可以考虑使用预训练模型来加速这一进程!

YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而高性能,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。  本课程的YOLOv5使用ultralytics/yolov5,在Windows和Ubuntu系统上分别做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集(自动划分训练集和验证集)、修改配置文件、使用wandb训练可视化工具、训练自己的数据集、测试训练出的网络模型和性能统计。 除本课程《YOLOv5实战训练自己的数据集(Windows和Ubuntu演示)》外,本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209 《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值