此代码将数据集分为:训练+验证
,训练集
,验证集
,测试集
,根据实际情况取相对应的文件即可。比如:
若你的训练代码中不包含验证集划分,取训练集
,验证集
,测试集
使用;若包含验证集划分,取训练+验证
,测试集
使用。
新建一个split_train_test.py
文件,用来划分数据集,代码如下:
import os
import random
trainval_percent = 0.9 # 训练+验证
train_percent = 0.9 #训练
xmlfilepath = 'DataSet\\Annotations' # 标注文件路径
txtsavepath = 'DataSet\\Main' # 划分后txt文件存放路径
total_xml = os.listdir(xmlfilepath)
num = len(total_xml) # 样本集总量:训练+验证+测试
total_index = range(num)
trainval_num = int(num * trainval_percent ) # 训练+验证的样本量
train_num = int(trainval_num * train_percent) # 训练样本量
trainval = random.sample(total_index, trainval_num)
train = random.sample(trainval, train_num)
ftrainval = open('DataSet\\Main\\trainval.txt', 'w') # 训练+验证
ftrain = open('DataSet\\Main\\train.txt', 'w') # 训练
fval = open('DataSet\\Main\\val.txt', 'w') # 验证
ftest = open('DataSet\\Main\\test.txt', 'w') # 测试
for i in total_index:
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()