Ich trainiere ein konvolutionelles neuronales Netzwerk, um ein Bild in eine von fünf Klassen einzuteilen (Klasse 1 - Klasse 5).Konvolutionelles neuronales Netzwerk, das schiefe Vorhersagen macht
Ich habe sehr wenige Trainingsbilder für Klasse 1 und so führte ich einige Datenerhöhung durch zufällige Schnitte und Spiegeln der Bilder um mehr Daten zu erstellen. Ich habe mindestens 3000 Trainingsbilder für Klasse 2 - 5. Jetzt besteht mein Trainingssatz aus 3000 Bildern für jede Klasse und ich trainiere es mit stochastischem Gradientenabfall.
Mein Test-Set besteht aus:
Class 1 - 8 images
Class 2 - 83 images
Class 3 - 227 images
Class 4 - 401 images
Class 5 - 123 images
Mein Netzwerk korrekt vorhersagt:
Class 1 - 0 images
Class 2 - 0 images
Class 3 - 0 images
Class 4 - 399 images
Class 5 - 0 images
Ich erwarte nicht, ein sehr genaues Netzwerk die Grenzen meines Trainingssatzes gegeben und 15000 Bilder sind wahrscheinlich nicht genug - aber ich hätte nicht erwartet, dass es so verzerrt wäre, wenn man bedenkt, dass die Klassen 2 - 5 die gleiche Anzahl an unterschiedlichen Trainingsbildern hatten. Wenn ich mein Netzwerk auf einen viel größeren Anteil von Bildern der Klasse 4 trainiert hätte, würde mich das nicht überraschen. Ich hätte erwartet, dass das Netzwerk mindestens einige der anderen Klassen korrekt vorhersagen würde.
Irgendwelche Gedanken?
EDIT:
Bildtypen: Gebäude
Netzwerkarchitektur:
Input image - 256 x 256 x 3
Convolutional layer - 15 x 15 filters, 16 filters
Max 2x2 pooling layer
Convolutional layer - 11 x 11 filters, 32 filters
Max 2x2 pooling layer
Convolutional layer - 7 x 7 filters, 64 filters
Max 2x2 pooling layer
Fully connected layer - 1024 outputs
Softmax classifier layer - 5 outputs
Kostenfunktion: Kreuz-Entropie
Es gibt einen bestimmten Data Science Stapelaustausch - vielleicht Ihre Frage dort besser wäre? – user3791372
Sie sollten die Architektur Ihres Convnets sowie die Objekte, die Sie klassifizieren, beschreiben. –
@ user3791372 Danke, dass du mich in diese Richtung gelenkt hast! – jlhw