使用 "Darknet yolov3-tiny" 训练检测模型
1. 下载data.zip,提取码: j7c2.
2. 将data.zip解压到darknet.exe所在目录下.
3. 进入data/voc目录下运行voc_label.bat重新生成2019_train.txt, 2019_val.txt.
4. 修改cfg/yolov3-tiny.cfg
[net]
batch=64
subdivisions=4 // 这里根据自己内存大小修改(我11G显存设置2时,中途会out of memory. 所以设置4, 训练时显存占用约6G)
angle=5 // 增加旋转角度产生样本
max_batches = 220000 //最大迭代次数
steps=70000,200000 //调整学习率变化点
...
filters=225 //[yolo]前一个filters=(classes类别数+ coords坐标数 +1) * mask个数
[yolo]
anchors = 12,27, 17,45, 23,61, 37,58, 198,140, 344,319
classes=70
ignore_thresh = .7
...
其他参数说明可参考: https://blog.csdn.net/weixin_42731241/article/details/81474920
5. 执行
darknet.exe detector train data/voc.data cfg/yolov3-tiny.cfg
6. 训练过程(以其中一次过程为例)
训练过程也一直在调参数. 所以中断了几次.主要调节anchors 和 ignore_thresh
A. iter_0-34900
第一个 anchors=12,27, 15,34, 17,45, 23,61, 30,84, 198,140
第二个 anchors=10,14, 23,27, 37,58, 81,82, 135,169, 344,319
ignore_thresh=.8
B. iter_34900-42700
两个 anchors=10,14, 23,27, 37,58, 81,82, 135,169, 344,319
C. iter_42700-65000
ignore_thresh=.7
D. iter_65000-74700
ignore_thresh=0.05
E. iter_74700-
ignore_thresh=.7
F. 最终因为loss趋于平缓, 选择了结束训练. 当然还可以再降低learning_rate继续训练, 我这里没继续了.
7. 测试了Test目录下的73张图片, 最终识别对了70张, 识别率约95.89%.weights, 提取码:rlh7
[总结]