写下自用每次都忘记如何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')
参考博文:
以上是关于写下自用每次都忘记如何train?记录如何训练自己的yolov5的主要内容,如果未能解决你的问题,请参考以下文章