Katzenrassenerkennung mit einem Convolutional Neural Network (CNN) und Transfer Learning durch das InceptionV3-Modell

Datensatz:

Der Datensatz enthält insgesamt 29 verschiedene Katzenrassen. Ich habe mich auf diese 29 Rassen beschränkt, um die Genauigkeit des Modells zu erhöhen und Overfitting zu vermeiden. Der Datensatz enthält rund 6000 Bilder und die Bilder haben eine Auflösung von 256x256 Pixel.

CNN-Architektur:

Für mein CNN habe ich mich für eine klassische Architektur entschieden, die aus mehreren Convolutional-Layern, Pooling-Layern und Fully-Connected-Layern besteht. Ich habe mich für eine Architektur mit vier Convolutional-Layern entschieden, gefolgt von zwei Pooling-Layern und drei Fully-Connected-Layern. Die Architektur wurde durch Versuche optimiert und ich habe mich für eine ReLU-Aktivierungsfunktion entschieden.

Transfer Learning durch InceptionV3:

Um die Genauigkeit meines Modells zu verbessern, habe ich Transfer Learning durch das InceptionV3-Modell von Google vorgenommen. InceptionV3 ist ein tiefes CNN, das auf der Imagenet-Datenbank trainiert wurde und exzellente Ergebnisse bei der Bildklassifizierung liefert. Ich habe die vortrainierten Gewichte von InceptionV3 als Ausgangspunkt genommen und das Modell auf meine spezifischen Katzenrassen umtrainiert.

Training und Evaluierung:

Ich habe meinen Datensatz in einen Trainings- und Testdatensatz aufgeteilt, wobei der Trainingsdatensatz 80% der Bilder enthält und der Testdatensatz 20%. Ich habe das Modell mit dem Trainingsdatensatz trainiert und auf dem Testdatensatz evaluiert. Zur Optimierung der Hyperparameter habe ich ein Grid Search durchgeführt und die besten Parameter ausgewählt. Die Metrik, die ich zur Bewertung meines Modells verwendet habe, war die Accuracy, also die Genauigkeit.

Ergebnisse:

Mein Modell hat auf dem Testdatensatz eine Genauigkeit von 47% erreicht. Das bedeutet, dass es in 47% der Fälle die richtige Katzenrasse aus den 29 vorgegebenen Rassen erkannt hat. Diese Ergebnisse sind sehr eher semit optimal, aber es wäre durchaus möglich gewesen die Genauigkeit um ein vielfaches zu erhöhen, indem man einen größeren Datensatz verwendet hätte.

Ergänzung:

Ich habe das Modell in ein Tensorflow Lite Modell umgewandelt und eine Android-App in Android Studio entwickelt, die es Benutzern ermöglicht, ein neues Bild auszuwählen und schnell zu überprüfen, zu welcher Katzenrasse das Bild gehört.

Cat breed