本文从假设你已经有一个图像数据集和xml标签数据集了。然后从VOC2007数据集的制作开始说。
数据整理方法---训练方法-----利用训练日志绘制Loss\IOU等曲线的方法------测试方法---------批量测试方法
数据整理方法:
(假设你只想要其中某些类,就要用程序剔除不要的标签、然后删除空标签以及对应图像。注意备份)
训练自己的数据
训练带正常螺栓的数据集
-采用的初始权重为:首先Imagenet训练过,然后经过我们螺栓库训练过,然后经过提包线夹脱销数据集训练过得到的yolov3模型权重。
-问题:之前训练过yolov3,但这一次还是调整了半天,说明模型的训练过程中,不能单单的跑出来,要记录具体的训练步骤,以及处理过程。
-具体流程如下
-
修改cfg中voc.data:,
classes是数据集类、train和valid是由voc_label.py根据aa.m分配完成的位于Main中的结果文档生成的训练txt。names是类别名称单独放一个文件夹,类别按voc_label中相同的顺序填写。backup后面是一个文件夹,保存训练好的网络权重
-
修改yolov3-voc.cfg:
-文档内搜索yolo。
-开头部分
修改对应的地方。filters=3x(类别数目+5)
所需要的文件如下:
voc_label.py网上都有,生成VOC格式的MaIn中txt文件的py代码放在另一个博文里面了,设置的是随机挑选数据分配到test与train的,不是顺序的,要注意。
LOSS曲线与IOU曲线绘制
1、绘制上一次训练的Loss曲线、IOU曲线
-还有map和ap曲线还没知道怎么画
-需要三个程序
首先把命令窗口打印的训练日志复制下来然后:
- extract Log日志为 Loss和iou版本、
- 都与日志放在同一个文件夹下运行
- 分别用train-loss\train-iou对日志数据进行可视化
单张图片测试:
./darknet detector test cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_final.weights 01.jpg
批量测试:
1.可视化的批量测试
按https://blog.csdn.net/mieleizhi0522/article/details/79989754(YOLOv3批量测试图片并保存在自定义文件夹下)中方法,首先修改代码,然后重新编译darknet,然后用
./darknet detector test cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_final.weights
命令,运行后输入依次2007_train.txt\2007_test.txt\2007_val.txt的路径,会蹦出图片,一张张关闭掉,就会自动保存并且运行下一张。运行完一组,结果输出到data/out里面,修改名字,跑下一个txt。就可以得到本次测试的图片结果。
2.数字结果的批量测试(输出txt,里面是框坐标、类别、得分)
./darknet detector vaild cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_final.weights -gpu 0,1 thresh .001
会把cfg/voc.data里的测试txt文档中的所有图片批量测试一遍,按类输出txt文档到darknet-master/result文件夹中。更换不同的txt,得到val.txt、train.txt、test.txt对应数据的测试结果,每一次都要分开保存好,避免覆盖
测试结果
图像测试结果和数值坐标结果都分别保存下来。
时间仓促,把关键点写了出来,有问题欢迎留言讨论。