Bilderkennung

Was sehe ich in diesem Bild?

Abgesehen von Texten, die mit Methoden maschinellem Lernens intelligent bearbeitbar sind, machen Bilder und Videos einen großen Teil der Inhalte aus, mit denen man täglich konfrontiert wird. Das Problem mit grafischen Daten ist allerdings, dass ein gewöhnlicher Text Crawler nur Informationen indexieren kann, die entweder im Dateinamen oder in den eingebetteten META Daten liegen. Das "dumme" Programm ergreift jedoch nicht den eigentlichen Sinn des Bildes oder was darauf abgebildet wurde. Maschinelles Lernen schließt diese Lücke indem es die relevanten Informationen erfasst und ein Muster für nachfolgende Daten erstellt.

Die Bilderkennung der Cognitive Services wurde nicht für die schnelle Verarbeitung von Live-Bildern, sondern eher für größere Datenmengen und die Verbesserung der Suchmöglichkeiten entwickelt. Stellen Sie sich eine Organisation oder ein Unternehmen vor, welches über eine größere Menge an Bildaufnahmen (Maschinen, Zeichnungen, etc.) verfügt und ein Mitarbeiter benötigt daraus ein bestimmtes Bild für eine Präsentation. Anstatt also zu einem Kollegen zu gehen und diesen um Hilfe zu bitten, genügt es, dass er die Bilderkennung der Cognitive Services zur Recherche nutzt und die Maschine entscheiden lässt, welches die richtige Aufnahme ist.

Triangulation

Wie maschinelles Lernen Bilder versteht

Wie eingangs bemerkt liegt das Hauptproblem bei der Informationsgewinnung aus Bilddaten in fehlenden oder ungenügenden Crawling Inhalten. Eine Pixelgrafik wie JPEG, PNG oder GIF enthält eigentlich nur Pixelinformationen welche Farbe und Position ein bestimmtes Pixel in der Datei hat. Das wären die einzigen Daten, die eine Suchmaschine erfassen könnte, was wiederum nutzlos wäre, wenn jemand das Bild eines Stuhls sucht. In der Vergangenheit setzten Suchmaschinen hauptsächlich auf eingebettete Informationen, die an die Datei angehangen wurden - die so genannten META Daten. Dort kann bspw. ein Fotograf Informationen wie bspw. eine Bildbeschreibung, einige Geo-Informationen oder Kameraeinstellungen hinterlegen. Sollte er allerdings zu faul dazu sein, hat die Suchmaschine keine Chance ein richtiges Ergebnis zu generieren. Der letzte Strohhalm könnte dann lediglich noch der Dateiname selbst sein (z.B. ein_Hund.jpg, Bild_meines_Hauses.png, etc.), doch auch hier hängt alles vom Ersteller der Datei ab.

Maschinelles Lernen bietet neue Möglichkeiten dieses Problem zu lösen. Statt auf ungenügende Daten zu setzen, versucht die Machine Learning Methode zu verstehen - oder zu erkennen - um was es sich bei dem Bild handelt. Ähnlich einem Kleinkind, dass von seinen Eltern erlernt, dass das sich schnell bewegende Ding auf der Straße mit den vier Rädern und den Menschen im Inneren Auto genannt wird, benötigt die Maschine ein anfängliches Training, um eine Methode und Muster für zukünftige Daten (andere Autos) zu entwickeln. Manchmal variieren die Muster in Form, Größe oder Farbe und die Maschine benötigt eine Anpassung der Methode. Am Ende steht jedoch der Ansatz einen intelligenten Weg zu entwickeln, Bilder zu einer Suche hinzuzufügen.

Direkt nach dem Hochladen versucht die Maschine automatisch passende Muster zu erkennen, nach Kontrastunterschieden und Farbvarianzen zu suchen und ein trianguliertes Muster anzuwenden. Diese mathematischen Muster werden dem Model zugeordnet und ab einem bestimmten Punkt beginnt die Maschine eigenständig zu entscheiden, ob das erstellte Muster eines eben hochgeladenen Bildes mit einem früheren übereinstimmt.

Die ganze Idee an einem Beispiel

Um zu zeigen wie Bilderkennung funktioniert, haben wir ein Modell trainiert, welches zufällige Bilder mit unterschiedlichen Bildmotiven erkennen kann. Der Dateiname wurde geändert und die META Daten komplett gelöscht.

Man könnte jetzt behaupten, dass die obigen Bilder genutzt wurden, um die Maschine zu trainieren und die Software lediglich prüft, ob das Bild samt seiner Daten (die Pixel und ihre Positionen) mit dem Inhalt einer Datenbank korrespondiert. Das ist aber nicht richtig. Der Großteil der Trainingsdaten kam von Bildern aus Sammlungen wie Wikipedia. Das ist die Magie hinter der Machine Learning Technologie. Neue Daten werden erfasst und mit früheren Mustern verglichen.

Für eine kurze Demonstration haben wir ein einfaches Tool geschrieben, welches Bilder per Drag und Drop aufnimmt und anschließend eine trainierte Maschine im Hintergrund die Bilderkennung übernimmt.

Einschränkungen

Da das System Training bedarf, kann es gelegentlich durchaus sein, dass die Ergebnisse unscharf sind und einer Nacharbeit bedürfen. Das passiert dem Kleinkind jedoch auch. In dem Moment wo es ein Auto mit mehr als vier Rädern sieht (z.B. einen LKW) wird es seine Eltern fragen, ob das immer noch ein Auto oder etwas anderes ist.

Das Ergebnis des obigen Bildes ist nicht zufriedenstellend. Der Data Scientist muss das Modell anpassen und die Fehler ausbügeln.

Und nicht nur Formen beeinflussen das Ergebnis. Farben spielen auch eine Rolle. Die Änderung der Farbe der Meereskrabbe (nur um das Beispiel deutlich zu machen), irritiert das Modell und erfordert ein angepasstes Training.

Wofür kann ich diesen Service nutzen?

Überall da wo größere Mengen an Bildern (z.B. aus Archiven, Zeitungen, etc.) aus historischen Beständen oder regelmäßigen Uploads hinzukommen, müssen Bilder gesichtet und kategorisiert werden. Moderne Digital Asset Management Systeme (DAM) haben einige Mechanismen um das zu bewältigen, setzen dafür aber selten auf maschinelles Lernen. Stattdessen bleibt die ermüdende Aufgabe der Verschlagwortung in menschlicher Verantwortung. Hier setzt die Cognitive Service Bilderkennung ein und liefert akkurate Ergebnisse, die mehr Zeit für die wesentlichen Aufgaben lässt.