Wie funktioniert Stable Diffusion?
Im letzten Artikel habe ich gezeigt wie man ComfyUI Stable Diffusion am eigenen Rechner verwendet. Als interessierter ITler stellt sich nun die Frage: wie funktioniert Stable Diffusion? Wie kann die KI aus einem Text ein Bild generieren?
Wie funktioniert Stable Diffusion?
Für mich persönlich gehört Stable Diffusion zu den größten Erfindungen der letzten Jahren. Mit dem KI Modell wird aktuell die Art und Weise wie man Bilder erstellt revolutioniert. Artists werden dadurch entweder arbeitslos, oder haben mit dem AI Modell ein neues mächtiges Werkzeug um den kreativen Prozess massiv zu beschleunigen. Stable Diffusion ist unter folgendem Link erhältlich.
Text to Image
Ein zentrales Feature von Stable Diffusion ist die Möglichkeit aus einer Bildbeschreibung in Textform ein Bild zu erstellen. Diesen beschreibenden Text nennt man Prompt. Ein Prompt hast du vermutlich bereits benutzt um mit ChatGPT zu kommunizieren. Dort ist ein Prompt auch eine textuelle Eingabe auf die das KI Modell antwortet (bei ChatGPT mit einem Text).
Lernkurve
Ein praktischer Ansatz um Prompt Engineering zu lernen ist Try and Error. Man probiert Text aus, sieht sich das Bild an und ändert den Text für einen neuen Versuch. Es lohnt sich die einzelnen Testläufe samt Ergebnis abzuspeichern. Ich habe mir dafür eine Microsoft 365 Single Lizenz geholt und speichere die Ergebnisse in einem Excel. Der Ansatz ist deshalb vielversprechend, da es eine unendliche Anzahl möglicher Eingaben gibt und dir niemand sagen kann wie genau das Ergebnis aussieht. Manche Dinge funktionieren, manche nicht.
Erklärung für Laien
Eine einfache Erklärung der Funktionsweise für Laien ist folgende: Du kennst bestimmt noch alte Familienfotos von Weihnachten auf dem mindestens eine Person rote Augen hat. Der Effekt passiert, wenn man einen Blitz benutzt und das Licht direkt vom inneren des Auges auf den Film reflektiert wird. Heute kann man selbst mit einem billigen Smartphone solche Fotos nicht mehr machen, da eine Software die roten Augen automatisch korrigiert. Ein ähnlicher Algorithmus reduziert Fehler im Bild. Bei einem Smartphone ist weder die Optik noch der Kamerachip perfekt. Jeder hat produktionstechnisch leichte Ungenauigkeiten die in Fehlern im Bild resultieren. Auch diese sieht man nicht, die werden von einer Software entfernt.
Im Laufe der letzten Jahre wurden Millionen von Fotos geschossen, mit Texten kategorisiert und abhängig vom Inhalt mit anderen Filtern und Algorithmen bearbeitet (z.B. Portraits anders als Landschaften). Aus den Daten kann man nun ein KI Modell erstellen, dieses weiß, welche Algorithmen in welcher Reihenfolge bei welchem Typ Bild die besten Ergebnisse liefert. Und genau das ist Stable Diffusion! Mit dem einen Unterschied, dass das Ausgangsbild nicht über eine Kamera geschossen wurde, sondern ein zufälliges Rauschen ist. Aus dem zufälligen Haufen Punkte und einem Text der sagt: „das ist eine Landschaft mit einem Kind im Vordergrund“ werden nun die Algorithmen zur Fehlerkorrektur für genau diesen speziellen Anwendungsfall zig Male durchlaufen. Das Ergebnis ist dann ein fehlerkorrigiertes Bild mit den gewünschten Objekten.
Technische Erklärung
Für die technische Erklärung verweise ich auf das Paper zu High-Resolution Image Synthesis with Latent Diffusion Models in dem es um die erste Version von Stable Diffusion geht.
Der Text Prompt wird in Tokens zerlegt. Das sind meist Wörter, bei langen Wörtern wie Orkkrieger können das auch durchaus zwei Tokens sein. Über ein Lexikon des generierten Models wird jedes Token zu einem Vektor aus Zahlenwerten. In den Komponenten Transformer und CLIP (Contrastive Language Image Pretraining) werden die Vektoren mit trainierten Bildern kombiniert. Dabei werden diese Text-Bild Kombinationen noch gewichtet. Im so genannten U-NET (neuronales Netz) wird nun ein zufälliges Bild mit Hilfe der Eingangsvektoren zum Ausgangsbild. Dabei wird laufen Downsampling und Upsampling gemacht. Ein Encoder verrauscht das Bild, der Decoder entrauscht das Bild. In der Ursprünglichen Version wird ein 512×512 Pixel Bild auf 64×64 Pixel komprimiert bzw. gefaltet und danach hochskaliert.
Es klingt zwar wie Magie, jedoch bewährt sich dieser Workflow in der Praxis und jede neue Generation erstellt noch glaubwürdigere Bilder.
Erfahrung aus der Praxis
Das folgende Bild zeigt eines meiner Workflows von ComfyUI. Die Idee dahinter: man lässt das base Modell nur grob die Struktur aus dem Rauschen erstellen, alle Details werden durch das dafür optimierte refiner Modell erstellt. Man erkennt sehr gut, dass das untere Bild schon gut die Struktur vom Ork Krieger darstellt, das Bild aber immer noch stark verrauscht ist. Erst über den zweiten Step werden mit dem refiner Modell die passenden Details hinzugefügt. Da ich das Bild im Stil von digitaler Zeichnung erstellt habe ist das resultierende Ergebnis schon fast perfekt.
Fazit
Stable Diffusion ist meiner Meinung nach das derzeit eindrucksvollste AI Modell. Es zaubert aus einem zufälligen Haufen Punkte und einem beschreibenden Text ein Kunstwerk. Künstler werden nun arbeitslos, oder aber bringen ihr Handwerk auf eine neue Stufe. In jedem Fall wird die Arbeit mit Medien durch diese neuen Tools revolutioniert.