Ob in der Lagerung, der Produktion oder im Kundenservice – in völlig unterschiedlichen Geschäftsprozessen werden Bilder genutzt, die analysiert und bewertet werden müssen. Die manuelle Auswertung dieser Bilder ist dabei allerdings sowohl zeitaufwendig als auch fehleranfällig. Dank Computer Vision, also der maschinellen Analyse und Verarbeitung von Bildern, lassen sich derartige Prozesse automatisieren. Dabei sind Maschinen heute dank eines hohen methodischen Reifegrads in der Lage, selbst komplizierte Analysen durchzuführen.
Inhaltsverzeichnis
Watt denn nu - Hund oder Katze?
Legt man jeweils ein Bild einer Katze und das eines Hundes nebeneinander, sind schon Kleinkinder in der Lage, die Tiere zu identifizieren. Doch anhand welcher Merkmale ist das möglich? Wie sieht ein Regelwerk aus, um die beiden Tiere auseinander zu halten?
Hunde sind größer als Katzen <-> Aber eine Maine-Coone-Katze ist größer als ein Chihuahua
Hunde haben spitzere Schnauzen <-> Und der Mops?
Katzen haben dicke Schnurrhaare <-> Aber auch ohne Schnurrhaare bleibt es eine Katze
Obwohl es sich hier um eine triviale Fragestellung handelt, die ein Mensch völlig intuitiv beantworten kann, bedarf die Erstellung eines robusten Regelwerkes enorm viel Aufwand. Aber ist ein solches Regelwerk überhaupt notwendig, damit eine Maschine Bilder voll automatisiert analysieren kann?
Wie Maschinen lernen
Statt erheblichen Aufwand zu betreiben, Gesetzmäßigkeiten zu definieren, können wir Maschinen die Möglichkeit geben, die zu Grunde liegenden Muster selbstständig zu entdecken bzw. zu erlernen. Der Lernprozess lässt sich dabei in vier grundlegende Schritte unterteilen:
Labeling: Maschinen lernen auf Basis eines Datasets. Zunächst müssen viele Beispielbilder gesammelt werden. Diese werden anschließend gelabelt – das bedeutet, dass jedes Beispielbild manuell einer der beiden Klassen (Hund | Katze) zu geordnet wird. Wichtig ist dabei, dass die Beispielbilder möglichst repräsentativ ausgewählt werden. Sind alle Katzenbilder in Wohnzimmer entstanden, aber alle Hundebilder auf einer Wiese, könnte die Maschine unbeabsichtigt den Unterschied in der Umgebung und nicht dem Tier lernen.
Splitting: Unseren gelabelten Datensatz müssen wir nun in zwei unabhängige Sets aufteilen- Training und Test. Mit dem Trainingsdatensatz werden wir anschließend unser Modell trainieren. Der Testdatensatz wird später verwendet, um zu bestimmen, ob das Modell wirklich gelernt hat, Hunde und Katzen zu unterscheiden – und sich nicht bloß alle Bilder des Trainingsdatensatzes gemerkt hat.
Training: Alle Bilder unseres Trainingssatzes zeigen wir nun in einem Modell - und sagen dem Modell zusätzlich, welche die richtige Klasse des Bildes ist. Auf Basis dieser Zuordnung kann das Modell Muster finden, mit deren Hilfe sich Hunde und Katzen unterscheiden lassen.
Testing: Nachdem das Modell trainiert wurde, werden ihm nun die Bilder des Testdatensatzes gezeigt – allerdings ohne Klasse. Das Modell muss nun für jedes Bild entscheiden, ob es sich um einen Hund oder eine Katze handelt. Durch einen Vergleich der Modellvorhersagen und den tatsächlichen Klassen lässt sich das Modell abschließend bewerten.
Was können Modelle?
Bei dem oben genannten Beispiel handelt es sich um eine einfache Computer Vision Fragestellung. Das Modell muss lediglich entscheiden, was auf einem Bild zu sehen ist. Es handelt sich hierbei um ein single-label Bildklassifizierung, bei der nur entschieden wird, ob ein Hund oder eine Katze auf dem Bild zu sehen ist. Zur Beantwortung verschiedener Fragestellungen stehen dabei allerdings weitere Modelltypen zur Verfügung:
Anomaly Detection: Das Modell lernt, wie Bilder normalerweise aussehen und kann Abweichungen hiervon erkennen. „Negativbeispiele“ werden hier zum Training nicht benötigt.
Image Classification: Wie erwähnt erkennt das Modell, was auf einem Bild zu sehen ist. Hierbei kann zwischen single- und multi-label unterschieden werden. Bei multi-label Problemen kann ein Bild auch mehreren Klassen zugeordnet werden – auf einem Bild kann also ein Hund und eine Katze zu sehen sein.
Object Detection: Das Modell erkennt die Position von Objekten und ordnet jedes Objekt einer Klasse zu. Es gibt also Koordinaten eines Rechtecks an, das die Katze auf dem Bild umschließt.
Image Segmentation: Das Modell ordnet jedem Pixel eine Klasse zu. So kann beispielsweise eine Katze vom Hintergrund unterschieden und somit freigestellt werden.
Instance Segmentation: Es wird zunächst eine Object Detection durchgeführt, um die Katze mit ihrer Position zu erkennen. Zusätzlich wird die Form der Katze pixelgenau erkannt.
Die Methoden unterscheiden sich dabei nicht nur in der Fragestellung, die sie beantworten, sondern auch hinsichtlich des Aufwands der Modellerstellung. Auch der Labeling-Aufwand hängt maßgeblich vom gewählten Modelltyp ab. So gilt es bei jedem Use-Case, den Modelltyp (oder eine Kombination mehrere) zu finden, der sich am besten zur Beantwortung der Fragestellung eignet.
Wer ist b.telligent?
Du willst den IoT Core durch eine Multi-Cloud-Lösung ersetzen und die Vorteile weiterer IoT-Services von Azure oder Amazon Web Services nutzen? Dann melde Dich bei uns und wir unterstützen Dich bei der Umsetzung mit unserer Expertise und dem b.telligent Partnernetzwerk.
Neuronale Netze werden erfolgreich auf so ziemlich jeden Datentyp angewandt: Bilder, Audio, Texte, Videos, Graphen usw. Nur wenn es um Tabellendaten geht, sind baumbasierte Ensembles wie Random Forests und Gradient Boosted Trees immer noch sehr viel verbreiteter. Wenn man diese erfolgreichen Klassiker durch neuronale Netze ersetzen will, dürfte Ensemble Learning immer noch eine Schlüsselidee sein. Dieser Blogbeitrag erklärt, warum das so ist. Dazu gibt’s ein Notebook mit den praktischen Details.
Azure AI Search, Microsofts serverloses Angebot für das R in RAG, hat seine eigene Skalierungslogik. Sie verbirgt viel von der Komplexität serverbasierter Lösungen, erfordert aber spezifische Kenntnisse.
Polars, der in Rust geschriebene Pandas-Herausforderer, sorgt für erhebliche Beschleunigung nicht nur in der Ausführung des Codes, sondern auch in der Entwicklung. Pandas krankt seit jeher an einer API, die an vielen Stellen „historisch gewachsen“ ist. Ganz anders Polars: Eine API, die von Anfang an auf logische Konsistenz ausgelegt ist und deren Stringenz mit jedem Release sorgfältig gepflegt wird (im Zweifelsfall auch unter Verlusten an Rückwärtskompatibilität), sorgt für eine erheblich schnellere Entwicklung. An vielen Stellen, wo man bisher Pandas eingesetzt hat, kann man es problem los durch Polars ersetzen: In Ibis-Analytics-Projekten, und natürlich einfach für die tägliche Datenaufbereitung aller Art. Gut macht sich die überlegene Performance auch in interaktiven Umfeldern wie PowerBI .