Brandneues Live-Webinar für Testmanager & Testautomatisierer: Verbessern Sie Ihre Lasttests und Website Performance mit Cloud-Lösungen und DevOps!

Brandneues Live-Webinar für Testmanager & Testautomatisierer: Verbessern Sie Ihre Lasttests und Website Performance mit Cloud-Lösungen und DevOps!

Mehr erfahren

AI-Unterstützung von IoT-Tests durch trainierbare Bilderkennungssoftware - KI-Testing

AI-Unterstützung von IoT-Tests durch trainierbare Bilderkennungssoftware - KI-Testing

AI-Unterstützung von IoT-Tests durch trainierbare Bilderkennungssoftware
Lesedauer: 7 Minuten

In diesem Artikel möchten wir Ihnen Beispiele zeigen, wie das Testen von IoT-Geräten mittels AI-gestützter Bilderkennung unterstützt werden kann.

Vorstellung des Projekts

Das Testobjekt

In diesem Beispiel wollen wir automatisiert Informationen über den Zustand einer Kaffeemaschine herausfinden. Wir wollen anhand der Anzeige der Maschine automatisiert erfassen, ob der Wassertank in der Maschine eingesetzt wurde und ob sich eaine Tasse unterhalb des Auslaufs befindet. Die Schwierigkeit besteht in diesem Beispiel darin, dass die Maschine keine expliziten Testschnittstellen für beide Testfälle anbietet. Es müssten hierfür Sensoren entwickelt und an der Maschine angebracht werden um diese Informationen automatisiert verarbeiten zu können. Dies ist sehr aufwendig, da dies technische Kenntnisse voraussetzt und die Testmethodik einen hohen Grad der Intrusion aufweist und somit einer erfolgreichen Automatisierung im Weg steht. Daher muss eine bessere Lösung gefunden werden.

Die Teststrategie

Wir wollen mit diesem Beispiel zeigen, dass sich mittels AI-gestützter Bilderkennungssoftware diese Testfälle automatisiert durchführen lassen. Hierfür entwickeln wir mittels des Frameworks Tensorflow ein Tool, welches zum einen aus Bildern des Displays der Kaffeemaschine erkennen kann, ob auf diesem eine Warnung wegen des nicht eingesetzten Wassertanks erscheint und zum anderen aus Bildern einer Frontalaufnahme der Kaffeemaschine erkennen kann, ob eine Tasse auf diesen Bildern zu sehen ist. Der Einsatz einer Bildklassifizierungssoftware ist hier sinnvoll, da wir eine begrenzte Anzahl von fest voneinander abgrenzbaren Zuständen haben.

Die Testschnittstelle

Für das automatisierte Testen ist es notwendig, dass die erfassten Daten der Bilderkennung von einer TAS (Test Automation Solution) genutzt werden können. Hierfür sollte es über eine API möglich sein, den Status der Kaffeemaschine abzufragen. Hier empfiehlt es sich eine spezialisierte REST-API zu entwickeln, die über die TAS Daten abfragen oder Daten aktiv durch die Bilderkennungssoftware in eine Datenbank schreiben kann.

Verwendete Technologien

Für die Erstellung des Modells, sowie die Anwendung des Modells auf den Bilddateien, wird die Programmiersprache Python und das Framework Tensorflow verwendet. Die REST-API kann ebenfalls mit Python und einem Framework wie etwa Flask implementiert werden. Es wurden keine kommerziellen Tools von Drittanbietern genutzt.

Erstellung des AI-Modells zur Erkennung der Zustände

Trainingsbilder erstellen

Zum Trainieren des Modells benötigen wir zunächst Bilder, die die Zustände unserer beiden Szenarien zeigen. Für den ersten Testfall benötigen wir zum einen Bilder, die das Display im Normalzustand und zum anderen die entsprechende Fehlermeldung bei fehlendem Wassertank zeigen. Für den zweiten Testfall werden entsprechend Bilder mit und ohne Tasse unter dem Auslauf benötigt. 

Hier sehen Sie eine Auswahl von Trainingsbildern für den ersten Testfall. In der oberen Bildreihe sehen Sie das Display im Normalzustand, unten das Display wenn der Wasserbehälter entfernt wurde. Für den ersten Testfall wurden jeweils 450 Trainings- und 150 Testbilder für jeden der beiden Fälle aufgenommen. Die Bilder wurden von einem Smartphone mit dem Serienbildmodus aufgenommen, daher stellte die Erstellung großer Bildmengen kein Problem dar. Bei der Aufnahme der Bilder wurde die Kamera bewegt und geneigt, sodass Bilder aus verschiedenen Blickwinkeln aufgenommen wurden.

AI - Bilderkennung
Bild: Display im Normalzustand (Klicken zum Vergrößern) [Quelle: Qytera]
AI - Bilderkennung
Bild: Displayanzeige, wenn der Wassertank nicht eingesetzt wurde (Klicken zum Vergrößern) [Quelle: Qytera]

Für den zweiten Testfall wurden Bilder von der Kaffeemaschine einmal mit und einmal ohne Tasse aus verschiedenen Blickwinkeln aufgenommen. Die Tasse wurde hierbei mehrmals an eine andere Position verschoben. Die Bilder wurden zudem aus verschiedenen Blickwinkeln aufgenommen, um eine gewisse Varianz im Trainingsdatenset zu erhalten. Würden die Bilder immer aus dem gleichen Blickwinkel aufgenommen könnte dies später zu schlechteren Ergebnissen bei der Bildklassifizierung führen.

AI - Bilderkennung Training
Bild: Kaffemaschine mit Tasse (Klicken zum Vergrößern) [Quelle: Qytera]
AI - Bilderkennung Training
Bild: Kaffemaschine ohne Tasse (Klicken zum Vergrößern) [Quelle: Qytera]

Training des Modells

Nachdem die Trainingsbilder erstellt wurden wird das Modell mit diesen trainiert und lernt dabei die Bilder verschiedener Zustände voneinander zu unterscheiden. Der Zeitaufwand des Trainingsprozesses steigt linear mit der Anzahl der Bilder. In unserem Beispiel haben wir das Modell auf einem Laptop mit einer Intel Core i5 CPU der zehnten Generation trainiert. Für das Training wurde keine Grafikkarte genutzt. Insgesamt benötigte das Training für die insgesamt 1200 Bilder des ersten Testfalls etwa 20 Minuten. Für den zweiten Testfall wurden insgesamt 2100 Bilder aufgenommen, das Training dauerte dementsprechend etwa 40 Minuten. Deutliche Performanceverbesserungen lassen sich beispielsweise schon durch die Verwendung einer Desktop-CPU erzielen. Mittels einer AMD Ryzen 7 CPU konnten die Trainingszeiten um fast 70 Prozent gesenkt werden. Steigt die Bildmenge noch weiter an sollte man zu einer Grafikkarte greifen, um die Zeit für das Training zu verringern. Verfügen Sie selbst nicht über entsprechende Grafikkarten können Cloud-Dienste wie etwa AWS SageMaker weiterhelfen.

Wartbarkeit des Modells

Bei einem AI-gestützten Tool muss vor allem darauf Wert gelegt werden, dass auch Anwender ohne Erfahrung im Bereich des maschinelles Lernens und in unserem konkreten Projekt ohne Erfahrung mit dem Framework Tensorflow den Trainingsprozess des Modells steuern und bedienen können. Tensorflow reduziert den Implementierungsaufwand des Trainingsprozesses bereits erheblich indem es eine API mit einer sehr abstrakten Sichtweise auf den Trainingsprozess anbietet. In unserem konkreten Projekt bauten wir wiederum eine eigene API um das Tensorflow-Framework herum, sodass für das Training des Modells lediglich eine vorgegebenen Benennung für die Verzeichnisse der Bilddateien befolgt werden muss, um neue Bildkategorien bzw. mehr Bilder für vorhandene Kategorien hinzuzufügen. Möchten die Tester:innen neue Bildkategorien hinzufügen, müssen sie dafür lediglich ein neues Verzeichnis anlegen und dort die Trainingsbilder ablegen. Das Modell interpretiert das neu angelegte Verzeichnis automatisch als neue Bildkategorie. Somit können die Tester:innen die AI-Software als Blackbox behandeln und benötigen keinerlei AI-Kenntnisse, um den Trainingsprozess zu starten bzw. um Bilder zu klassifizieren.

Ein AI-Engineer wird jedoch weiterhin unverzichtbar bleiben, wenn es um die Beurteilung der Performanz des Modells geht. Weist ein Modell beispielsweise hohe Trefferquoten auf einem Trainingsdatensatz, aber schlechte Trefferquoten im realen Einsatz auf, kann dies dafür sprechen, dass die Trainingsbilder nicht repräsentativ genug waren oder diese zu wenig Varianz aufwiesen. In unserem Beispiel hätte dies auftreten können, wenn die Kaffeemaschine immer nur aus dem gleichen Blickwinkel fotografiert worden wäre. In diesem Fall sollten Expert:innen zur Beurteilung der Trainingsdaten herangezogen werden.

Evaluation des Modells

Nachdem wir unser Modell trainiert haben müssen wir evaluieren, ob dieses korrekte Vorhersagen macht. Hierfür erstellen wir erneut Bilder, die wir dem Modell zeigen und für die das Modell eine Vorhersage macht. Wichtig ist bei der Evaluierung, dass das Modell Bilder gezeigt bekommt, die es im Trainingsprozess nicht gesehen hat. Somit wird sichergestellt, dass das Modell während des Trainings Informationen über die Bilder gelernt hat, die nicht nur auf die Trainingsbilder anwendbar sind sondern so gut generalisieren, dass diese Informationen auch auf neue, noch nicht gesehene Bilder anwendbar sind.

In unserem Test erreichten wir eine Trefferquote von 100% für die beiden Szenarien. Diese hohen Werte sind vor allem dadurch möglich, da wir beim Training des Modells auf Transfer Learning setzten - ein Verfahren, bei dem große Unternehmen wie etwa Google oder Microsoft Modellarchitekturen entwickeln und auf einem großen Datensatz vortrainieren und diese vortrainierten Modelle Anwendern zur Verfügung stellen.

Nutzung des Modells in einer Produktionsumgebung

Aufbau der Produktionsumgebung

Zunächst muss vor der Kaffeemaschine eine Kamera angebracht werden. Hierfür lassen sich beispielsweise Werkzeuge wie ein Raspberry Pi verwenden, da dieser bereits über eine Kameraschnittstelle verfügt und die erzeugten Daten auf dem Raspberry Pi direkt weiterverarbeitet werden können. Auf dem Raspberry Pi wird außerdem das AI-Modell zur Erkennung der Zustände der Kaffeemaschine aufgesetzt, welches die Bilder des Kameramoduls entgegennimmt und die Bilder klassifiziert (Normalbetrieb / Wasser auffüllen) bzw. ( Tasse vorhanden / Tasse nicht vorhanden). Nach der Klassifizierung der Aufnahme stellt der Pi diese Informationen über eine REST-API zur Verfügung, über welche die TAS diese abfragen kann.

AI - Modell
Bild: AI - Bilderkennung - Modell (Klicken zum Vergrößern) [Quelle: Qytera]

Verfeinerung der Testmethode durch Objekterkennung in Bildern

In unserem Beispiel haben wir immer das gesamte aufgenommene Bild zur Klassifizierung verwendet. Das verwendete Modell konnte jeweils nur das gesamte Bild klassifizieren (Tasse / keine Tasse bzw. normale Displayanzeige / Wassertank auffüllen). Für einige Use Cases ist eine einfache Bildklassifizierung möglicherweise jedoch nicht ausreichend. Von Interesse könnte ebenfalls sein, ob bestimmte Elemente auf dem Display zu sehen sind, wie etwa die Symbole für Kaffee, Espresso, etc. und auch an welcher Stelle diese zu sehen sind. Dies kann sinnvoll sein, da diese Symbole auch in anderen Kontexten auf dem Display erscheinen, beispielsweise wenn die entsprechende Kaffeesorte ausgewählt wurde und der Kaffee zubereitet wird. Für diesen Use Case haben wir einen Objekterkennungsalgorithmus namens YOLO (You Look Only Once) auf fünf Symbole des Displays trainiert: Kaffee, Espresso, Cappuccino, Heißwasser und das Symbol für das Einsetzen des Wassertanks. Anschließend wurde das trainierte Modell auf eine Videoaufnahme des Displays angewendet. In dem Video wird der Wassertank der Kaffemaschine mehrmals aus der Maschine herausgezogen, sodass das Display abwechselnd die Kaffee-Symbole und den Hinweis zum Einsetzen des Wassertanks zeigt. Der Algorithmus ist nun in der Lage zu erkennen , wann und wo im Video die jeweiligen Symbole zu sehen sind. Das Resultat sehen Sie in folgendem Video:

Anwendung des YOLO-Algorithmus auf ein Video zur Erkennung von angezeigten Objekten auf dem Display der Kaffeemaschine

In einem weiteren Test haben wir den Algorithmus auf die Erkennung unseres Unternehmenslogos trainiert. Ein beispielhaftes Ergebnis dieses Tests sehen Sie in folgendem Bild:

AI - Logo erkennen
Bild: Anwendung des YOLO-Algorithmus, der auf die Erkennung des Unternehmenslogos trainiert wurde (Klicken zum Vergrößern) [Quelle: Qytera]

Potential der AI-gestützten Bildverarbeitung

Wie wir anhand dieses Beispielprojekts gezeigt haben können mittels AI-gestützter Bilderkennung Objekte getestet werden, die sich bislang der Testautomatisierung durch fehlende Schnittstellen entzogen haben. Die Bildklassifizierung bietet vor allem bei Anwendungsfällen Potential, bei denen Zustände eines IoT-Geräts anhand von optischen Merkmalen erkannt werden können. Einige denkbare Use-Cases haben wir hier aufgelistet:

Weitere beispielhafte Use Cases

Automatisches Auslesen von Displayinformationen
    • LCD-Displays (Haushaltsgeräte, Industriemaschinen, 7-Segment-Anzeigen)
    • Status-LEDs (leuchtet / leuchtet nicht)
    • Armaturenbrett auslesen (Feststellung ob das Symbol für die Handbremse leuchtet)
Testen auf Vorhandensein von Objekten in Bildern
    • Automatische Validierung von Screenshots, welche im Testprozess entstanden sind (Welchem Testschritt ist der Screenshot zuzuordnen?)
    • Testen, ob auf einem Screenshot ein bestimmtes Element zu sehen ist (Button, Formular, etc.)
Bestimmung der Anzahl und Position bestimmter Objekte auf einem Bild
    • Testen, wie viele Objekte eines Typs auf einem Screenshot zu sehen sind und wo diese sich befinden
    • Bestimmung der Anzahl und der Art von Objekten auf einem Fließband in einer Fertigungsanlage
Klassifizierung von Dokumenten anhand Logos / Bildern / anderer graphischer Informationen auf den Dokumenten
    • Viele eingescannte Dokumente sollen automatisch klassifiziert werden
    • Prüfen, ob eine Unterschrift auf einem Dokument vorhanden ist

Risiken der AI-gestützten Bildverarbeitung

Zu den Risiken der AI-gestützten Bilderkennung zählt, dass Modelle, die mit einem kleinen Datenset trainiert wurden (einige dutzend Bilder pro Kategorie), sensibel auf Änderungen der Eingabebilder reagieren. Ändern sich Elemente auf dem LCD-Display im Laufe der Entwicklung des Testobjekts, wie in unserem Fall der Kaffeemaschine, kann das die Qualität der Vorhersage der AI beeinflussen. AI-Lösungen bieten sich daher an, wenn das Entwicklungsprojekt bereits eine gewisse Stabilität erreicht hat. Für Regressionstests wäre ein AI-Tool hervorragend geeignet, da bereits bekannte Testergebnisse überprüft werden können. Doch auch während der Entwicklung des Testobjekts kann mit dem Aufbau einer AI-Lösung begonnen werden. Es können bereits automatisierte Pipelines für das Trainieren der Modelle auf dem Bildmaterial angelegt, sowie Bilder für das Training der Modelle erstellt werden. Generell gilt, dass die Trainingsbilder stets mit den tatsächlichen optischen Merkmalen der Kaffeemaschine übereinstimmen müssen.

Die AI-Pipeline im Betrieb

Während des Testprozesses sollte die Klassifizierung der Bilder durch die AI überprüft werden. Dies kann zum Teil automatisiert geschehen, indem Bilder, für die die AI keine eindeutige Klassifizierung vornehmen kann, zunächst an einem separaten Ort abspeichert und diese später manuell einer Bildkategorie zuordnet und anschließend dem Trainingsdatenset hinzufügt werden. Anschließend kann die AI auf dem erweiterten Datenset erneut trainiert werden, wodurch das Risiko von falsch klassifizierten Bildern im Laufe Zeit immer weiter gesenkt wird.

Fazit

AI-gestützte Bildverarbeitung bietet ein großes Potential in der Testautomatisierung bei der Beobachtung von IoT-Geräten, die nur unzureichend automatisierbare Testschnittstellen zur Verfügung stellen. Mittels AI-Werkzeugen werden alle denkbaren Ausgaben des IoT-Gerätes, sei es von einfachen Status-LEDs bis hin zu LCD-Displays zu Testschnittstellen, die mit einem minimalen Grad der Intrusion abgefragt werden können. Das gesamte physische Gerät wird somit zu einer testbaren UI.

Gerne beantworten wir Ihnen Fragen und beraten Sie genauer zur Testautomatisierung in Ihrem Projekt. Kontaktieren Sie uns hierfür einfach oder vereinbaren Sie direkt einen kostenlosen Testautomatisierungs-Workshop mit unseren Qytera-Testexperten. Wir wünschen Ihnen viel Erfolg bei Ihrer Testautomatisierung!

Kostenlosen Testautomatisierungs Workshop mit unseren Testexperten unverbindlich vereinbaren.

Kostenlosen Testautomatisierungs Workshop mit unseren Testexperten unverbindlich vereinbaren.

20. Juli 2023

Über den Autor

Bild des Benutzers Tilo Flasche
Test Automation Engineer
Ich studiere Informatik an der Goethe Universität Frankfurt und schreibe aktuell meine Masterarbeit bei Qytera über das Thema Featureextraktion aus Bildern mit Neuronalen Netzen. Den Schwerpunkt meines Masterstudiums legte ich u.a. auf die Themen Maschinelles Lernen und Computer Vision. Bei Qytera bin ich seit Oktober 2020 als Werkstudent tätig und habe u.a. das QTAF-Testing-Framework mitentwickelt. Zuvor sammelte ich als Werkstudent und freiberuflicher Entwickler bereits Erfahrungen in der Softwareentwicklung.

Finden Sie weitere interessante Artikel zum Thema: