【问题标题】:ImageDataGenerator keras - save_to_dirImageDataGenerator keras - save_to_dir
【发布时间】:2020-09-06 22:11:47
【问题描述】:

保存到目录后,我找不到如何识别类。它使用随机数保存图像名称。

例如。 "_1_1234.png"

ImageDataGenerator.flow(
    x,
    y,
    batch_size=32,
    shuffle=True,
    sample_weight=None,
    seed=None,
    save_to_dir= "path_to_dir",
    save_prefix="",
    save_format="png",
    subset=None,
)

【问题讨论】:

  • 感谢您的提问,但提供的信息不足以帮助您解决问题。请添加有助于我们解决此问题的其他详细信息。
  • 图片名称中第一个下划线后的数字对应图片的索引。例如,如果文件名是"_123_4568.png",那么它对应的标签就是y[123]

标签: python tensorflow keras data-processing


【解决方案1】:

经过一番试验后,您可以做到这一点。下面的代码将提供原始文件名和相关标签。标签是对应于类的整数类索引。即 filenames[0] 具有标签 labels[0] 等。 class_indices 属性是一个字典,其中包含从类名到类索引的映射。例如,如果您有 2 个类别的猫和狗,则字典将为 {'cats': 0, 'dogs': 1}。现在事实证明,如果您使用 shuffle=False 运行 image_data_generator,生成器会使用随机文件名保存增强文件,但是第二个下划线之前的第一个数字似乎是处理文件的顺序。所以 _0_random number 是第一个处理的文件。所以它在下面代码中的关联标签将是标签[0]等。因此您可以确定保存的图像属于哪个类。现在您可能想要使用 shuffle=True 进行训练。现在生成器将图像打乱,但是第二个下划线之前的数字仍然代表原始图像顺序。因此,如果它被标记为 _10_random 数字,则此图像标签为 label[10]。

data_gen=ImageDataGenerator.flow(
    x,
    y,
    batch_size=32,
    shuffle=True,
    sample_weight=None,
    seed=None,
    save_to_dir= "path_to_dir",
    save_prefix="",
    save_format="png",
    subset=None,
file_names= data_gen.filenames
labels= data_gen.labels
label_dict=data_gen.class_indices

【讨论】:

    【解决方案2】:

    您可以尝试在 save_prefix 中添加一些键。然后它会用它来获取图像名称。

    【讨论】:

      猜你喜欢
      • 2017-04-25
      • 1970-01-01
      • 2018-08-07
      • 2020-10-21
      • 2019-08-04
      • 2017-09-05
      • 2019-02-08
      • 2017-04-05
      • 2021-08-04
      相关资源
      最近更新 更多