Случайное ортогональное вращение на 90 градусов с помощью ImageDataGenerator - PullRequest
0 голосов
/ 19 апреля 2020

Я использую следующий код для обучения моей модели CNN с изображениями счетов-фактур.

train_datagen = ImageDataGenerator( 
                rescale = 1. / 255, 
                 shear_range = 0.2, 
                  zoom_range = 0.2, 
            horizontal_flip = True
            ) 

test_datagen = ImageDataGenerator(rescale = 1. / 255) 

train_generator = train_datagen.flow_from_directory(train_data_dir, 
                              target_size =(img_width, img_height), 
                     batch_size = batch_size) 

validation_generator = test_datagen.flow_from_directory( 
                                    validation_data_dir, 
                   target_size =(img_width, img_height), 
          batch_size = batch_size) 

model.fit_generator(train_generator, 
    steps_per_epoch = nb_train_samples // batch_size, 
    epochs = epochs, validation_data = validation_generator, 
    validation_steps = nb_validation_samples // batch_size) 

Проблема в том, что я использовал только вертикальные изображения в моем наборе обучающих данных. Все мои изображения похожи на следующее изображение:

An upright image that was used during the training

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

wrong predicted image

Как вы видите ниже, я посылаю горизонтальный_флип = True для ImageDataGenerator

train_datagen = ImageDataGenerator( 
                rescale = 1. / 255, 
                 shear_range = 0.2, 
                  zoom_range = 0.2, 
            horizontal_flip = True
            )

Как я могу изменить свой код, чтобы он мог предсказывать даже перевернутые изображения. Или я должен использовать перевернутые вручную изображения в наборе тренировочных данных?

1 Ответ

1 голос
/ 19 апреля 2020

Я бы случайно повернул изображения с помощью ImageDataGenerator. Просто укажите следующий аргумент:

translation_range: Int. Диапазон градусов для случайного вращения , 0 или 90 градусов.

...