Stable Diffusion
Ein Open-Source Bildgenerierungsmodell, das aus Textbeschreibungen fotorealistische Bilder erzeugt – basierend auf der Diffusions-Architektur.
Eine Technik zur Steuerung von Diffusionsmodellen durch zusätzliche Eingaben wie Skizzen, Posen oder Tiefenkarten – für kontrollierbare Bildgenerierung.
ControlNet gibt dir Kontrolle über die Struktur von KI-generierten Bildern. Statt nur Text zu beschreiben, kannst du Skizzen, Posen oder Kanten vorgeben – die KI füllt den Rest kreativ aus.
Ohne ControlNet:
Prompt: "Person steht vor Gebäude"
→ KI entscheidet Pose, Perspektive, Komposition
→ Wenig Kontrolle
Mit ControlNet:
Prompt: "Person steht vor Gebäude"
+ Pose-Skeleton: [Arme ausgestreckt, Blick nach rechts]
+ Depth Map: [Gebäude im Hintergrund]
→ KI folgt deinen Vorgaben
→ Präzise Kontrolle
ControlNet-Typen:
| Typ | Eingabe | Nutzen |
|---|---|---|
| Canny | Kantenbild | Linien und Formen erhalten |
| OpenPose | Pose-Skeleton | Menschliche Posen vorgeben |
| Depth | Tiefenkarte | 3D-Struktur definieren |
| Scribble | Grobe Skizze | Aus Kritzeleien Bilder |
| Segmentation | Farbige Bereiche | Wo ist was im Bild? |
| Lineart | Saubere Linien | Manga/Anime-Stil |
| Normal Map | Oberflächenstruktur | Detaillierte 3D-Infos |
┌─────────────────┐ ┌─────────────────┐
│ Text Prompt │ │ Control Image │
│ "A woman..." │ │ (Pose/Edges) │
└────────┬────────┘ └────────┬────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Text Encoder │ │ ControlNet │
│ (CLIP) │ │ Encoder │
└────────┬────────┘ └────────┬────────┘
│ │
└───────────┬───────────┘
▼
┌─────────────────────┐
│ U-Net (Diffusion) │
│ + ControlNet │
│ Conditioning │
└──────────┬──────────┘
▼
Generated Image
Kernidee:
Canny Edge Detection:
import cv2
image = cv2.imread("input.jpg")
edges = cv2.Canny(image, 100, 200)
# → Schwarz-weiß Kantenbild
OpenPose:
from controlnet_aux import OpenposeDetector
pose_detector = OpenposeDetector.from_pretrained("lllyasviel/Annotators")
pose = pose_detector(image)
# → Skeleton mit Keypoints
Depth Estimation:
from controlnet_aux import MidasDetector
depth_detector = MidasDetector.from_pretrained("lllyasviel/Annotators")
depth = depth_detector(image)
# → Grayscale Tiefenkarte
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel
import torch
# ControlNet laden
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/sd-controlnet-canny",
torch_dtype=torch.float16
)
# Pipeline erstellen
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
controlnet=controlnet,
torch_dtype=torch.float16
)
# Generieren
image = pipe(
prompt="A beautiful landscape, photorealistic",
image=canny_image, # Preprocessed control image
num_inference_steps=30,
controlnet_conditioning_scale=1.0 # Stärke
).images[0]
from diffusers import ControlNetModel, StableDiffusionControlNetPipeline
# Mehrere ControlNets laden
controlnets = [
ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-openpose"),
ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-depth"),
]
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
controlnet=controlnets,
)
# Mit beiden Control Images
image = pipe(
prompt="A dancer in a forest",
image=[pose_image, depth_image],
controlnet_conditioning_scale=[1.0, 0.5], # Gewichtung
).images[0]
| Parameter | Beschreibung | Typischer Wert |
|---|---|---|
controlnet_conditioning_scale | Stärke des ControlNet | 0.5-1.5 |
control_guidance_start | Ab welchem Step aktiv | 0.0 |
control_guidance_end | Bis welchem Step aktiv | 1.0 |
Tipps:
ControlNet ist wie ein Malbuch für KI: Du gibst die Umrisse vor (Skizze, Pose, Kanten), und die KI malt sie kreativ aus – du behältst die Kontrolle über die Struktur, die KI übernimmt die Details.
Ermöglicht strukturelle Kontrolle über generierte Bilder
Eingaben: Canny Edges, Pose, Depth Map, Scribbles, Segmentation
Funktioniert mit Stable Diffusion und anderen Diffusionsmodellen
Pose-basierte Generierung
Charaktere in exakt vorgegebenen Posen generieren
Architektur-Visualisierung
Aus Skizzen fotorealistische Gebäude erstellen
Produkt-Design
Konzeptskizzen in fertige Produktbilder verwandeln
Konsistente Charaktere
Gleichen Charakter in verschiedenen Szenen
img2img nutzt ein Bild als Startpunkt und variiert es. ControlNet extrahiert strukturelle Information (Kanten, Pose) und nutzt nur diese – mehr Kontrolle, mehr kreative Freiheit.
Canny: Kanten/Linien. OpenPose: Menschliche Posen. Depth: 3D-Struktur. Scribble: Grobe Skizzen. Segmentation: Bereiche definieren. Oft kombiniert man mehrere.
ControlNet-Modelle sind an Basismodelle gebunden. Für SDXL brauchst du SDXL-ControlNets, für SD 1.5 entsprechende Versionen. Nicht beliebig austauschbar.
Multi-ControlNet: Pose + Depth gleichzeitig für maximale Kontrolle. Gewichtung pro ControlNet einstellbar. In ComfyUI besonders flexibel.