Darknet框架下如何利用自己的数据集训练YOLOv4模型

第一步:安装darknet

参考:Windows搭建Darknet框架环境-Yolov4-GPU_乐观的lishan的博客-优快云博客

darknet的源码说明中也已经简单介绍了如何利用数据集训练网络

第二步:制作VOC格式数据集

网上搜集自己需要的数据集,或自己拍摄相关视频,然后提取帧图片

大部分的网络公开数据集已经附带有标注好的xml文件

推荐交通领域公开数据集(包含无人驾驶、交通标志、车辆检测三大类)链接如下:【智能交通数据集】一文道尽智能交通领域数据集合集(一) - 飞桨AI Studio - 人工智能学习与实训社区

也有一部分数据集没有xml格式的标注文件,此时需要使用其他方法将其转换为xml文件

例如BITVehicle数据集提供的就是一个mat格式的标注文件,需要编写程序读取数据并生成对应图片的xml文件

对于没有标签的数据集或者是自己拍摄的数据集,需要使用labelimg工具进行标定,生成xml文件,使用pip安装命令即可安装

pip install labelimg

打开labelimg命令

labelimg

新建一个文件夹,参照VOC数据集的目录分布建立其他子文件夹(此时文件夹内还没有文件)

  1. 将数据集所有图片放到JPEGImages文件夹

  2. 将所有图片对应的xml标注文件放到Annotations

  3. 生成txt相关文件放在Main文件夹下(利用gen_files.py文件)

    文件在VOCdevkit同级目录下运行,文件来源于博客:Yolov4训练自己的数据集_sinat_28371057的博客-优快云博客_yolov4训练自己的数据集

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # file: gen_files.py
    # 生成训练所需txt文件
    import os
    import random
    root_path = './VOCdevkit/VOC2007'
    xmlfilepath = root_path + '/Annotations'
    txtsavepath = root_path + '/ImageSets/Main'
    if not os.path.exists(root_path):
        print("cannot find such directory: " + root_path)
        exit()
    if not os.path.exists(txtsavepath):
        os.makedirs(txtsavepath)
    trainval_percent = 0.9   # 训练验证集占比
    train_percent = 0.8      # 训练集占比
    total_xml = os.listdir(xmlfilepath)
    num = len(total_xml)
    tv = int(num * trainval_percent)
    tr = int(tv * train_percent)
    trainval = random.sample(range(num), tv)
    train = random.sample(trainval, tr)
    print("train and val size:", tv)
    print("train size:", tr)
    ftrainval = open(txtsavepath + '/trainval.txt', 'w')
    ftest = open(txtsavepath + '/test.txt', 'w')
    ftrain = open(txtsavepath + '/train.txt', 'w')
    fval = open(txtsavepath + '/val.txt', 'w')
    for i in range(num):
        name = total_xml[i][:-4] + '\n'
        if i in trainval:
            ftrainval.write(name)
            if i in train:
                ftrain.write(name)
            else:
                fval.write(name)
        else:
            ftest.write(name)
    ftrainval.close()
    ftrain.close()
    fval.close()
    ftest.close()

  4. 生成最终的txt文件和label文件夹(利用voc_label.py文件)

    文件在VOCdevkit同级目录下运行,文件来源于darknet下的scripts文件夹

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # file: voc_labe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐观的lishan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值