Model
.ai
open AI-modellen volgen

Hoe generatieve AI-beeldmodellen werken: diffusie, latents en tekstencoders eenvoudig uitgelegd

Onderwerp: Modellen
Door Quartermaster
Gepubliceerd op 28 aug 2025

Overzicht

Elk huidig beeldmodel is een ruisverwijderaar. Tijdens het trainen krijgt het miljoenen beelden te zien met steeds meer toegevoegde willekeurige ruis, samen met de bijschrift van elk beeld, en leert het te voorspellen welke ruis is toegevoegd. Bij het genereren loopt het proces achteruit: begin met pure ruis, vraag het model welke ruis er is gegeven je prompt, verwijder een beetje daarvan, herhaal twintig of dertig keer, en er verschijnt een beeld dat bij het bijschrift past. Dat is de hele truc; "diffusie" is de naam van dit geleidelijke ruis-toevoegen en ruis-verwijderen proces.
Werken met volledige pixels zou veel te traag zijn, dus sinds Stable Diffusion 1.x gebeurt het ruisverwijderen in een gecomprimeerde ruimte die latent wordt genoemd. Een apart klein netwerk, de VAE, perst een 1024x1024 beeld samen tot een 128x128 raster van getallen en zet het aan het eind weer uit. De ruisverwijderaar (een U-Net in SD 1.5 en SDXL, een transformer in Flux, Qwen, Z-Image en de videomodellen) ziet nooit pixels. Daarom moeten beeldformaten veelvouden van 8 of 16 zijn, en kan de VAE decodeerfase aan het eind soms zelf geheugen tekortkomen.
De prompt gaat via een tekstencoder, die woorden omzet in een lijst getallen waarop de ruisverwijderaar kan reageren. SD 1.5 gebruikt één CLIP-encoder met een limiet van 77 tokens, SDXL gebruikt er twee, Flux voegt een grote T5-taalmodel toe, en de modellen van 2025 en 2026 (Qwen Image, FLUX.2, Z-Image, Wan 2.2) gebruiken volledige LLM's als encoders. Die ene verandering verklaart het grootste deel van het verschil in hoe prompts worden geschreven: taglijsten voor CLIP-gebaseerde modellen, natuurlijke zinnen voor LLM-gebaseerde. Een LoRA is tenslotte een kleine set correcties op de ruisverwijderaar-gewichten (en soms de encoder) die stuurt wat het model tekent; het voegt geen nieuwe kennis toe, maar herweegt wat het basismodel al geleerd heeft.

Naslag

Naam
Type
Wat het is
Ruisverwijderaar (U-Net / DiT)
component
Het hoofdnetwerk. Voorspelt de ruis in een latent gegeven de prompt en de stap. U-Net in SD 1.5 en SDXL; diffusie-transformer (DiT / MMDiT) in Flux, FLUX.2, Qwen, Z-Image, Wan, LTX, H3.
VAE
component
Perst beelden naar latents en terug. Een verkeerde of ontbrekende VAE geeft verbleekte of paarse beelden. Flux en nieuwere families leveren hun eigen 16-kanaals VAEs.
Tekstencoder
component
CLIP-L, CLIP-G, T5-XXL of een LLM (Qwen2.5-VL, Mistral, Gemma). Bepaalt hoe de prompt wordt begrepen en hoe lang die kan zijn.
Scheduler / sampler
setting
Het schema van hoeveel ruis er bij elke stap wordt verwijderd en de gebruikte numerieke methode. Verandert textuur en convergentiesnelheid, niet de inhoud.
Stappen
setting
Hoeveel ruisverwijderingsiteraties. Gedistilleerde modellen (Turbo, Lightning, Schnell, Klein) zijn getraind om 1 tot 8 te gebruiken.
CFG / begeleiding
setting
Classifier-free guidance: hoeveel de prompt-geconditioneerde voorspelling wordt weggeduwd van de ongeconditioneerde. Te hoog verbrandt kleuren; begeleiding-gedistilleerde modellen (Flux dev) gebruiken één enkele begeleidingswaarde.
Latent grootte
setting
Beeldgrootte gedeeld door 8 (SD) of 16 (Flux, Wan). Modellen tekenen het beste rond de resolutie waarop ze getraind zijn.
Flow matching
training method
De vervanger vanaf 2024+ voor klassieke diffusieruis-schema's (Flux, SD3, Wan, Z-Image). Zelfde idee, rechte lijn van ruis naar beeld, minder stappen nodig.

Stap voor stap

  1. Ruis erin: de sampler maakt een latent raster van willekeurige getallen uit de seed. Verander de seed en alles stroomafwaarts verandert mee.
  2. Prompt erin: de tekstencoder zet je woorden om in embeddings. Bij CLIP-modellen wordt alles na 77 tokens opgesplitst of weggegooid; bij LLM-gebaseerde modellen is een alinea prima.
  3. Elke stap: de ruisverwijderaar wordt twee keer uitgevoerd op SD en SDXL (met en zonder prompt); het verschil, vermenigvuldigd met CFG, wijst de latent richting de prompt. Flux dev draait één keer met een ingebakken begeleidingswaarde.
  4. De sampler trekt de voorspelde ruis af volgens het schema (Karras, exponentieel, simpel, beta). Na de laatste stap is de latent een schoon beeld in gecomprimeerde vorm.
  5. Decoderen: de VAE zet de latent om naar pixels. Tiled VAE decode bestaat omdat deze stap alleen al het geheugen van een 8 GB kaart kan overschrijden bij grote formaten.
  6. Optionele tweede rondes: hires-fix voegt wat ruis toe en verwijdert die weer bij een grotere grootte; img2img begint met een bestaand beeld in plaats van pure ruis; inpainting beperkt de verandering tot een masker.
  7. Videomodellen voegen een tijdas toe aan de latent (een clip van 5 seconden is één 3D latent) en zijn verder dezelfde lus, daarom hebben ze tien keer zoveel geheugen nodig.

Voorbeelden

Dezelfde prompt door drie architecturen

SD 1.5 (CLIP, 77 tokens): "portrait of an old sailor, grey beard, wool cap, harbour background, film photo"
SDXL (two CLIPs): same words, 1024x1024, CFG 6, 28 steps
Flux dev (CLIP-L + T5): "A weathered old sailor with a grey beard and a navy wool cap stands at a harbour railing at dusk; shallow depth of field, Kodak Portra look." guidance 3.5, 24 steps

ComfyUI knooppunten gekoppeld aan de componenten

Load Checkpoint -> MODEL (denoiser), CLIP (text encoder), VAE
CLIP Text Encode (prompt) -> KSampler (sampler, steps, CFG, seed) -> VAE Decode -> Save Image

Tips

  • Een model kan niet tekenen wat niet in zijn trainingsdata zat. Daarom kennen anime-finetunes duizenden personages en fotomodellen niet, en bestaat er bijna voor elke kloof een LoRA.
  • Finetunes (DreamShaper, Juggernaut, Illustrious, Pony) hebben dezelfde architectuur als hun basis met andere gewichten; een LoRA voor de basis werkt meestal op de finetune, een LoRA voor een heel andere finetune (Pony) vaak niet.
  • Gedistilleerde modellen ruilen flexibiliteit in voor snelheid. SDXL Lightning met 4 stappen is prima voor schetsen; het volledige model met 28 stappen is beter voor eindresultaten.
  • De tekstencoder is vaak het grootste bestand. Flux met T5-XXL fp16 heeft 9 GB nodig alleen voor de encoder, daarom bestaan er fp8 en GGUF-versies.
  • Begeleidingsdistillatie (Flux dev) en CFG zijn niet hetzelfde. Een CFG van 7 op Flux dev geeft verbrande beelden; gebruik de instellingen op de modelpagina.
  • Alles hier draait op de cloudpartners precies hetzelfde als lokaal; het verschil is alleen wie de GPU bezit.

Probleemoplossing

Beelden komen grijs, verbleekt of met paarse tint uit

Waarom het gebeurt
Ontbrekende of verkeerde VAE, of een fp16 VAE overflow op SDXL.

Zo los je het op
Laad de VAE die bij de familie hoort; gebruik op SDXL de fp16-fix VAE.

Lange prompt wordt deels genegeerd

Waarom het gebeurt
CLIP tokenlimiet op SD 1.5 en SDXL.

Zo los je het op
Zet de belangrijkste woorden vooraan, of stap over naar een Flux-, Qwen- of Z-Image-model met een LLM-encoder.

Kleuren zijn verbrand en contrast is extreem

Waarom het gebeurt
CFG te hoog voor het model, of CFG gebruikt op een begeleiding-gedistilleerd model.

Zo los je het op
Verlaag CFG naar 5 tot 7 op SDXL; gebruik begeleiding 3 tot 4 en CFG 1 op Flux dev.

Tegels of dubbele onderwerpen bij grote formaten

Waarom het gebeurt
Latent veel groter dan de trainingsresolutie; het model herhaalt zichzelf.

Zo los je het op
Genereer op native grootte en schaal op, of gebruik hires-fix met 0.4 ruisverwijdering.

Geheugen tekort alleen aan het eind

Waarom het gebeurt
De VAE decodeerfase op volledige grootte.

Zo los je het op
Gebruik tiled VAE decode, of een kleinere uitvoergrootte gevolgd door een opschaler.

Vragen

Kopieert het model beelden uit zijn trainingsset?

Het slaat gewichten op, geen beelden, en kan geen trainingsfoto ophalen. Bijna-dubbele beelden van zeer frequente trainingsbeelden kunnen verschijnen (beroemde schilderijen, logo's), wat een reden is om die niet te prompten.

Waarom hebben nieuwe modellen meer geheugen nodig als het idee hetzelfde is?

Grotere ruisverwijderaars (12 miljard parameters voor Flux tegenover 0,9 voor SD 1.5), grotere tekstencoders en grotere latents. Gequantiseerde fp8 en GGUF-versies brengen dat weer omlaag.

Wat is het verschil tussen een checkpoint en een model?

Een checkpoint is het opgeslagen bestand van een model (ruisverwijderaar, vaak met encoder en VAE erbij). Mensen gebruiken de woorden door elkaar.

Waarom geeft dezelfde seed een ander beeld op een andere pc?

Andere GPU, precisie (fp16 vs bf16) of sampler-implementatie; de ruis is hetzelfde maar de rekenkunde verschilt iets. Zelfde machine, zelfde instellingen, zelfde beeld.

Helpt een hoger aantal stappen altijd?

Nee. De meeste samplers convergeren rond 25 tot 30 stappen; daarna verspil je tijd. Gedistilleerde modellen worden slechter bij meer stappen.

Modellen in deze gids

Geschreven door
Beheert de voorraad: elke LoRA, elke quant, elk bestand dat iemand hernoemde naar final_v2_REAL.safetensors. Meet hardware in hoeveel Wan-renders er voor het avondeten passen. Geeft je het VRAM-cijfer, om je daarna te vertellen dat het fout is omdat je Chrome open hebt staan. Open gewichten of het is niet verzonden.
Alle gidsen door Quartermaster

Meer gidsen