我有一个对象检测算法的数据集,其中包含图片(.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:]
答案 0 :(得分:0)
对我来说,最好的选择是以正确的顺序创建两个文件列表(filenames
的{{1}}和jpg
的{{1}})和索引{ {1}}。
然后,您可以重新整理索引列表:
xmlnames
最后,为xml
和indices=[i for i in range(len(filenames))]
文件创建训练和测试集:
random.seed(230)
random.shuffle(indices)