Stable Diffusion lokal auf einer AIME Workstation mittels AIME-MLC betreiben

Die Verwendung von KI zur Generierung von Bildern aus Textbeschreibungen führt zu beeindruckenden Ergebnissen. Hier beschreiben wir leicht verständlich die Installation und Verwendung des Stable Diffusion Txt2Img-Modells.

Table of contents

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:

  1. Einzelbilderzeugung mit direkter Prompt-Eingabe
  2. 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/

[Bild eines einfachen rosafarbenen Würfels, erzeugt mit Stable Diffusion 1.5]
Bild eines einfachen rosafarbenen Würfels, erzeugt mit Stable Diffusion 1.5

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
Bild eines einfachen rosafarbenen Würfels, erzeugt mit Stable Diffusion 1.5, mit veränderten Bildabmessungen
Bild eines einfachen rosafarbenen Würfels, erzeugt mit Stable Diffusion 1.5, mit veränderten Bildabmessungen
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
Vergleich der Ladezeit des Stable Diffusion 1.5 Modells und der Bilderzeugungs-Zeit verschiedener GPU-Typen

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.

Vergleich der Autocast mit der vollständigen Ladezeit in Stable Diffusion 1.5 für den DDIM-Sampler

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.
Skript-Parameter von Stable Diffusion 1.5

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.

Bildreihe, die die Unterschiede Bilderzeugung mit Stable Diffusion 1.5 bei Verwendung verschiedener magischer Wörter zeigen
Bildreihe, die die Unterschiede in der Bilderzeugung mit Stable Diffusion 1.5 bei Verwendung verschiedener magischer Wörter zeigen
Bildreihe, die die Unterschiede in der Bilderzeugung mit Stable Diffusion 1.5 bei verschiedener Beschreibung der Beleuchtung veranschaulichen
Bildreihe, die die Unterschiede in der Bilderzeugung mit Stable Diffusion 1.5 bei verschiedener Beschreibung der Beleuchtung veranschaulichen

Schon das simple Beispiel des Würfels zeigt, wie sehr sich der Bildinhalt durch einfache Anpassungen des Prompt-Textes verändert:

Bildreihe, die zeigt, wie sich der Bildinhalt ändert, wenn der Kontext verändert wird (Stable Diffusion 1.5)
Bildreihe, die zeigt, wie sich der Bildinhalt ändert, wenn der Kontext verändert wird (Stable Diffusion 1.5)
Bildreihe, die zeigt, wie sich der Bildinhalt bei Verwendung verschiedener magischer Wörter verändert (Stable Diffusion 1.5)
Bildreihe, die zeigt, wie sich der Bildinhalt bei Verwendung verschiedener magischer Wörter verändert (Stable Diffusion 1.5)

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.

Geänderter Bildinhalt bei Änderung der Bildabmessungen in Stable Diffusion 1.5
Geänderter Bildinhalt bei Änderung der Bildabmessungen in Stable Diffusion 1.5

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:

Bildserie, die zeigt, wie sich der Bildinhalt mit dem CFG Scale Wert verändert (Stabile Diffusion 1.5)
Bildserie, die zeigt, wie sich der Bildinhalt mit dem CFG Scale Wert verändert (Stabile Diffusion 1.5)

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.
Vergleich verschiedener Sampler in Stable Diffusion 1.5

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:

Bildraster mit verschiedenen Ergebnissen der Bilderzeugung
Bildraster, das die verschiedenen Ergebnisse der Bilderzeugung mit verschiedenen Samplern bei unterschiedlichen Schrittwerten in Stable diffusion 1.5. für das Würfel-Beispiel zeigt

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
Bildraster mit den Ergebnissen der Bilderzeugung bei verschiedenen Samplern und unterschiedlichen Step-Werten mit Stable Diffusion 1.5
Bildraster mit den Ergebnissen der Bilderzeugung bei verschiedenen Samplern und unterschiedlichen Step-Werten mit Stable Diffusion 1.5

Mit dem folgenden Tool lassen sich verschiedene Sampler und DDIM-Step-Werte interaktiv ausprobieren:

Im Folgenden listen wir Links für ein tieferes Verständnis einer zielführenden Promptgenerierung mit Stable Diffusion:

Hintergrundwissen
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!

Spread the word

Weiter lesen...