Stable Diffusion ist ein Text-Bild-Diffusionsmodell, das in der Lage ist, aus beliebigen Texteingaben fotorealistische Bilder zu generieren. Wir haben es im MediaDock auf unserem ML Rechner installiert. Hier erklären wir dir, wie du es startest, Modelle auswählst, LoRA (Low-Rank Adaptations) und ControlNet nutzen kannst.

Prolog

Nebst diversen Diffusion Modellen, die sich Online nutzen lassen (Dall-e, Midjourney ect.) lässt sich Stable Diffusion auch Lokal auf einem Rechner im MediaDock nutzen und mit zusätzlichen Steuermöglichkeiten ausstatten. Hier im MediaDock haben wir auf unserem Rechner viele verschiedene Modelle, Controlnet und LoRA’s installiert, um dir beim Generieren von Bildern nebst den Prompts auch noch zusätzliche Kontrolle zu geben.

Stable Diffusion webUI

Dokumentation der webUI

https://profaneservitor.github.io/sdwui-docs/de/

Start webUI

Die Software, die wir nutzen um Stable Diffusion zugänglich zu machen heisst webUI um sie zu starten öffnest du das Terminal in Ubuntu und nutzt folgende Kommandozeilen:

cd Documents/Applications/sd-webui/ 
conda activate sd-webui 
./webui.sh

Diese paar Zeilen starten das Programm webUI und einen Webservice suche in dem Terminal nachfolgenden Links:

Online Zugriff von deinem Rechner

Falls du von jedem x beliebigen Computer im Internet aus mit dem Tool arbeiten willst, öffne den «ngrok link» in deinem eigenen Browser danach greifst du Remote auf den Machine Learning Rechner zu. Dieser Link wird bei jeder Session neu generiert, versuche es also nicht mit dem Link auf dem Bild (der ist schon längst nicht mehr aktiv). Kopiere den Link aus dem Terminal und nutze ihn auf deinem Computer / Laptop. Klicke «Visit Site» und du bist drin.

Lokal direkt an der Workstation

Falls du lokal direkt an unserem Rechner arbeiten möchtest, kannst du den zweiten Link nehmen und die IP http://127.0.0.1:7860 in einem Browser auf dem Rechner öffnen.

In beiden Fällen öffnet sich die webUI:

Basic Workflow

Modell Wählen

Das Basis Modell kannst du Links oben im Dropdown Menu oder über den Reiter Checkpoints auswählen. Aktuell sind um die 15 verschiedene «Geschmacksrichtungen» von Stable Diffusion installiert. Nebst den Basismodellen (z.B. SD 1.5; SDXL) sind auch Modelle installiert die z.B. auf Fotorealismus, einer Erscheinung wie analoge Fotografie ausgelegt sind.

Prompt / Negativprompt eingeben

Ein Prompt wird als Bildbeschrieb eingegeben, um das Bild durch das Stable Diffusion Modell zu generieren. Du kannst auch einen Negativprompt verfassen um gewisse Dinge sicherlich nicht in deinen Bildern zu haben. Prompts können sehr einfach sein in unserem Beispiel nutzen wir «Photo of Karl Marx riding on a Bull» oder sehr elaboriert sein und diverse wichtige Keywords beinhalten:

Stable Diffusion prompt: a definitive guide

Wie komplex auch immer dein Prompt ist hier ist die Eingabefläche:

Bildeinstellungen vornehmen

In den Bildeinstellungen können wir nun die Breite und Höhe einstellen und einen Batch count wie eine Batch size Festlegen.

In meinem Beispiel hier produziere ich die Bilder mit folgender Einstellung:

  • 2 Serien à 4 Bilder
  • 1920 x 1080 Pixel

Kleinere Bilder gehen immer schneller und kosten weniger Energie im Prozess als grosse – bist du also auf der Suche nach einem Bild dann generiere idealerweise kleinere Bilder z.B. 512 x 512 Pixel.

Zwei Batches mit je 4 Bildern sehen als Output folgender Massen aus:

Bilder Speichern oder Downloaden

Den Download eines Bildes auf deinen eigenen Rechner kannst du mit dem Klick auf das Download Symbol rechts oberhalb der Preview auslösen:

Backup

Falls du vergessen hast ein Bild zu speichern oder herunterzuladen, ist das halb so schlimm. Stable Diffusion WebUI speichert alle generierten Bilder nach Datum in folgendem Ordner:

/Documents/Applications/sd-webui/outputs

Mehr Kontrolle über die generierten Bilder

Wenn du mehr Kontrolle über das Bild, z.B Stil oder Komposition erlangen willst, gibt es verschiedene Möglichkeiten dies zu forcieren:

  • Prompt Engineering
  • Image to Image
  • Modelle und LoRA`s: Kontrollmöglichkeit über den im Stil
  • Controlnet: Kontrollmöglichkeit über die Komposition
  • Kombinationen von Controlnet und LoRa`s

Prompt-Engineering

Es gibt viele Möglichkeiten die generierten Bilder genauer zu gestalten. Viele Modelle wie Dalle, Midjourney, erlauben dir vor allem über Prompt Engineering eine grössere Kontrolle über das generierte Bild zu erlangen. Bei einer kleinen Suche im Netz findest du für diese Modelle schnell Anleitungen, mit denen du dir aneignen kannst, wie ein präziser Prompt auszusehen hat. Selbstverständlich kannst du mit einem auf ein Modell zugeschnittenen Bildbeschrieb deine generierten Bilder stärker steuern.

Ein interessantes Tool, um solche für Maschinen lesbaren Bildbeschriebe zu generieren ist zum Beispiel dieses hier:

https://replicate.com/pharmapsychotic/clip-interrogator

Oder der eingebaute CLIP interrogator in der web-UI.

Image to Image

Wenn du verschiedene Varianten eines Bildes generieren möchtest, kannst du «Image to Image» nutzen. Hier kannst du auf Basis eines Bildes weitere Varianten generieren. In meinem ersten Beispiel habe ich den Prompt gleich gelassen und ein Bild aus meiner vorherigen Serie hochgeladen.

Man sieht die Ähnlichkeit in der Komposition und im Stil zum ersten Bild. Was in diesem Bild vollständig verloren ging ist Karl Marx.

Interrogate CLIP

Mit einem Click auf Interrogate CLIP kannst du der Stable Diffusion WebUI einen Bildbeschrieb entlocken der evt. zu einem etwas präziseren Resultat führen kann. Hier sehen wir auch, dass in dem von CLIP generierten Bildbeschrieb Karl Marx keine Rolle spielt.

In meinem Beispiel unten habe ich diesen von CLIP vorgeschlagenen Prompt noch leicht modifiziert, um Carl Marx wieder im Spiel zu haben und danach eine neue Serie generiert.

Style: Modelle und LoRA`s

LoRAs (Low-Rank Adaptations) sind kleinere Modelle , die Du mit bestehenden Stable Diffusion Checkpoint-Modellen kombinieren kannst. Sie erlauben es ein Bestehendes Modell «Fine zu tunen». So kannst du neue Konzepte wie Styles, Subjekte und Objekte (je nach LoRA) in deinen generierten Bildern hinzufügen.

Diese neuen Konzepte fallen ganz grob unter 2 Kategorien:

  • Stile
    • z.B. Wasserfarbe, VHS Glitches, Comic Styles, Kartoffelstock, Glas ect.,
  • Subjekte / Objekte
    • Prominente Personen / Charaktere
    • z.B. LiamGallagher, Rhianna / Lara Croft, Sauron ect.

Um ein LoRA zu aktivieren kannst du unter dem Tab LoRA ein entsprechendes LoRA aktivieren wichtig hierbei ist, dass das LoRA auch mit dem Basismodell kompatibel ist.

Im Falle dieses Beispiels versuche ich mittels der Taters LoRA eine aus Kartoffelstock gemachte Skulptur zu generieren: «Karl Marx auf einem Stier reitend». Wie schon erwähnt muss das Basismodell zum LoRA passen zum Teil werden auch bestimmte «Trigger Words» im Prompt gebraucht. In dem LoRA Taters ist dies: «made of mashed potatoes» oder «mashed potatoes and gravy».

In diesem Beispiel wurde folgendes festgelegt:

  • Modell: realisticVisionV20_v20.safetensors
  • LoRA: Taters V1
  • Prompt: «made of mashed potatoes: Carl Marx riding a bull <lora:taters:1>»
  • Seed: 1529031692

Komposition: ControlNet

ControlNet erlaubt dir verschiedene Möglichkeiten der Bildkomposition zu steuern. Je nach Modell gibt es verschiedene Optionen die dir ControlNet bietet zum Beispiel:

  • Canny (weisse Umrisse auf schwarzem Grund)
  • Open Pose (Skellet der Person im Bild)
  • Depth maps (Tiefe im Bild als Graustufe je heller desto näher an der «Kamera»)

… und je nach Modell diverse andere.

Durch diese Controlnet Bildanalyse kann man nebst dem Prompt präzise Umrisse, Posen oder Tiefen Daten mit in den Generierungsprozess geben.

ControlNet Canny

Canny zeichnet einen weisse umriss Linien um Objekte: damit lassen sich auch Details zum Beispiel der Schattenwurf oder die Patches auf der Weste recht gut herausarbeiten und Replizieren. Über die Threshold kann die Detailstufe der Outlines bestimmt werden. Idealer Einsatz z.B. für Grafiken / Logos die Stylized werden sollten. Auch eigene Zeichnung können genutzt werden und als Basis für die generierten Bilder dienen.

Input:

  • realisticVisionV20_v20.safetensors
  • ControlNet: control_v11p_sd15_canny
  • Prompt: «Carl Marx riding a bull»
  • Seed: -1

Output:

Input:

  • foddaxlPhotorealism_v45.safetensors
  • ControlNet: diffusers_xl_depth_full
  • Prompt: «Carl Marx riding a bull»
  • Seed: -1

Output:

ControlNet Depth maps

Mit den Dephtmaps lassen sich prägnante Objekte sehr gut replizieren. In diesem Beispiel werden sowohl der Stier wie auch der Cowboy erkannt und eine grosse Ähnlichkeit in der Komposition reproduziert.

Input:

  • Modell: realisticVisionV20_v20.safetensors
  • ControlNet: control_v11f1p_sd15_depth
  • Prompt: «Carl Marx riding a bull»
  • Seed: 1529031692

Output:

Input:

  • sd_xl_base_1.0_0.9vae.safetensors
  • ControlNet: diffusers_xl_depth_full
  • Prompt: «Carl Marx riding a bull»
  • Seed: -1

Output:

ControlNet Open Pose

Open Pose erlaubt es dir Posen von Menschen, teilweise auch Gesichtern oder Handgesten zu extrahieren und diese Skelette danach zu nutzen, um Bilder zu generieren. So ist es möglich Bilder mit unterschiedlichsten Stilen in der selben Pose zu generieren. Da Stable Diffusion lediglich die Pose von dem Cowboy kennt, reimt es sich die Position von den Stieren in teilweise bizarren Konstellationen hinzu.

Input:

  • realisticVisionV20_v20.safetensors
  • ControlNet: control_v11p_sd15_openpose
  • Prompt: «Carl Marx riding a bull»
  • Seed: -1

Output:

Input:

  • sd_xl_base_1.0_0.9vae.safetensors
  • ControlNet: thibaud_xl_openpose
  • Prompt: «Carl Marx riding a bull»
  • Seed: -1

Output:

ControlNet in Kombination mit LoRA

Du kannst natürlich auch verschiedene LoRA Modelle mit dem ControlNet Kompiniert anwenden:

Input:

  • realisticVisionV20_v20.safetensors
  • ControlNet: control_v11f1p_sd15_depth
  • LoRA: Taters
  • Prompt: «made of mashed potatoes: Carl Marx riding a bull <lora:taters:1>»
  • Seed: -1

Output:

Input:

  • Model: v1-5-pruned.safetensors
  • ControlNet: control_v11f1p_sd15_depth
  • LoRA: VHS3
  • Prompt: «VHS, glitch, Carl Marx riding a bull <lora:VHS3:1>»
  • Seed: -1

Output:

Autor: teammediadock