我当前的数据集在多个文件夹中有图像,按类标记。我想在这些目录中创建一个“train”和“test”文件夹以及类文件夹。然后,我想将70%的图像放在“train”文件夹中,将30%的图像放在“test”文件夹中,如下所示:
列车文件夹
bean文件夹:
蛋糕文件夹:
我现在要做的代码是这样的(我现在正在一个小数据集上测试):
classes = ('BEANS', 'CAKE') #'Candy', 'Cereal', 'Chips', 'Chocolate',
# 'Coffee', 'Corn', 'Fish', 'Flour', 'Honey', 'Jam', 'Juice',
# 'Milk', 'Nuts', 'Oil', 'Pasta', 'Rice', 'Soda', 'Spices',
# 'Sugar', 'Tea', 'Tomato Sauce', 'Vinegar', 'Water')
# create sub-folders for each class
OUTPATH = 'C:\\Users\\User\\Documents\\Dataset\\freiburg_groceries_dataset\\sets'
for x in classes:
os.makedirs(OUTPATH+'\\train\\'+x, exist_ok=True)
os.makedirs(OUTPATH+'\\test\\'+x, exist_ok=True)
INPATH = 'C:\\Users\\User\\Documents\\Dataset\\freiburg_groceries_dataset\\imgs'
filenames = os.listdir(INPATH + '\\' + x)
counts = {x:0 for x in classes}
for x in classes:
print(len(filenames))
print(filenames)
testset = len(filenames) / 10 * 0.3 # 30%
for fl in filenames:
for cl in classes:
if cl in fl:
counts[cl] += 1 # increase count +1
if counts[cl] < testset:
shutil.move(INPATH + '\\' + x + '\\' + fl, OUTPATH+'\\test\\'+cl+'\\'+fl)
else:
shutil.move(INPATH + '\\' + x + '\\' + fl, OUTPATH+'\\train\\'+cl+'\\'+fl)
我的代码创建了我需要的文件夹,但是它只读取CAKE
文件夹,而忽略BEANS
文件夹。它还会将所有蛋糕图像移动到train文件夹,并留下蛋糕-->;测试文件夹为空,不移动任何BEAN图像。有人能看到我的代码没有按照步骤操作BEANS文件夹和将30%的蛋糕图像移动到test文件夹的地方吗
我认为有两个地方您的代码没有按预期运行
需要更正
下一个在
编辑:(以下将是您要寻找的更简单的解决方案)
相关问题 更多 >
编程相关推荐