【问题标题】:How to create additional training images with Keras preprocessing layers?如何使用 Keras 预处理层创建额外的训练图像?
【发布时间】:2021-01-30 22:09:24
【问题描述】:

我正在关注有关图像分类的官方 Tensorflow/Keras 文档,尤其是 the section on image augmentation。上面写着:

数据增强采用的方法是从现有示例中生成额外的训练数据,方法是先增强然后使用随机变换来生成看起来可信的图像。这有助于将模型暴露于数据的更多方面并更好地概括。

所以我对此的理解是——例如,如果我没有很多训练图像——我想通过在现有训练图像之外创建新的增强图像来生成额外的训练数据。

然后在上面链接的 Keras 文档中显示了如何将来自 layers.experimental.preprocessing 模块的一些预处理层作为第一层添加到示例的 Sequential 模型中。所以从理论上讲,这些新的预处理层在“进入”真实的 TF 模型之前会增加输入数据(=图像)。

但是,如上所述,我认为我们想要做的是创建附加图像,即为现有的训练图像创建新的、更多的图像。但是模型中的这样一组预处理层如何创建额外的图像呢?他们不会在进入模型之前简单(随机)增加现有的训练图像,而不是创建新的附加图像吗?

【问题讨论】:

    标签: python tensorflow keras conv-neural-network image-preprocessing


    【解决方案1】:

    它正在创建额外的图像,但这并不一定意味着它会创建新的jpg 文件。

    如果这是您想要执行的操作,ImageDataGenerator 可以使用 save_to_dir 参数来执行此操作。

    他们不会在进入模型之前简单(随机)扩充现有的训练图像,而不是创建新的附加图像吗?

    是的,它会创建新图像。但它不会在您的机器上创建新文件。你可以使用这个:

    ImageDataGenerator.flow_from_directory(目录, target_size=(256, 256), save_to_dir=None, save_prefix='', save_format='png' )

    【讨论】:

    • 我不需要将新增强的图像保存到磁盘,但我确实想告诉系统在训练模型之前/期间要创建多少额外的训练图像。假设我有两个图像类,一个有 400 个图像,另一个有 650 个图像。现在我想用每类 1000 张图像来训练模型。在这两种情况下(使用预处理层或使用ImageDataGenerator),我如何设置应该创建多少个附加图像?
    • 这并不是您在帖子中真正提出的问题,但为此您可以迭代 ImageDataGenerator 并保存所需数量的图像。然后,您可以完全控制应该使用多少。或者使用自定义的tf.data.Datasettransformations
    • 好吧,我想我已经问过了,因为我写道“我想通过创建新的增强图像另外生成附加训练数据 b> 到现有的训练图像。”无论如何,感谢您的回答,我将查看您上次评论中描述的方法。
    猜你喜欢
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 2018-12-15
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    相关资源
    最近更新 更多