keras yoloV3训练自己的数据

一、下载keras-yolo项目

二、安装基于Anaconda的keras虚拟环境,可自行百度也可以参考这里,缺什么安装什么即可

三、将lableImg标注好的数据集转化成VOC2007的格式,文件结构如下:

     keras yoloV3训练自己的数据_第1张图片

其中

keras yoloV3训练自己的数据_第2张图片

在VOC2007目录下新建一个python脚本,用于生成Main下的txt文件

import os
import random

trainval_percent = 0.1
train_percent = 0.9
xmlfilepath = 'Annotations'
txtsavepath = 'ImageSets\Main'
total_xml = os.listdir(xmlfilepath)

num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)

ftrainval = open('ImageSets/Main/trainval.txt', 'w')
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('ImageSets/Main/val.txt', 'w')

for i in list:
    name = total_xml[i][:-4] + '\n'
    if i in trainval:
        ftrainval.write(name)
        if i in train:
            ftest.write(name)
        else:
            fval.write(name)
    else:
        ftrain.write(name)

ftrainval.close()
ftrain.close()
fval.close()
ftest.close()

将labelImg标注的xml文件拷贝到Annotations文件夹下,将jpg原图拷贝到JPEGImages文件夹下,到此VOC数据集制作完毕。在keras-yolo3-master下新建VOCdevkit文件夹,将VOC2007文件夹放于此目录下,然后使用keras-yolo3-master目录下自带的voc_annotation.py在当前目录生成

这几个文件。

这里需要注意的是:voc_annoations.py中的classes类别要根据自己标注的类别进行修改,不然后续会什么都检不出来。

生成的2007_train,txt如下:

注:

  前面是图片文件路径,后面是标注的框坐标,最后一个数是类别。

在model_data下新建一个txt文件,名字自定义,仿照yolo_anchors.txt ,运行python kmeans.py生成yolo的9个anchor,更换相应坐标即可。

同理,新建一个classes文件,类别参照自己标注的数据中的类别,我这就只有两类,如:

转换预训练模型,将weights文件转换为keras的h5文件

python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5

若享用darknet53的预训练模型,则:

wget https://pjreddie.com/media/files/darknet53.conv.74
python convert.py -w darknet53.cfg darknet53.weights model_data/darknet53_weights.h5

我这里用的是yolov3。

注:这里转化之前不需要修改yolov3.cfg中的class类别,我不知道其它博客里为何都千篇一律写这里需要修改,因为一旦这里修改了,用自己的数据集训练的时候会出现val_loss=NAN的情况,我自认为这是不正常的,所以这里是不需要修改的,直接转化就行。

至此数据准备完毕,下面修改train.py

只需要修改这里的路径即可:

keras yoloV3训练自己的数据_第3张图片

改成自己数据集对应的路径,以及模型文件保存的路径即可,至此模型训练可以开始了。

你可能感兴趣的:(yolo)