【YOLOv5实战3】基于YOLOv5的交通标志识别系统-模型训练
【YOLOv5实战3】基于YOLOv5的交通标志识别系统-模型训练。将介绍如何在yolov5框架中对自定义数据集进行模型训练。
实战博客指引:
项目源代码可联系博主获取。
一、参数说明
再经历前两个步骤后,开始进行模型训练与测试。首先进行模型训练。官方给出的训练命令如下:
python train.py --data coco.yaml --cfg yolov5n.yaml --weights '' --batch-size 128
yolov5s 64
yolov5m 40
yolov5l 24
yolov5x 16
我们可以查看train.py文件,里面设定了我们训练时需要指定的参数,如图所示(这个参数被我修改过了,初始值和本图所示有所不同,大家按照自己的情况进行修改):
简要介绍一下参数:
- weights: 指定预训练模型。yolov5官方提供了几种预训练模型用于提高训练效率,在后文会讲。
- data: 在上一篇实战指引中编写的myvoc.yaml,用于指定训练集和验证集的路径,以及你要分类的数目个数和名称,必须修改
- epochs: 训练多少轮,建议修改
- batch-size: 批大小,个人理解为每次读取多少个数据进行处理(根据自己的配置进行修改,如果报内存不足的错误可以将该值调小,建议修改)
- img-size: 分别为训练集和验证集的大小,会将原来的数据集resize为所设定大小。默认为[640, 640],可以不修改
- resume: 断点续训。这个主要是你在训练过程中如果打断了,可以接着上次的训练结果继续训练。默认为False
- device: 设定使用CPU还是GPU(如果GPU有多块,指定使用哪块)。
- workers: 好像是线程数量,设备允许的话可以调整,由于本人设备太辣鸡所以设为了0
基本上常用的就是上述参数了,其他的参数可以保持默认值,你也可以按照自己的实际情况进行相应的修改。
二、预训练模型
官方给出了下面几种预训练模型。
常用的有n,s,m,l,x五种规格的大小,规模逐渐增大,训练准确率也逐渐升高,但训练时间也会增加。如下图所示:
在本篇博客中我将使用yolov5s.pt进行模型训练。
三、模型训练
上述准备步骤都完成后,开始训练模型。训练参数可以在train.py文件中指定,也可以在命令行中显式指定,命令行的优先级高于文件中的优先级。我在这里显式指定了各项参数,你也可以不指定,那就是用文件里的参数信息。需要注意,如果你一开始没有下载yolov5s.pt(即–weights指定的文件),那么他会下载相对应的文件。(好像默认下载路径不是在weights/下,个人习惯把他移到weights/目录下)。下载速度太慢的话建议修改pip源,这个可以去看别人的博客改一下,然后速度就会快很多。
打开终端,输入下面的命令:
python train.py --weights weights/yolov5s.pt --data data/myvoc.yaml --epochs 20 --batch-size 8
如果没有报错,应该会得到如下的界面:
会显示本次结果训练的存放位置,放在runs/train/下,从exp开始,每次训练都会使数字加一,我这里由于之前有结果,因此为exp5/。
可以检查一下在runs/train/是否生成了该目录:
四、下期预告
下一篇博客将介绍如何使用训练好的模型对自己的数据集进行验证与测试,并判断模型的好坏。
更多推荐
所有评论(0)