Мой текущий набор данных содержит изображения в нескольких папках, помеченных классом. Я хочу создать папку 'train' и 'test' и папки классов внутри этих каталогов. Затем я хочу поместить 70% изображений в папки 'train' и 30% изображений в папку 'test', например:
Train Folder
Папка Beans:
Папка для тортов:
Мой код для этого прямо сейчас (сейчас я тестирую небольшой набор данных):
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
. Он также перемещает все изображения тортов в папку поезда и оставляет пустую папку торт -> тест, и не перемещает изображения BEAN. Может кто-нибудь увидеть, где мой код не выполняет шаги по работе с папкой BEANS и перемещает 30% образов тортов в тестовую папку?