背景说明:本次训练的模型分五类,分别为['whiteboard','chair','diningtable','sofa','tvmonitor']。训练数据集大约1000张。
环境:Window 10 系统,python=3.6,tensorflow=1.15
一、数据准备
1.用Labelimg标注好图像训练集,放在D:/AI\yolov3_whiteboard/data/dataset_whiteboard/Annotations, 里面是已经标注好的XML文件。还没安装Labelimg图像标注工具的请点击安装。原始图像放在D:/AI/yolov3_whiteboard/data/dataset_whiteboard/JPEGImages/train文件中。
2.把XML文件的内容转为txt文本并保存。运行D:/AI/yolov3_whiteboard/scripts/take_xml_to_train.py即可,这里说明一下几个参数:
16行的classes为训练的类名,27行的anotation为原始图像的绝对路径,30行的label_path为图像标注文件的绝对路径,58行的data_name_file为训练图像的名称集合文件txt,格式为单纯的名称,没有前后缀的。这里是已打乱训练图像顺序的。源码在D:/AI/yolov3_whiteboard/scripts/read_name.py中,有兴趣的可以去查看。59行的train_annotation_file就是存放训练集图像信息的文件txt,记录了图像的绝对路径、标注目标框的位置信息和类别。
二、训练模型
运行D:/AI/yolov3_whiteboard/train.py,该脚本中小编做了一些注释,方便理解训练模型的思路。
还有一个重要的脚本,那就是做参数配置的,放在D:/AI/yolov3_whiteboard/core/config.py中,里面内容也做了注释。
框出来的几个参数,这里说明一下。20行是训练的类别名称文件。21行是锚定尺度,及Yolov3的目标检测滑动窗口尺度。33行是训练的图像内容文件,前面也说明了,42行是训练初始化的权重参数,如果没有的话系统重新初始化权重值,有的话相当于接着训练权重的样子。49行的是测试数据路径,我这里是使用训练集来测试,原因是我收集的数据不够,这里只是跑一遍程序,并不是模型的真实评估。54行的是测试时目标检测的效果图存放文件。56行是测试的权重参数文件。
三、测试模型
运行D:/AI/yolov3_whiteboard/core/evaluate.py。一些参数也做了注释,这里留意一个地方。
80行是存放预测结果的文件,82行是存放真实标签的文件。所以运行之后预测的结果和真实结果会保存起来。还有保存的效果图在D:/AI/yolov3_whiteboard/data/detection中。这里的效果图我只展示whiteboard类的,因为这是我的目标类。需要修改的话到代码中对应的更改即可。
接着再运行D:/AI/yolov3_whiteboard/mAP/main.py。运行之后结果保存在D:/AI/yolov3_whiteboard/mAP/results文件下。来看一下mAP吧。
结果太完美了,因为测试的是训练图像,当然会好的,这是在自欺欺人,给别人看的,哈哈哈哈哈。
最后来几张检测的效果图吧。
赶紧开始自己的图像集训练吧。