gpt4 book ai didi

python - Keras:ImageDataGenerator 性能不佳

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:59 25 4
gpt4 key购买 nike

我尝试使用 Keras ImageDataGenerator 来增强我的图像数据。我的任务是回归任务,其中输入图像生成另一个转换后的图像。到目前为止一切顺利,效果很好。

在这里,我想通过使用 ImageDataGenerator 来应用数据扩充。为了以相同的方式转换两个图像,我使用了 Keras docs 中描述的方法。 ,其中描述了具有相应掩码的图像变换。我的情况有点不同,因为我的图像已经加载并且不需要从目录中获取。此过程已在 another StackOverlow post 中描述.

为了验证我的实现,我首先在没有扩充的情况下使用它,并在没有指定任何参数的情况下使用 ImageDataGenerator。根据 Keras docs 中的类引用,这不应该改变图像。看到这个片段:

img_val = img[0:split_seperator]
img_train = img[split_seperator:]

target_val = target[0:split_seperator]
target_train = target[split_seperator:]

data_gen_args = dict()

# define data preparation
src_datagen = ImageDataGenerator(**data_gen_args)
target_datagen = ImageDataGenerator(**data_gen_args)

# fit parameters from data
seed = 1
src_datagen.fit(img_train, augment=False, seed=seed)
target_datagen.fit(target_train, augment=False, seed=seed)

training_generator = zip(
src_datagen.flow(img_train, batch_size=batch_size_training, seed=seed),
target_datagen.flow(target_train, batch_size=batch_size_training, seed=seed))

_ = model.fit_generator(
generator=training_generator,
steps_per_epoch=image_train.shape[0] // batch_size_training,
epochs=num_epochs, verbose=1,
validation_data=(img_val, target_val), callbacks=callbacks)

不幸的是,我的实现似乎有一些问题。我没有得到预期的表现。验证损失在某种程度上稳定在某个值附近并且仅略有下降(见下图)。在这里,我期望,因为我没有使用任何增强,与非增强基线相同的损失。

Comparisson of validation loss

相比之下,我在没有 ImageDataGenerator 的情况下进行的训练看起来像

_ = model.fit(img, target,
batch_size=batch_size_training,
epochs=num_epochs, verbose=1,
validation_split=0.2, callbacks=cb)

我想我不知何故混淆了 ImageDataGeneratorflowfit 函数的用法。所以我的问题是:

  • 应用函数 fitflow 是多余的并导致此行为吗?
  • 我有实现问题吗?
  • 这种实现总体上有意义吗?
  • 设置验证集修复是否有意义,还是应该对其进行扩充?

更新(2019-01-23 及续):到目前为止我已经尝试过的(对答案的回应):

  • 同时为验证数据创建一个生成器
  • 删除应用的拟合函数
  • 在流函数中设置shuffle=True(数据已经打乱)

这些方法都没有帮助改善结果。

最佳答案

我终于明白您要做什么了,这应该可以完成工作。

aug = ImageDataGenerator(**data_gen_args)

# train the network
H = model.fit_generator(aug.flow(img_train, target_train, batch_size=image_train.shape[0]),
validation_data=(img_val, target_val), steps_per_epoch=image_train.shape[0] // BS,
epochs=EPOCHS)

让我知道这是否有效。

关于python - Keras:ImageDataGenerator 性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54302953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com