Я пытаюсь обработать и сохранить некоторое увеличение данных в моем наборе данных, состоящем из 500 классов с 10 изображениями на класс. Мой набор данных является стерео, это означает, что он имеет два просмотра на сцену. Другими словами, он имеет следующую архитектуру:
->left
|_____0001
|_____0002
...
|_____0500
->right
|_____0001
|_____0002
...
|_____0500
Я хочу выполнить одинаковое автономное увеличение данных для левого и правого входов и сохранить их в тех же каталогах исходных изображений. Вот мой код:
from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
import os
import numpy as np
data_path_l=".\TRAIN\left\"
data_path_r=".\TRAIN\right\"
#Create a generator
input_imgen =ImageDataGenerator(rotation_range=15,horizontal_flip=True,
fill_mode='nearest'
#Get all the images in the left sub-directories
for file, subfolder, folder in os.walk(data_path_l):
for fo in folder:
path = os.path.join(file,fo)
img = load_img(path)
X = img_to_array(img)
X = np.expand_dims(X, 0)
i = 0
for batch in data_generator.flow(X,save_to_dir=file,save_prefix='aug',save_format='png',shuffle=False,batch_size=1,seed=666):
i += 1
if i % 3 == 0: # Generate three transformed pictures
break # To avoid generator to loop indefinitely
#Get all the images in the right sub-directories
for file, subfolder, folder in os.walk(data_path_r):
for fo in folder:
path = os.path.join(file,fo)
img = load_img(path)
X = img_to_array(img)
X = np.expand_dims(X, 0)
i = 0
for batch in data_generator.flow(X,save_to_dir=file,save_prefix='aug',save_format='png',shuffle=False,batch_size=1,seed=666):
i += 1
if i % 3 == 0: # Generate three transformed pictures
break # To avoid generator to loop indefinitely
проблема в том, что предыдущий код выполняет те же преобразования для левой и правой пар, но только для последнего изображения в каждом классе !!
Кто-нибудь может предложить мне решение или предложить мне другой способ выполнить мою задачу?