KI Bildgenerierung ausprobiert

Wie funkioniert Bildgenerierung per KI? In kleinem Maße irgendwas zwischen verstörend und fast brauchbar. Mithilfe von pix2pix können wir nachvollziehen, wie KI, auch von ChatGPT, Gemini und anderen funktioniert.

von Marc

Der Playground

Wie einfach kann man aus Zeichnungen echte Bilder erstellen?
Das habe ich ausprobiert. Mit ein paar Dutzend Bildern von mir, jeweils vor demselben neutralen Hintergrund, nur mit leicht unterschiedlicher Pose, und der pix2pix-Bibliothek habe ich versucht, Skizzen zu Bildern zu machen.
Und das Ergebnis ist tatsächlich ganz annehmbar. Es können Zeichnungen zu Profilbildern umgewandelt werden.

Info: Beim Ausprobieren wird das komplette Modell heruntergeladen (~50 MB).

Update 2025: Anscheinend haben sich die Parameter geändert. Die Ausgabe ist um 90° verschoben.

Wie funktioniert das Training?

Gezeichnete Version, Ausgabe und originales Bild (v. l. n. r.)

Das originale (rechte) Bild wird erst durch einen klassischen Algorithmus gejagt. Dieser erzeugt dann eine „gezeichnete“ Version aus den Kanten. Mithilfe dieser beiden Bilder kann die KI dann trainiert werden.

Das neuronale Netzwerk wird angewiesen zu lernen, wie das gezeichnete Bild als Eingabe und das echte Bild als Ausgabe zusammenhängen. Also praktisch: Welche Linien sind Gesichtsform? Welche Linien sind Augen? Bestenfalls kann das Netzwerk dann erkennen, wie Linien und das finale Bild irgendwie zusammenhängen.

Das Netzwerk wird dann trainiert, das Kantenbild (links) als Eingabe zu nutzen und Wege zu finden, um auf das Originalbild zu kommen. Im Hidden Layer werden dazu die Neuronen so lange angepasst, bis das Ergebnis sehr nah am Originalbild ist oder mir die Grafikkarte durchbrennt.

Training der ersten Epochen
Je mehr das Modell trainiert wird, desto besser ist das Ergebnis. In der obigen Timelapse kann man sehen, zu welcher Ausgabe dieselbe Zeichnung führt, wenn das Modell unterschiedlich lange trainiert wird.
Grob kann man sagen: Besonders die ersten Iterationen sehen schrecklich aus. Danach wird das Ergebnis deutlich besser, bis wir irgendwann eine Art Plateau entwickeln, bei welchem die Ergebnisse nur minimal besser werden, wir aber trotzdem noch viel Rechenleistung benötigen.
Abzuschätzen, wann etwas „gut genug“ ist, ist also wichtig.

Lasst uns weiter denken

Bewegtbild: Vom Original zur Zeichnung zur Ausgabe.
Damit kann man nun eine Menge anstellen, beispielsweise das Generieren eines Videos. In dem Fall wurde das originale Video (links, offensichtlich) in einzelne Bilder zerstückelt und in eine Zeichnung umgewandelt (oben, offensichtlich). Diese wurde in die KI eingegeben und das generierte Bild (rechts, offensichtlich) wieder als Video zusammengesetzt. So kann man sehen, was unsere KI sieht. Und vor allem, was nicht passiert:

Es gibt keine temporale Komponente. Das Video flackert. Jedes Bild wird nur einzeln für sich betrachtet und damit einzeln verarbeitet. Was fehlt, ist die Zuhilfenahme von vorherigen Bildern zur Stabilisierung.

Lasst uns größer denken

Für ein gutes Ergebnis braucht man vor allem eins: mehr von allem.

Das Einfachste zuerst: Es muss die Trainingszeit angepasst werden. Das Modell wurde ein paar Stunden mit einer Nvidia GTX 1060 trainiert. Das ist eine (Stand 2019) übliche Desktop-Grafikkarte. Normalerweise wird ein KI-Netzwerk jedoch mit mehreren Hundert bis Hunderttausend Beschleunigern trainiert, welche nicht nur einzeln schon ein Vielfaches an Leistung haben, sondern auch im Hintergrund wochenlang an der Lösung der Gleichung brüten können.

In diesem Experiment wurden auch nur ein paar Dutzend Bilder aufgenommen. Und auch wenn es dem Algorithmus leicht gemacht wurde, indem wir nur ein „Szenario“ haben, d. h. eine Person mit ähnlichen Bildern, ist das deutlich zu wenig. Wollen wir mehr Varianten haben, etwa andere Kleidung, bräuchten wir deutlich mehr Trainingsdaten. Eine richtige Version würde Tausende oder Zehntausende Bilder benötigen, je nach Umfang. Und mehr Bilder würden wiederum bedeuten, dass wir eine deutlich längere Trainingszeit bräuchten, um die Einzelheiten und Details sinnvoll antrainieren zu können.

Weiterhin sind auch einige Details des Versuchsaufbaus nicht korrekt: So wird ein Algorithmus zur Kantenerkennung genutzt, um das gezeichnete Bild zu erstellen. Und auch wenn es nicht schlecht aussieht: So würde niemand etwas malen. Es gibt also eine gewisse Diskrepanz zwischen mathematisch „richtigem“ Zeichnen, worauf die KI trainiert wurde, und dem, was ein normaler Mensch gezeichnet hätte. Im Bestfall hätten wir also Personal angeheuert, welches die Kantenbilder selbst zeichnet, damit die KI von echten Zeichnungen lernt und später echte Zeichnungen besser erkennen kann.

Für den Anfang aber nicht schlecht.

Weiteres

Im Video dazu bin ich auf andere Aspekte, unter anderem den praktischen Ansatz des Trainings, genauer eingegangen.

Dieser Test basiert auf dem pix2pix-tensorflow-Projekt. Mehr Informationen gibt es unter anderem hier.