这篇文章是训练YOLO v2过程中的经验总结,我使用YOLO v2训练一组自己的数据,训练后的model,在阈值为.25的情况下,Recall值是95.54%,Precision 是97.27%。
需要注意的是,这一训练过程可能只对我自己的训练集有效,因为我是根据我这一训练集的特征来对YOLO代码进行修改,可能对你的数据集并不适用,所以仅供参考。
我的数据集 批量改名首先准备好自己的数据集,最好固定格式,此处以VOC为例,采用jpg格式的图像,在名字上最好使用像VOC一样类似000001.jpg、000002.jpg这样。可参照下面示例python代码
读取某文件夹下的所有图像然后统一命名,用了opencv所以顺便还可以改格式。
准备好了自己的图像后,需要按VOC数据集的结构放置图像文件。VOC的结构如下
这里面用到的文件夹是Annotation、ImageSets和JPEGImages。其中文件夹Annotation中主要存放xml文件,每一个xml对应一张图像,并且每个xml中存放的是标记的各个目标的位置和类别信息,命名通常与对应的原始图像一样;而ImageSets我们只需要用到Main文件夹,这里面存放的是一些文本文件,通常为train.txt、test.txt等,该文本文件里面的内容是需要用来训练或测试的图像的名字(无后缀无路径);JPEGImages文件夹中放我们已按统一规则命名好的原始图像。
因此,首先 1.新建文件夹VOC2007(通常命名为这个,也可以用其他命名,但一定是名字+年份,例如MYDATA2016,无论叫什么后面都需要改相关代码匹配这里,本例中以VOC2007为例) 2.在VOC2007文件夹下新建三个文件夹Annotation、ImageSets和JPEGImages,并把准备好的自己的原始图像放在JPEGImages文件夹下 3.在ImageSets文件夹中,新建三个空文件夹Layout、Main、Segmentation,然后把写了训练或测试的图像的名字的文本拷到Main文件夹下,按目的命名,我这里所有图像用来训练,故而Main文件夹下只有train.txt文件。上面说的小代码运行后会生成该文件,把它拷进去即可。
图像标注 2.标记图像目标区域 python代码直接运行之后开始标注, 因为做的是目标检测,所以接下来需要标记原始图像中的目标区域。相关方法和工具有很多,像labelme 或者labeltool ,这里需用标注工具,相关用法也有说明,基本就是框住目标区域然后双击类别,标记完整张图像后点击保存即可。操作界面如下:
代码篇幅有限
请查看原文
https://blog.csdn.net/xiao__run/article/details/78714659
接下来我们把标注文件改成.XML 文件才能训练,不多说直接上代码
用YOLOv2训练 按darknet的说明编译好后,接下来在darknet-master/scripts文件夹中新建文件夹VOCdevkit,然后将整个VOC2007文件夹都拷到VOCdevkit文件夹下。 然后,需要利用scripts文件夹中的voc_label.py文件生成一系列训练文件和label,具体操作如下: 首先需要修改voc_label.py中的代码,这里主要修改数据集名,以及类别信息,我的是VOC2007,并且所有样本用来训练,没有val或test,并且只检测人,故只有一类目标,因此按如下设置
这里包含了类别和对应归一化后的位置(i guess,如有错请指正)。同时在scripts\下应该也生成了train_2007.txt这个文件,里面包含了所有训练样本的绝对路径。
2.配置文件修改 做好了上述准备,就可以根据不同的网络设置(cfg文件)来训练了。在文件夹cfg中有很多cfg文件,应该跟caffe中的prototxt文件是一个意思。这里以tiny-yolo-voc.cfg为例,该网络是yolo-voc的简版,相对速度会快些。主要修改参数如下
代码篇幅有限
请查看原文
https://blog.csdn.net/xiao__run/article/details/78714659
也可参考https://blog.csdn.net/shangpapa3/article/details/77483324
运行步骤
1.从 YOLO 官网下载 YOLOv3 权重
wget https://pjreddie.com/media/files/yolov3.weights
下载过程如图:
2.转换 Darknet YOLO 模型为 Keras 模型
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
转换过程如图:
3.运行YOLO 目标检测
python yolo.py
需要下载一个图片,然后输入图片的名称,如图所示:
我并没有使用经典的那张图,随便从网上找了一个,来源见图片水印:
识别效果:
项目地址:https://github.com/qqwweee/keras-yolo3