Keras图像数据生成器显示标签

时间:2017-08-31 20:50:07

标签: image deep-learning keras data-generation

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

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

total_training_images = 100 total_val_images = 50

var OrientDB = require('orientjs');
var db = OrientDB({
host: 'localhost',
port: 2424,
});
var db = db.use({
name: '<db name>',
username: '<username>',
password: '<pwd>'
});
db.query('select address, name, out("postedby").imagename as imagename, out("postedby").date as date from User where name = "<insert a name>" unwind imagename,date')
.then(function (response) {
console.log(response);
});
db.close();

根据我的理解,这为每个时期的100个训练图像训练模型,每个图像根据我的数据生成器以某种方式或另一个增强,然后在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) ,我得到一个输出[0,0,0,0,0,0,0,1,1,1]。这对应于标签0的7张图像和标签1的3张图像。

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

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

2 个答案:

答案 0 :(得分:4)

标签与图像生成一个热编码。希望这有帮助!

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()

答案 1 :(得分:1)

基于你对发电机的看法,是的。

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

检查生成器输出内容的一种简单方法是获得它产生的结果:

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

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