天天看点

在keras-yolo3使用自己的VOC数据集训练

本教程是作者自己参考了一系列资料,以及踩坑之后总结下来的。和大家分享一下。

这次使用的模型是YOLOv3 的keras版本。

链接如下:

https://github.com/qqwweee/keras-yolo3

具体的使用细节,github上都写明了。

我这里是为了检测图像,所示使用,记得下载yolo的权重。

python yolo_video.py --image
           

就行了

要使用VOC的数据集。我们需要做的是在当前项目的目录下新建VOCdevkit文件夹。

文件的目录如下:

VOCdevkit
    --VOC2007
        --Annotations   用于存档xml文件
        --ImageSets
            --Main 存放训练集和测试集需要用要的文件编号   
        --JPEGImages2  存放需要检测的图片
           

我们需要在Main目录下,创建两个文件。test.txt和train.txt

这两个文件是给voc_annotation.py调用的,目的是用来生成符合keras-yolo3的数据格式。

如何生成test.txt和train.txt

这两个文件时需要我们自己编写的,我利用的是python脚本将Annotations里面的文件,读取出来随机打乱,然后按照八二开的原则,将文件名字放入train和test文件中,需要注意的是,不要包含后缀名。

在keras-yolo3使用自己的VOC数据集训练

然后调用voc_annotation.py脚本

在keras-yolo3使用自己的VOC数据集训练

这里需要注意的是,sets要生成的文件名,他会分别读取Main路径下的,train和val还有test。如果我们不需要其中的某一项,则将其从list中去掉。

在classes中把自己数据源中的需要识别的类加进去。我需要的只是car和train。

调用之后会在根目录生成

在keras-yolo3使用自己的VOC数据集训练

三个文件。接着打开

k-mean.py文件,把filename改成自己需要训练的数据集。该脚本会生成一个yolo_anchors.txt文件,把这个文件放入到model_data文件中去。

在keras-yolo3使用自己的VOC数据集训练
在keras-yolo3使用自己的VOC数据集训练

打开train.py文件

在keras-yolo3使用自己的VOC数据集训练

把文件对应的文件名字修改成为你自己的文件。并修改好input_shape.

在keras-yolo3使用自己的VOC数据集训练

把自己下载的权重的路径修改好。修改对应的trian和fine-tune对应的参数,我修改的是batch_size和epochs。

使用 python train.py我们就可以跑起来了。

这样我们就可以跑起来了。

继续阅读