Bilderkennung und Bildgenerierung von Google
Automatische Bilderkennung
Eins von vielen visionären Zielen, die Google sich in seiner Forschung gesetzt hat, ist die automatische Bilderkennung durch Computer, die Menschen beim Sortieren ihrer unzähligen Schnappschüsse unterstützen können. In einem Zeitalter, in dem es kaum eine Mahlzeit schafft, ihre Bestimmung zu erfüllen und gegessen zu werden ohne sich vorher der öffentlichen Meinung auf Facebook, Instagram&Co. preisgeben zu müssen, könnte so mancher eine Vollzeitstelle damit besetzen, seine Fotos sortieren und archivieren zu lassen. Wenn es nach Google geht, soll damit bald Schluss sein. Wer nicht die Muse hat, seine Bilder akribisch in Ordnern zu sortieren, der braucht künftig nur noch einen Suchbegriff in seiner Fotoapp einzutippen, der Rest wird automatisch erledigt – soweit die Vision. Auch wenn das im Detail dann doch noch Zukunftsmusik ist (wenn auch vielleicht nicht ganz so fern wie man denken könnte), so hat sich in der automatischen Bildklassifikation schon Einiges getan.
Maschinelles Lernen
Maschinelles Lernen hat das Ziel, dass der Computer möglichst selbstständig Einheiten in entsprechende Kategorien einordnen kann. Mögliche Gebiete sind dabei unter anderem die Bewertung von Rezensionen als positiv oder negativ, die Zuordnung von Texten zu Themengebieten wie Sport, Wirtschaft oder Wetter, oder eben, wie in unserem Fall, die Klassifikation von Bildern.
Bei überwachtem maschinellen Lernen gibt es im ersten Schritt für den Computer ein Trainingsset aus Daten, aus denen er die relevanten Merkmale (Features) extrahieren kann. Zu dieser Menge an Trainingsdaten gibt es eine Menge von – manuell eingetragenen – Kategorien (Labels), anhand derer der Computer „lernt“, welche Features auf welches Label hinweisen. Bei einer Evaluation des angewendeten Lernalgorithmus’ erhält man also unmittelbares Feedback darüber, wie hoch die Anzahl der korrekt klassifizierten Einheiten ist. Vereinfacht gesprochen bedeutet das bezüglich der Bilderkennung, dass der Computer aus jedem Bild, das als „Banane“ gelabelt ist, unter anderem die Features „gelb“ und „gebogen“ extrahieren könnte. Das würde allerdings bedeuten, dass er eine unreife oder bereits verfaulte Banane nicht als solche klassifizieren würde. Bei der Evaluation werden solche Schwachstellen aufgedeckt, in Anlehnung daran wird der Lernalgorithmus verbessert, um anschließend erneut evaluiert zu werden und so weiter, bis man ein zufriedenstellendes Ergebnis erreicht. Dabei ist das Ziel keineswegs ein reines „auswendig lernen“ der richtigen Label innerhalb der Trainingsdaten, vielmehr soll der Algorithmus Verallgemeinerungen ableiten, die er bei ungesehenen Daten anwenden kann – denn durch die Fähigkeit, mit neuen Daten sinnvoll umgehen zu können, kann der Computer eine ernstzunehmende Unterstützung dabei sein, Ordnung in die Datenflut zu bringen.
Beim unüberwachten maschinellen Lernen fehlen die gelabelten Daten und damit das unmittelbare Feedback. Der Computer extrahiert Features ohne vorgeschrieben zu bekommen, auf welche Klasse diese Features hinweisen und vor allem, ohne zu wissen, was alles tatsächlich in einer Klasse ist.
2012 bauten Wissenschaftler aus dem Google X Labor eines der größten neuronalen Netzwerke, mit denen unüberwachtes maschinelles Lernen getestet wurde. Das Netzwerk wurde von seinen Entwicklern mit unzähligen Bildern aus Katzenvideos (ja, wirklich, auch Google liebt Katzen!) gefüttert und sollte daraus Features extrahieren – mit einem erstaunlichen Ergebnis: Die drei Klassen, die erkannt wurden, waren Katzen, menschliche Gliedmaßen und Gesichter. Also drei Klassen, deren Vorkommen in diesen Videos – rein gefühlsmäßig – relativ wahrscheinlich sein dürfte.
So viel zur Vorgeschichte der automatischen Bilderkennung durch Computer, jetzt ein klein wenig zur Systematik, mit der ein solches neuronales Netzwerk arbeitet.
Neuronale Netzwerke in der Bilderkennung
Künstliche neuronale Netzwerke sind ein Teilgebiet der künstlichen Intelligenz und sind besonders für die Forschung im Gebiet der Neuroinformatik von Interesse. Das künstliche neuronale Netzwerk mit dem Google zur Zeit arbeitet ist eine Art Computergehirn, dessen Struktur und Vernetzung sich am tierischen zentralen Nervensystem orientiert. (Um an die Kapazitäten eines menschlichen Gehirns heranzureichen, sind die 16.000 Prozessoren nicht annähernd ausreichend.) Ein solches Netzwerk ist in ca. 10 bis 30 Schichten aus künstlichen Neuronen angelegt. Die erste Schicht Neuronen extrahiert nun Features aus einem vorliegenden Bild, danach wird das leicht veränderte Bild weitergeleitet zur nächsten Neuronenschicht, die es weiter bearbeitet. Google beschreibt das in einem Post ungefähr so: Das Netzwerk arbeitet mit einer Feedback-Schleife, die darauf basiert, alles, was es zu erkennen glaubt, zu verstärken. Sieht also eine Wolke ein wenig wie ein Vogel aus, so wird diese Tendenz von Schicht zu Schicht verstärkt, bis das Netzwerk letztendlich davon überzeugt ist, einen Vogel zu erkennen und damit quasi aus dem Nichts einen Vogel erschaffen hat.
„Inceptionism“ – Schritt für Schritt entstehen Kunstwerke
Womit wir an dem Punkt angekommen sind, an dem die Computer bei Google ins Träumen geraten: Die Wissenschaftler haben den Prozess der Bilderkennung auf den Kopf gestellt – der Computer soll jetzt eigenständig Bilder produzieren. Der Input für den Computer besteht dazu aus einem Label, aus dem er dann ein Bild zeichnet. Dieses Bild setzt sich aus der Summe aller vorhergesehenen Bilder mit diesem Label in allen neuronalen Schichten zusammen – und wird daher in erster Linie ziemlich bunt. Die so entstehenden Bilder haben etwas Psychedelisches und beflügeln auch die eigene Phantasie, weisen aber oft auch beeindruckende Parallelen auf.
Hat man den Computer dazu aufgefordert, eine Hantel abzubilden, so hat er das
eigentlich ziemlich gut gemeistert – die Hantel ist zu erkennen. Das Problem an diesem Beispiel ist aber, dass die Hantel fast immer mit einem Arm abgebildet ist, der sie gerade hochhebt. Das kommt daher, dass in den Trainingsdaten, mit denen der Lernalgorithmus trainiert wurde, die Mehrzahl der Hanteln nicht alleine, sondern mit einem Arm, der sie hochhebt, abgebildet wurden. Der Computer zog daraus den Schluss, dass diese beiden Dinge nur eines sind und zusammen erst eine Hantel ausmachen.
Ähnlich verhält es sich, wenn man dem Computer aufträgt, in einem wolkigen Himmel ein Motiv zu erkennen. Stellt man diese Aufgabe einem Netzwerk, dessen Trainingsdaten zu einem großen Teil aus Tieren bestanden haben, so gibt es einen klaren Prior für Tiere. Das bedeutet nichts Anderes als: Je mehr Tiere dem Computer in seinen Trainingsdaten über den Weg gelaufen sind (d.h. je höher der prozentuale Anteil an Tieren im Trainingsset ist), desto eher ist er dazu geneigt, auch in einem neuen Bild wieder Tiere zu erkennen – simple Wahrscheinlichkeitsrechnung. Bestehen seine Trainingsdaten also beispielsweise zu 90% aus Tieren und zu 10% aus Menschen, so berechnet er seine Wahrscheinlichkeit, ein Tier zu sehen, als wesentlich höher. Dadurch sind dann Kunstwerke wie diese entstanden.
Ein solcher Prior, der in diesem Fall durch die spezifische Art der Trainingsdaten entsteht, sorgt dementsprechend für eine Art Übergenerierung: Der Computer findet beinahe zwanghaft in allem ein Motiv. Welche Motive er zu erkennen glaubt, hängt stark von den Trainingsdaten ab.
Wirklich beeindruckend sehen die Bilder aber aus, wenn dem Computer „freie Hand“ gelassen wird. Diese und noch andere Bilder könnt Ihr Euch hier hier anschauen.
Diese Bilder entstehen dadurch, dass der Lernalgorithmus inklusive der Feedbackschleife auf seine eigenen Outputs, jeweils verändert durch Zoomen, angewendet wird. Es gibt dementsprechend keinerlei Grenzen, was die „Phantasie“ in der Bilderstellung des neuronalen Netzwerks angeht…
Aufgrund eines hohen Interesses entschied sich Google dazu, den Code zu veröffentlichen, um Programmierern und anderen Interessierten die Möglichkeit zu geben, ihre eigenen Bilder bearbeiten zu lassen. Die so entstanden Werke könnt Ihr unter #deepdream bewundern – oder es einfach selbst ausprobieren! Viel Spaß dabei!
Das Internet ist mittlerweile überfüllt von Bildern wie diesen, bei denen User ihre eigenen Bilder durch Googles Code verändern ließen…
Rückmeldungen