2017-08-31 2 views
0

Ich verwende einen ImageDataGenerator, um meine Bilder zu erweitern. Ich muss die y-Etiketten vom Generator bekommen.Keras Image Data Generator Labels anzeigen

Beispiel: Ich habe 10 Trainingsbilder, 7 sind Etikett 0 und 3 sind Etikett 1. Ich möchte Trainingssatz Größe 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) 

erhöhen Nach meinem Verständnis trainiert dies ein Modell von 100 Trainingsbildern für jede Epoche, wobei jedes Bild auf irgendeine Art und Weise gemäß meinem Datengenerator vergrößert wird und dann auf 50 Bildern validiert wird. Wenn ich train_generator.classes mache, bekomme ich einen Ausgang [0,0,0,0,0,0,0,1,1,1]. Das entspricht meinen 7 Bildern von Label 0 und 3 Bildern von Label 1.

Für diese neuen 100 Bilder, wie bekomme ich die Y-Labels? Bedeutet das, wenn ich dies auf 100 Bilder vergrößere, sind meine neuen train_generator Etiketten die gleiche Sache, aber 10 mal wiederholt? Im Wesentlichen np.append(train_generator.classes) 10 mal?

Ich verfolge dieses Tutorial, wenn das hilft: https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

+0

Theoretisch ja, aber wenn die Vermehrung der Teil des Bildes versteckt, die angeblich dieses Label zu machen, dann habe ich keine Ahnung, wie es weitergehen .... –

+0

Augmentation ist nur Flips und Farbe Umskalierungs. Was meinst du damit, einen Teil des Bildes zu verstecken? Ich möchte die Etiketten für mein Training nach Augmentation bekommen .. Test-Set ist in Ordnung. Wenn ich die Bilddateien speichere, bekomme ich neue Dateinamen, die nichts mit meinen älteren Dateinamen zu tun haben. –

+0

Ein Teil des Bilds würde fehlen, wenn der Generator Drehungen und Größenänderungen ausführt, aber es scheint, dass es nicht funktioniert. –

Antwort

0

Basierend auf, was Sie über den Generator sind zu sagen, ja.

Es wird das gleiche Label für jedes erweiterte Bild repliziert. (Ansonsten würde das Modell nicht richtig trainieren).

Eine einfache Möglichkeit, zu überprüfen, was der Generator ausgibt zu bekommen, was es ergibt:

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

Denken Sie daran, dass dies den Generator in die Lage versetzen wird das zweite Element, nicht das erste mehr zu erhalten. (Dies würde die Fit-Methode vom zweiten Element starten).

0

Die Etiketten generieren als One-Hot-Encoding mit den Bildern. Das hilft!

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