如何使用Keras预处理层创建其他训练图像?

问题描述

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

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

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

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

但是,如上所述,我想我们要做的是创建其他图片,即为现有的训练图片创建更多的新图片。但是模型中的这样一组预处理层将如何创建其他图像?在进入模型之前,他们不是简单地(随机地)扩充了现有的训练图像,而没有创建新的附加图像吗?

解决方法

它正在创建其他图像,但这并不一定意味着它将创建新的jpg文件。

如果这是您要执行的操作,则ImageDataGenerator可以使用save_to_dir参数来做到这一点。

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

是的,它将创建新图像。但是它不会在您的计算机上创建新文件。您可以使用:

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