【发布时间】:2019-12-07 11:30:58
【问题描述】:
我正在为图像分割编写一个网络。我有我的 ImageDataGenerator 用于我的面具(这是只有 0 和 255 作为值的 RGB 图像,黑色和白色),即:
train_mask_data_gen = ImageDataGenerator(rotation_range=10,
width_shift_range=10,
height_shift_range=10,
zoom_range=0.3,
horizontal_flip=True,
vertical_flip=True,
fill_mode='nearest',#interpolation used for augmenting the image
cval=0,
rescale=1./255)
和flow_from_directory:
train_mask_gen = train_mask_data_gen.flow_from_directory(os.path.join(training_dir, 'masks'),
target_size=(img_h, img_w),
batch_size=bs,
class_mode=None, # Because we have no class subfolders in this case
shuffle=True,
interpolation='nearest',#interpolation used for resizing
#color_mode='grayscale',
seed=SEED)
代码运行良好,唯一的问题是,当我对掩码应用数据增强时,我将不再有二进制图像,但我得到了一些介于 0 和 1 之间的值(标准化)。例如,如果我打印我的输出矩阵(图像),我会得到这样的结果:
[[0. 0. 0. ]
[0. 0. 0. ]
[0. 0. 0. ]
...
[1. 1. 1. ]
[1. 1. 1. ]
[1. 1. 1. ]]
...
[[0. 0. 0. ]
[0.3457849 0.3457849 0.3457849 ]
[1. 1. 1. ]
...
[0. 0. 0. ]
[0. 0. 0. ]
[0. 0. 0. ]]
其中还包含由于增强而产生的“额外”值。如果我不应用任何增强,我会得到我想要的二进制图像。
如何将转换嵌入整数? (为了得到只有 0 或 1 的值)
我尝试在ImageDataGenerator 中使用字段dtype=int,但它没有做任何事情,我一直得到相同的结果。
【问题讨论】:
标签: python keras casting image-segmentation data-augmentation