zml-ai/Underwater_detection

数据集拆分成训练集和测试集

Opened this issue · 3 comments

请教一下大佬,这个数据集拆分成训练集和测试集有没有相关代码啊

import os
import random

trainval_percent = 0.8
train_percent = 0.8
xmlfilepath = 'Annotations'
txtsavepath = 'ImageSets\Main'
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('ImageSets/Main/trainval.txt', 'w')
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('ImageSets/Main/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)

ftrainval.close()
ftrain.close()
fval.close()
ftest.close()
可以试试这个

这个拆分数据应该跟具体的数据有关,需要保证分布均衡吧,大佬在知乎上https://zhuanlan.zhihu.com/p/129842491 也介绍了挺多的,但是好像没有看到具体的样本划分。
image

有道理 顺便问一下大佬有没有跑通这个代码了 我刚刚接触mmdetection这个框架,不是很了解,想要向您咨询一下