ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Darknet yolov4训练过程

2022-03-19 11:59:48  阅读:218  来源: 互联网

标签:yolov4 训练 Darknet py train txt data 标注


目录

一、准备项目代码

项目代码https://github.com/AlexeyAB/darknet


二、创建标注文件

可以使用LabelImg,Labme,Labelbox, CVAT来标注数据,对于目标检测而言需要标注bounding box即可。然后需要将标注转换为和darknet format相同的标注形式,每一个图像生成一个*.txt的标注文件(如果该图像没有标注目标则不用创建*.txt文件)。创建的*.txt文件遵循如下规则:

  1. 每一行存放一个标注类别
  2. 每一行的内容包括class x_center y_center width height
  3. Bounding box 的坐标信息是归一化之后的(0-1)class label转化为index时计数是从0开始的

三、划分训练集、验证集与对应标签

在上一步已经制作好了标注的数据集,接下来按照训练、测试的比例进行划分
在data/下,新建文件夹命名为“mydatasets”。即:data/mydatasets/,再划分train文件夹(训练数据集),labels文件夹(标签集),test文件夹。数据集、测试集与标签分别放到对应位置。如下图所示:

3.1.split_data.py

将数据按照训练测试的比例(训练:测试=8:2)

3.2 xml2txt.py

yolo的标签格式是txt格式,所以我们还需将xml标签转为txt格式。先新建txt_train、txt_valid文件夹,用于存放转换后的txt标签文件。
注意:

  1. 第一次运行xml2txt.py,得到训练集的txt文件,再修改/labels/train/为/labels/valid/,得到验证集的txt文件。
  2. 转换完成后将原来的train,valid文件夹删除,并将txt_train,txt_valid文件夹重命名为train,valid。

3.3 creattxt.py

这一步需要生成train.txt和valid.txt
得到的txt文件格式部分内容如下:


四、cfg文件修改

创建yolov4-mydatasets.cfg,因为我用了yolov4.cfg训练太耗显存,根据自己设备设置batchsize。其主要原因是mish函数太占显存了。
修改的地方:
将mish函数替代为relu函数,大大降低显存使用!
另外filters设置为:(class数目 + 4 +1) × 3 = 45(我这里10个类别)分别对应三个detect header
classes=10 修改为类别数目,我这里是10(所以这里和filters一共修改6处)
其他的超参数可以适当修改。

[convolutional]
size=1
stride=1
pad=1
filters=45
activation=linear

[yolo]
mask = 0,1,2
anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401
classes=10
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
scale_x_y = 1.2
iou_thresh=0.213
cls_normalizer=1.0
iou_normalizer=0.07
iou_loss=ciou
nms_kind=greedynms
beta_nms=0.6

备注:剩下的2个anchor的地方对应修改,总共是6处


五、data/下新建配置文件

在data下新建mydatasets.names文件,把自己的类别写进去即可


六、训练

完成上述步骤后即可训练,在train.py下运行


七、推理

运行detect.py


八、出现上述错误,还是读取训练集路径存在问题

标签:yolov4,训练,Darknet,py,train,txt,data,标注
来源: https://blog.csdn.net/zhibing_ding/article/details/123591494

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有