如何更改Keras ImageDataGenerator的预处理函数执行顺序?

如何更改Keras ImageDataGenerator的预处理函数执行顺序?,keras,tf.keras,data-augmentation,Keras,Tf.keras,Data Augmentation,我使用Keras的“ImageDataGenerator”类进行数据扩充。由于图像具有相关对象的边界框,因此我希望在增强图像之前将图像裁剪到相关部分。该类的参数中有一个名为“preprocessing_function”的参数,允许我们在扩充和调整大小后实现所需的函数。我要求的是相反的结果。首先,让函数运行,然后进行扩充。我如何将其实现到代码中 tf.keras.preprocessing.image.ImageDataGenerator( featurewise_center=Fals

我使用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,
)
预处理函数:应用于每个输入的函数。该函数将在图像调整大小和增强后运行。该函数应具有一个参数:一个图像(秩为3的Numpy张量),并应输出具有相同形状的Numpy张量


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

转换层的示例用法:


Github问题(已解决):

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

转换层的示例用法:


Github问题(已解决):

我认为Keras目前不允许这样做。ImageDataGenerator假定正在馈送的图像数据集是其最终格式,然后才能将增强应用于数据点。要实现裁剪,您可能需要编写自己的自定义函数,然后将输出提供给ImageDataGenerator。我会鼓励其他人指出更好的方法来解决这个问题。我认为Keras目前不允许这样做。ImageDataGenerator假定正在馈送的图像数据集是其最终格式,然后才能将增强应用于数据点。要实现裁剪,您可能需要编写自己的自定义函数,然后将输出提供给ImageDataGenerator。我鼓励其他人为此提出更好的办法。