写下自用每次都忘记如何train?记录如何训练自己的yolov5

Posted Time.Xu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写下自用每次都忘记如何train?记录如何训练自己的yolov5相关的知识,希望对你有一定的参考价值。

自从转专业成为深度图像处理的准研究生之后,总是想学很多知识,但是长时间不用就会遗忘。在此将每一部分的学习在此做出记录,防止遗忘。

 【侵删】大部分来源于网络,文末有传送门(本文无环境配置部分,适用于配置环境后经常忘记怎样train的同学)


一、在工程中建立文件夹

首先在data/yourwork目录下建立自己的四个文件夹分别为

Annotations:存放标记生成的.xml文件;通过labelimg标注

images:存放原始的图片数据;

ImageSets:存放的是训练数据集和测试数据集的分类情况;

labels:存放的是保存标记内容的txt文件;

 二、标注数据集

数据集的标注可以选用 labelimg 进行标注。将Open_dir选为你的images,Save_dir 选为你的Annotations。

这里简单说几个常用的技巧:

1、W键:Create rectBox快捷键;

2、D/A键:上一张,下一张;

3、又上角 Use default label 可以使用起来

4、view AutoSaving可以勾选上,这样标注就可以自动保存了

这样做完你的文件里是这样子的:

三、 分训练集和测试集

利用makeTxt.py将数据集分类成训练数据集和测试数据集,运行后data/yourwork/ImagesSets文件夹中会出现四个文件,主要是生成的训练数据集和测试数据集的图片名称,如下图。

利用voc_label.py将图片数据集标注后的.xml文件中的标注信息读取出来并写入.txt文件。注意更改classes = [' ',' '] 和各各路径。 运行后在labels文件夹中出现所有图片数据集的标注信息。同时data目录下也会出现三个文件,内容是训练数据集和测试数据集的图片路径(有一篇博文这里写错了)

 四、修改.yaml文件 和 train.py文件

1修改coco.yaml

复制一份coco.yaml改为自己的名称yourwork。

train,val,test后面分别为训练集和测试集图片的路径, nc为数据集的类别数,names为类别的名称。

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../data/number_211211  # yourwork文件夹的位置
train: train.txt  # train images (relative to 'path') 118287 images
val: val.txt  # train images (relative to 'path') 5000 images
test: test.txt  # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794

# Classes
nc: 1  # 你的类别数
names: ['number']  # 你的各个类别的名称

2修改自己的配置文件.yaml

在model下面找到自己要跑的模型的配置文件,把nc值改过来。

nc: 1  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple

3修改train.py中的参数

主要是这几个需要改:

parser.add_argument('--weights', type=str, default=None, help='initial weights path')
parser.add_argument('--cfg', type=str, default='models/yolov5xuxingshi2.yaml', help='model.yaml path')#muoxingxuanze
parser.add_argument('--data', type=str, default= 'data/coco.yaml', help='dataset.yaml path')#不用改
parser.add_argument('--hyp', type=str, default='data/hyps/hyp.scratch.yaml', help='hyperparameters path')#xuanzechaocanshuwenjian
parser.add_argument('--epochs', type=int, default=300)
parser.add_argument('--batch-size', type=int, default=1, help='total batch size for all GPUs, -1 for autobatch')#zhuyixiugai_batchsize
parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='train, val image size (pixels)')   
 parser.add_argument('--project', default='runs/train', help='save to project/name')
parser.add_argument('--name', default='exp_num', help='save to project/name')

参考博文:

YOLOv5 实现目标检测(训练自己的数据集实现猫猫识别)_oJiWuXuan的博客-CSDN博客_yolov5实现

以上是关于写下自用每次都忘记如何train?记录如何训练自己的yolov5的主要内容,如果未能解决你的问题,请参考以下文章

如何使用一个热编码数据训练测试拆分?

keras:如何保存历史对象的训练历史属性

Firefox自用便携定制版

在 python 项目中如何记录日志

如何使用opencv 训练分类器以及训练过程中的问题

如何利用bing算法训练自己的模型