详细教程:YOLOv4训练自己的数据集(win10+keras)

YOLOv4的训练过程基本和YOLOv3相似,要完成目标检测,大部分时间会浪费在数据集的准备上;因此这里主要讲一下数据集的准备和制作,其次说一下训练过程。

一、制作VOC数据集

1.图片数据准备

图片数据的获取可以自己用高清摄像机采集视频,然后对其进行抽帧,获得图片数据集视频>>图片;因为xml文件序号要与图片编号一一对应,这里文件重命名可以用代码完成序号重命名(00001,00002等)
命名方式

2.标注数据

这里用的是比较常用的labelImg标注工具,每标注一张图片都会生成一个xml文件。labelImg可以去浏览器下载,这里给个我当时下载的链接labelImg下载
labelImg使用方法大家直接搜一下就可以了,很简单也很好用的工具,页面大概是这样详细教程:YOLOv4训练自己的数据集(win10+keras)_第1张图片

3.创建VOC文件夹

新建文件夹命名VOC2007,并且在VOC2007下新建AnnotationsImageSetsJPEGImages三个文件夹,在ImageSets文件夹下再建一个Main文件夹。Annotations里面放已经标注好的xml文件JPEGImages里面放自己的图片数据(序号00001,00002,00003…)

二、训练准备

1.生成txt文件

VOC2007文件夹里新建test.py,运行代码将会在Main文件夹里生成train.txt,val.txt,test.txttrainval.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()

做完这一步,VOC2007目录如下
详细教程:YOLOv4训练自己的数据集(win10+keras)_第2张图片

2.convert.py

运行convert.py代码将预训练权重转化为keras用的h5文件
在这里插入图片描述

3.修改运行voc_annotation代码

在这里插入图片描述
改一下第六行,然后运行运行voc_annotation代码,生成2007_train.txt2007_test.txt,2007_val.txt
在这里插入图片描述

4.运行k-means

生成anchors大小,然后用这个数据替换yolo4_anchor.txt的数据。
在这里插入图片描述

5.对train.py的参数进行修改

因为可以修改的东西比较多,这里就不详细说明了,先把路径,文件输入正确,其他问题不大。
详细教程:YOLOv4训练自己的数据集(win10+keras)_第3张图片
做到这一步就基本可以训练啦。

6.思维导图

详细教程:YOLOv4训练自己的数据集(win10+keras)_第4张图片

你可能感兴趣的:(详细教程:YOLOv4训练自己的数据集(win10+keras))