Stable Diffusion
Ein Open-Source Bildgenerierungsmodell, das aus Textbeschreibungen fotorealistische Bilder erzeugt – basierend auf der Diffusions-Architektur.
Eine Fine-Tuning-Technik für Diffusionsmodelle, die mit wenigen Bildern neue Konzepte lernt – für personalisierte Bildgenerierung von Personen, Objekten oder Stilen.
DreamBooth ist eine Technik, um Bildgenerierungs-Modellen neue Konzepte beizubringen – oft mit wenigen geeigneten Beispielbildern. Du kannst etwa eine Person, ein Haustier oder ein Produkt einlernen und dann in verschiedenen Szenen generieren.
Der Prozess:
Input: Beispielbilder des Konzepts
↓
DreamBooth- oder Adaptertraining
↓
Output: Modell kennt ein Trigger-Konzept
Prompt: "trigger person as astronaut on mars"
→ Bild des gelernten Konzepts in neuer Szene
Warum ein seltenes Token?
Beispiel-Prompts nach Training:
"trigger person in a suit, professional photo"
"trigger person as illustrated character"
"trigger person in classical painting style"
"trigger person in outdoor scene"
from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
from diffusers.training_utils import EMAModel
import torch
# Basis-Modell laden
model_id = "base-diffusion-model"
pipe = DiffusionPipeline.from_pretrained(model_id, torch_dtype=model_dtype)
# Training-Konfiguration
training_args = {
"instance_prompt": "a photo of trigger person",
"class_prompt": "a photo of a person", # Prior Preservation
"instance_data_dir": "./instance_images",
"class_data_dir": "./class_images",
"num_class_images": class_image_count,
"learning_rate": learning_rate,
"max_train_steps": max_train_steps,
"train_batch_size": train_batch_size,
}
Problem: Modell "vergisst" allgemeines Wissen über "person"
→ Alle Personen sehen aus wie du
Lösung: Prior Preservation
→ Trainiere auch auf generische "person"-Bilder
→ Modell behält allgemeines Wissen
# Loss-Funktion
loss = mse_loss(noise_pred, noise) # Instance Loss
if use_prior_preservation:
prior_loss = mse_loss(prior_noise_pred, prior_noise)
loss = loss + prior_preservation_weight * prior_loss
| Methode | Trainiert | Größe | Qualität | Speed |
|---|---|---|---|---|
| DreamBooth | großes Modell oder viele Gewichte | groß | hoch, setupabhängig | eher langsam |
| DreamBooth-LoRA | LoRA-Adapter | kompakter | hoch, setupabhängig | mittel bis schnell |
| Textual Inversion | Embedding | sehr klein | begrenzter | schnell |
# Beispiel für DreamBooth-/LoRA-Training
accelerate launch train_network.py \
--pretrained_model_name_or_path="base-diffusion-model" \
--train_data_dir="./training_images" \
--output_dir="./output" \
--resolution=$RESOLUTION \
--train_batch_size=$BATCH_SIZE \
--learning_rate=$LEARNING_RATE \
--max_train_steps=$MAX_TRAIN_STEPS \
--network_module=networks.lora \
--network_dim=$NETWORK_DIM
| Aspekt | Empfehlung |
|---|---|
| Anzahl | genug Bilder für gewünschte Variation |
| Qualität | scharf, gut belichtet, relevant |
| Vielfalt | verschiedene Winkel, Beleuchtung und Kontexte |
| Hintergrund | variiert, wenn Generalisierung gewünscht ist |
| Auflösung | passend zur Modell- und Trainingskonfiguration |
| Konsistenz | gleiches Subjekt, keine Verwechslung |
from diffusers import DiffusionPipeline
# Trainiertes Modell laden
pipe = DiffusionPipeline.from_pretrained(
"./dreambooth_output",
torch_dtype=model_dtype
).to(device)
# Generieren mit Trigger-Wort
image = pipe(
"trigger person as a superhero, comic book style",
num_inference_steps=inference_steps,
guidance_scale=guidance_scale,
).images[0] DreamBooth ist wie ein Künstler, der nach ein paar Fotos von dir lernt, dich in jedem Stil und jeder Situation zu malen – ob als Astronaut, im Renaissance-Gemälde oder als Anime-Charakter.
Lernt neue Konzepte aus wenigen geeigneten Bildern
Bindet Konzepte häufig an ein seltenes oder eindeutiges Trigger-Token
Ermöglicht personalisierte Bildgenerierung in vielen Kontexten
Personalisierte Avatare
Eigenes Gesicht in verschiedenen Stilen und Szenen
Produkt-Visualisierung
Produkte in verschiedenen Kontexten darstellen
Haustier-Portraits
Haustiere in kreativen Szenarien
Marken-Assets
Konsistente Charaktere für Marketing
Das hängt von Motiv, Modell und gewünschter Generalisierung ab. Wenige hochwertige Bilder können reichen; verschiedene Winkel, Beleuchtungen und Hintergründe helfen oft. Qualität ist wichtiger als reine Menge.
DreamBooth verändert typischerweise große Teile des Modells oder nutzt vergleichbare Fine-Tuning-Methoden. LoRA trainiert kompakte Adapter-Gewichte. LoRA ist meist kleiner und schneller; Qualitätsunterschiede hängen stark von Setup und Daten ab.
Ja. DreamBooth-ähnliche Trainingsmethoden lassen sich mit LoRA-Adaptertraining kombinieren. Das kann Speicherbedarf und Trainingsaufwand reduzieren, muss aber passend konfiguriert werden.
Die Dauer hängt von Hardware, Modellgröße, Auflösung, Trainingsschritten, Methode und Datenmenge ab. Adaptertraining ist häufig schneller als vollständiges Fine-Tuning; Cloud-Setups variieren stark.