Я пытаюсь использовать Keras ImageDataGenerator для тренировки моей модели с большим стереофоническим набором данных.
Для каждой сцены у меня есть два изображения RGB, я должен разделить их и объединить, чтобы иметь 6 одноканальных изображений в качестве входных данных для моей модели (то есть этой формы (6,224,224,1)). Для небольших наборов данных это легко, потому что я могу загрузить два набора данных в память и обработать объединение изображений в виде ndarrays. Но с ImageDataGenerator это не одно и то же, так как я должен убедиться, что он принимает одинаковые пакеты из двух наборов данных, и иметь возможность обрабатывать конкатенацию перед передачей ввода в мою модель.
Вдохновленный этим постом , я попробовал этот код:
input_imgen = ImageDataGenerator()
def generate_generator_multiple(generator,dir1, dir2, batch_size):
genX1 = generator.flow_from_directory(directory=dir1,
color_mode="rgb",
batch_size=batch_size,
class_mode="categorical",
shuffle=False)
genX2 = generator.flow_from_directory(directory=dir2,
color_mode="rgb",
batch_size=batch_size,
class_mode="categorical",
shuffle=False)
while True:
X1i = genX1.next()
X2i = genX2.next()
yield [X1i[0], X2i[0]], X2i[1]
В моем случае, как я могу обработать две серии X1i [0] и X2i [0] с пакетами изображений размером (224,224,3), чтобы иметь размер X1Sum (6,224,224), и вместо:
выход [X1i [0], X2i [0]], X2i [1]
У меня будет:
выход X1Sum, X2i [1]