2017-08-31 16 views
0

ImageDataGeneratorを使用して画像を拡大しています。ジェネレータからyラベルを取得する必要があります。Keras Image Data Generator表示ラベル

例:私は10枚のトレーニング画像があり、7はラベル0と3です私は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) 

にトレーニングセットのサイズを大きくしたいラベル1です。私の理解では、これは、各エポックの100のトレーニング画像上のモデルを訓練し、各画像は何らかの方法で、または他のものが自分のデータジェネレータに従って増強され、50画像で検証されます。

私がtrain_generator.classesを行うと、出力[0,0,0,0,0,0,0,1,1,1]が得られます。これは、ラベル1のラベル0とイメージ3の私の7つのイメージに対応します。

これらの新しい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

+0

理論的には、はい、しかし、その後私は –

+0

増強はただで反転し、カラー再スケーリング....どのように進めるには考えています。画像の一部を隠すことはどういう意味ですか? 私は訓練のためのラベルを増補後にセットしたいと思っています。テストセットは大丈夫です。画像ファイルを保存すると、古いファイル名とは関係のない新しいファイル名が取得されます。 –

+0

ジェネレータが回転とサイズ変更を行った場合、画像の一部が欠落することがありますが、そうではないようです。 –

答えて

0

を。

拡張された画像ごとに同じラベルを複製します。 (そうでなければ、モデルは適切に訓練されません)。発電機が出力しているかどうか確認するために

1つの簡単な方法は、それが生み出すものを得ることです:

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

ただ、これはもう第二の要素ではなく、最初に生成する位置に発電機を配置することを覚えておいてください。 (これはfitメソッドが2番目の要素から始まるようにする)。

0

ラベルは画像でワンホットエンコーディングとして生成されます。これが役立ちますように!増強は、そのラベルをレンダリングすることになっていた画像の一部を隠している場合

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