如何在Keras更改ImageDataGenerator的预处理功能执行顺序?

问题描述

我正在使用Keras的“ ImageDataGenerator”类进行数据增强。由于图像具有相关对象的边界框,因此我想在增强图像之前将图像裁剪到相关部分。该类的参数中有一个名为“ preprocessing_function”的参数,并允许我们在扩展和调整大小后实现所需的功能。我要求这相反。首先,让函数运行,然后进行扩充。如何将其实现为代码

tf.keras.preprocessing.image.ImageDataGenerator(
    featurewise_center=False,samplewise_center=False,featurewise_std_normalization=False,samplewise_std_normalization=False,zca_whitening=False,zca_epsilon=1e-06,rotation_range=0,width_shift_range=0.0,height_shift_range=0.0,brightness_range=None,shear_range=0.0,zoom_range=0.0,channel_shift_range=0.0,fill_mode="nearest",cval=0.0,horizontal_flip=False,vertical_flip=False,rescale=None,preprocessing_function=None,data_format=None,validation_split=0.0,dtype=None,)

preprocessing_function:将应用于每个输入的函数。该功能将在调整图像大小和扩大后运行。该函数应采用一个参数:一张图像(秩为3的Numpy张量),并输出具有相同形状的Numpy张量。

解决方法

Keras团队成员说ImageDataGenerator类是旧的。他们建议我使用转换层。培训期间可以随时使用它们。

转换层用法示例:Keras Transformation layers example page

Github问题(已关闭):GitHub Issues

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...