首页 > 解决方案 > 如何使用 ImageDataGenerator 进行语义分割标签?

问题描述

我正在执行语义分割,我想使用 ImageDataGenerator 类来扩充我的数据。在 keras 文档中,我读到了有关使用生成器生成图像和遮罩的信息,但是,我想知道这将如何工作?我的标签是整数值,.fit 会抛出一个错误,因为它期望排名为 4,而我的形状是 (1605, 96, 160),所以我将标签转换为一个热编码以给出 (1605, 96) 的形状, 160, 4)。

这是我的增强代码:

from keras.preprocessing.image import ImageDataGenerator
data_gen_args = dict(featurewise_center=True,
                     featurewise_std_normalization=True,
                     rotation_range=5,
                     width_shift_range=0.1,
                     height_shift_range=0.1,
                     zoom_range=0.2,
                     brightness_range=[0.5,1.5],
                     horizontal_flip=True)
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
image_datagen.fit(X_org, augment=True, seed=seed)
mask_datagen.fit(Y_org, augment=True, seed=seed)

image_generator = image_datagen.flow(
    X_train,
    seed=seed,
    batch_size=32)

mask_generator = mask_datagen.flow(
    Y_train,
    seed=seed,
    batch_size=32)

train_generator = zip(image_generator, mask_generator)

由于在图像和标签上调用了相同的函数,我想知道诸如增亮和 featurewise_center 之类的增强会如何影响标签。它会在类标签上应用标准化并改变类值吗?我必须为标签调用 .fit 和 .flow 方法吗?

标签: pythonmachine-learningimage-processingkerassemantic-segmentation

解决方案


推荐阅读