0.说明
本文用作自己学习过程的记录,以及分享给有需要的伙伴。
文章有错误漏洞欢迎批评指正。
1.源码及论文下载:
YOLO v3论文:Click here
YOLO v4论文:click here
Darknet YOLOv4下载:
(1)官方原版:click here
(2)AlexeyAB版:click here
AlexeyAB版比原版维护力度更大,更建议第二个
2.训练过程参考博客
基于Darknet深度学习框架训练YoloV4模型,并用自己的模型批量处理图片并保存在文件夹内
3.遇到的问题汇总
(1)训练完毕什么都识别不到。
·有的博客说,是因为没有使用AB版发行的DarkNet。
但是我在做的时候,什么都识别不到,并不是这个原因。
·还有是在测试时需要更改cfg文件,注释掉Training部分,取注Testing部分。
·测试时可能需要等一会,等完全加载完网络之后,再输入图片路径。
·也可能是数据集本身有问题,比如数据分布不均衡(大于3:1),太多数据没有标签等。
·使用GPU版本的DarkNet:参考(59条消息) Yolov3 darknet训练后检测不出物体(不能框选)已解决!_ROBOT_WYZ的博客-CSDN博客_yolo检测不出框
(2)训练几百代后的模型拿来测试,发现什么都识别不到。
可能是阈值太高了,可以在测试脚本后面加上- thresh 0.1试试看。
(3)模型与预训练权重之间需要对应。
v3v4有非tiny版本也有tiny版本,DarknetYolov3v4模型文件及其预训练权重文件(tiny与非tiny)下载:
https://download.csdn.net/download/m0_46749624/74399625
(4)小trick
·更改makefile文件之后,先make clean,再make(或make -j8,多线程编译,常四核八线程)
·Makefile文件中的Opennmp置为1,可开启cpu多线程加速。
·当整体损失loss降至小数点后两位时,效果可能会比较好
·在cfg配置文件中,置位random,可动态调整网络输入尺寸,提高精度。
(5)batch大小的设置
常设置值为8,16,32,64。
·值越大网络更新一次参数就能学到更多的信息,但要考虑显存的大小。
·值越小则每一代运行速度越快,但训练完毕需要的代数也就越多。
(6)输入尺寸的设置
·网络输入尺寸的长宽常为224*224,416*416,866*800,1024*1024等。
·但长宽须为32的倍数。
·数据集中的图片的大小会被resize成网络设定的输入尺寸。
·越小的尺寸训练速度快,但精度差;越大的尺寸训练速度慢,但精度高。常用416*416.
·也可以训练时使用416*416,再在部署时改成其他尺寸的。