Keras将图像从生成器加载到内存中

2024-03-28 10:01:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想利用kerasImageDataGenerator提供的图像增强操作将我的图像加载到内存中。因此,我创建的生成器如下所示:

testgen = ImageDataGenerator(preprocessing_function=keras.applications.mobilenet.preprocess_input)

test_generator = testgen.flow_from_dataframe(dataframe=df_test, 
                                             classes=class_labels, 
                                             directory=data_dir,
                                             x_col=training_on, 
                                             y_col=target, 
                                             has_ext=True, 
                                             class_mode="categorical", 
                                             target_size=(224,224), 
                                             batch_size=batch_size,
                                             seed = 1,
                                             shuffle=False)

现在我可以使用以下方法获得单个批次:

x,y = next(test_generator)

但是,我想将整个数据集(可能是扩充的)存储到xy。我怎样才能做到这一点?你知道吗


Tags: 内存test图像利用targetdataframesizebatch
1条回答
网友
1楼 · 发布于 2024-03-28 10:01:40
xTrain = list()
yTrain = list()
for i in range(len(test_generator)):
    x,y = test_generator[i] 
    xTrain.append(x)
    yTrain.append(y)

xTrain = np.array(xTrain)
yTrain = np.array(yTrain)

备选方案:

xTrain = list()
yTrain = list()
for i in range(number_of_batches):
    x,y = next(test_generator)
    xTrain.append(x)
    yTrain.append(y)

xTrain = np.array(xTrain)
yTrain = np.array(yTrain)

请注意,这不会导致显著的增强。您将得到与原始数据相同数量的样本。你知道吗

为了使增强真正起作用,你需要用这个生成器反复训练,这样它就可以产生相同图像的许多不同的随机版本。你知道吗

相关问题 更多 >