Stable Diffusion lokal auf einer AIME Workstation mittels AIME-MLC betreiben
Stable Diffusion ist ein Deep-Learning Text-to-Image-Modell, das 2022 vom Start-up Stability.ai als Open Source veröffentlicht wurde und mit dessen Hilfe detaillierte Bilder auf der Grundlage von Textbeschreibungen generiert werden können. Es ähnelt zuvor schon veröffentlichten Modellen, wie DALL-E 2, Midjourney, oder Imagen. Stable Diffusion ist allerdings das erste frei nutzbare Diffusion Modell zur automatisierten Erstellung von Bildinhalten mittels künstlicher Intelligenz.
Der Einsatz solcher KI-Modelle zur Generierung von Bildern aus Textbeschreibungen führt zu beeindruckenden Ergebnissen. Durch seine geringe Modellgröße von ca. 8 GB ist Stable Diffusion zwar mit den anderen oben genannten Modellen nicht direkt vergleichbar, die Bilder mit erheblich höherer Qualität erzeugen können, es passt dafür aber auch in den Speicher günstiger Konsumer-GPUs und erzeugt trotzdem qualitativ hochwertige Bilder. Dank des Deep Learning Entwickler-Frameworks AIME-MLC ist die Installation und der Betrieb von Stable Diffusion ohne großen Aufwand und kostenlos möglich. Es lässt es sich in wenigen Minuten einrichten und lokal auf dem eigenen Server oder der eigenen Workstation betreiben - vorausgesetzt, eine entsprechend leistungsfähige GPU ist vorhanden. Der Installationsprozess und die Grundlagen von Stable Diffusion werden im Folgenden beschrieben. Hierauf folgt eine genauere Betrachtung der Funktionsweise des Modells und der Wirkunsgweise seiner Parameter auf die Qualität der erzeugten Bilder. Weitere Informationen zum AIME Maschine Learning Container Framework finden sich im AIME MLC-Blogartikel.
Mittlerweile ist Stable Diffusion in Version 2 erschienen. Dies macht Version 1 allerdings nicht obsolet, da beide Versionen sich in den Ergebnissen und damit ihren Anwendungsfällen erheblich unterscheiden. Die zum Training genutzten Bilder und die auf das Modell angewendeten Filter unterscheiden sich stark. Version 2 setzt auf einen verbesserten Copyright-Schutz, hierdurch lassen sich kaum noch persönliche Stile von Künstlern realisieren oder bekannte Personen nachahmen. Die Qualität der erzeugten Bilder wurden dagegen stark verbessert. Zu Stable Diffusion V2 veröffentlichen wir demnächst einen weiteren Blogartikel.
Installation von Stable Diffusion
Als erstes laden wir die Quelldaten des Modells vom offiziellen GitHub-Repository, entweder durch Herunterladen der Code-Dateien oder direkt mittels git per Konsole in ein Stammverzeichnis eigener Wahl:
user@client:/$
> cd /home/username/path/to/desired/folder/
> git clone https://github.com/aime-labs/stable-diffusion
Auf AIME Servern und Workstations ist der Rest dank dem AIME MLC Framework recht einfach. In der Konsole erzeugen wir einen neuen Docker-Kontainer, in dem eine PyTorch-Entwicklungsumgebung inklusive CUDA-Treiber und allem, was sonst für den Betrieb von Stable Diffusion nötig ist, schon vorinstalliert sind und erstellen den Kontainer mit
user@client:/home/username/path/to/desired/folder$
> mlc-create stbl_diff-container Pytorch 2.0.1-aime -w=/home/username/path/to/desired/folder/
Anschließend öffnen Sie einfach den Kontainer:
user@client:/home/username/path/to/desired/folder$
> mlc-open stbl_diff-container
Der Rest findet dann innerhalb des Kontainers statt. Der Workspace des Kontainers bildet das in den Kontainer verlinkte Verzeichnis des Host-Systems ab. Dort finden wir nun den Stammordner von Stable Diffusion. Wir wechseln in das Stammverzeichnis von Stable Diffusion:
[stbl_diff-container] user@client:/workspace$
> cd stable-diffusion
Da der Kontainer selbst bereits eine virtuelle Entwicklungsumgebung darstellt, können wir auf die Aktivierung einer virtuellen Umgebung wie venv oder conda env komplett verzichten. Es sind daher lediglich drei Zeilen Code für die Installation der Abhängigkeiten von Stable Diffusion auf einem AIME MLC Kontainer nötig:
[stbl_diff-container] user@client:/workspace/stable-diffusion$
> sudo apt-get install libglib2.0-0 libsm6 libxrender1 libfontconfig1 libgl1
> sudo pip install -r requirements.txt
Zu guter Letzt benötigen wir noch das Modell von Stable Diffusion in Version 1.5. Das Modell ist lizenziert mit der CreativeML Open RAIL++-M License.
[stbl_diff-container] user@client:/workspace/stable-diffusion$
> curl -o sd-v1-5.zip http://download.aime.info/public/models/stable-diffusion-v1-5-emaonly.zip
> sudo apt install unzip
> unzip sd-v1-5.zip
> rm sd-v1-5.zip
Somit ist Stable Diffusion einsatzbereit. Die Modellgewichtungen 'v1-5-pruned-emaonly.ckpt' und die Lizenz befinden sich in dem Ordner '/stable-diffusion-v1-5-emaonly/'. In den folgenden Beispielen wird dieser Checkpoint per default verwendet. Wenn der Einsatz eines anderen Checkpoints erwünscht ist, kann dieser über den Kommandozeilenparameter --ckpt, folgend von dem Speicherort der Checkpoint-Datei, geändert werden.
Beachten Sie, dass die oben beschriebene System-Konfiguration nur ausgeführt werden sollte, wenn ein neuer Kontainer erstellt wird. Ansonsten öffnen Sie den schon erstellten Kontainer einfach mit mlc-open stbl_diff-container (sofern dieser nicht bereits ausgeführt wird). Navigieren Sie dann mit >cd stable-diffusion in das Stammverzeichnis, um das Modell zu verwenden.
Bild-Generierung
Es gibt 2 Methoden zur Erstellung von Bildern:
- Einzelbilderzeugung mit direkter Prompt-Eingabe
- Bulk-Bilderzeugung mittels Prompt-Liste
Schauen wir sie uns nacheinander an:
1. Single Image Generation with Direct Prompt
Um ein Bild zu generieren, führen wir den folgenden Befehl in der Konsole im Stammverzeichnis Stable Diffusion aus:
[stbl_diff-container] user@client:/workspace$
> python scripts/txt2img.py --prompt "a photo of a pink cube, black background" --plms --skip_grid --n_samples 1
Das Modell erzeugt nun ein BIld, das der Beschreibung entspricht. Gespeichert wird es standardmässig im Verzeichnis /home/username/path/to/desired/folder/stable-diffusion/outputs/txt2img-samples/
Um weiteren Einfluss auf den Prozess der Bilderzeugung nehmen zu können, bietet das Modell einige Eingabe-Parameter, die weiter unten genauer beschrieben werden. So kann man z.B. mit dem Parameter --n_samples die Anzahl der erzeugten Bilder und mittels --W bzw. --H die gewünschten Bildabmessungen verändern:
wodurch folgendes Bild erzeugt wird:
[stbl_diff-container] user@client:/workspace$
> python scripts/txt2img.py \
--prompt "a photo of a pink cube, black background" \
--W 768 --H 512 \
--plms
2. Bulk-Bilderzeugung mittels Prompt-Liste
Wenn man eine Vielzahl von Bildern gleichzeitig erzeugen möchte, spart man durch Nutzung der Batch-Erzeugung einiges an Zeit, die sonst für das Laden des Modells für jeden Prompt-Aufruf aufgewendet werden würde. Im Bulk-Prozess bleibt das Modell im GPU-Speicher geladen.
Folgendes Script startet die Bulk-Bilderzeugung. Vor dem Ausführen erzeugt man die entsprechende Textdatei namens prompts.txt im Stammverzeichnis der Stable Diffusion Installation und füllt diese Datei zeilenweise mit entsprechenden Prompts. Hier benötigen die einzelnen Prompts pro Zeile keine Anführungszeichen. Die zusätzlichen Parameter werden weiter unten genauer erklärt.
[stbl_diff-container] user@client:/workspace$
> python scripts/txt2img.py \
--from-file prompts.txt \
--outdir outputs/bulk-images \
--skip_grid \
--ddim_steps 100 \
--n_iter 3 \
--W 512 \
--H 512 \
--n_samples 3 \
--scale 8.0 \
--seed 119
Benchmarking
Die zur Bilderzeugung benötigte Zeit ist abhängig von der Leistungsfähigkeit der hierzu verwendeten GPU. Zum Vergleich erzeugen wir auf allen in der folgenden Tabelle dargestellten GPUs Bilder mittels
[stbl_diff-container] user@client:/workspace$
> time python scripts/txt2img.py \
--prompt 'a photograph of an astronaut riding a horse' \
--scale 7.5 \
--ddim_steps 50 \
--n_iter 3 \
--n_samples 1 \
--plms
Das obige Skript erzeugt ein Bild in 50 DDIM-Steps unter Verwendung des PLMS-Samplers. Die Erklärung dieser Parameter folgt weiter unten. Die ersten beiden Iterationen sind 'Aufwärmschritte'.
Der Vergleich verschiedener GPUs wie RTX 3090, RTX 3090Ti, A6000 und A100 führt zu den folgenden Ergebnissen:
Im Folgenden werden die obigen Ergebnisse zusammen mit der Ladezeit des Modells zum Vergleich tabellarisch aufgeführt:
GPU TYPE | ZEIT ZUM LADEN DES MODELLS | PROCESSING-ZEIT | GESAMTZEIT |
---|---|---|---|
RTX 3090 | 12,95 s | 5,64 s | 18,59 s |
RTX 3090Ti | 12,24 s | 4,95 s | 17,19 s |
A5000 | 13,06 s | 6,07 s | 19,13 s |
A6000 | 13,35 s | 5,83 s | 19,18 s |
A100 | 12,35 s | 4,35 s | 16,7 s |
Standardmäßig verwendet Pytorch float32 (full precision), um Modellparameter darzustellen. Auf GPUs mit weniger Speicher kann es zu Speicherplatzmangel (OOM: out of memory) kommen. Eine mögliche Lösung für dieses Problem ist die automatische Umwandlung der Tensoren in eine kleinere Speichergröße wie float16. Dies erfordert etwa 10 GB VRAM bei full precision und 9 GB mit Autocast-Präzision. Letzteres optimiert die Speichernutzung und ist schneller, verliert aber an Genauigkeit.
Skript-Parameter
Stable Diffusion verfügt über eine Vielzahl von Parametern, mit denen man Inhalt und Qualität der erzeugten Bilder beeinflussen kann. Der Bildinhalt wird natürlich am stärksten von der textlichen Beschreibung, dem Prompt, bestimmt. Doch auch die anderen Skript-Parameter üben einen starken Einfluss auf die Qualität des Ergebnises aus. Deren Standard-Einstellungen erzeugen zwar gute Bilder, doch es lohnt sich, mit dem Prompt sowie den verschiedenen Parametern zu experimentieren.
Zunächst folgt ein kurzer Überblick über die vom Skript verwendeten Parameter. Danach gehen wir anhand von Beispielen tiefer auf diese Parameter ein und erklären ihre Funktionsweise anhand von Beispielen.
Das Stable-Diffusion-Skript kann mit folgenden Kommandozeilenargumenten an die eigenen Vorstellungen angepasst werden. Diese lassen sich auch mittels der Eingabe von >python scripts/txt2img.py --help aufrufen.
ARGUMENT | DESCRIPTION |
---|---|
--prompt | "englischer Satz in Anführungszeichen" beschreibt das zu generierende Bild. Der Standardwert ist "a painting of a virus monster playing the guitar". |
--H | Ganzzahl gibt die Höhe der generierten Bilder (in Pixel) an. Der Standardwert ist 512. |
--W | Ganzzahl gibt die Breite der generierten Bilder (in Pixel) an. Der Standardwert ist 512. |
--n_samples | Ganzzahl gibt die Batch-Göße an, also wie viele Samples für jede gegebene Prompt-Eingabe erstellt werden sollen. Der Standardwert ist 3. |
--from-file | "Dateipfad" gibt den Pfad zu einer Datei mit Prompt-Textenan, die für die Bulk-Generierung von Bildern verwendet werden soll. ProZeile wird ein Prompt in englischer Sprache erwartet. |
--ckpt | "Dateipfad" gibt den Dateipfad zum Modell-Checkpoint an. Der Standardwert ist "models/ldm/stable-diffusion-v1/model.ckpt". |
--outdir | "Dateipfad" gibt das Ausgabeverzeichnis an, in dem dasgenerierte Bild gespeichert werden soll. Der Standardwert ist"outputs/txt2img-samples". |
--skip_grid | lässt die automatische Erstellung des Übersichtbildes aus, welchessonst standardmässig erzeugt wird und alle erzeugten Bilder als Gitterdarstellt. |
--ddim_steps | Ganzzahl gibt die Anzahl der Abtastschritte (samplingsteps) im Diffusion-Prozess an. Eine Erhöhung dieser Zahl verbessert das Ergebnis, erhöht dabei aber die Berechnungszeit. Der Standardwert ist50. |
--plms | aktiviert den PLMS Sampler |
--dpm_solver | aktiviert den DPM Sampler, viel schneller als DDIM oder PLMS und konvergiert nach weniger Schritten. |
--n_iter | Ganzzahl gibt an, wie oft die Sampling-Schleife ausgeführtwerden soll. Effektiv dasselbe wie --n_samples, aber verwenden Sie diesstattdessen, wenn ein OOM-Fehler auftritt. Siehe den Quellcode zurErläuterung. Der Standardwert ist 2. |
--scale | Float spezifiziert dem Classifier Free Guidance (CFG) Wert. Dies ist eine Art "Kreativitäts- vs. Prompt-Skala". Je niedriger, desto mehr KI-Kreativität. Je höher, desto mehr hält sich das Modell an denPrompt-Text. Standard ist 7.5. |
--seed | Ganzzahl ermöglicht das Setzen des Zufallsstartwerts für reproduzierbare Ergebnisse. Der Standardwert ist 42. |
precision | Bewertung nach verfügbarem GPU-Speicher mit voller oder Autocast-Präzision. Standard ist Autocast-Präzision. |
Prompt-Format
Der Inhalt eines generierten Bildes hängt davon ab, wie detailliert der Prompt die umzusetzende Idee beschreibt. Die Art dieser Textbeschreibung wird mittlerweile als Prompt-Engineering oder Promptologie bezeichnet. Die wichtigsten zu berücksichtigen Faktoren sind die Reihenfolge der beschreibenden Worte (Priorität der Wörter), wobei die erstplatzierten Wörter vom Modell als am wichtigsten betrachtet werden. Weiterhin sind die im Prompt verwendeten 'Modifikatoren' wichtig die den Stil oder die Stimmung des Bildes beschreiben. Soll z.B. ein Gemälde oder ein Foto generiert werden? Im Falle einer Fotografie: Welcher Stil, welche Kamera, welches Objektiv, welche Beleuchtung soll Einfluss nehmen?
Es ist also nicht nur das künstlerische Medium wichtig, sondern auch die zu erreichende Ähnlichkeit mit dem ausführenden Künstler/Illustrator/Photographen. Auch welche Emotionen transportiert werden soll oder welche Ästhetik erreicht werden soll, kann beschrieben werden. Und abschließend gibt es noch 'magische Worte', die sich als verlässlich für die Maximierung der Ausgabequalität erwiesen haben:
- Verbesserung von Qualität, Kontrast und Details:
"HDR, UHD, 8k, 64k, highly detailed, professional, trending on artstation, unreal engine, octane render" - Texturen hinzufügen, Beleuchtung optimieren:
"studio lightning, cinematic lightning, golden hour, dawn" - lebendigere Bilder:
"vivid colors, colorful, action cam, sunbeams, godrays" - Hintergrund unscharf machen, um das Motiv hervorzuheben:
"bokeh, DOF, depth of field" - historische Fotos:
"high-resolution scan, historic, 1923" - ...
Einen Einstieg in das Prompt-Engeneering bietet dieses Prompt-Buch von OpenArt. Es bietet einen guten Überblick mit einer Vielzahl von Beispielen. Die folgenden Bilder zeigen den Unterschied in der Beleuchtung, welcher durch den Prompt
A Affenpinscher dog sitting in the middle of a street of a TV tower Berlin
erzeugt wird. Die verwendeten Parameter sind: Sampler DPM++ mit 20 DDIM steps, CFG 11.0 und Seed 927952353.
Schon das simple Beispiel des Würfels zeigt, wie sehr sich der Bildinhalt durch einfache Anpassungen des Prompt-Textes verändert:
Bildabmessungen
Die Qualität der ausgegebenen Bilder hängt stark von der Genauigkeit des Beschreibungstextes und des darzustellenden Bildkontextes in Bezug auf die Bildabmessungen ab. Möchte man ein Portrait erzeugen (Bildratio < 1), gibt aber die Bildabmessungen einer Landschaftsaufnahme an (Bildratio > 1), wird der erzeugte Bildinhalt eventuell nicht das erwartete Ergebnis liefern. Oft wird der interpretierte Kontext dann wiederholt - so werden in unserem Würfel-Beispiel bei einer Breite von 1024 Pixeln gleich mehrere Würfel erzeugt.
Die maximal mögliche Anzahl der erzeugten Bilder pro Durchlauf hängt von den gewählten Abmessungen ab und wird durch den zur Verfügung stehenden Speicher der GPU eingeschränkt.
Standardmäßig erzeugt Stable Diffusion Bilder mit 512×512 Pixeln. Bei der Anpassung der Bildabmessungen muss sichergestellt bleiben, dass sowohl Höhe als auch Breite ein Vielfaches von 8 sind. Somit kommen z.B. Werte wie 512, 576, 640, 704, 768, 832, 896, 960, 1024 in Frage.
CFG
Die Classifier Free Guidance (CFG) oder Scale regelt das Verhältnis zwischen der 'kreativen Freiheit' der KI selbst und dem genauen Reproduzieren des Prompt-Textes - sozusagen die Freiheit in der Interpretation des Prompts. Als grobe Orientierung können folgende Werte für CFG gewählt werden:
- CFG 0-2: Die KI ignoriert die Textbeschreibung vollständig.
- CFG 2-6: Die KI interpretiert den Prompt kreativ.
- CFG 7-10: Empfohlen für die meisten Prompts, KI orientiert sich weitestgehend am Prompt.
- CFG 10-15: KI folgt dem Prompt mehr. Nur zu empfehlen, wenn der Prompt spezifisch genug ist.
- CFG 16-20: KI folgt dem Prompt sehr streng, muss sehr detailliert sein. Könnte Kohärenz und Qualität beeinträchtigen.
Die folgende Reihe von Bildern demonstriert, wie sich der Bildinhalt mit dem CFG Scale Wert ändert:
Sampler
Stable Diffusion ist ein 'Latent Diffusion Model', das aus einem beschreibenden Text und Rauschen ein Bild erzeugt. In der Trainingsphase fügt ein Diffusionsmodell schrittweise Rauschen zu einem Bild hinzu und versucht dann wieder, es so zu entfernen, dass das Ausgangsbild rekonstruiert wird. Es wird also darauf trainiert, Rauschen aus einem Bild zu entfernen, während es auf Text konditioniert wird. Bei jedem Schritt wird ein Bild von 1024x1024 Pixeln mit weniger Rauschen als zuvor erzeugt.
Die Generierung eines so großen Bildes erfordert eine Menge an Berechnungen. Hier kommt der 'latente' Teil ins Spiel, der das Eingangsbild in eine niedrigere Dimension umwandelt und das entrauschte Ausgangsbild nach dem Diffusionsprozess wieder in eine höhere Auflösung umwandelt (upscaling). Aus diesem Grund erfordert dieser Prozess bei Stable Diffusion keine große GPU-Leistung.
Während der Inferenz rekonstruiert das Modell also ein Bild aus Rauschen und der Texteingabe (Prompt) in N Sampler-Schritten. Bei jedem Schritt berechnet ein Sampler (auch 'Scheduler') eine vorhergesagte entrauschte Bilddarstellung im latenten (n-dimensionalen) Raum.
Was ist ein Sampler?
Ein Sampler bildet demnach den Ausgangspunkt im Prozess der Bilderzeugung durch ein Diffusion-Model. Während des Trainings-Prozesses hat er gelernt, das textlich beschriebene, zu erzeugende Bild aus einem Rauschen zu rekonstruieren. Diese Rekonstruktion geschieht in N Schritten. Die verschiedenen Sampler unterscheiden sich u.a. in Geschwindigkeit und Qualität. Beim Experiementieren mit der Bilderzeugung sollte man am Besten mit einem schnellen Sampler und wenigen Schritten beginnen, um einen ersten Eindruck der Interpretation des verwendeten Prompts im Bild-Ergebnis zu erhalten. Dies spart Zeit und man erhält einen ausreichenden Eindruck, wie der Prompt bei verschiedenen Seeds das Ergebnis verändert. Gefällt ein Bild, übernimmt man den Seed-Wert und variiert anschließend den Steps-Wert oder den Sampler-Typ, um das Bild weiter zu optimieren.
Wie im folgenden Beispiel zu sehen ist, liefern viele Sampler zwar ähnliche Ergebnisse, jeder Sampler hat aber auch seine eigene Note. Es gilt, den besten Kompromiss zwischen Geschwindigkeit und dem kleinsten Steps-Wert zu finden, um ein qualitativ hochwertiges Bild zu erhalten.
Die folgende Tabelle enthält eine Liste von Samplern mit einer Beschreibung ihrer Unterschiede:
SAMPLER | DESCRIPTION |
---|---|
DDIM | Denoising Diffusion Implicitit-Modelle. Dieser Sampler erzeugt akzeptable Ergebnisse in nur 10 Schritten. Es funktioniert perfekt, um schnell neue Ideen zu generieren. |
PLMS | Dieser Sampler ist schnell und erzeugt gleichbleibend gute Qualität. Weitere Informationen finden Sie im Originalartikel Pseudo Numerical Methods for Diffusion Models on Manifolds |
DPM | Denoising Diffusion Probabilistic Models. Der DPM-Solver ist ein schneller dedizierter Solver höherer Ordnung. Es ist ohne weiteres Training sowohl für diskrete als auch für zeitkontinuierliche Diffusionsmodelle geeignet. Er kann in nur 10 bis 20 Schritten hochwertige Bilder reproduzieren. Dieser Sampler zeigt dieselben Ergebnisse wie ein DDIM-Sampler, konvergiert jedoch nach weniger Schritten. Ein moderner Sampler, hoher Geschwindigkeit und guter Qualität. |
LMS | Linear Multistep Scheduler for k-Diffusion. Generiert gute Bilder in 50 Schritten. Wenn die Ausgabe etwas wirr aussieht, lohnt sich eine Korrektur auf 80+ Schritte. |
Euler | Dies ist genau wie der DDIM-Sampler ein schneller Sampler mit großartigen Ergebnissen bei wenigen Schritten. Dies ist ein unbeständiger Sampler, da er den Generierungsstil zwischen den Schritten sehr schnell ändert, wie im Beispiel zu sehen ist. |
Das nachstehende Bildraster zeigen die Unterschiede der erzeugten Bilder für das Würfel-Beispiel in Abhängigkeit von des gewählten DDIM-Step-Werts und dem verwendeten Sampler:
Ein weiteres Bildraster demonstriert die Änderungen des Bildinhalts bei verschiedenen Step-Werten mit unterschiedlichen Samplern für den Prompt
Young boy looking out of the window of an apartment in the middle of New York, post-apocalyptic style, peaceful emotions, vivid colors, highly detailed, UHD
Mit dem folgenden Tool lassen sich verschiedene Sampler und DDIM-Step-Werte interaktiv ausprobieren:
Weiterführende Links
Im Folgenden listen wir Links für ein tieferes Verständnis einer zielführenden Promptgenerierung mit Stable Diffusion:
Hintergrundwissen
- Original Stable Diffusion Repo
- Erläuterung zu Stable Diffusion
- Prompt-Buch mit visuellen Beispielen zu verschiedenen Prompts und Parametern
Erkunden der LAISON-Datenbank
Prompt-Datenbanken
Videos
Zusammenfassung
Bildgenerierende KI-Modelle entwickeln sich rasend schnell weiter. Jede Woche kommen neue Anwendungen und leichtere und schnellere Modelle auf den Markt. Wir sind gespannt, was wir als nächstes auf AIME-Workstations und -Servern ausprobieren können. Mit Stable Diffusion wurde uns ein mächtiges Open-Source-Modell zur Bilderzeugung zur Verfügung gestellt und wir haben erklärt, wie simpel es lokal mittels AIME MLC einzurichten ist. Stable Diffusion kann zwar mit den Standardparametern verwenden werden, es macht aber viel mehr Spaß, mit den Prompts und den verfügbaren Parametern herumzuspielen, um beeindruckende Bilder zu erzeugen. Man verliert sich recht schnell in der Anpassung der Parameter, um das perfekte Bild zu erzeugen, oder genau das Ergebnis zu erreichen, welches einem vorschwebt. Kurz zusammengefasst: Wir beginnen mit einem schnellen Sampler und niedrigen Step-Werten und experimentieren so lange mit dem Wortlaut des Prompts und verschiedenen Seed-Werten, bis wir eine Vorstellung davon haben, was wir erreichen möchten. Anschließend passen wir den CFG-Scale-Parameter an, wählen den optimalen Sampler und finden den besten Step-Wert.
Viel Spaß beim Erzeugen der Bilder mit Stable Diffusion 1.5!