Keras Image увеличение данных - PullRequest
0 голосов
/ 29 января 2019

Мне трудно понять, как работает flow_from_directory из ImageDataGenerator , я использую следующий код для дополнения данных изображения для моей модели CNN, поскольку нет доступных обучающих изображенийочень меньше.

batch_size = 16
from keras.preprocessing.image import ImageDataGenerator
train_transformed = 'dataset/train_transformed'
train_datagen = ImageDataGenerator(
    rescale=1./255,
    horizontal_flip=True,
    fill_mode='nearest')

train_generator = train_datagen.flow_from_directory(
    'dataset/train',
    target_size=(150, 150),
    batch_size=batch_size,
    class_mode='binary',
    save_to_dir=train_transformed,
    save_prefix='train_aug',
    save_format='png')

Это проблема двоичной классификации, имеющая 20 положительных и 20 отрицательных изображений.Итак, у меня есть папка dataset / train с 2 подпапками по 20 изображений в каждой.Когда я тренирую модель с помощью вышеуказанного генератора изображений, я вижу 4160 изображений, сохраняемых в папке dataset / train_transformed и предполагающих 4160 изображений, используемых для обучения модели.

model.fit_generator(
    train_generator,
    steps_per_epoch=1000 // batch_size,
    epochs=5,
    validation_data=validation_generator,
    validation_steps=100 // batch_size)

Согласно моему пониманию, количество выборок в каждой эпохе = batch_size X steps_per_epoch
Поскольку мои steps_per_epoch = 1000/16 = 62,
# выборки в каждой эпохе должны быть 62 x 16 = 992
Число эпох не установлено равным 5, поэтому общее количество сгенерированных изображений должно составлять 992 x 5 = 4960 .
И ни одно из сгенерированных изображений не является случайным с такими же гиперпараметрами.
Просто нужно пояснение для вышеуказанной конфигурации.

1 Ответ

0 голосов
/ 29 января 2019

Ваши расчеты кажутся правильными.Также помните, что flow_from_directory имеет аргумент shuffle (по умолчанию true).Это означает, что генератор будет выдавать 992 изображения в течение каждой эпохи (batch_size раз steps_per_epoch), но порядок, в котором они появляются, будет отличаться для каждой эпохи.

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