YoloV4学习笔记2_训练数据(win10+VC2015+opencv4.4+yolov4)

YoloV4学习笔记2_训练数据(win10+VC2015+opencv4.4+yolov4)

标注数据

为了简便,使用了KayChan制作的标注工具,windows的exe直接运行即可,很方便。感谢作者。
https://download.csdn.net/download/a870089402/12672951
注意:
yolo的数据标注信息,标注区域的中心点坐标和区域的宽高。而且数值范围是0-1之间,其值是占宽或高的比例。其它的深度学习框架有的是标注区域的左上和右下的实际坐标,这一点有区别。

按照标注工具的使用说明,准备训练数据和验证数据并标注,非常简单。

准备配置文件和预训练权重文件

一般都会选择在预训练模型上进行训练,预训练模型是在coco数据集上进行了预先训练,该数据集包括人、车、动物等常见的80种类型。一般来说,如果要检测的物体和coco数据类似,就可以在coco数据集的预训练模型基础上进行训练。如果要检测的数据和coco数据大相径庭,则可以重新训练。也可以两种都实验一下,查看效果。

这里我们准备yolov4的配置文件yolov4.cfg和预训练权重文件yolov4.conv.137(coco预训练权重)
下载:https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects
如果更关心推理速度,可以用yolov4-tiny

配置文件和预训练权重的对应关系:
o 对于 yolov4.cfg, yolov4-custom.cfg (162 MB): yolov4.conv.137
o 对于 yolov4-tiny.cfg, yolov4-tiny-3l.cfg, yolov4-tiny-custom.cfg (19 MB): yolov4-tiny.conv.29
o 对于 csresnext50-panet-spp.cfg (133 MB): csresnext50-panet-spp.conv.112
o 对于 yolov3.cfg, yolov3-spp.cfg (154 MB): darknet53.conv.74
o 对于 yolov3-tiny-prn.cfg , yolov3-tiny.cfg (6 MB): yolov3-tiny.conv.11
o 对于 enet-coco.cfg (EfficientNetB0-Yolov3) (14 MB): enetb0-coco.conv.132

修改配置文件yolov4.cfg(这个文件是算法各个层的参数)
注意查看 https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects
中的 “ How to train (to detect your custom objects) ”处,有详细说明。
1)
[net]
width=608
height=608
都改为416,因为我是笔记本,这个改地点可以提高训练速度。注意:必须是32的整数倍。

2)修改训练的最大迭代次数,官方推荐是 标注类别数乘以2000,但不能少于6000或者训练图片数
我只标注了1个类别,所以改为6000
max_batches = 500500 改为 6000
steps=400000,450000 改为1600,1800 ,官方推荐 0.8乘以max_batches,0.9乘以max_batches

3)搜索[yolo]
[yolo]
classes=80 改为1 ,这是标注类别数

[yolo]的上面几行
[convolutional]
filters=255 改为 18 , 官方推荐 3乘以(5+标注类别数)
注意:有多个 [yolo]和[convolutional]项(一般有3个),都需要修改。

训练模型

命令: darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137
不用与训练模型,则命令:darknet.exe detector train data/obj.data yolo-obj.cfg
根据自己的目录结构,改为:
darknet.exe detector train dataset_PartText/DataForTrain/gen_config.data dataset_PartText/yolov4.cfg dataset_PartText/yolov4.conv.137
已经制作了批处理文件【c_darknet_PartText_Train.cmd】,方便调用

注意:

如果出现 CUDA error:out of memory 错误,很可能是现存不够,修改yolov4.cfg
[net]
subdivisions=8 改为16,32,64 这样可以降低显存使用
我的1070显卡笔记本,训练失败,提示需要把subdivisions设为64

训练中途停止后,下次在之前训练的基础上继续训练(中途停止后继续训练)
命令 darknet.exe detector train obj.data yolo-obj.cfg yolo-obj_2000.weights

防止过拟合,选择如下的时间点的训练结果。
YoloV4学习笔记2_训练数据(win10+VC2015+opencv4.4+yolov4)_第1张图片

你可能感兴趣的:(VC,深度学习,学习,深度学习,神经网络)