目录
数据集介绍
本文所使用的数据集为三种水果数据集,下载链接为:https://download.csdn.net/download/weixin_43799388/84425688
- 数据集文档结构如下:
|——-Fruit
|---Annotations
|---001.xml
|---002.xml
... ...
|---340.xml
|---images
|---001.jpg
|---002.jpg
... ...
|---340.jpg
数据使用精灵标注助手进行标注,并导出xml格式
若数据集数量巨大,且命名不规范,要按规范批量修改文件名,建议使用菲菲更名宝贝软件进行批量更改文件名,使用方式如下:
从官网下载并安装最新版本软件
打开软件后,点击左上角添加一个文件或文件夹,将要修改的文件导入软件
之后按照下图所示逐步进行修改,最后点击左上角开始更名,完成批量规范重命名操作
xml2txt
标注格式介绍
xml格式的标注信息中,box坐标信息是以xyxy格式标注的,也就是GT框的左上角坐标(xmin, ymin)和右下角坐标(xmax, ymax)
YOLOv5中使用的数据标注文件为.txt,GT框坐标信息是以xywh格式标注的,也就是GT框的归一化中心点坐标(x, y)和归一化宽高(width, height),二者的区别去下图所示:
转换步骤
1、maketxt.py
- 将原数据集划分为train、val和test三部分,其中train+val(组合成trainval部分)占总数据集90%,test部分占10%,train部分有占trainval部分的90%,因此,train: val: test = 8: 1: 1
- 程序执行结果如下:
|——-Fruit
|---Annotations
|---001.xml
|---002.xml
... ...
|---340.xml
|---images
|---001.jpg
|---002.jpg
... ...
|---340.jpg
|---ImageSets
|---test.txt # 存放测试集图片名称
|---train.txt # 存放训练集图片名称
|---trainval.txt # 存放训练验证集图片名称
|---val.txt # 存放验证集图片名称
- pytorch源码如下:
import os
import random
'''
对图片数据集进行随机分类
以8: 1: 1的比例分为训练数据集,验证数据集和测试数据集
运行后在ImageSets文件夹中会出现四个文件
'''
ROOT = '../datasets/Fruit/'
trainval_percent = 0.9
train_percent = 0.9
xmlfilepath = ROOT + 'Annotations'
txtsavepath = ROOT + 'ImageSets'
# 获取该路径下所有文件的名称,存放在list中
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(ROOT + 'ImageSets/trainval.txt', 'w')
ftest = open(ROOT + 'ImageSets/test.txt', 'w')
ftrain = open(ROOT + 'ImageSets/train.txt', 'w')
fval = open(ROOT + 'ImageSets/val.txt', 'w')
for i in list:
# 获取文件名称中.xml之前的序号
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()
2、voc2txt.py
- 将xml文件转化为txt文件,xml文件包含了对应的GT框以及图片长宽大小等信息,通过对其解析,并进行归一化最终读到txt文件中
- 同时生成train、val和test数据集中图片的绝对路径,用于索引到图片位置
- 程序执行结果如下:
|——-Fruit
|---Annotations
|---001.xml
|---002.xml
... ...
|---340.xml
|---images
|---001.jpg
|---002.jpg
... ...
|---340.jpg
|---ImageSets
|-