Wer verbringt den Sommer im Microsoft Garage New England Research & Development Center (kurz „NERD“)? Das Microsoft Garage-Praktikum richtet sich an Studierende, die voller Wissensdurst sind, keine Angst vor Neuem haben und in der Lage sind, in unklaren Situationen ihre Komfortzone zu verlassen. Das Programm brachte Grace Hsu vom Massachusetts Institute of Technology, Christopher Bunn von der Northeastern University, Joseph Lai von der Boston University und Ashley Hong von der Carnegie Mellon University zusammen. Sie alle hatten sich für das Garage-Praktikum entschieden, weil es ihnen die Chance bot, alle Phasen des Produktentwicklungszyklus von der Ideenfindung bis zum Versand zu erleben und zu lernen, sich voll und ganz auf den Kunden einzustellen.
Microsoft Garage-Praktikanten nehmen an experimentellen Projekten teil, bei denen sie ihre Kreativität ausleben und ihre Fähigkeiten in der Produktentwicklung ausbauen können, indem sie neue Technologien „hacken“. In der Regel werden diese Projekte von unseren internen Produktgruppen bei Microsoft vorgeschlagen. Als aber Stanley Black & Decker bei Microsoft anfragte, ob es möglich wäre, Bilderkennung für die Anlagenverwaltung auf Baustellen zu verwenden, nahm dieses vierköpfige Praktikantenteam die Herausforderung an, in nur zwölf Wochen einen funktionierenden Prototyp zu entwickeln.
Ausgehend von der einfachen Anforderung, Bilderkennung zu nutzen, führte das Team eine Marktanalyse und eine Benutzerumfrage durch, um sicherzustellen, dass aus dem Projekt ein praxistaugliches Produkt hervorgehen würde. Die vier sammelten den Sommer über Erfahrung in der Entwicklung von mobilen Apps und in KI. Ihr Ziel war es, eine App zu entwickeln, die Menschen beim Erkennen von Werkzeugen in nichts nachsteht.
Das Problem
In der Bauwirtschaft kommt es nicht selten vor, dass Bauunternehmer Monat für Monat mehr als 50 Stunden damit verbringen, ihre Bestände nachzuverfolgen. Die Folge sind vermeidbare Verzögerungen, Überbestände und fehlende Werkzeuge. Auf einer Großbaustelle können während eines lange dauernden Projekts Ausrüstungsgegenstände im Wert von mehr als 200.000 EUR verloren gehen. Um das Problem in den Griff zu bekommen, werden unterschiedliche Kombinationen von Lösungen eingesetzt, zu denen in der Regel Barcodes, Bluetooth, RFID-Tags und QR-Codes gehören. Das Team von Stanley Black & Decker fragte, ob es nicht einfacher sei, ein Foto zu machen und das Werkzeug automatisch erkennen zu lassen.
Es gibt viele verschiedene Werkzeugmodelle, die sich nur in winzigen Details voneinander unterscheiden. Um beispielsweise einen bestimmten Akkuschrauber zu erkennen, muss die automatische Lösung eine Modellnummer wie DCD996 lesen können. Werkzeuge können auch unterschiedlich zusammengesetzt sein, z. B. mit oder ohne Bit oder Akku, und aus verschiedenen Blickwinkeln betrachtet werden. Ebenso müssen die verschiedensten Lichtverhältnisse und möglichen Hintergründe bedacht werden, die auf Baustellen vorkommen. Alles in allem entwickelte sich das Ganze zu einem sehr interessanten Problem, das es mit maschinellem Sehen zu lösen galt.
So gelang der Hack
Klassifikationsalgorithmen lassen sich leicht so trainieren, dass sie unterschiedliche Objekte mit hoher Genauigkeit erkennen können, etwa, wenn es darum geht, einen Akkuschrauber, eine Säge und ein Maßband voneinander zu unterscheiden. Das Team wollte aber wissen, ob ein Klassifizierer auch in der Lage wäre, präzise zwischen sehr ähnlichen Werkzeugen wie den vier Akkuschraubern oben zu unterscheiden. In der ersten Projektiteration erkundete das Team PyTorch und den Microsoft-Dienst Custom Vision. Custom Vision hat für Benutzer den Vorteil, dass sie sich nicht sehr gut mit Data Science auskennen müssen, um ein funktionierendes Modell zu erstellen. Mit einer ausreichenden Anzahl von Bildern (rund 400 pro Werkzeug) erwies sich Custom Vision als geeignete Lösung. Es wurde jedoch schnell klar, dass es sehr aufwendig wäre, manuell genug Bilder zusammenzutragen, um eine Produktpalette mit Tausenden von Werkzeugen abzudecken. Deshalb verlegte sich das Team bald darauf, Möglichkeiten zu finden, um die Bilder zum Trainieren synthetisch zu generieren.
Zunächst führte das Team dreidimensionale Scans und Greenscreen-Renderings der Werkzeuge durch. Anschließend wurden die erzeugten Bilder auf zufällige Hintergründe gelegt, um ein echtes Foto zu simulieren. Dieser Ansatz wirkte vielversprechend, doch die Qualität der produzierten Bilder ließ zu wünschen übrig.
Bei der nächsten Iteration erprobte das Team zusammen mit dem technischen Team von Stanley Black & Decker einen neuen Ansatz, bei dem fotorealistisches Rendering von CAD-Modellen (Computer-Aided Design, computergestützte Konstruktion) zum Einsatz kam. Mit relativ einfachen Python-Skripts konnten sie die Bilder vergrößern oder verkleinern, drehen und nach dem Zufallsprinzip auf unterschiedlichste Hintergründe legen. Mit diesem Verfahren gelang es, innerhalb weniger Minuten Tausende von Bildern zum Trainieren zu generieren.
Links ist ein vor einem Greenscreen generiertes Bild zu sehen, rechts ein aus einem CAD-Modell extrahiertes Bild.
Benchmarks für die Iterationen
Der Dienst Custom Vision bietet Berichte zur Genauigkeit des Modells, wie nachfolgend gezeigt.
Bei einem Klassifizierungsmodell, das auf optisch ähnliche Produkte abzielt, ist eine Verwechslungsmatrix wie die unten gezeigte sehr hilfreich. Eine Verwechslungsmatrix visualisiert die Leistung eines Vorhersagemodells, indem die wahre Bezeichnung einer Klasse in den Zeilen mit der jeweils vom Modell ausgegebenen Bezeichnung in den Spalten verglichen wird. Je höher die Scores in der Diagonalen sind, umso genauer ist das Modell. Wenn außerhalb der Diagonalen hohe Werte auftreten, erkennen die Datenwissenschaftler daran, welche zwei Klassen von dem trainierten Modell miteinander verwechselt werden.
Eine Verwechslungsmatrix mit einer Reihe von Testbildern lässt sich mit vorhandenen Python-Bibliotheken schnell erstellen.
Das Ergebnis
Das Team entwickelte eine React Native-Anwendung, die sowohl unter iOS als auch unter Android läuft und ein einfaches Tool für die Anlagenverwaltung mit einer übersichtlichen und intuitiven Benutzeroberfläche bereitstellt. Die App passt sich an die WLAN-Verfügbarkeit an. Wenn eine zuverlässige WLAN-Verbindung besteht, werden die aufgenommenen Bilder an die APIs des trainierten Custom Vision-Modells in Azure Cloud gesendet. Wenn keine Internetverbindung besteht, werden die Bilder an ein lokales Modell für maschinelles Sehen gesendet.
Diese lokalen Modelle können mit Custom Vision abgerufen werden, wobei Modelle in Core ML für iOS, in TensorFlow für Android oder als Docker-Container zur Ausführung in einem Linux App Service in Azure exportiert werden können. Ein einfaches Framework, um dem Machine Learning-Modell neue Produkte hinzuzufügen, lässt sich implementieren, indem gerenderte Bilder aus CAD exportiert und synthetische Bilder generiert werden.
Bilder von links nach rechts: Bild mit Bestandscheckliste, Kamerafunktion zum Senden eines Bilds an den Dienst Custom Vision, Anzeige der Ergebnisse des Machine Learning-Modells und Formular zum manuellen Hinzufügen eines Werkzeugs zur Checkliste.
Nächste Schritte
Möchten Sie und Ihr Team an einem Projekt für maschinelles Sehen hacken? Suchen Sie nach einem OpenHack in Ihrer Nähe.
Microsoft OpenHack ist ein Event für Entwickler, das unterschiedlichsten Teilnehmern (deshalb „Open“, also offen) die Gelegenheit bietet, durch praktisches Experimentieren („Hack“ genannt) Neues zu lernen. Die Teilnehmer stellen sich dabei Herausforderungen, die auf Kundenprojekten aus der Praxis basieren und deren Entwicklungsverlauf nachbilden. OpenHack ist ein Premium-Event von Microsoft, das Kunden und Partnern eine einzigartige Gelegenheit zur Weiterbildung bietet. Anders als herkömmliche Konferenzen, auf der sich Präsentation an Präsentation reiht, bietet OpenHack Entwicklern eine einzigartige Chance, sich in der praktischen Codierung zu üben.
Die folgenden Lernpfade sind für den Einstieg in die Cognitive Services ebenfalls hilfreich.