注:1. 制作标签,必须用jpg文件
2. 文件夹改名换位置后,程序需要重新修改
3. 文件名不能带空格
4. 可以统一更换后缀名
5. 图片名和标签名要一一对应,打完标签不要随便动,检查生成的label文件
6.打标签之前要把没用的照片删除
7.看打完标签是否保存
8.没有打的图片不要保存
9. 测试的时候val文件类别要修改(训练结果不好,关键所在)
10.重新聚类生成anchors
流程:
修改makefle文件,算力的代码修改成自己显卡的算力
-
标签放好(注意rename.py)
1.1 生成Main目录下的txt文件
1.2 voc_label.py, 修改classes(运行的时候有时候出问题,复制一个好的过来,多改改) -
配置
2.1修改cfg/voc.data
2.2 修改cfg/yolov3-voc.cfg
filters = 3*(5+classes数目) classes = 本次训练目标数
修改max_batches(作者声明最好是2000*训练目标个数,但不要小于4000)和steps(max_batches的80%,90%,降低学习率阈值)
当GPU显存比较小时将subdivisions调大batch/subdivisions的值为训练时一次传入训练的图片)2.3 修改data/voc.names
-
训练:
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg_train darknet53.conv.74
当avg低于0.06时即可停止训练了(尽量低)
训练的loss降至0.1以下就可以进行测试了 -
测试(遇到的问题:没框,阈值问题,训练时间不够)
./darknet detector test cfg/voc.data cfg/yolov3-voc.cfg_val backup/yolo3-100.weights -thresh 0.1 置信度阈值 显示置信度在10%以上的 bbox
-thresh 0.25
5.4 训练完后,对模型进行微调微调继续训练新数据样本
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg_train backup/yolov3-voc.backup -gpus 0 -clear
这样重新训练的模型就是在原模型微调的基础上训练的结果,这样模型的收敛速度较快,迭代次数将从0开始计算.
学习率:如果是两个gpu则,0.001/2