Mit maschinellem Lernen kannst Du ein Modell anlernen und Bilder klassifizieren.
Lies weiter und ich zeige Dir, wie einfach und schnell sich das mit TensorFlow umsetzen lässt.
Was ist Machine Learning?
Maschinelles Lernen (Machine Learning oder ML) ist in der ISO/IEC TR 29119- 11 definiert als der Prozess, bei dem computergestützte Techniken eingesetzt werden, um Systeme in die Lage zu versetzen, aus Daten oder Erfahrungen zu lernen.
Aus Trainingsdaten wird ein statistisches Modell erstellt, bei dem Muster und Gesetzmäßigkeiten einfließen. Dieses Modell wird dann an Testdaten erprobt und erreicht im günstigsten Fall eine hohe Trefferquote.
Hands-On Maschinelles Lernen mit TensorFlow
Im nachfolgenden Kapitel zeige ich Dir, wie Du sehr schnell mit Hilfe der Open Source Bibliothek TensorFlow ein einfaches Beispiel für maschinelles Lernen implementieren kannst.
TensorFlow ist ein von Google ursprünglich für den internen Gebrauch entwickeltes Framework für maschinelles Lernen und Künstliche Intelligenz. Es ist unter Open-Source-Lizenz veröffentlicht und kann beispielsweise im Umfeld der Spracherkennung oder Bildverarbeitung eingesetzt werden.
Dabei unterstützt dich die Entwicklungsumgebung Anaconda. Das ist eine Distribution für die Programmiersprachen Python und R, die unter anderem die Entwicklungsumgebung Spyder, den Kommandozeileninterpreter IPython und die Webanwendung Jupyter Notebook enthält und insoweit quelloffen ist (Quelle: wikipedia).
Entwicklungsumgebung Anaconda
Die Entwicklungsumgebung kannst Du Dir laden https://www.anaconda.com/
Pakete „keras“ und „tensorflow“
Die beiden Pakete „keras“ und „tensorflow“ kannst Du mit dem Paketmanager pip nachinstallieren im Terminal.
| pip install keras tensorflow |
Damit sind die Voraussetzungen geschaffen für unser erstes ML Modell.
Beispiel Kleidungsstücke erkennen mit ML (Fashion MNIST)
Diese Anleitung trainiert ein neuronales Netzwerkmodell, um Bilder von Kleidung, wie Turnschuhe oder Hemden, zu klassifizieren. Es ist in Ordnung, wenn Du nicht alle Details sofort verstehst. Dies ist ein schneller Überblick, wie ML mit Hilfe von TensorFlow implementiert werden kann.
Importieren der Bibliotheken TensorFlow und Keras
Python Code
| # TensorFlow and tr.keras
import tensorflow as tf from tensorflow import keras # Helper libraries import numpy as np import matplotlib.pyplot as plt print (tf.__version__) |
Ausgabe bei mir
| 2.10.0 |
Laden der Testdaten
MNIST Fashion ist ein Testdatensatz, der frei verfügbar ist. Er stammt ursprünglich von Zalando. Der Testdatensatz beinhaltet 60.000 Bilder von Kleidungsstücken als Trainingsdaten und 10.000 Bilder in einem weiteren Datensatz, der zum Testen verwendet werden kann. Keras kann die Testdaten MNIST direkt laden.
Python Code
| fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist. load_data () |
Laden der Kategorien
Die Kleidungsstücke sind in 10 Kategorien eingeteilt, von 0-9. Weil das schwer lesbar ist, können wir den Kategorien noch Namen zuordnen.
Python Code
| class_names = [‚T-shirt/top‘, ‚Hose‘, ‚Pullover‘, ‚Kleid‘, ‚Mantel‘, ‚Sandale‘, ‚Shirt‘, ‚Sneaker‘, ‚Tasche‘, ‚Schuh‘] |
Analyse des Trainings- und Testdatensatzes
Nachdem der Trainings- und Testdatensatz geladen wurde, kannst Du verschiedene Analysen durchführen. Damit kannst Dir einen Überblick über die Größe und den Inhalt der Datensätze verschaffen.
Python Code
| train_images.shape |
Ausgabe bei mir
| (60000, 28, 28) |
Wir haben 60.000 Bilder geladen. Jedes Bild mit einer Auflösung von 28*28 Pixel.
Python Code
| len (train_labels) |
Ausgabe bei mir
| 60.000 |
Wir haben 60.000 Einträge im Trainingsdatensatz.
Python Code
| len (test_labels) |
Ausgabe bei mir
| 10.000 |
Wir haben 10.000 Einträge im Testdatensatz.
Python Code
| train_labels |
Ausgabe bei mir
| array([9, 0, 0, …, 3, 0, 5], dtype=uint8) |
Das Array „train_labels“ enthält die Kategorien der Kleidungsstücke von 0 bis 9.
Anzeige von Beispielen der Bilder im Trainingsdatensatz
Zu Testzwecken kannst Du Dir auch einzelne Bilder anzeigen lassen. Damit bekommst Du einen Eindruck, wie die Bilder aussehen, die unsere KI lernen soll.
Python Code
| plt.figure( )
plt.imshow(train_images [0]) plt.colorbar ( ) plt.gca ().grid(False) |
Ausgabe bei mir

Abbildung 1: Beispiel eines Bildes im Trainingsdatensatz. Vermutlich ein Schuh.
Vorbereiten des Trainingsdatensatzes
Damit das ML Modell mit dem Trainingsdatensatz arbeiten kann, muss der Wertebreich auf 0 … 1 normiert werden.
Python Code
| train_images = train_images / 255.0
test_images = test_images / 255.0 |
Anzeige von 25 Bilder mit den passenden Labels
Zu Testzwecken kannst Du Dir auch einzelne Bilder anzeigen lassen. Damit bekommst Du einen Eindruck, wie die Bilder aussehen. Zusätzlich werden die Labels mit ausgegeben.
Python Code
| import matplotlib.pyplot as plt
%matplotlib InlIne plt.figure(figsize= (10,10)) for i in range (25): plt.subplot (5,5,i+1) plt.xticks ([]) plt.yticks ([]) plt.grid(‚off‘) plt.imshow(train_images[i], cmap=plt.cm.binary) plt.xlabel (class_names [train_labels[i]]) |
Ausgabe bei mir

Abbildung 2: 25 Beispielbilder im Trainingsdatensatz
Keras Model laden
Nachdem der Trainingsdatensatz vorbereitet ist, kann das ML Modell vorbereitet werden. Das Modell hat 128 Neuronen zum Lernen (3. Zeile) und 10 Kategorien für die Ausgabe (4. Zeile).
Python Code
| model = keras.Sequential ([
keras.layers.Flatten(input_shape= (28, 28)), keras.layers.Dense (128, activation=tf.nn.relu), keras.layers.Dense (10, activation=tf.nn.softmax) ]) model.compile (optimizer="adam", loss='sparse_categorical_crossentropy', metrics=[‚accuracy']) |
Keras Modell trainieren
Das Modell kannst Du jetzt mit dem Trainingsdatensatz trainieren. Mit dem Parameter „epochs" kannst Du die Trainingsdurchläufe angeben. Mehr Trainingsdurchläufe erhöhen die Erkennungsgenauigkeit. Der Parameter „batch_size" gibt an, in welchen Häppchen die Neuronen trainiert werden.
Python Code
| model.fit (train_images,
train_labels, epochs=10, batch_size=32) |
Ausgabe bei mir
| Epoch 1/10
1875/1875 [==============================] – 3s 2ms/step – loss: 0.4980 – accuracy: 0.8253 Epoch 2/10 1875/1875 [==============================] – 3s 2ms/step – loss: 0.3748 – accuracy: 0.8648 Epoch 3/10 1875/1875 [==============================] – 3s 2ms/step – loss: 0.3363 – accuracy: 0.8771 Epoch 4/10 1875/1875 [==============================] – 3s 2ms/step – loss: 0.3132 – accuracy: 0.8850 Epoch 5/10 1875/1875 [==============================] – 4s 2ms/step – loss: 0.2963 – accuracy: 0.8897 Epoch 6/10 1875/1875 [==============================] – 2s 1ms/step – loss: 0.2801 – accuracy: 0.8957 Epoch 7/10 1875/1875 [==============================] – 2s 1ms/step – loss: 0.2669 – accuracy: 0.9004 Epoch 8/10 1875/1875 [==============================] – 2s 1ms/step – loss: 0.2557 – accuracy: 0.9046 Epoch 9/10 1875/1875 [==============================] – 2s 1ms/step – loss: 0.2478 – accuracy: 0.9075 Epoch 10/10 1875/1875 [==============================] – 3s 1ms/step – loss: 0.2390 – accuracy: 0.9100 |
Überprüfen des Modells und der Genauigkeit
Nachdem das Modell trainiert wurde, kann es getestet werden.
Im ersten Test wird mit dem Testdatensatz die Genauigkeit geprüft.
Python Code
| test_loss, test_acc = model.evaluate (test_images, test_labels)
print (‚Test accuracy:', test_acc) |
Ausgabe bei mir
| 313/313 [==============================] – 0s 1ms/step – loss: 0.3496 – accuracy: 0.8776
Test accuracy: 0.8776000142097473 |
Wir haben eine Erkennungsgenauigkeit von 87,8%.
Berechnen einer Prediction Matrix
Als nächstes kannst Du Dir eine Matrix mit den vorhergesagten Wahrscheinlichkeiten berechnen lassen.
Python Code
| predictions = model.predict(test_images) |
Ausgabe bei mir
| 313/313 [==============================] – 0s 1ms/step |
Du kannst Dir Details zu den einzelnen Testimages ausgeben lassen. Hier siehst Du für das Testimage Nummer 0 die Wahrscheinlichkeiten in den zehn Kategorien. Das Maximum liegt bei Kategorie 10.
Python Code
| predictions[0] |
Ausgabe bei mir
| array([5.5198011e-06, 6.6191451e-06, 4.5866182e-06, 1.8280087e-09, 2.2418225e-08, 3.0509895e-03, 2.5287884e-06, 1.8803149e-02, 1.0655490e-06, 9.7812551e-01], dtype=float32) |
Ausgabe der Testimages mit den erkannten Kategorien
Als letzten Test kannst Du Dir noch die erkannten Kategorien der Testimages ausgeben lassen. Die erkannte Kategorie ist grün, wenn sie richtig erkannt wurde und rot, wenn sie nicht richtig erkannt wurde. Das Modell hat 3 von 25 Bildern im Testdatensatz falsch erkannt. Das entspricht einer Genauigkeit von 88%. Wir haben weiter oben eine Genauigkeit von 87,7% abgeschätzt. Das passt also sehr gut.
Python Code
| # Plot the first 25 test images, their predicted label, and the true label
# Color correct predictions in green, incorrect predictions in red plt. figure (figsize= (10,10)) for i in range (25): plt.subplot (5,5,i+1) plt.xticks ([]) plt.yticks ([]) plt.grid(‚off') plt.imshow (test_images[i], cmap=plt.cm.binary) predicted_label = np.argmax(predictions [i]) true_label = test_labels [i] if predicted_label == true_label: color = ‚green' else: color = ‚red' plt.xlabel (" ()". format(class_names[predicted_label], class_names [true_label]), color=color ) |
Ausgabe bei mir

Abbildung 3: 25 Testbilder mit den erkannten Kategorien
2.2.2Lizenz
Dieses Hands-On verwendet Testdaten von Zalando, die im Internet veröffentlicht wurden unter der MIT Lizenz.
Lizenzbedingungen kannst Du hier nachlesen.
Teile des Codes wurden aus einem Beispiel von TensorFlow übernommen.
Wie kann KI getestet werden?
Aus der Sicht eines Testers oder Testmanagers ist eine KI ein völlig neuer Ansatz. Das Verhalten einer KI ist nicht so deterministisch wie eine konventionelle Software oder ein System.
Willst Du mehr wissen?
Ab Herbst 2023 biete ich meinen neuen Online-Kurs „Certified Tester für KI“ entsprechend ISTQB an.
Den Lehrplan des ISTQB findest Du hier.
Den Online-Kurs demnächst bei mir.
Willst Du Dich als CPRE zertifizieren lassen?
Vorbereitung zur CPRE-Prüfung als Blended Learning Online Kurs
Wenn Du mehr darüber wissen willst, wie Du gute Anforderungen formulieren, oder wie Du Dich optimal auf die Zertifizierungsprüfung als CPRE vorbereiten kannst, buche meinen online Kurs. Informiere Dich auf meiner Webseite „Projektstart“ über das Angebot.

Abbildung: Verkaufsbox CPRE-FL (Quelle: projektstart)
Zusammenfassung
Mit diesem Beispiel habe ich Dir gezeigt, wie Du ein ML Modell erstellen und trainieren kannst. Mit einem Testdatensatz kannst Du die Genauigkeit des Modells überprüfen und Dir die erkannten Kategorien anzeigen lassen.
Das Modell kann trainiert werden und mit einem Testdatensatz kann die Genauigkeit des Modells überprüft werden. Optimierungen am Modell sind damit möglich.
Warum bekomme ich diesen Newsletter?
Wir hatten in der Vergangenheit Kontakt und Du hattest Interesse an weiteren Informationen über Projektstart. Falls Du keine weiteren Informationen wünschst, kannst Du Dich gerne vom Newsletter abmelden, aber das wäre sehr schade.
Viele erfolgreiche Projekte wünscht
Projektstart
Gerhard Wirnsberger
schreibe mir eine E-Mail:
Literaturtipp:
Bei den folgenden Links handelt es sich um Provisions-Links (Affiliate-Links). Erfolgt über einen solchen Link eine Bestellung, erhält die Projektstart GmbH eine Provision. Für den Käufer entstehen dadurch keine Mehrkosten. Alle Preise inkl. MwSt. und ggf. zuzüglich Versandkosten. Details zu den Angeboten finden Sie auf der jeweiligen Webseite. Durch Klicken auf die Affiliate-Links wirst du zu Amazon weitergeleitet.
Hinterlasse einen Kommentar