将JPG和XML文件的数据集拆分为训练和测试集

时间:2019-07-04 09:01:52

标签: python tensorflow

我有一个对象检测算法的数据集,其中包含图片(.jpg)和相应的.xml文件,其中包含边界框。

我想编写一个脚本,将数据集随机分成训练集和测试集,这意味着我必须确保将具有相应XML的jpg分配到同一目录。

我应该如何编辑以下代码以实现此目的?

此外,这是“最佳”方法吗?还是在xml到csv转换后或生成csv到tfrecords转换后拆分数据集更好?

import shutil, os, glob, random

# List all files in a directory using os.listdir
basepath = '/home/createview/Vegard/createview/lice_detection_v2/workspace/images/Synced_dataset'
filenames = []

for entry in os.listdir(basepath):
    if os.path.isfile(os.path.join(basepath, entry)):
        #print(entry)
        filenames.append(entry)

filenames.sort()  # make sure that the filenames have a fixed order before shuffling
random.seed(230)
random.shuffle(filenames) # shuffles the ordering of filenames (deterministic given the chosen seed)

split = int(0.8 * len(filenames))
train_filenames = filenames[:split]
test_filenames = filenames[split:]

1 个答案:

答案 0 :(得分:0)

对我来说,最好的选择是以正确的顺序创建两个文件列表(filenames的{​​{1}}和jpg的{​​{1}})和索引{ {1}}。

然后,您可以重新整理索引列表:

xmlnames

最后,为xmlindices=[i for i in range(len(filenames))]文件创建训练和测试集:

random.seed(230)
random.shuffle(indices)