【发布时间】:2018-06-03 16:53:46
【问题描述】:
导入数据集的问题快把我逼疯了。
这是我的 segnet 代码的一部分。
我将重点介绍有关图像和蒙版数据导入的问题。
print("CNN Model created.")
###training data
data_gen_args = dict()
image_datagen = ImageDataGenerator(**data_gen_args)
mask_datagen = ImageDataGenerator(**data_gen_args)
seed1 = 1
image_datagen.fit(images, augment=True, seed=seed1)
mask_datagen.fit(masks, augment=True, seed=seed1)
train_image_generator = image_datagen.flow_from_directory(TRAIN_im,target_size=(500, 500),batch_size=BATCH_SIZE, class_mode = None)
train_mask_generator = mask_datagen.flow_from_directory(TRAIN_mask,target_size=(500, 500),batch_size=BATCH_SIZE, class_mode = None)
train_generator = zip(train_image_generator,train_mask_generator)
###validation data
valid_gen_args = dict()
val_image_datagen = ImageDataGenerator(**valid_gen_args)
val_mask_datagen = ImageDataGenerator(**valid_gen_args)
seed2 = 5
val_image_datagen.fit(val_images, augment=True, seed=seed2)
val_mask_datagen.fit(val_masks, augment=True, seed=seed2)
val_image_generator = val_image_datagen.flow_from_directory(VAL_im,target_size=(500, 500),batch_size=BATCH_SIZE, class_mode = None)
val_mask_generator = val_mask_datagen.flow_from_directory(VAL_mask,target_size=(500, 500),batch_size=BATCH_SIZE, class_mode = None)
val_generator = zip(val_image_generator,val_mask_generator)
###
model.fit_generator(
train_generator,steps_per_epoch=nb_train_samples//BATCH_SIZE,epochs=EPOCHS,validation_data=val_generator,validation_steps=nb_validation_samples//BATCH_SIZE)
我的问题是:
我将输入大小更改为 500*500,因此我调整了池化和上采样层大小。这是可以实现的吗? 此外,我可以通过调整它们的池化和上采样层大小和过滤器数量来使经典网络(如 AlexNet、VGG、Segnet...)接受任意输入图像大小吗?
-
我想知道变量“images”和“masks”的数据类型是什么:
image_datagen.fit(images, augment=True, seed=seed1) mask_datagen.fit(masks, augment=True, seed=seed1)这部分来自Keras官方教程。(Ans:现在我知道它们都是numpy数组。)
-
根据上面的问题。我怎样才能得到它们?
我应该在下面写一个类似mnist.load_data()的函数吗?
我需要一些例子。
(x_train_image, y_train_label), (x_test_image, y_test_label) = mnist.load_data() -
我使用函数
flow_from_directory这是否意味着不需要定义类似的函数 “mnist.load_data()”,我可以用它直接从我的目录结构中获取(batch,shuffle)数据吗?
这是我的目录结构:
Dataset -training----------images----"many images"
| |
| |-----mask-----"ground truth images(mask)"
|
|
validation----------val_images----"many images"
| |
| |------val_mask------"ground truth images(mask)"
|
|
testing---------------test images (no ground truth)
非常感谢!
【问题讨论】:
-
您确定 ImageDataGenerator 实际上可以用于处理分割问题吗?据我所知,它会从目录中随机读取图像,但当然您需要图像和蒙版之间的匹配对。
-
@pietz 我读了 Keras 官方教程:keras.io/preprocessing/image 您可以搜索关键字“将图像和蒙版一起转换的示例”。在页面中。我想它可以。我在github上看到了一些keras segnet的例子。
-
对 ImageDataGenerator 没有太多经验,但查看文档时,
fit方法只需要计算图像标准化的样本统计信息。仅当您使用featurewise_center、featurewise_std_normalization或zca_whitening时才需要。你是?在这种情况下,图像和蒙版是用于计算统计数据的样本数据。 -
是的,对于这 3 个选项,您的训练数据必须事先进行分析。它与模型的实际训练/拟合无关。
-
@filippo 我先对图像进行了预处理,所以我猜我不需要它们。我只想要它提供的“生成器”功能。由于github中的keras示例通常是自己定义生成器。我不太明白ImageDataGenerator能做什么......
标签: tensorflow deep-learning keras image-segmentation keras-layer