第一步:安装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数据集的目录分布建立其他子文件夹(此时文件夹内还没有文件)
-
将数据集所有图片放到JPEGImages文件夹
-
将所有图片对应的xml标注文件放到Annotations
-
生成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()
-
生成最终的txt文件和label文件夹(利用voc_label.py文件)
文件在VOCdevkit同级目录下运行,文件来源于darknet下的scripts文件夹
#!/usr/bin/env python # -*- coding: utf-8 -*- # file: voc_labe