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

Wie Du mit maschinellem Lernen einfach Bilder klassifizieren kannst – Hands on

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

Wie Du mit maschinellem Lernen einfach Bilder klassifizieren kannst – Hands on

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

Wie Du mit maschinellem Lernen einfach Bilder klassifizieren kannst – Hands on

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.

IREB CPRE FL deutsch

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

https://www.projektstart.com

schreibe mir eine E-Mail:

gerhard@projektstart.com

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.