【问题标题】:Transforming images and masks together (Keras example)一起转换图像和蒙版(Keras 示例)
【发布时间】:2020-10-17 10:53:32
【问题描述】:

此代码 sn-p 取自 Keras API 参考/数据预处理。

Section : 将图像和蒙版一起转换的示例。

链接:https://keras.io/api/preprocessing/image/

# we create two instances with the same arguments
data_gen_args = dict(featurewise_center=True,
                     featurewise_std_normalization=True,
                     rotation_range=90,
                     width_shift_range=0.1,
                     height_shift_range=0.1,
                     zoom_range=0.2)
image_datagen = ImageDataGenerator(**data_gen_args)
mask_datagen = ImageDataGenerator(**data_gen_args)
# Provide the same seed and keyword arguments to the fit and flow methods
seed = 1
image_datagen.fit(images, augment=True, seed=seed)
mask_datagen.fit(masks, augment=True, seed=seed)
image_generator = image_datagen.flow_from_directory(
    'data/images',
    class_mode=None,
    seed=seed)
mask_generator = mask_datagen.flow_from_directory(
    'data/masks',
    class_mode=None,
    seed=seed)
# combine generators into one which yields image and masks
train_generator = zip(image_generator, mask_generator)
model.fit_generator(
    train_generator,
    steps_per_epoch=2000,
    epochs=50)

我知道这个 sn-p 正在同时增加蒙版和图像并创建生成器,但我不明白 image_datagen.fit(images, ... ) & mask_datagen.fit(masks, ...) 在做什么?

我认为这里 imagesmasks 是未定义的。请也解释一下。

谢谢。

【问题讨论】:

  • 可以看到fithere的用途。我想imagesmask 被假定为先前已定义的张量,它们分别包含可用图像和掩码的样本(或完整集)。

标签: python tensorflow keras computer-vision semantic-segmentation


【解决方案1】:

让我们看看fit 的文档。

如其中所述: “这会根据一组样本数据计算与数据相关的转换相关的内部数据统计信息。 仅当 featurewise_center 或 featurewise_std_normalization 或 zca_whitening 设置为 True 时才需要。"

  • 他们为什么使用它:因此,只有当我们使用 featurewise_center 或 featurewise_std_normalization 或 zca_whitening 在您的代码中您有 featurewise_center=True 所以这就是他们使用它的原因时,我们才需要使用它。。李>
  • 它的作用是:featurewise_center 和 featurewise_std_normalization 将数据集特征居中,使其均值为 0,标准值为 1。为了做到这一点,我们需要在数据上运行并计算这个均值和标准差,以便在后文中规范化数据。这正是 fit 方法所做的。它会计算这些值,因此当您在数据上运行时,您可以相应地对数据进行规范化。

至于图像和蒙版,它们可能是在这个 sn-p 之前定义的。

【讨论】:

    【解决方案2】:

    image_datagen.fit(images, ... ) & mask_datagen.fit(masks, ...) 在做什么?

    ImageDataGenerator 的第一个示例所示,如果应用 ZCA 白化,您需要拟合数据生成器以计算特征归一化所需的量,例如标准、均值和主成分。 fit 只是表示根据给定的数据计算这些属性并将它们存储在ImageDataGenerator 对象中以供进一步使用。

    这里是sn-p:

    (x_train, y_train), (x_test, y_test) = cifar10.load_data()
    datagen = ImageDataGenerator(
        featurewise_center=True,
        featurewise_std_normalization=True,
        rotation_range=20,
        width_shift_range=0.2,
        height_shift_range=0.2,
        horizontal_flip=True)
    
    # THE IMPORTANT PART! 
    # compute quantities required for featurewise normalization
    # (std, mean, and principal components if ZCA whitening is applied)
    datagen.fit(x_train)
    

    由于您有两个不同的数据集(imagesmasks),您需要为每个单独的生成器执行此操作。


    我认为这里的图像和蒙版是未定义的。请也解释一下。

    你是对的,它们是未定义的。在这种情况下,我们使用 float32 形状张量 (batch_size, image_size[0], image_size[1], num_channels) 处理,从页面上的其他示例中提取),可以从 tf.data.Dataset 获得,直接加载数据并仅获取图像(删除标签) 甚至来自随机数据(使用numpy)。

    使用上述方法,它们允许 3D 和 4D 数字张量(一个或多个图像)。

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2021-10-03
      • 1970-01-01
      • 2011-05-10
      • 2020-03-09
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 2019-04-14
      相关资源
      最近更新 更多