【问题标题】:Keras Image Data Generator show labelsKeras 图像数据生成器显示标签
【发布时间】:2018-02-09 21:46:31
【问题描述】:

我正在使用 ImageDataGenerator 来增强我的图像。我需要从生成器中获取 y 标签。

示例:我有 10 个训练图像,7 个是标签 0,3 个是标签 1。我想将训练集大小增加到 100。

total_training_images = 100 total_val_images = 50

model.fit_generator(
    train_generator,
    steps_per_epoch= total_training_images // batch_size,
    epochs=epochs,
    validation_data=validation_generator,
    validation_steps= total_val_images // batch_size)

据我了解,这会在每个 epoch 的 100 个训练图像上训练一个模型,每个图像都会根据我的数据生成器以某种方式进行增强,然后在 50 个图像上进行验证。

如果我执行train_generator.classes,我会得到一个输出 [0,0,0,0,0,0,0,1,1,1]。这对应于我的标签 0 的 7 张图片和标签 1 的 3 张图片。

对于这 100 张新图像,我如何获得 y 标签? 这是否意味着当我将其增加到 100 张图像时,我的新 train_generator 标签是相同的,但重复了 10 次?基本上np.append(train_generator.classes) 10 次?

如果有帮助,我正在关注本教程: https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

【问题讨论】:

  • 理论上是的,但是如果增强隐藏了应该呈现该标签的图像部分,那么我不知道如何继续......
  • 增强只是翻转和颜色调整。隐藏部分图像是什么意思?我想在增强后为我的训练集获取标签。测试集很好。如果我保存图像文件,我会得到与旧文件名无关的新文件名。
  • 如果生成器进行旋转和调整大小,部分图像会丢失,但似乎没有。

标签: image deep-learning keras data-generation


【解决方案1】:

标签与图像一起生成为 one-hot-encoding。希望这会有所帮助!

training_set.class_indices

from keras.preprocessing import image
import matplotlib.pyplot as plt

x,y = train_generator.next()
for i in range(0,3):
    image = x[i]
    label = y[i]
    print (label)
    plt.imshow(image)
    plt.show()

【讨论】:

    【解决方案2】:

    根据你所说的生成器,是的。

    它将为每个增强图像复制相同的标签。 (否则模型将无法正确训练)。

    检查生成器输出内容的一种简单方法是获取生成的内容:

    X,Y = train_generator.next() #or next(train_generator)
    

    请记住,这会将生成器置于产生第二个元素的位置,而不是第一个元素。 (这将使 fit 方法从第二个元素开始)。

    【讨论】:

      猜你喜欢
      • 2017-06-01
      • 2020-01-08
      • 2019-10-21
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      • 2019-01-12
      相关资源
      最近更新 更多