在张量流上为每个训练样本使用多个增强图像

时间:2020-03-22 13:30:12

标签: python tensorflow keras

我有一个包含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)








0 个答案:

没有答案