(Teil 1) Maschinelles Sehen mit Convolutional Neural Networks

Maschinelles Sehen mit Convolutional Neural Networks (Teil 1)

Oder: Gut extrahiert ist halb erkannt

Menschen können auf einen Blick eine große Menge von Informationen aus ihrer Umgebung extrahieren. Wir können nicht nur die Existenz verschiedener Objekte, sondern auch deren Lage im Raum, ihre Bewegung und ihre Bedeutung auf einen Blick erfassen. Kleinste Details, wie das Zucken eines Gesichtsmuskels, können dem Pokerspieler das Innenleben des bluffenden Kontrahenten offenbaren. Doch wie können Computer visuelle Informationen verarbeiten und wie weit ist die Entwicklung des maschinellen Sehens?

Die “Computer Vision” befasst sich mit dem Problem, aus unstrukturierten visuellen Daten wie Bildern oder Videos strukturierte Informationen zu extrahieren, also zum Beispiel spezielle Objekte wie menschliche Gesichter zu erkennen und gegebenenfalls auch im Bild zu lokalisieren und zu “dekodieren”, was in unserem Beispiel der Gesichtsausdruck sein könnte.

Uns Menschen fallen solche Aufgabenstellungen sehr leicht. Warum also sollte es für den Computer so schwer sein, ein Gesicht von einem Baum zu unterscheiden? Tatsache ist: Trotz Jahrzehntelanger Forschungsarbeit konnten bis vor wenigen Jahren viele ähnliche Probleme nicht mit zufriedenstellender Genauigkeit gelöst werden.

Klar ist, dass ein Großteil des menschlichen Gehirns in der Verarbeitung von visuellen Informationen involviert ist und dass unser Sehsystem in jeder wachen Sekunde unseres Lebens durch ständig neue visuelle Eindrücke trainiert wird.


Viele Daten, viele Probleme

Bilddaten zeichnen sich durch eine sehr hohe Dimensionalität und Variabilität aus. Ein Digitalfoto von einem handelsüblichen Smartphone hat eine Auflösung von mindestens 12 Megapixeln, d. h. ein einzelnes Bild besteht aus 12 Millionen Datenpunkten. Meistens haben wir es zudem mit Farbaufnahmen zu tun. Die chromatische Zusammensetzung jedes Pixels wird dabei in der Regel mit drei Farbkanälen repräsentiert. Das bedeutet: Eine einzige Aufnahme enthält 36 Millionen Zahlen.

Mehrere Fotos von dem Gesicht ein und derselben Person können je nach Beleuchtung der Szene sowie der Orientierung und Position der Kamera ganz unterschiedliche Werte in diesem riesigen Bildraum annehmen. Der Computer muss nun irgendwie aus diesen 36 Millionen Zahlen eine abstrakte Ausgabe generieren, wie “Gesicht” oder “Gesicht, Breite: 300 px, Höhe: 450 px, Position x: 100 px, Position y: 300 px”.

Ohne geeignete Vorverarbeitungsschritte, die die Größe und Variabilität der Daten reduzieren, Informationen bündeln und generalisieren, ist es nahezu unmöglich, aus den Bilddaten direkt diese Informationen zu extrahieren.

Im maschinellen Sehen, wie auch in vielen anderen Teilgebieten des statistischen Lernens, versucht man dieses Problem zu lösen, indem man eine kompakte Repräsentation der Daten berechnet. Diese sogenannten Features sollen möglichst viele der relevanten Informationen behalten und dabei unwichtige und redundante Informationen so gut wie möglich verwerfen. Features korrespondieren also zu den wichtigsten Bildeigenschaften, die das Objekte in allen seinen Ausprägungen aufweist.


Nur was wichtig ist, zählt: Nase, Augen, Ohren

Bei einem Gesichtserkennungssystem ist zum Beispiel die Gesamthelligkeit des Bildes ebenso irrelevant wie das Sensorrauschen oder Kompressionsartefakte. Bestimmte geometrische Formen sind in allen Gesichtern vorhanden und wenn wir das Bild als eine Kombination dieser Formen repräsentieren könnten, dann wäre die Gesichtserkennung heruntergebrochen auf die Frage, ob es eine Nase, Augen und Ohren im Bild zu sehen gibt.

Diesen Prozess bezeichnet man als Feature Extraction. Er ist im Allgemeinen in jeder maschinellen Erkennungsaufgabe, nicht nur in der Computer Vision, in irgendeiner Form implementiert. Je aussagekräftiger die berechneten Features sind, desto einfacher ist es nun, die gewünschten Informationen aus einem Bild zu extrahieren.

Ein ähnlicher Vorgang ist auch im Gehirn des Menschen zu beobachten. Unsere höheren Verarbeitungsprozesse verwerten auch nicht direkt die Pixelinformationen, also die Erregungen der Photorezeptorzellen in der Retina. Stattdessen werden durch eine neuronale Erregungskaskade durch viele Schichten Informationen verarbeitet, zusammengefasst und abstrahiert. Dies beginnt in den Zellen noch in der Netzhaut und setzt sich fort bis hinauf in den visuellen Cortex. So befinden sich zum Beispiel im primären visuellen Cortex (bekannt als V1) bestimmte Nervenzellen, die auf Kanten einer bestimmten Orientierung ansprechen. Mehrere solcher Zellen führen in höheren Schichten des visuellen Cortex zu Erregungen, die mit komplexeren Mustern assoziiert sind.


Erst definieren, dann trainieren

Der klassische Ansatz im maschinellen Sehen war es bis noch vor einigen Jahren, die relevanten Bildeigenschaften bei der Entwicklung des Systems selbst zu definieren. Anschließend trainierte man ein statistisches Lernverfahren, wie zum Beispiel einen Entscheidungsbaum. Für die Erkennung von Personen eignet sich die Methode “HoG” (Histogram of Oriented Gradients) sehr gut. Hier werden Informationen über die Stärke und Orientierung von Kanten in dem Bild zusammengefasst. (Anm.: Vertiefende Informationen findet der interessierte Leser hier). Viel Information eines Bildes wird also weggeworfen. Nur das Relevante (Kantenstärke und Kantenorientierung) wird genutzt, um für ein unbekanntes Bild zu entscheiden, ob es eine Person abbildet oder nicht.

Viele klassische Problemstellungen in dem Bereich des maschinellen Sehens konnten mit ähnlichen Ansätzen gelöst werden. Zum Beispiel werden viele Prozesse in der industriellen Fertigung mit “sehender Software” automatisch überwacht. Wenn ein Stahlträger nicht schmal genug aus der Presse kommt oder wenn eine Leiterplatte nicht korrekt gelötet wurde, schlägt das Programm Alarm. Dann markiert das System den Gegenstand als fehlerhaft und sortiert ihn im Prozessverlauf aus. Dies funktioniert sehr gut mit genormten Objekten in konstant beleuchteten und vor allem bekannten Umgebungen.

Bis vor wenigen Jahren wurden auch schwierigere Aufgaben – wie die Gesichtserkennung – ganz zufriedenstellend gelöst. Allerdings muss der Entwickler eines Vision-Systems immer selbst entscheiden, welche Features aus den Bilddaten extrahiert werden müssen. Dies ist mitunter ein sehr aufwändiger Prozess, der hochgradig iterativ ist. Man implementiert Version A, testet und verbessert mit viel Intuition bis Version Z erreicht ist. An robusten Gesichtserkennungssystemen wurde jahrzehntelang geforscht, bis diese eine zufriedenstellende Qualität aufwiesen. Andere Probleme blieben mit dem klassischen Ansatz bis noch vor wenigen Jahren ungelöst.

Ein beliebter Benchmark für Bildklassifizierungssysteme ist die ImageNet Large Scale Visual Recognition Challenge. Ein riesiger Datensatz mit mehr als einer Million Bildern muss von automatischen Systemen prozessiert werden. Jedes Bild soll zu einer von 1.000 vordefinierten Klassen wie zum Beispiel Gewehr oder Hammerhai zugeordnet werden. Der Gewinner der Challenge im Jahr 2011, dessen Algorithmus übrigens auf HoG basierte, erreichte eine Genauigkeit von ungefähr 74 Prozent. Jedes vierte Bild wurde also falsch klassifiziert. Das können Menschen mit Abstand besser! (Mehr darüber hier).

Doch mit welcher Methodologie erkennt ein Computer-Vision-System den Hammerhai und kann ihn vom Vorschlaghammer unterscheiden? Das erfahren Sie im zweiten Teil meines Beitrags zu Convolutional Neural Networks.

Kommentare
Einen Kommentar schreiben
Entschuldigung

Ihr Browser ist leider nicht aktuell genug.
Um diese Webseite zu benutzen, benötigen Sie einen aktuellen Browser
Wir empfehlen einen der folgenden Browser in der aktuellsten Version zu installieren.

Auf iOS Geräten sollte mindestens die Betriebssystem Version iOS 9 installiert sein.

Mozilla Firefox Google Chrome Microsoft Edge Internet Explorer