Использование нескольких дополненных изображений для каждого обучающего образца в тензорном потоке - PullRequest
0 голосов
/ 22 марта 2020

У меня есть база данных, которая включает 2700 обучающих образцов и 300 тестовых образцов, всего 3000. Я использую ImageDataGenerator для увеличения изображений во время обучения. Я хочу использовать несколько дополненных изображений для каждого входного изображения. Допустим, у меня есть функция preprocess(image), которая берет одно изображение и возвращает список из 10 изображений после нескольких этапов предварительной обработки. Я хочу ввести все эти 10 изображений, чтобы у меня было 27000 обучающих образцов (позже я сделаю это и для тестовых образцов).

Я мог бы заранее использовать эту функцию preprocess для обучения, чтобы увеличить изображения и сохранить они будут записаны на диск для последующего использования, но это будет истощать ресурсы, плюс у моей функции есть некоторая встроенная случайность, и поэтому я ожидаю разные изображения для каждой эпохи обучения. Мне нужен способ добиться этого на лету. Я также хочу видеть точность как обучения, так и проверки при подгонке. Вот как выглядит мой код:

import numpy as np
from keras.models import load_model

BATCH_SIZE = 32
NB_EPOCH = 50

data = np.load('data.npy')
labels = np.load('labels.npy')

X_train = data [:2700]
X_valid = data [2701:]

y_train = labels [:2700]
y_valid = labels [2701:]

def preprocess(image):
    #do some stuff
    return listofimages

model = load_model('savedmodel')

#do nothing on this datagen just use it to pass my array to fit function 
#or we can even use no datagens at all
train_datagen = ImageDataGenerator()

valid_datagen = ImageDataGenerator()

model.fit(train_datagen.flow(X_train,y_train, batch_size=BATCH_SIZE), 
                    steps_per_epoch = np.ceil(len(X_train)/BATCH_SIZE), 
                    validation_data = valid_datagen.flow(
                                      X_valid,y_valid, batch_size= BATCH_SIZE),
                    validation_steps = np.ceil(len(X_valid)/BATCH_SIZE),
                    epochs = NB_EPOCH, verbose=1)








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