Wenn Maschinen Kunst schaffen: KI-generierte Bilder mit GANs

Moderne KI-Modelle versprechen das Unmögliche: Kreativität. Ob Schreiben von Poesie oder Generieren von Kunst. Ein Blick auf die Ursprünge der Technologie.

In Pocket speichern vorlesen Druckansicht 5 Kommentare lesen
Non,Fungible,Token,(non-fungible,Token),-,Nft,-,Digital,Art

(Bild: ArtemisDiana/Shutterstock)

Lesezeit: 17 Min.
Von
  • Timo Zander
Inhaltsverzeichnis

Wer regelmäßig soziale Medien besucht, der begegnet zwangsläufig Kreationen der KI-Forschungsteams bei OpenAI, welche immer wieder die Grenzen zwischen Realität und Science-Fiction verschwimmen lassen. Die Methoden der Künstlichen Intelligenz entwickeln sich rasant. Immer neue Technologien versprechen, das bisher Unmögliche möglich zu machen.

Die Popularisierung von ChatGPT und die damit zusammenhängende gesellschaftliche Debatte hat derweil einen großen Teilbereich der KI-Forschung überschattet: nämlich die Sprach-Bild-Synthese, also das Erstellen von KI-generierten Bildern anhand natürlicher Spracheingabe. Angefangen haben solche Modelle mit schwammigen, niedrig aufgelösten Pixelmosaiken – doch Techniken wie DALL-E 2 von OpenAI oder Stable Diffusion von Stability AI beeindrucken durch ihre Echtheit und den Detailgehalt ihrer Ausgabe. Ihre Möglichkeiten sind längst über Trivialitäten, wie die Ausgabe von Bildern eines Hundes, hinausgewachsen (Abbildung 1).

DALL·E-2-Ausgabe für "a tiger in a lab coat with a 1980s Miami vibe, turning a well-oiled science content machine, digital art" [ein Tiger im Laborkittel in einem 1980er Miami-Vibe, der eine gut geölte Wissenschafts-Inhalts-Maschine dreht, digitale Kunst] (Abb. 1).

(Bild: OpenAI)

Nicht nur die Positionierung von Objekten, sondern auch Adjektive oder kulturelle Referenzen lassen sich angeben. Das Training derartiger Modelle erfordert Abermillionen von Bildern, um diese Präzision möglich zu machen. Doch die Ursprünge dessen sind deutlich greifbarer als es die Komplexität der generierten Bilder vermuten lässt.

Eine wichtige Grundlage schafft die KI-Generierung von zufälligen Inhalten. Solche Modelle können keine natürliche Sprache verarbeiten, sondern schlicht real aussehende, zufällige Bilder von Personen, Landschaften, Hunden und Weiterem erstellen. Das theoretische Fundament dahinter schafft das Konzept der sogenannten Generative Adversarial Networks.

Der KI-Forscher Ian Goodfellow präsentierte das Konzept der Generative Adversarial Networks (GANs) 2014 mit nur 27 Jahren. Das Ziel ist, ein Modell zu kreieren, das durch seine Struktur zufällige und abwechslungsreiche, aber ebenso sinnvolle Ausgaben erzeugen kann (Abbildung 2). Hierfür verwendet Goodfellow zwei Convolutional Neural Networks ("faltendes neuronales Netz"). Das erste Netz, der Generator, erhält eine Zufallszahl als Eingabe und erstellt hieraus eine Ausgabe, also etwa ein Bild. Diese Zufallszahl ist ein stochastisches Rauschen, was dafür sorgen soll, dass die Ausgaben stets unterschiedlich und vielfältig sind. Da das eigentliche Ziel eines GAN die Generierung von Bildern ist, ist somit am Ende auch nur das Generator-Netz von Bedeutung.

Die Struktur eines Generative Adversarial Network wird bestimmt durch zwei neuronale Netze, den Generator und den Discriminator (Abb. 2).

Der Gegenspieler zu diesem Netz ist der Discriminator. Sein Zweck ist es, eine Eingabe, also ein Bild, entgegenzunehmen und zu beurteilen, ob dieses real oder künstlich generiert ist. In der Praxis wird das Discriminator-Netzwerk anhand bestimmter Objekte – Menschen, Wälder, Enten oder Ähnliches – trainiert, sodass es eine Wahrscheinlichkeit ausgibt, mit der das Eingabebild echt ist. Für das Training ist das Netzwerk daher unabdinglich, auch wenn es schlussendlich an Bedeutung verliert: Ist der Generator ausreichend trainiert, bedarf es keiner Analyse dessen Ausgaben mehr.

Das Training des gesamten Modells basiert auf der Idee des adversarialen (antagonistischen) Trainings. Statt also miteinander zu lernen, treten beide neuronalen Netze gegeneinander an und versuchen in jedem Schritt über die Stärken und Schwächen des Gegners hinauszuwachsen. Der Generator erstellt eine Ausgabe, welche der Discriminator dann untersucht und bewertet. Ausgehend davon versucht der Generator im nächsten Schritt die Ausgabe noch täuschend echter zu gestalten. Das initiale Problem ist jedoch, dass beide Netzwerke zu Beginn untrainiert sind. Dieses Henne-Ei-Problem wird dank einer sogenannten Value-Funktion, manchmal auch Loss-Funktion, gelöst, die das korrekte Verhalten beider Netzwerke formalisiert (Abbildung 3). Die originale Funktion von Goodfellow ist analog zu einem Klassifikationsproblem aufgebaut, schließlich versucht der Discriminator stets die Eingaben korrekt als real oder gefälscht zu charakterisieren.

Die Value-Funktion von Ian Goodfellow beinhaltet die Wahrscheinlichkeiten, dass echte Bilder und Fakes korrekt als solche erkannt werden (Abb. 3).

Die Netzwerke verfolgen unterschiedliche Ziele. Der Discriminator soll alle Eingaben korrekt als real oder falsch identifizieren und somit die Value-Funktion maximieren. Denn diese gibt die Wahrscheinlichkeiten an, ein reales Bild als korrekt zu erkennen, während gefälschte Bilder als Täuschung entlarvt werden. Dagegen versucht der Generator falsche Bilder real wirken zu lassen, also den zweiten Summanden der Funktion zu minimieren. Seine Ausgaben, die alle per Definition gefälscht sind, sollen real wirken. Das Prinzip dieser Value-Funktionen ist immer ähnlich, auch bei allen in der Literatur verfügbaren Alternativen zu Goodfellows Variante. Jede dieser Funktionen kommt mit eigenen Vor- und Nachteilen einher.

Methodisch wird auf das Gradientenverfahren gesetzt, das im Machine Learning der De-facto-Standard für Optimierungsprobleme ist. Das Prinzip hilft bei der Suche nach einem Minimum beziehungsweise Tal einer Funktion: In jedem Schritt folgt der Algorithmus der steilsten Richtung abwärts, bis dieser am Ende hoffentlich im Minimum endet. Aus Performancegründen wird dieser Gradient nicht ausgerechnet, sondern stochastisch approximiert.

Mithilfe des Gradienten lassen sich die Parameter beider neuronalen Netze anhand der Value-Funktion optimieren. Beide Netze lernen abwechselnd: Zunächst trainiert der Discriminator bis zu k-mal und aktualisiert seine Parameter entsprechend. Darauf folgt dasselbe Training mit dem Generator, dessen Gradient jedoch abweicht von dem des Diskriminators, da beide Netzwerke einen unterschiedlichen Einfluss auf die Value-Funktion haben. Das Wiederholen dieses Prozederes sorgt dann, so die Hoffnung, für Konvergenz.

Das Training, das Goodfellow in schlanke vier Schritte herunterbricht, ist in der Realität hochkomplex. Die Daten und Eingaben, mit denen gearbeitet wird, haben eine hohe Informationsdichte und sind hochdimensional, sodass es häufig nicht einfach ist, heuristisch zu entscheiden, welche Methoden und Verfahren für spezifische Anwendungen die besten Resultate liefern. Die Forschung trifft daher auf immer neue Schwierigkeiten und Probleme. Eines der häufigsten ist das Phänomen des Mode Collapse.

Der Generator soll vielfältige und abwechslungsreiche Ausgaben erzeugen, doch oft beobachtet man, dass die Ausgaben sehr konzentriert auf einen Teilbereich aller Möglichkeiten sind. Statt zum Beispiel mannigfaltige Landschaften, von tropischen Wäldern bis hin zu afrikanischen Savannen, zu schaffen, erzeugt das Modell nur gräuliche See-Landschaften. Vom weiten Spektrum an zufälligen Eingabevariablen führen also viele zu einer kleinen Gruppe an Ausgaben. Daher spricht man im Englischen auch von Collapse – dem Zusammenbruch vieler Eingaben zu wenigen Ausgaben (Abbildung 4).

Die roten Punkte im linken Bild formen keinen Kreis, sondern konzentrieren sich in der unteren rechten Ecke. Ein Symptom für Mode Collapse (Abb. 4).

Während des Trainings entdeckt der Generator häufig eine bestimmte Ausgabe, welche den Discriminator besonders gut täuscht, sodass er immer weiter ähnliche Ausgaben produziert. Mit weiterem Training verschlimmert sich dieses Problem dann zunehmend, bis schlussendlich nur eine kleine Teilmenge aller Möglichkeiten übrig bleibt. Die Ursache liegt in einer falschen Optimierungsreihenfolge. Die Value-Funktion muss min-max optimiert werden; passiert das nicht, tritt häufig ein Mode Collapse auf. Das geschieht nicht bewusst, sondern durch das abwechselnde Training beider Netzwerke. Hierdurch variiert oft die Lerngeschwindigkeit beider, was dazu führen kann, dass sich die Reihenfolge praktisch umdreht.

Die Bekämpfung des Problems bedient sich der Intuition der Nutzerinnen und Nutzer. Genauso wie Mode Collapse eingangs entdeckt wurde – alle Ausgaben des Netzwerks ähneln sich sehr stark – wird dem auch entgegengewirkt. Der Discriminator muss einen Ähnlichkeitscheck implementieren. Das heißt, die Ähnlichkeit eines Output-Batches wird quantifiziert und dem Discriminator als Wert übergeben. Entdeckt dieser, dass alle Ausgaben quasi gleich aussehen, bestraft er den Generator hierfür, indem er die Ausgaben mit hoher Sicherheit als falsch klassifiziert.

Neben Mode Collapse existiert auch eine viel fundamentalere Schwierigkeit: Das Modell kann schlicht auch nach tagelangem Training nur inhaltsloses Pixelrauschen erzeugen. Zu den vielfältigen möglichen Ursachen hierfür zählt eine Dysbalance im Training. Wenn eines der beiden Netze stark dominiert, kann der Gegner praktisch nicht mehr lernen und bleibt unbestimmt lange schlecht in seiner Performance – das offenbart die Erfolgsquote der Netze, oft Score genannt. Der Score eines Netzes schnellt bei Divergenz rasch zu 100 Prozent, während das andere Netz durchgehend versagt.

Das dominierende Netz nutzt die Schwächen im Gegner perfekt aus, sodass kein Raum für Verbesserung übrig bleibt. Ein guter Vergleich ist der Sport: Training mit einem hoffnungslos überlegenen Gegner führt selten zu einer maßgeblichen Verbesserung. Stattdessen lautet der allgemeine Rat, dass die Fähigkeiten des Gegners nur etwas über den eigenen liegen sollten, um das bestmögliche Trainingsergebnis für beide zu erzielen. Ganz wie bei der Divergenz, führt ein zu großes Ungleichgewicht zu Stillstand. Diese Divergenz zu beheben ist in der Praxis deutlich schwieriger als der Kampf gegen Mode Collapse.

Zwar existieren viele hochspezifische Lösungsansätze, eine optimale Lösung für jeden Fall existiert aber nicht. Das Anpassen der Lernraten beider Netzwerke führt jedoch häufig zum gewünschten Erfolg. Hierzu existieren spezifische Regeln verschiedener Autoren, um die genaue Geschwindigkeit zu wählen. Das Erreichen von Konvergenz darf allerdings nicht mit dessen Praktikabilität verwechselt werden – Konvergenz, die Jahre benötigt, ist in der Praxis wenig hilfreich. Denn häufig sind in der Praxis die Gradienten so klein, dass die Optimierung im Training effektiv in winzigen Schritten vonstattengeht.

Neuronale Netze umfassen unzählige Ebenen, bestehend aus Neuronen, die mit der jeweils nächsten Ebene verbunden sind. Schließlich werden all diese Verbindungen mithilfe einer Aktivierungsfunktion aggregiert und zu einer Zahl kondensiert. Wählt man diese Funktion ungeschickt, kann es zu kleinen Gradienten – auch vanishing genannt, also verschwindende Gradienten – kommen. Die Sigmoidfunktion ist eine beliebte Wahl hierfür, da sie alle reellen Zahlen auf das Intervall von 0 bis 1 schrumpft.

Die Ableitung des Sigmoidfunktion ist von besonderer Relevanz, da das Gradientenverfahren diese nutzt – und genau diese macht eine Sigmoidfunktion so ungeeignet. Funktionswerte der Ableitung sind alle numerisch sehr klein (Abbildung 5). Bestenfalls sind die Werte bei 0,2, sehr häufig liegen sie aber näher an 0. Das sorgt dafür, dass das Training deutlich ausgebremst wird, da die Schrittgröße im Gradientenverfahren schrumpft.

Die Sigmoidfunktion bildet alle Eingaben im Intervall zwischen 0 und 1 ab. Ihre Ableitung konzentriert ihre Masse symmetrisch um den Ursprung (Abb. 5).

Eine beliebte Alternative und Lösung des Problems ist die Nutzung einer linearen Funktion, die bei negativen Eingaben 0 ausgibt. Die sogenannte Rectified Linear Unit Funktion hat sich in der Praxis durch ihre Einfachheit und dennoch gute Performance bewährt und ist daher immer weiter verbreitet. Die Ableitung erzeugt numerisch größere Werte, sodass die Größenordnung des Gradienten steigt (Abbildung 6).

Die Rectified Linear Unit Funktion ist eine alternative Aktivierungsfunktion, welche ausschließlich für positive Zahlen einen Wert größer als 0 zurückgibt. Ihre Ableitung ist eine einfache Stufenfunktion (Abb. 6).

Nahezu alle Anwendungen des Machine Learnings erfordern Unmengen an Daten, dazu zählen auch Generative Adversarial Networks. So kommt es, dass sich viele Paper oft mit denselben Datensets befassen und diese auf verschiedene Arten analysieren und nutzen, um neue Architekturen oder Feinheiten zu erforschen. Eine sehr beliebte Sammlung ist CelebA, die Daten von 200 000 Gesichtern von rund 10 000 Menschen enthält, deren Bilder eine Auflösung von 178x218 Pixeln und gewisse Labels – wie Geschlecht, Alter oder Haarfarbe – besitzen. Allein auf GitHub finden sich über 2000 Paper, die dieses Datenset in ihrer Forschung nutzen: Zu den Anwendungen zählen das Generieren von Bildern, Untersuchungen zu Deepfakes oder fortgeschrittene Dekompressionsmethoden.

Mithilfe dieses Datensatzes gefälschte Fotos von Menschen zu erzeugen, ist allerdings schwierig. Die schlechte Auflösung lässt die Ausgaben nicht gerade fotorealistisch wirken, besonders nicht in Zeiten von 4K-Handykameras. Das Problem mit höheren Auflösungen in Generative Adversarial Networks ist jedoch, dass die erhöhte Anzahl an Pixeln das Training erschwert. Der Discriminator kann einfacher Artefakte erkennen und ist im Allgemeinen präziser, schlicht aufgrund der erhöhten Menge an Informationen, die ihm vorliegen. Das verlangsamt das Training und benötigt zudem deutlich mehr Speicherplatz sowie Rechenpower. Die Paper, die dennoch auf das Generieren hochauflösender Fotos von Menschen abzielen, suchen daher nach speziellen GAN-Architekturen, um dieses Unterfangen zu vereinfachen.

Tero Karras und sein Forschungsteam haben genau das erreicht: Das Team hat den CelebA-Datensatz in einer höheren Auflösung neu generiert, um hiermit seine neue Architektur, sogenannte Progressive GANs, zu trainieren. Die Idee ist, die Auflösung im Laufe des Trainings kontinuierlich zu erhöhen. Angefangen mit 4x4-Pixel-Bildern, erhöhen die Autoren immer dann die Auflösung, sobald eine gewisse Stabilität im Training erreicht wurde. Das selbige gilt für den Discriminator, der immer größere Fotos bewerten und klassifizieren kann (Abbildung 7).

Der Trainingsprozess im Paper von Karras und Mitautoren zeichnet sich durch das Hinzufügen neuer, höherdimensionaler Ebenen aus (Abb. 7).

(Bild: Tero Karras et al., 2018)

Der Kernpunkt der Idee ist, dass das Netzwerk eine gewisse Stabilität aufweist, bevor man es mit einer höheren Auflösung konfrontiert. Auch der Übergang ist darauf ausgelegt, die Stabilität zu bewahren. Anstatt die neue Ebene für höhere Auflösungen schlicht einzufügen, wird diese langsam eingeführt (Abbildung 8).

Die Architektur innerhalb der Progressive GANs, die die höheren Auflösungen langsam einführt (Abb. 8).

(Bild: Tero Karras et al., 2018)

Das langsame statt abrupte Einführen vermeidet einen plötzlichen Schock und der vorhandene Trainingsfortschritt lässt sich nahezu ohne Verlust auf die neue Auflösung übertragen. Das geschieht mithilfe eines Bypasses: Das neuronale Netz erhält zwei Verbindungen ausgehend von der alten, niedrig aufgelösten Ebene. Eine durch die neue, größere Ebene hindurch und eine, die diese umgeht. Daraus bildet sich ein gewichtetes Mittel, das der Verbindung zur neuen Ebene kontinuierlich mehr Gewicht verleiht.

Zusätzlich wird nach jeder Ebene das Ausgabebild entweder mithilfe der Nearest-Neighbor-Methode hochskaliert oder mittels Averaging herunterskaliert. Das Umwandeln dieses verschwommenen Resultates in ein sinnhaftes Bild erfolgt dann in den darauffolgenden Ebenen. So gelingt es der Progressive-GAN-Architektur zunehmend realitätsnahe Fotos von nicht existierenden Personen zu schaffen. Dennoch sind die Ausgaben trotzdem häufig eher qualitativ minderwertig und offenbaren deutlich, dass sie computergeneriert sind (Abbildung 9).

Die Ergebnisse des Progressive GAN können sowohl sehr gut als auch mangelhaft sein (Abb. 9).

(Bild: Tero Karras et al., 2018)

Dasselbe Team um Karras ist auch für die Erschaffung der StyleGAN-Architektur verantwortlich, die ihre Prominenz vor allem durch die populäre Webseite thispersondoesnotexist.com erlangt. Die neuere Architektur bügelt bestehende Probleme in Progressive GAN aus.

Die Resultate des Progressive GAN sind beeindruckend, jedoch bietet dieses Netzwerk den Nutzern keinerlei Möglichkeiten, die Ergebnisse zu beeinflussen. Ein Paper von Park und Co-Autoren aus 2019 ändert das, da die Nutzerinnen und Nutzer die dort generierten Landschaften gestalten können. Der GauGAN, benannt nach dem Maler Paul Gauguin, ist in der Lage täuschend echte Landschaften zu erzeugen, die sich mithilfe zweier Werkzeuge beeinflussen lassen: der Segmentation Map und dem Style Image.

Ein Beispiel verschiedener Eingaben und deren generierter Resultate mithilfe des GauGAN (Abb. 10).

(Bild: Taesung Park et al., 2019)

Die Segmentation Map fungiert wie eine Schablone und gibt an, wo sich welches Element auf dem finalen Bild befinden soll. Sechs Strukturen können unterschieden werden: Wolken, Himmel, Berge, Gras, Bäume und Wasser. Diese sind mit einer jeweils anderen Farbe in der Segmentation Map kodiert. Sowohl der Generator als auch der Discriminator nutzen dieses Bild dann für ihre Zwecke (Abbildung 11). Der Discriminator braucht diese Information, um im Trainingsprozess dafür zu sorgen, dass der Generator die Schablone einhält. Eine unzureichende Übereinstimmung zwischen Segmentation Map und Generator-Ausgabe führt somit zur Bestrafung durch den Discriminator.

Die Struktur des GauGAN-Modells zeigt, an welchen Stellen die Eingaben eine Bedeutung haben (Abb. 11).


Das Style Image hingegen ist nur dafür nötig, die allgemeine Stimmung der Szene zu schaffen. Ist die Ausgabe eher ein rötlicher Sonnenuntergang oder eine blau-grüne Sumpflandschaft? Das Bild wird daher zu Beginn des Modells genutzt und in Mittelwert und Varianz kodiert (Abbildung 12). Mit den Parametern wird dann die Zufallszahl für den Generator generiert, sodass die Ausgabe eine stilistische Ähnlichkeit aufweist.

Das Style Image wird mithilfe eines Convolutional Neural Network kodiert (Abb. 12).

Das Umwandeln des Bildes in zwei Zahlen passiert in einem Convolutional Neural Network, welches die Vielfalt an Informationen aus den Pixeln über mehrere Ebenen hinweg in zwei Zahlen zusammenfasst. Dies ist eher heuristisch motiviert, besonders im Vergleich mit der Segmentation Map. Dennoch erzielt der GauGAN hierdurch sehenswerte Ergebnisse.

DALL-E 2 und ähnlich futuristisch wirkende Technologien können einschüchternd erscheinen. Aus Science-Fiction wurde in den letzten Jahren zunehmend Realität und das Zeitalter von Fotografie als eine unbezweifelbare Quelle der Wahrheit ist vergangen. Doch die Ursprünge dieser fortgeschrittenen Methoden müssen nicht notwendigerweise hochkomplex sein.

Die Idee von Generative Adversarial Networks basiert auf der Intuition, dass Wettbewerb ein Weg zur Verbesserung ist. Ian Goodfellow hat dieses formalisiert und mit einer mathematischen Grundlage versehen, sodass weitere Forschungsteams diese in den letzten Jahren zunehmend verbessern, verfeinern und weiterentwickeln konnten. Nicht nur die frei wählbare Value-Funktion, sondern auch die Struktur und die genauen Architekturen der beiden Netze schaffen Spielraum für Optimierungen.

Den möglichen Anwendungsszenarien sind keine Grenzen gesetzt. Theoretisch lässt sich alles generieren, wofür genügend Trainingsdaten vorhanden sind – und nicht bloß menschliche Gesichter oder Landschaften. Die präsentierten Beispiele bieten einen ersten Überblick über die Vielfältigkeit der zugrundeliegenden Technik und wie Autorinnen und Autoren diese nutzen und anpassen.

Timo Zander
ist Senior Software Developer bei Senacor Technologies. Er interessiert sich für Open Source, das JavaScript-Universum und aufstrebende Technologien.

(mdo)