Увеличение изображения в Keras: Как выбрать параметр "количество шагов на эпоху" и включить определенные дополнения во время тренировки?

Я тренирую классификацию изображений CNN с использованием Keras. С использованием ImageDataGenerator Функция, я применяю некоторые случайные преобразования к тренировочным изображениям (например, вращение, сдвиг, увеличение). Насколько я понимаю, эти преобразования применяются случайным образом к каждому изображению перед передачей модели.

Но некоторые вещи мне не понятны

1) Как я могу убедиться, что определенные повороты изображения (например, 90°, 180°, 270°) ВСЕ включены во время тренировки.

2) steps_per_epoch параметр model.fit_generator должно быть установлено на число уникальных выборок набора данных, деленное на размер партии, определенный в flow_from_directory метод. Применимо ли это при использовании вышеупомянутых методов увеличения изображений, так как они увеличивают количество тренировочных образов?

Спасибо Марио

1 ответ

Некоторое время назад я задавал себе те же вопросы, и я думаю, что возможное объяснение здесь:

Рассмотрим этот пример:

    aug = ImageDataGenerator(rotation_range=90, width_shift_range=0.1, 
                             height_shift_range=0.1, shear_range=0.2, 
                             zoom_range=0.2, horizontal_flip=True, 
                             fill_mode="nearest")

Для вопроса 1): я указываю вращение_диапазона =90, что означает, что пока вы передаете (извлекаете) данные, генератор случайным образом поворачивает изображение на угол от 0 до 90 градусов. Вы не можете указать точный угол, потому что это то, что делает ImageDataGenerator: генерировать случайное вращение. Это также очень важно в отношении вашего второго вопроса.

На вопрос 2): Да, это все еще относится к методу дополнения данных. Я был также смущен в начале. Причина в том, что, поскольку изображение генерируется случайным образом, для каждой эпохи сеть видит все изображения, отличные от изображений в предыдущей эпохе. Вот почему данные "дополняются" - приумножение производится не в эпоху, а на протяжении всего процесса обучения. Тем не менее, я видел, как другие люди указывали в 2 раза значение первоначального steps_per_epoch.

Надеюсь это поможет

Другие вопросы по тегам