Количество обучающих изображений для некоторых классов в моем наборе данных слишком мало. Я использую функцию увеличения данных Keras. Тем не менее, некоторые классы имеют более чем достаточно данных. Как я мог дать Керасу указание применять увеличение для каждого класса по-своему? Например. на тех классах с достаточным количеством данных только H / V-flip, на классах с небольшим количеством вращений, сдвигов и т. д .?
В настоящее время соответствующий код выглядит так:
train_datagen = ImageDataGenerator(
rescale=1. / 255,
rotation_range=45, # randomly rotate images in the range (degrees, 0 to 180)
width_shift_range=0.02, # randomly shift images horizontally (fraction of total width)
height_shift_range=0.02, # randomly shift images vertically (fraction of total height)
zoom_range=0.2,
horizontal_flip=True, # randomly flip images
vertical_flip=True,
validation_split=0.2
)
train_generator = train_datagen.flow_from_directory(
self.train_base
,target_size=(self.img_width, self.img_height)
,batch_size=self.batch_size
,class_mode='categorical'
,color_mode='grayscale'
,classes=self.classes
#,save_to_dir = "c:/temp/train_in"
)
learnhist = self.model.fit_generator(
train_generator,
steps_per_epoch=self.nb_train_samples // self.batch_size,
epochs=self.epochs,
callbacks=callbacks_list,
initial_epoch=self.start_epoch
)
Каталог в переменной self.train_base
содержит подкаталоги для всех классов.