c't 9/2023
S. 60
Titel
Bilder malen mit Stable Diffusion
Bild: KI Stable Diffusion | Bearbeitung: c‘t

Wortmalerei

Schnell schöne Bilder generieren mit dem Stable Diffusion WebUI

Ganz ohne künstlerisches Talent generieren Sie mit Stable Diffusion schöne Bilder. Schon kurze Texteingaben reichen für erstaunliche Grafiken, fotorealistische Bilder und Gemälde. Mit den folgenden Tipps kriegen Sie ruckzuck ansehnliche Bilder hin.

Von Liane M. Dubowy

Ein Blogbeitrag oder eine Präsentation sehen mit bunten Bildern gleich viel ansprechender aus. Jede Social-Media-Plattform verlangt ein Profilbild und auf Plattformen wie Twitch und Discord machen sich selbst entworfene Emotes (Emojis) ausgezeichnet. Mit StableDiffusion können Sie solches Bildmaterial leicht selbst gestalten. Künstlerisches Talent brauchen Sie dafür nicht, ein paar kreative Ideen allerdings schon: Liefern Sie einem KI-Bildgenerator wie Stable Diffusion die richtigen Stichworte, spuckt dieser Bildmaterial aus, das zu Ihren Wünschen passt. Anders als bei Midjourney schaut beim Experimentieren mit Stable Diffusion auf dem lokalen PC niemand bei Formulierungsversuchen über die Schulter und die Experimente kosten nur ein wenig Strom. So können Sie sich entspannt herantasten. Mit ein paar abstrakten Worten ist beim „Prompt Engineering“ – so der Fachbegriff für das Formulieren einer Texteingabe – allerdings kein Blumentopf zu gewinnen. Mit den folgenden praktischen Tipps gelangen Sie schnell zu ansehnlichen Ergebnissen.

Das Stable Diffusion WebUI macht es möglich, den KI-Bildgenerator ganz bequem grafisch zu steuern: Text eintippen, Modifikatoren ergänzen, optional an ein paar Schiebereglern ziehen und den Vorgang per Klick starten. Anschließend verfeinern Sie die Ergebnisse gezielt. Oder Sie fangen mit einer groben Skizze an und lassen die KI daraus ein Bild zeichnen.

Ein Prompt, also der Eingabesatz für das KI-Sprachmodell, muss weder lang noch kompliziert sein. Um beispielsweise ein Titelbild für einen Blogbeitrag zu Linux zu erzeugen, passten wir die Bildmaße an und gaben den Text „a little robot penguin in a cyberpunk environment, illustration“ mit auf den Weg. Das Ergebnis kann sich sehen lassen und ist für einen Blogbeitrag völlig ausreichend.

Midjourney, Stable Diffusion und andere KI-Bildgeneratoren bewerten Texteingaben unterschiedlich. Dieser Artikel bezieht sich konkret auf Stable Diffusion 1.5 sowie das in diesem Heft vorgestellte WebUI und dessen wichtigste Funktionen.

Im besten Fall produziert Stable Diffusion schon aus einer kurzen Texteingabe mit den Standardoptionen ansehnliche Bilder.
Im besten Fall produziert Stable Diffusion schon aus einer kurzen Texteingabe mit den Standardoptionen ansehnliche Bilder.

Der erste Prompt

Bildbeschreibung, Klick, kurz warten, fertiges Bild. Das klingt zwar eigentlich ganz einfach, doch die Ergebnisse entsprechen längst nicht immer den Erwartungen. Eine Reihe von Faktoren beeinflussen die Bildgestaltung, darunter auch das Seitenverhältnis und die Auflösung. Die Ergebnisse hängen außerdem stark davon ab, welches Sprachmodell zum Einsatz kommt und mit welchen Bildern es trainiert wurde. Stable Diffusion WebUI lädt bei der Installation ein Modell namens v1-5-pruned-emaonly.safetensors herunter. Weitere Modelle gibt es kostenlos auf Huggingface.co zum Download, speichern Sie sie im Unterverzeichnis models/Stable-diffusion des WebUI. Im Test haben wir gute Erfahrungen mit dem Modell Protogen x5.3 (Photorealism) gemacht (siehe ct.de/ydhq). Es lieferte in fast allen Versuchen mit dem obigen Beispielprompt akzeptable Ergebnisse. Über die Auswahlliste oben links wechseln Sie bei Bedarf das Modell.

Solide Englischkenntnisse mit umfangreichem Wortschatz helfen beim Prompt Engineering. Deutsch versteht Stable Diffusion bisher kaum, Sie müssen Ihren Prompt daher in englischer Sprache formulieren. Sie können den Text aber auch in Ihrer Muttersprache verfassen und mit einem Dienst wie DeepL Translate ins Englische übersetzen.

Aber jetzt zur Praxis: Tippen Sie etwas ins Feld „Prompt“ des WebUI, das die Bildart, eine Beschreibung und den gewünschten Stil enthält. Also zum Beispiel „a digital illustration of a penguin, 3d render“. Klicken Sie auf „Generate“ und warten Sie, bis im Feld rechts das Bild fertig ist. Anschließend können Sie einzelne Elemente des Prompts variieren und ihn erneut anwenden: Soll es eher eine Zeichnung oder ein Gemälde sein, ersetzen Sie „3d render“ durch „drawing“, „water color painting“, „oil painting“ oder „pencil sketch“.

Nicht alle Ergebnisse sind auf Anhieb gut, es lohnt sich, gleich mehrere Bilder zu generieren. Setzen Sie dazu den Schieberegler „Batch count“ beispielsweise auf 4. Sie erhalten dann stets eine Übersicht mit allen vier Ergebnissen sowie die vier einzelnen Bilder. Das WebUI speichert die Bilder automatisch im Unterverzeichnis stable-diffusion-webui/outputs/txt2img-images in einem Unterordner mit dem aktuellen Datum. Das Überblicksbild liegt im Ordner „txt2img-grid“. In den Einstellungen („Settings“) können Sie sowohl den Pfad als auch das Dateinamenmuster anpassen.

Mit dem Begriff „water color painting“ simulieren Sie den Effekt von Wasserfarben., Bild: erstellt mit Stable Diffusion
Mit dem Begriff „water color painting“ simulieren Sie den Effekt von Wasserfarben.
Bild: erstellt mit Stable Diffusion

Zurück zum Prompt: Geben Sie der KI möglichst konkrete Hinweise mit bildhafter Sprache in Substantiven und Adjektiven. Belassen Sie es bei zwei bis drei bildlichen Elementen für den Inhalt. Sprachmodelle können Grammatik auswerten, in der Praxis ist sie für Stable Diffusion aber nicht wichtig. Allerdings lohnt es sich, mehrere Formulierungen auszuprobieren, auch wenn diese sinngleich sind. Auch die Reihenfolge ist von Bedeutung, wichtige Dinge sollten Sie an den Anfang setzen.

Prompt verfeinern

Haben Sie einen Prompt gefunden, dessen Ergebnisse in die richtige Richtung gehen, können Sie ihn weiter verfeinern und zusätzliche Details ergänzen – bei unserem Pinguin zum Beispiel mit „standing in a snowy landscape, background blue sky“. Längere Prompts erzeugen allerdings nicht unbedingt bessere Ergebnisse. Statt zusätzlichen Detailbeschreibungen sollten Sie beispielsweise die Lichtsituation vorgeben: „bright room in daylight“ erzeugt ein helles Zimmer, „golden hour“ hingegen wärmeres Licht im Abendrot mit intensiveren Farben. Wie Sie unliebsame Elemente ausschließen, beschreiben wir weiter unten.

Zunächst noch ein paar hilfreiche Begriffe zum Ausprobieren: Soll das Bild wie ein 3D-Rendering wirken, eignen sich die Begriffe „3d render“ oder „octane render“ (so heißt ein Rendering-Algorithmus). „Unreal Engine“ erzeugt eher eine Optik wie aus Videospielen. Verspielter und kantiger wirkt „low poly“, niedlicher wirds mit „cute“, „tiny“ oder „kawaii“, etwas düsterer mit „film noir“. Bei unruhigen Bildern helfen beispielsweise „symmetric“, „highly detailed“, „ultra-detailed“ oder „4K“. Gerät ein Bild zu eintönig, färben Sie es mit einem Farbschema ein, etwa „blue and orange color scheme“. Als Referenz für den Stil können Sie der KI den Namen einer Künstlerin oder eines Designers mitgeben, beispielsweise mit „art by Frida Kahlo“ oder „art by studio ghibli“. Auf diese Weise können Sie auch mehrere Stile mischen.

Wollen Sie lieber ein Foto imitieren lassen, starten Sie den Prompt mit „a photo of“. Ergänzen Sie zusätzlich Angaben zum Licht („golden hour“, „afternoon“, „sunshine“) und zur Art der Aufnahme („portrait“, „headshot“, „ultrawide shot“, „extreme closeup“, „macro shot“). Tiefenunschärfe, also einen unscharfen Hintergrund liefert „depth of field“ oder kurz „dof“. Brauchen Sie das Bild in einer bestimmten Form, etwa als rundes Logo oder Profilbild, dann sollten Sie auch das ergänzen: „a round logo“.

Ein rundes Logo oder Profilbild erzeugt beispielsweise „a round logo“., Bild: erstellt mit Stable Diffusion
Ein rundes Logo oder Profilbild erzeugt beispielsweise „a round logo“.
Bild: erstellt mit Stable Diffusion

Kommt bei Ihren Versuchen partout nicht das heraus, was Sie ins Feld tippen, ist es Zeit, das Sprachmodell zu wechseln. Dann fehlten womöglich passende Inhalte in den Trainingsdaten.

Weitere Tipps für die Formulierung von Prompts haben wir in [1] bereits vorgestellt. Auf Websites wie Prompthero.com können Sie sich von anderen inspirieren lassen und Begriffe aus deren Prompts in eigene Versuche übernehmen.

Katzen kennt das Modell Inkpunk-Diffusion offensichtlich gut … , Bild: erstellt mit Stable Diffusion
Katzen kennt das Modell Inkpunk-Diffusion offensichtlich gut …
Bild: erstellt mit Stable Diffusion
… Pinguine dürften im Trainingsmaterial aber dünn gesät gewesen sein., Bild: erstellt mit Stable Diffusion
… Pinguine dürften im Trainingsmaterial aber dünn gesät gewesen sein.
Bild: erstellt mit Stable Diffusion

Schwerpunkte & Stile

Manchmal betont die KI hartnäckig einen falschen Aspekt. Dann können Sie Ihre Eingaben selbst gewichten. Markieren Sie dazu einen Begriff und drücken Sie ein oder mehrmals die Tastenkombination Strg+PfeilHoch, dann wird aus Penguin beispielsweise (Penguin:1.1). Während die KI alle Begriffe standardmäßig mit einem Gewicht von 1 berücksichtigt, erhält das Token „Penguin“ mit dem Wert 1,1 mehr Bedeutung.

Haben Sie gut funktionierende Parameter gefunden oder möchten Sie eine Bilderreihe in einem erkennbar ähnlichen Stil erzeugen, können Sie Teile des Prompts im WebUI als Stil speichern. Tragen Sie diese dazu ins Feld „Prompt“ ein und entfernen Sie die Inhaltsbeschreibung, lassen Sie also zum Beispiel nur „cyberpunk environment, blue ambiance, soft light“ übrig. Klicken Sie anschließend auf das Diskettensymbol unter der Schaltfläche „Generate“, vergeben Sie einen aussagekräftigen Namen und bestätigen Sie mit „OK“. Anschließend können Sie den so gespeicherten Stil auf eine Beschreibung im Prompt-Feld anwenden und damit die hinterlegten Parameter erneut nutzen. Die Funktion lässt sich auch verwenden, um Teile von sehr umfangreichen Prompts auszulagern.

An den Schräubchen drehen

Die Ergebnisse von Stable Diffusion variieren, sobald Sie die im WebUI verfügbaren Optionen verändern – dazu zählt auch die Bildgröße. Je größer das Bild, umso mehr Elemente sind enthalten und das Bild wird zunehmend chaotischer. Soll beispielsweise nur ein Pinguin auf dem Bild zu sehen sein, funktioniert das mit 512 × 512 Pixeln meist recht gut. Bei höheren Auflösungen sind es dann gern zwei und mehr Pinguine. Brauchen Sie später unbedingt ein größeres Bild, können Sie stattdessen die Option „Hires.fix“ aktivieren. Setzen Sie dann beispielsweise „Upscale by“ auf 2, um ein Bild in der Größe 1024 × 1024 zu erhalten.

Die „Sampling Method“ können Sie in der Regel auf „Euler a“ belassen. Die „Sampling steps“ wiederum geben vor, in wie vielen Schritten Stable Diffusion das Bild um weitere Details ergänzt. Die Standardeinstellung 20 produziert in vielen Fällen gute Ergebnisse. Fehlen dem Bild Details, sollten Sie die Zahl auf 25, 40 oder mehr hochsetzen. Das verlängert allerdings die Rechenzeit.

Der Schieberegler „CFG Scale“ (Classifier Free Guidance Scale) legt Stable Diffusion mehr oder weniger an die Leine: Eine niedrigere Zahl lässt der KI mehr Freiheit. Das führt häufig zu schöneren Ergebnissen, die sich aber zunehmend von Ihrer Vorgabe entfernen. Bei einer höheren Zahl hält sich die KI strenger an den vorgegebenen Prompt. Das funktioniert aber nur, wenn die Beschreibung akkurat genug ist. In der Regel fahren Sie mit einer Einstellung zwischen 6 und 10 gut.

Die unter „Seed“ angegebene Ziffernreihe initialisiert den Zufallszahlengenerator. Steht hier „–1“ wird für jeden Vorgang ein neuer zufälliger Seed verwendet. Gefallen Ihnen die Ergebnisse eines Seeds besonders gut, können Sie ihn notieren und erneut verwenden. Das eignet sich gut, um lediglich einzelne Elemente eines Prompts zu ändern: beispielsweise nur den Bildtyp.

In der Weboberfläche spielen Sie sehr einfach mit den Optionen und passen Auflösung und Seitenverhältnis des Bildes an.
In der Weboberfläche spielen Sie sehr einfach mit den Optionen und passen Auflösung und Seitenverhältnis des Bildes an.

Blödsinn ausschließen

Mit ein paar Tests wird deutlich, womit die KI Probleme hat: Erde sieht aus wie Kaffeepulver, ein Baum wie Brokkoli und Personen und Tiere haben oft mehr Gliedmaßen als nötig. Finger sollte man generell durchzählen. Für verkorkste Gesichter gibt es eigens eine Option im WebUI: Setzen Sie den Haken bei „Restore faces“, um sie zu verbessern.

Sieben Finger, mehrere Daumen, drei Arme: Hält sich so etwas wacker in allen Versuchen, ein Bild zu generieren, sollten Sie versuchen, das mit einem Negativprompt auszuschließen. Im Prompt selbst haben Verneinungen nichts zu suchen und werden häufig ignoriert. Tragen Sie Ungewolltes stattdessen ins Feld direkt darunter ein. Bei Bildern von Menschen empfehlen wir Begriffe wie „extra limbs, face cut, bad proportions, cropped head, fused fingers, extra fingers“.

Stören Wasserzeichen oder eine Signatur, schreiben Sie vorsorglich „watermark, signature“ in den Negativprompt. Um die Qualität der Bilder zu verbessern, können Sie die generischen Begriffe „lowres, error, cropped, worst quality, low quality, jpeg artifacts, out of frame“ versuchen. Eine Garantie gegen schlechte Qualität oder niedrige Auflösung ist das allerdings nicht.

Bilder erweitern mit Outpainting

Haben Sie ein Bild einmal generiert, können Sie es auch mit denselben Parametern nicht einfach in einer anderen Größe reproduzieren. Bei einer höheren Auflösung oder einem anderen Bildformat malt die KI oft unerwünschte Elemente ins Bild. Gefällt es Ihnen so, wie es ist, können Sie das Bild stattdessen mit „Outpainting“ nach außen erweitern. Dann versucht Stable Diffusion, außen passende Bereiche anzufügen.

Wechseln Sie dazu in den Reiter „img2img“, laden Sie das gewünschte Bild links im Fenster hoch und ergänzen Sie oben den ursprünglichen Prompt. Ganz unten bei „Script“ wählen Sie „Poor man’s outpainting“ oder alternativ „Outpainting mk2“. Mit „Outpainting Direction“ bestimmen Sie, auf welchen Seiten das Bild erweitert werden soll. Mit den Schiebereglern lässt sich der Übergangsbereich verwischen. Die verschiedenen Optionen ergänzen ähnliche Farbbereiche oder generieren mehr oder weniger neue Inhalte. Passt der Prompt gut zum Bild, können Sie den Schieberegler bei CFG-Scale weit nach rechts ziehen und die Denoising Strength erhöhen. Die Anzahl der Schritte (Steps) sollte beim Outpainting besser bei 50 oder gar 100 liegen.

Bildhafte Vorgabe: img2img

Stable Diffusion nimmt im Reiter „img2img“ neben Text ergänzend ein Bild oder eine Skizze entgegen. Statt des Seeds nutzt die KI es als Ausgangspunkt und fügt Rauschen hinzu. Die einzelnen Schritte ergänzen dann Details aus dem Prompt. Wie viel Rauschen hinzukommt, bestimmt der Schieberegler „Denoising strength“: Steht er weiter links, unterscheidet sich das Ergebnis nur in Details vom Ausgangsbild. Steht er weiter rechts, sind die Unterschiede gravierender. Der Standard „0,75“ liegt dazwischen. Die Funktion eignet sich auch dazu, ein ähnliches Bild in einer anderen Stilrichtung zu generieren, also beispielsweise im Prompt „pencil sketch“, „concept art“ oder „film noir“ zu ergänzen.

Die Funktion img2img eignet sich auch dazu, Bilder Schritt für Schritt aufzubauen. Fertigen Sie beispielsweise eine farbige Skizze an und legen Sie im Prompt den Bildinhalt fest. Generieren Sie nun so lange Bilder, bis Sie ein akzeptables Ergebnis erhalten. Anschließend reichen Sie dieses an img2img weiter und ergänzen weitere Bildelemente. Diesen Vorgang können Sie so lange wiederholen, bis das Bild ganz Ihren Vorstellungen entspricht.

Bilder perfektionieren

Wollen Sie nur einzelne Teile eines Bildes verändern, können Sie die KI gezielt diese Bildbereiche neu generieren lassen. Die Funktion nennt sich „Inpaint“ und verbirgt sich ebenfalls im Tab „img2img“. Ein Klick auf „Send to inpaint“ transferiert Bild und Prompt schnell zur Weiterbearbeitung dorthin. Alternativ ziehen Sie das Bild aus dem Dateimanager ins Feld links im Tab „img2img“. Auch der Prompt oben darf nicht fehlen. Erinnern Sie sich nicht mehr daran, schieben Sie das Bild zunächst in den Reiter „PNG Info“. Ist die Datei unverändert, verrät das WebUI rechts daneben den ursprünglichen Prompt sowie weitere gewählte Parameter inklusive Seed und Sprachmodell. Ein Klick auf die Schaltfläche „Send to img2img“ transferiert die Infos zu img2img.

In „Inpaint“ übermalen Sie misslungene Bereiche mit dem Mauszeiger in schwarzer Farbe. Soll der übermalte Bildbereich verschwinden (beispielsweise ein zusätzlicher Pinguin oder ein überzähliger Flügel), aktivieren Sie den Maskenmodus „Inpaint masked“ und darunter bei „Masked content“ die Option „fill“. Mit „Generate“ legen Sie los und die KI füllt die Stelle mit Farben aus dem Bild.

Gefällt ihnen beispielsweise ein kleiner Pinguin, den die KI gemalt hat, doch das Gesicht ist missraten und die Füße fehlen, übermalen Sie diese Bereiche und aktivieren „original“ oder „latent noise“, dann generiert die KI diesen Bereich nochmal neu. Farbige Elemente lassen sich in den Registern „Sketch“ und „Inpaint Sketch“ ergänzen. Ersteres verändert dabei aber das gesamte Bild.

Mit „Inpaint“ perfektionieren Sie die KI-generierten Bilder und lassen beispielsweise eine überzählige Insel verschwinden.
Mit „Inpaint“ perfektionieren Sie die KI-generierten Bilder und lassen beispielsweise eine überzählige Insel verschwinden.

Ausblick

Schon mit den hier beschriebenen Vorgehensweisen haben Sie viele Möglichkeiten, Bilder zu erzeugen. Stable Diffusion kann aber noch deutlich mehr und mit dem WebUI können Sie diese Möglichkeiten auch nutzen. Es ist beispielsweise erstaunlich einfach, weitere Sprachmodelle zu testen, das WebUI mit Erweiterungen zu verbessern oder gar mit eigenen Bildern zu trainieren.

Schöne Bilder sind mit Stable Diffusion auf dem heimischen PC ohne Weiteres machbar. Eine sehr konkrete Bildvorstellung umzusetzen erfordert allerdings manchmal langes Feilen am Prompt, das Ausprobieren verschiedener Modelle und Einstellungen sowie viele Versuche. So manches Foto werden Sie deshalb wohl auch künftig einfach schnell selbst knipsen. Wer sich auf KI-Kreativität einlässt und die Werke noch etwas nachbearbeitet, kann aber mit den Resultaten leicht Social Media, Websites und anderes bebildern. (lmd@ct.de)

Alle Downloads: ct.de/ydhq

Kommentieren