亲测可用!Ubuntu 上PAC VOC数据集划分Python代码实现!

网上关于划分训练集,验证集,测试集的实现已经很多 随便搜索下就可以出来很多 但是自己亲自用过的才是最有保障的吧 特此记录下 以免哪天丢失 又得费一番功夫 也供大家参考下

Python代码实现

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: yehaizi time:2019/10/28:9:24
import os
import random

trainval_percent = 0.8   # trainval占总数的比例
# train_percent = 0.5   # train占trainval的比例
xmlfilepath = "/home/hq/Research/data/VOC/VOCtrainval-2012/VOCdevkit/VOC2012/Annotations/"
txtsavepath = "/home/hq/Research/data/VOC/VOCtrainval-2012/VOCdevkit/VOC2012/ImageSets/Main/"
total_xml = os.listdir(xmlfilepath)    # 列举当前目录下所有的文件,返回的是列表类型

num = len(total_xml)                   # 获得总的文件个数 这里就是xml文件的个数
list = range(num)                        # 生成一个整数列表 如num=10,则为[1,2,3,4,...9]
tv = int(num * trainval_percent)
# tr = int(tv * train_percent)       #我直接将trainval作为训练集 故这里注释掉 你们自己的就看情况
trainval = random.sample(list, tv)    # 多个字符中生成指定数量的随机字符
# train = random.sample(trainval, tr) # 同理 注释掉

ftrainval = open(txtsavepath + 'trainval.txt', 'w')
ftest = open(txtsavepath + 'test.txt', 'w')
# ftrain = open(txtsavepath + r'\train.txt', 'w')
# fval = open(txtsavepath + r'\val.txt', 'w')

for i in list:
    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)

你可能感兴趣的:(目标检测)