Учитывая список имен файлов изображений для каждого набора, Разделить большой набор данных на обучающие / действительные / тестовые каталоги? - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь разделить большой набор данных на наборы поездов / действительных / тестовых наборов из Food101 для классификации изображений

, и структура набора данных похожа на это и содержит все изображения водна папка

'',
'Structure:',
'----------',
'pec/',
'    images/',
'        <class_name>/',
'            <image_id>.jpg',
'    meta/',
'        classes.txt',
'        labels.txt',
'        test.json',
'        test.txt',
'        train.json',
'        train.txt',
'',
'All images can be found in the "images" folder and are organized per class. All',
'image ids are unique and correspond to the foodspotting.com review ids. 
'',
'The test/train splitting used in the experiment of our paper can be found in',
'the "meta" directory.', (edited) ```



I want to divide images dataset to train/valid/test  with the list of filenames given in train.txt and test.txt, which author used 

Форма поезда, действительные, тестовые списки: (101, 600), (101, 150), 25250

В colab я запускаю следующий код


for x in range(train.shape[0]):
    for y in range(train.shape[1]):

     temp = train[x,y] + ".jpg"

     foldername = temp.split('/')[0]

     !mv /content/food-101/images/$temp /content/food101/train/$foldername/

Индивидуально движущиеся изображения, выполняя вложенный цикл, принимая имена файлов в списках, тратит вечно на создание папок, так как общее количество изображений 100100, так что

У меня есть список имен файлов для train / validи тестовый набор, но как превратить их в папки, чтобы мы могли передать их в классификатор изображений в формате папок изображений Pytorch (я имею в виду, что поезд / действительный / тестовый набор - это три разные папки, и у каждой папки есть подпапки каждого класса)

Пожалуйста, скажите, если кто-нибудь знает, как это сделать, пожалуйста, и, пожалуйста, мне действительно нужна ваша помощь здесь, спасибо: smile:

1 Ответ

0 голосов
/ 23 февраля 2019

Похоже, я ошибся в решении, мне не нужно перемещать изображения, все, что мне нужно изменить, это путь к изображениям в необходимом формате через модуль os

Ниже приведен код для этого,Скажем, у вас есть список имен файлов в действительном списке

#for valid set 

v = valid.reshape(15150,)

or_fpath = '/content/food-101/images/' #path of original folder
cp_fpath = '/content/food101/valid/'   #path of destination folder

for y in tqdm(v):

 foldername = y.split('/')[0]

 img = y.split('/')[1] +'.jpg'

 ip_path = or_fpath+foldername
 op_path = cp_fpath+foldername

 if not os.path.exists(op_path):
   os.mkdir(op_path)

 os.rename(os.path.join(ip_path, img), os.path.join(op_path, img))



Спасибо!

примечание: если у вас есть еще лучший ответ, пожалуйста, поделитесь Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...