前言
YOLOV4模型训练流程和V3基本类似,不过仍然有一些需要注意的地方,否则很容易遇到各种问题。
训练
1)去AlexeyAB github上获取源代码
2)代码编译,这个和yolo3编译差不多的。
3)重点讲一下yolov4.cfg
在cfg子目录下有yolov4.cfg和yolov4-custom.cfg。AlexeyAB建议基于yolov4-custom.cfg来对自己数据集进行模型训练。需要修改的地方:
a)batch=64 subdivisions=16的修改: YOLOV4训练相对V3更耗显存,所以这两个值要根据显存使用情况进行相应调整。
b)max_batches=xxx: 作者建议这个值设成 classes_num * 2000,比如说数据集一共有3个类型,那么max_batches=6000。不过我个人建议可以根据测试情况来适当加大些。
c)steps=xxx,x
xx: 作者建议这两个值分别设成max_batches的80%和90%.
d)network size的width和height值 要分别设成 32的倍数。经典的有416x416 608x608等。
e)YOLOV4仍然有3个yolo层。每个yolo层里面的classes值要和我们自己数据集类型数目相对应。
f)将每个yolo层前面的conv层里面filters值改成(classes + 5)x3
4)数据集准备和V3一样的,主要是注意预训练模型需要换成下面这个:
yolov4.conv.137 ,其下载链接为:https://drive.google.com/open?id=1JKF-bdIklxOOVy-2Cr5qdvjgGpmGfcbp
5)最后就是训练命令,注意下参数。可以参考下面:
./darknet detector train xxx/xxx_2019_12.data /work/xxx/yolov4-custom.cfg ../xxx/yolov4.conv.137 -clear -dont_show