In diesem Tutorial werden wir lernen, wie man ein Bilderkennungsprogramm mit Keras, einer beliebten Deep Learning-Bibliothek, für Anfänger erstellt. Bilderkennung ist eine der wichtigsten Anwendungen von Deep Learning und mit Keras können wir dies auf einfache Weise erreichen. Wir werden ein einfaches Modell erstellen, das in der Lage ist, Hunde von Katzen zu unterscheiden.
Schritt 1: Installation von Keras
Bevor wir beginnen, müssen wir sicherstellen, dass Keras auf unserem System installiert ist. Keras kann über pip installiert werden:
pip install keras
Schritt 2: Ein Datensatz laden
Für unser Bilderkennungsproblem werden wir den bekannten CIFAR-10-Datensatz verwenden, der 60.000 Bilder von 10 verschiedenen Klassen enthält, darunter Hunde und Katzen. Sie können den Datensatz von der offiziellen CIFAR-10-Website herunterladen.
Schritt 3: Daten vorverarbeiten
Bevor wir mit dem Training unseres Modells beginnen, müssen wir die Daten vorverarbeiten. Dies beinhaltet das Laden der Bilder, das Konvertieren in das richtige Format und das Skalieren der Pixelwerte auf einen Wertebereich von 0 bis 1. Dies kann mit Hilfe von Keras und Numpy durchgeführt werden:
from keras.datasets import cifar10
from keras.utils import to_categorical
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)
Schritt 4: Ein simples CNN-Modell erstellen
Jetzt können wir unser einfaches CNN-Modell erstellen. Ein CNN (Convolutional Neural Network) ist eine Art von Deep Learning-Modell, das speziell für die Verarbeitung von Bildern entwickelt wurde. In Keras können wir ein CNN leicht mit dem Sequential-Modell erstellen:
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))
Schritt 5: Das Modell kompilieren und trainieren
Bevor wir das Modell trainieren können, müssen wir es kompilieren. Dies beinhaltet die Auswahl eines Optimierungsalgorithmus, einer Verlustfunktion und einer Metrik zur Bewertung der Leistung des Modells. Wir können das Modell mit dem Adam-Optimierer und der categorical_crossentropy-Verlustfunktion kompilieren:
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10, batch_size=64, validation_data=(x_test, y_test))
Schritt 6: Das Modell evaluieren
Nachdem das Modell trainiert wurde, können wir es evaluieren, um herauszufinden, wie gut es funktioniert. Dies können wir mit der evaluate-Methode in Keras tun:
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
Schritt 7: Vorhersagen machen
Schließlich können wir unser trainiertes Modell verwenden, um Vorhersagen über neue, nicht gesehene Daten zu treffen. Wir können dies mit der predict-Methode in Keras tun:
predictions = model.predict(x_test)
Das war’s! Mit diesen Schritten haben wir erfolgreich ein Bilderkennungsprogramm für die Unterscheidung von Hunden und Katzen erstellt. Sie können diese Schritte anpassen und erweitern, um komplexere Bilderkennungsprobleme zu lösen. Viel Spaß beim Experimentieren mit Keras und Deep Learning!
Hat sich ja vie getan in der letzten Zeit gibt es ein Update speziell für Bilder ?
was wenn ich es mit eigenen Bildern trainieren will? Würde mich gerne mal unterhalten, grüße
Gab es noch ein nächstes mal?
Hallo datasolut. Erstmal möchte ich Dir für das wirklich sehr informative Video danken, da es einen guten Einblick in die Problematiken und Komplexität des Themas Deep Learning gibt. Da ich mit dem Thema noch nicht wirklich viele Erfahrung habe ein paar Fragen, die Du mir eventuell beantworten könnest:
1. Je mehr verschiedene Klassen von Objekten ich habe, desto ungenauer wird ein Modell?
2. Wenn ich statt bunten Bildern Schwarz-Weiß Bilder benutze, steigt die Genauigkeit eines Modells?
3. Für meine Anwendung müsste ich eigene Datensätze einpflegen (Geht um die Fehlererkennung von Geräten und Platinen in der Produktion). Ist dies überhaupt möglich mit den "fertigen" Skripten, bzw muss man dann das Modell selber einlernen.
4. Gibt es standardisierte Datenformate für dieses Einpflegen/Einlernen der Bilder?
Wäre sehr nett, wenn du vielleicht kurz zu einigen Fragen was schreiben könntest, damit ich eine Vorstellung habe, wie mein Ansatz für das Projekt aussehen kann.
Liebe Grüße,
Deniz