具有固定种子的多个ImageDataGenerator无法正确生成数据

问题描述

我想一起变换图像和遮罩。我在tensorflow教程ImageDataGenerator中使用了相同的示例。

这是我的代码:

from tensorflow.python.keras.preprocessing.image import ImageDataGenerator
import tensorflow as tf

def trainGenerator(images_dir,heatmap_dir,image_aug_dict,heatmap_aug_dict,batch_size,image_size=(480,640),heatmap_size=(60,80),random_seed=None):
    """
    Generate image and heatmap at the same time.
    Use the same seed for image_datagen and heatmap_datagen to ensure the transformation for image and
    heatmap is the same.
    :param image_X:
    :param heatmap_Y:
    :param aug_dict:
    :param image_color_mode:
    :param target_size:
    :param random_seed:
    :return:
    """
    image_datagen = ImageDataGenerator(**image_aug_dict)
    heatmap_datagen = ImageDataGenerator(**heatmap_aug_dict)

    image_generator = image_datagen.flow_from_directory(directory=images_dir,class_mode=None,batch_size=batch_size,target_size=image_size,save_to_dir='./augmentations/images',save_prefix='aug',seed=random_seed)
    heatmap_generator = heatmap_datagen.flow_from_directory(directory=heatmap_dir,save_to_dir='./augmentations/masks',target_size=heatmap_size,color_mode='rgb',seed=random_seed)
    train_generator = zip(image_generator,heatmap_generator)
    return train_generator

img_imgs_dict = dict(rescale=1 / 255.,rotation_range=90,brightness_range=[0.2,0.8],fill_mode='constant',)
img_mask_dict = dict(rescale=1 / 255.,fill_mode='constant')

train_gen = trainGenerator(images_dir='images',heatmap_dir='masks',image_aug_dict=img_imgs_dict,heatmap_aug_dict=img_mask_dict,batch_size=3,heatmap_size=(480,random_seed=10)

for x,y in train_gen:
    print(x.shape,y.shape)

我说这会生成正确的图像和蒙版。但是,旋转根本不一样!! 我试图修复seed=integer valuetf.random.set_seed(int),但都给出了相同的错误结果。 有人遇到过这个问题吗?

我通过将这3张图像复制到图像和masks文件夹中来使用它们:

enter image description here

enter image description here

enter image description here

结果:

image

mask

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)