编译
修改Makefile
1 | GPU=1 |
1 | python3 |
make -j24
处理数据
在
1 | /data0/hhq/data |
下执行
1 | python voc_label.py |
从xml标注文件生成txt标注文件
custom数据训练
- 修改voc.data
1 | classes= 1 |
- 修改voc.names
light
- 修改yolov3-voc.cfg
修改classes,yolo上面一层卷积层的filter数量n=anchors*(1+4+1)
- 训练
1 | ./darknet detector train ./mydata/voc.data ./mydata/yolov3-voc.cfg ./mydata/yolov3.weights -clear 0 -gpus 0,1 | tee train-0322-01.log |
- 输出
batch 输出,如1
2705: 0.256951, 0.259272 avg, 0.000040 rate, 34.392978 seconds, 692480 images
2706迭代次数,0.256951总损失loss,0.259272 avg平均损失,0.000040当前学习率,34当前批次数据训练所花时间,692480=64*2705
详细输出,如
1 | Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.000002, .5R: -nan, .75R: -nan, count: 0 |
Region Avg IOU: 0.32657, 表示在当前 subdivision 内的图片的平均 IOU, 代表预测的矩形框和真实目标的交集与并集之比, 这里是 75.96%, 这个模型此时已经达到了很高的训练精度;
Class: 0.809470, 标注物体分类的正确率, 期望该值趋近于1;
Obj: 0.732717, 越接近 1 越好;
No Obj: 0.002799, 期望该值越来越小, 但不为零;
.5R: 1.000000, 是在 recall/count 中定义的, 是当前模型在所有 subdivision 图片中检测出的正样本与实际的正样本的比值。在本例中, 全部的正样本被正确的检测到。
count: 4, 所有当前 subdivision 图片(本例中一共 8 张)中包含正样本的图片的数量。 在输出 log 中的其他行中, 可以看到其他 subdivision 也有的只含有 6 或 1 个正样本, 说明在 subdivision 中含有不包含在检测对象 classes 中的图片。