Latent Diffusion Model (LDM)
Ein latentes Diffusionsmodell (LDM) führt die Diffusion im komprimierten latenten Raum eines Autoencoders statt auf Pixelebene aus. Dieses Design liegt Stable Diffusion zugrunde.
Ein latentes Diffusionsmodell (LDM) ist ein Diffusionsmodell, das Daten erzeugt, indem es eine komprimierte Darstellung eines vortrainierten Autoencoders entrauscht, statt Pixel direkt zu verarbeiten. Robin Rombach, Andreas Blattmann, Dominik Lorenz, Patrick Esser und Björn Ommer stellten den Ansatz in High-Resolution Image Synthesis with Latent Diffusion Models vor, das auf der CVPR 2022 präsentiert wurde. Der Autoencoder entfernt feine Pixeldetails, deren Modellierung kostspielig ist und die nur wenig dazu beitragen, wie ein Bild wirkt. So kann das Diffusionsnetz seine Kapazität auf Inhalt und Komposition richten. Training und Abtastung sind daher viel kostengünstiger als Diffusion im Pixelraum. Dadurch kann Stable Diffusion, das bekannteste LDM, Bilder auf einer einzigen Consumer-GPU erzeugen. Die meisten aktuellen Generatoren für Bilder, Videos und Audio in der generativen KI folgen demselben zweistufigen Aufbau.
So funktioniert latente Diffusion#
In der ersten Stufe werden Bilder komprimiert. Ein Encoder bildet ein Bild der Größe H×W×3 auf eine latente Repräsentation der Größe H/f×W/f×c ab, wobei f der Verkleinerungsfaktor und c die Zahl der latenten Kanäle ist. Ein Decoder wandelt latente Repräsentationen zurück in Pixel um. Rombach und Kollegen trainierten diesen Autoencoder mit einem Wahrnehmungsverlust und einem patchbasierten adversarialen Ziel, wie bei einem GAN-Diskriminator, damit Rekonstruktionen scharf bleiben. Außerdem regularisierten sie die latente Repräsentation entweder mit einem kleinen KL-Term in Richtung einer Standardnormalverteilung oder mit Vektorquantisierung. Verkleinerungsfaktoren von 4 bis 16 sorgten für ein ausgewogenes Verhältnis zwischen Geschwindigkeit und Qualität: Das Training im Pixelraum (f = 1) war langsam, während bei f = 32 die Komprimierung so stark war, dass die Qualität der erzeugten Bilder sank. Der Autoencoder von Stable Diffusion verwendet f = 8 und 4 Kanäle. Der folgende Code kodiert ein Foto, dekodiert es wieder und misst den Informationsverlust bei diesem Hin-und-zurück-Durchlauf:
import urllib.request
import numpy as np
import torch
from diffusers import AutoencoderKL
from PIL import Image
# Stable Diffusion's autoencoder, the first stage of a latent diffusion model
vae = AutoencoderKL.from_pretrained("stabilityai/sd-vae-ft-mse")
# Load a photo and scale its pixels to [-1, 1]
image = Image.open(urllib.request.urlopen("https://ultralytics.com/images/bus.jpg")).convert("RGB").resize((480, 640))
x = torch.tensor(np.array(image), dtype=torch.float32).permute(2, 0, 1)[None] / 127.5 - 1
# Encode to the latent that diffusion runs on, then decode back to pixels
with torch.no_grad():
latent = vae.encode(x).latent_dist.mode()
recon = vae.decode(latent).sample.clamp(-1, 1)
psnr = 10 * torch.log10(4 / torch.mean((recon - x) ** 2))
print(f"image {tuple(x.shape)} -> latent {tuple(latent.shape)}: {x.numel() // latent.numel()}x fewer values")
print(f"reconstruction PSNR: {psnr:.1f} dB")
Image.fromarray(((recon[0] + 1) * 127.5).byte().permute(1, 2, 0).numpy()).save("bus_reconstructed.jpg")Das Programm gibt image (1, 3, 640, 480) -> latent (1, 4, 80, 60): 48x fewer values und reconstruction PSNR: 23.0 dB aus. Das gespeicherte bus_reconstructed.jpg behält den Bus, die Menschen und die Straße bei. Die kleine Beschriftung an der Seite des Busses ist jedoch unleserlich, da die feinen Details nicht in eine latente Repräsentation mit 4 Kanälen passen.
Die zweite Stufe ist ein herkömmliches Diffusionsmodell, das mit diesen latenten Repräsentationen trainiert wird. Beim Training wird ein Bild kodiert, in einem zufälligen Schritt gaußsches Rauschen hinzugefügt und einem entrauschenden Netz beigebracht, dieses Rauschen vorherzusagen. In der ursprünglichen Arbeit wurde dafür ein U-Net und in den meisten neueren Modellen ein Diffusionstransformer verwendet. Bei Modellen mit rektifiziertem Fluss wird stattdessen die Geschwindigkeit vorhergesagt, mit der das Rauschen zur sauberen latenten Repräsentation übergeht. Bedingungen werden über Cross-Attention-Schichten eingebunden. Sie ermöglichen der latenten Repräsentation, die Embeddings einer Textanweisung, einer Klassenbezeichnung oder einer semantischen Karte zu berücksichtigen. Die Generierung beginnt mit zufälligem latentem Rauschen, das unter Berücksichtigung der Bedingung Schritt für Schritt entrauscht wird. Am Ende wird der Decoder einmal ausgeführt. So arbeitet jeder rechenintensive Schritt mit der kleinen latenten Repräsentation.
Von Stable Diffusion zu aktuellen Modellen#
- Stable Diffusion: Das im August 2022 veröffentlichte Modell übertrug das LDM-Verfahren auf die Text-zu-Bild-Generierung mit 512×512 Pixeln. Es verwendet eine latente Repräsentation mit 64×64×4 Werten, ein U-Net mit 860 Millionen Parametern und einen CLIP-Textencoder. Die Gewichte standen allen zum Herunterladen zur Verfügung.
- Stable Diffusion 3: Das Modell wechselte zu einem Autoencoder mit 16 Kanälen. Dadurch stieg der PSNR-Wert der Rekonstruktion von 25.12 dB mit 4 Kanälen auf 28.62 dB. Außerdem wurde das U-Net durch einen multimodalen Diffusionstransformer ersetzt, der mit rektifiziertem Fluss trainiert wurde. Auch die FLUX.1-Modelle von Black Forest Labs entrauschen latente Repräsentationen mit 16 Kanälen mithilfe eines Transformers mit rektifiziertem Fluss.
- Video und Audio: Videogeneratoren komprimieren Clips räumlich und zeitlich. OpenAI beschrieb Sora als System, das Videos in einen latenten Raum mit geringerer Dimension komprimiert und diesen in Raum-Zeit-Patches aufteilt. AudioLDM und Stable Audio von Stability AI wenden dasselbe Verfahren auf latente Spektrogramm- oder Wellenformrepräsentationen an.
- Latente Konsistenzmodelle: Destillieren ein LDM, damit es Bilder in 2 bis 4 statt in 20 bis 50 Schritten erzeugt. Dadurch wird eine Generierung nahezu in Echtzeit möglich.
LDMs und verwandte Begriffe#
- Diffusionsmodelle im Pixelraum: Führen den Prozess des Hinzufügens und Entfernens von Rauschen auf jedem Pixel aus. Ein LDM ist ebenfalls ein Diffusionsmodell und unterscheidet sich nur dadurch, wo der Prozess abläuft.
- Variationale Autoencoder: Ein VAE erzeugt ein Bild, indem es eine gezogene latente Repräsentation in einem Durchlauf dekodiert. Die erzeugten Bilder sind häufig unscharf. Ein LDM verwendet einen Autoencoder nach VAE-Art nur zur Komprimierung und überlässt die Generierung dem Diffusionsmodell.
- Stable Diffusion: Eine Familie von LDMs von Stability AI, CompVis und Runway. Daher ist jedes Stable-Diffusion-Modell ein LDM, während LDMs auch FLUX, Videogeneratoren und Audiomodelle umfassen.
Anwendungen#
LDMs ermöglichen Text-zu-Bild-Generierung, Bildinpainting, mit dem die ursprüngliche Arbeit damals einen neuen Stand der Technik erreichte, Superauflösung und die Generierung von Bildern anhand semantischer Karten. In der Computer Vision erzeugen sie außerdem synthetische Daten: seltene Fehler, ungewöhnliche Wetterbedingungen oder seltene Blickwinkel, die nur schwer zu fotografieren sind. Generierte Bilder enthalten zunächst keine Labels. Die Ultralytics-Funktion auto_annotate beschriftet einen Ordner mit solchen Bildern, indem sie Objekte mit einem YOLO26-Modell erkennt und jede erkannte Box mit einem Meta-SAM-Segmentierungsmodell umrandet. Für das Training schreibt sie Segmentierungslabels im YOLO-Format.










