YoloV4训练自己的数据集(四)

前文已经建立了自己的数据集并且进行了划分。本文主要介绍如何使用自己的数据集进行训练。

1.修改配置文件

1.修改darknet目录下data文件夹中的配置文件:

在data文件夹中找到voc.names文件,里边存放的是需要分类的物体的名字,
在这里插入图片描述
根据自己的情况修改,我把其中的文件内容修改为:
在这里插入图片描述

2.修改darknet目录下cfg文件夹中的配置文件:

在cfg文件夹中找到voc.data文件,
打开之后把其中的文件内容修改为:

classes= 1                //此处是你想要分类的类别数量,根据自己的实际情况填写
train  = /home/pjreddie/data/voc/2007_train.txt  //此处是存放生成的训练集的文件名,根据自己的实际情况填写
test  = /home/pjreddie/data/voc/2007_test.txt     //此处是存放生成的测试集图片的文件名,根据自己的实际情况填写
names = data/voc.names//此处文件代表,分类的类别名称。
backup = /backup/ 存放自己训练的权重文件

3.修改darknet目录下cfg文件夹中的配置文件:

3.1在cfg文件夹中找到yolov4-custom.cfg文件

之后复制yolov4-custom.cfg.重命名为 yolov4-custom-train.cfg。之后修改参数:
修改其中第6行batch,第7行的参数subdivisions,这两个参数有默认值但是,由于每个人的显卡不同,可能会报“out of memory”的错误,这是由于显卡内存太小,需要修改这两个值,我是自己试的值。图片的宽高等均可以自己设置:

batch=64
subdivisions=16
width=608
height=608

继续文件中第20行的修改迭代次数,以及第22行改变学习率的次数:

max_batches = 500500//最大迭代次数,自己根据情况而定

steps=400000,450000//分别在max_batches×0.8以及max_batches×0.8次时,改变学习率,防止达不到最优解

接下来分别修改第970、1058、1146行的类别数,根据自己的情况而定:

classes=1

之后分别修改第963、1051、1139行的filters的数目,filters的数目的计算规则为:

filters = (classes + 5)*3

我的只检测一类物体,因此设置为:

filters = 18

大家根据自己的实际情况修改。

2.开始训练

终于到了最重要的时候了

在完成以上所有配置之后,在终端输入以下命令:

./darknet detector train cfg/voc.data cfg/yolov4-custom-train.cfg yolov4.conv.137

注意:命令中的 yolov4.conv.137文件都在前文中的权重文件中,下载之后直接放到darknet文件夹中。训练过程中会显示你的损失函数变化情况:
在这里插入图片描述
如果在命令行的最后加上 “-map”,还会显示map的变化曲线:
命令行变为如下:

./darknet detector train cfg/voc.data cfg/yolov4-custom.cfg yolov4.conv.137 -map

3.训练结果

训练结果保存在 darknet目录下的backup文件夹中。下文将介绍如何测试自己的训练模型。

猜你喜欢

转载自blog.csdn.net/weixin_45718019/article/details/111468361