<EbeneX/>
Grundlagen LLM · Updated 11. März 2026

ControlNet

Definition

Eine Technik zur Steuerung von Diffusionsmodellen durch zusätzliche Eingaben wie Skizzen, Posen oder Tiefenkarten – für kontrollierbare Bildgenerierung.

Fortgeschritten 3 Min. Lesezeit EN: ControlNet

Einfach erklärt

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:

TypEingabeNutzen
CannyKantenbildLinien und Formen erhalten
OpenPosePose-SkeletonMenschliche Posen vorgeben
DepthTiefenkarte3D-Struktur definieren
ScribbleGrobe SkizzeAus Kritzeleien Bilder
SegmentationFarbige BereicheWo ist was im Bild?
LineartSaubere LinienManga/Anime-Stil
Normal MapOberflächenstrukturDetaillierte 3D-Infos

Technischer Deep Dive

Wie ControlNet funktioniert

┌─────────────────┐     ┌─────────────────┐
│  Text Prompt    │     │ Control Image   │
│  "A woman..."   │     │ (Pose/Edges)    │
└────────┬────────┘     └────────┬────────┘
         │                       │
         ▼                       ▼
┌─────────────────┐     ┌─────────────────┐
│  Text Encoder   │     │  ControlNet     │
│  (CLIP)         │     │  Encoder        │
└────────┬────────┘     └────────┬────────┘
         │                       │
         └───────────┬───────────┘

         ┌─────────────────────┐
         │   U-Net (Diffusion) │
         │   + ControlNet      │
         │   Conditioning      │
         └──────────┬──────────┘

              Generated Image

Kernidee:

  • ControlNet ist eine trainierbare Kopie des U-Net Encoders
  • Wird parallel zum Haupt-U-Net ausgeführt
  • Injiziert strukturelle Information in den Diffusionsprozess

Preprocessing

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

Verwendung mit Diffusers

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]

Multi-ControlNet

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

ParameterBeschreibungTypischer Wert
controlnet_conditioning_scaleStärke des ControlNet0.5-1.5
control_guidance_startAb welchem Step aktiv0.0
control_guidance_endBis welchem Step aktiv1.0

Tipps:

  • Niedrigere Scale = mehr kreative Freiheit
  • Höhere Scale = striktere Befolgung
  • Start/End anpassen für subtilere Kontrolle

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

Was ist der Unterschied zu img2img?

img2img nutzt ein Bild als Startpunkt und variiert es. ControlNet extrahiert strukturelle Information (Kanten, Pose) und nutzt nur diese – mehr Kontrolle, mehr kreative Freiheit.

Welches ControlNet-Modell für welchen Zweck?

Canny: Kanten/Linien. OpenPose: Menschliche Posen. Depth: 3D-Struktur. Scribble: Grobe Skizzen. Segmentation: Bereiche definieren. Oft kombiniert man mehrere.

Kann ich ControlNet mit jedem Diffusionsmodell nutzen?

ControlNet-Modelle sind an Basismodelle gebunden. Für SDXL brauchst du SDXL-ControlNets, für SD 1.5 entsprechende Versionen. Nicht beliebig austauschbar.

Wie kombiniere ich mehrere ControlNets?

Multi-ControlNet: Pose + Depth gleichzeitig für maximale Kontrolle. Gewichtung pro ControlNet einstellbar. In ComfyUI besonders flexibel.

Dein persönliches Share-Bild für Instagram – 1080×1080px, bereit zum Posten.