Увеличение изображения в 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.
Надеюсь это поможет