Darknet训练自己数据集之木材识别并计数

一直没有用Darknet训练过自己的数据,最近拿Yolov3尝试了一下,效果很好,记录一下。
Ubuntu系统使用Darknet还是很方便的,如何编译就不说了,直接讲训练过程。
这里用了60张木材照片,用来识别木材的数量
在这里插入图片描述

做好标注后,将img文件夹放进data目录下
在这里插入图片描述

将train.txt放进data目录下
在这里插入图片描述

将obj.names放进data目录下


在这里插入图片描述

修改cfg文件夹下的yolov3-voc.cfg
搜索Yolo,共三处,每处修改三个内容
filters=3 * (种类+5)
classes = 种类
random = 0


在这里插入图片描述

在cfg文件夹下修改obj.data
在这里插入图片描述

加载原始权重,进行训练:

./darknet detector train cfg/obj.data cfg/yolov3-voc.cfg darknet53.conv.74

训练了8个小时,loss到了2.0左右,中断训练,进行测试
在这里插入图片描述

测试效果:

./darknet detector test cfg/obj.data cfg/yolov3-voc.cfg backup/yolov3-voc_last.weights

在这里插入图片描述

在image.c中添加输入总数的代码,输出数量

printf("all:%d", selected_detections_num);

完成整个训练过程,如果测试效果不好,可以继续训练

./darknet detector train cfg/obj.data cfg/yolov3-voc.cfg backup/yolov3-voc_last.weights

补充:
后面尝试将训练好的weights权重转换成.h5权重,检测出的结果出现问题,只检测出准确为1.00的目标,如下:
在这里插入图片描述