【问题标题】:How can I normalize an image with the Keras ImageDataGenerator class?如何使用 Keras ImageDataGenerator 类标准化图像?
【发布时间】:2021-07-03 15:22:25
【问题描述】:

我正在从一篇论文中训练一个网络,该论文的内容如下:

“我们将所有图像的大小调整为 (256, 256) 并通过 RGB 通道的均值和标准差 0.5 对它们进行归一化,然后再将它们传递给各自的网络。”

我使用 ImageDataGenerator 类,然后使用 flow_from_directory() 从训练集图像目录中获取我的图像。

我不知道我需要使用哪种参数组合才能使每个图像最终在每个 RGB 通道中的像素上具有 0.5 的平均值和 0.5 的标准偏差。

我目前的实现如下:

datagen = ImageDataGenerator(rescale=1.0/255.0, samplewise_center=True, samplewise_std_normalization=True,validation_split=0.99)
train_gen = datagen.flow_from_directory(dir_name, classes=['image_train'], batch_size=BATCH_SIZE,
                                       class_mode=None, subset="training")

它似乎正在生成平均值为 0 且像素范围为 -1.7 到 2.3 的图像。

是否可以在不实现我自己的预处理代码的情况下,使用 ImageDataGenerator 类在 RGB 通道上实现均值和标准偏差为 0.5 的输入图像,并严格限制在 0 到 1 的范围内?

【问题讨论】:

    标签: tensorflow keras normalization image-preprocessing


    【解决方案1】:

    如果您真的想要避免将其放入预处理(在我看来这是最简单的方法 - 将 preprocessing_function 添加到 ImageDataGenerator),您可以使用 Multiply 和添加层,缩放(0.5,因为您的 Std 现在是 1)和移动(0.5,因为您的平均值现在是 0) - 请注意,乘法和添加层都要求参数是相同的张量大小,请参阅doc 如何创建任意张量。

    【讨论】:

      猜你喜欢
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      相关资源
      最近更新 更多