YOLOV3从训练、测试到批量保存测试结果

时间:2024-04-03 13:55:41

本文从假设你已经有一个图像数据集和xml标签数据集了。然后从VOC2007数据集的制作开始说。

数据整理方法---训练方法-----利用训练日志绘制Loss\IOU等曲线的方法------测试方法---------批量测试方法

 

数据整理方法:

(假设你只想要其中某些类,就要用程序剔除不要的标签、然后删除空标签以及对应图像。注意备份)

YOLOV3从训练、测试到批量保存测试结果

 

 

 

训练自己的数据

训练带正常螺栓的数据集

        -采用的初始权重为:首先Imagenet训练过,然后经过我们螺栓库训练过,然后经过提包线夹脱销数据集训练过得到的yolov3模型权重。

        -问题:之前训练过yolov3,但这一次还是调整了半天,说明模型的训练过程中,不能单单的跑出来,要记录具体的训练步骤,以及处理过程。

        -具体流程如下

YOLOV3从训练、测试到批量保存测试结果

 

  • 修改cfg中voc.data:,

               YOLOV3从训练、测试到批量保存测试结果

                         classes是数据集类、train和valid是由voc_label.py根据aa.m分配完成的位于Main中的结果文档生成的训练txt。names是类别名称单独放一个文件夹,类别按voc_label中相同的顺序填写。backup后面是一个文件夹,保存训练好的网络权重

  • 修改yolov3-voc.cfg:

            -文档内搜索yolo。

             YOLOV3从训练、测试到批量保存测试结果

          -开头部分

            YOLOV3从训练、测试到批量保存测试结果修改对应的地方。filters=3x(类别数目+5)

 

           所需要的文件如下:

voc_label.py网上都有,生成VOC格式的MaIn中txt文件的py代码放在另一个博文里面了,设置的是随机挑选数据分配到test与train的,不是顺序的,要注意。

 

LOSS曲线与IOU曲线绘制

1、绘制上一次训练的Loss曲线、IOU曲线

        -还有map和ap曲线还没知道怎么画

        -需要三个程序

       首先把命令窗口打印的训练日志复制下来然后:

  1. extract Log日志为 Loss和iou版本、
  2. 都与日志放在同一个文件夹下运行
  3. 分别用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/79989754YOLOv3批量测试图片并保存在自定义文件夹下)中方法,首先修改代码,然后重新编译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对应数据的测试结果,每一次都要分开保存好,避免覆盖

 

 

测试结果

图像测试结果和数值坐标结果都分别保存下来。

YOLOV3从训练、测试到批量保存测试结果

 

YOLOV3从训练、测试到批量保存测试结果


时间仓促,把关键点写了出来,有问题欢迎留言讨论。