Capitolo 21 · Diffusione · 9 min
Generare un'immagine cancellando il rumore
Stable Diffusion, Midjourney, FLUX. Il processo inverso di denoising, il ruolo di CLIP, e perché U-Net cede il passo ai Transformer.
Una famiglia diversa
Tutto ciò che abbiamo visto finora descrive Transformer che predicono il token successivo. È l'architettura che domina il linguaggio, il codice, e sempre più il video e l'audio.
Ma quando scrivi un prompt in Midjourney, Stable Diffusion o FLUX, non è quello che succede. L'immagine non è generata pixel per pixel da sinistra a destra. Appare ovunque allo stesso tempo, raffinata in tappe successive.
È l'opera di una famiglia di modelli molto diversa: i modelli di diffusione.
L'idea centrale: imparare a denoise
Il processo di diffusione si ispira a un'intuizione quasi troppo semplice. Se prendo un'immagine nitida e ci aggiungo progressivamente del rumore gaussiano, a un certo punto diventa indistinguibile dal rumore puro. Se imparo a invertire questo processo — a togliere rumore poco a poco — allora posso partire dal rumore puro e finire con un'immagine nitida.
Durante l'addestramento:
- Si prende un'immagine dal dataset
- Le si aggiunge rumore secondo una pianificazione predefinita (per esempio T = 1000 passi)
- Si addestra una rete a predire il rumore aggiunto dati l'immagine rumorosa e il passo t
Il modello impara così, per qualsiasi livello di rumore, a riconoscere cosa è "vera immagine" e cosa è "rumore aggiunto".
All'inferenza, si inverte: si parte da puro rumore, e a ogni passo, il modello predice il rumore, lo si sottrae, e si ricomincia. Dopo T passi, si ottiene un'immagine plausibile — che assomiglia alla distribuzione appresa.
Prova il denoising
Due regolazioni, un pulsante. Metti prima il numero di passi al minimo e clicca su Genera; ripeti al massimo e confronta. Poi lascia stare i passi e fai variare la guidance (CFG) da 0 a 15. Sono esattamente i due cursori che ti espone qualsiasi interfaccia di generazione di immagini.
L'animazione parte da un'immagine di puro rumore e la denoising-zza per passi successivi. Ogni passo segue il gradiente appreso durante il training, guidato dall'embedding testuale di CLIP. A 5 passi il risultato è sfocato; a 50, è nitido.
Gioca con il numero di passi. A 5 passi, l'immagine resta granulosa — il modello non ha il tempo di raffinare. A 50 passi, diventa nitida ma è dieci volte più calcolo. La maggior parte dei sampler moderni (DDIM, DPM-Solver) raggiungono una qualità quasi ottimale in 20-30 passi.
Dirigere verso un'immagine precisa: la guidance
Il rumore puro è lo stesso per tutti i prompt. Come fa il modello a sapere che vogliamo un tramonto e non un cane? La risposta: si condiziona il modello sul testo.
Durante l'addestramento, si fornisce alla rete, oltre all'immagine rumorosa e al passo, un embedding del testo associato all'immagine (spesso un encoder di tipo CLIP). La rete impara così predizioni di rumore condizionate: "sapendo che l'immagine descrive un tramonto, ecco a cosa assomiglia il rumore".
All'inferenza, si calcolano due predizioni: una con il prompt, una senza (o con un prompt vuoto). La tecnica della Classifier-Free Guidance (CFG) consiste nell'estrapolare nella direzione del prompt:
predizione_finale = predizione_senza_prompt + guidance × (predizione_con_prompt − predizione_senza_prompt)
Il coefficiente guidance (CFG scale) controlla quanto ci si allontana dal naturale per aderire al prompt. A CFG=0, il modello ignora il testo; a CFG=7, l'immagine segue fedelmente il prompt senza diventare artificiale; oltre 12, diventa sovrasaturata e perde i dettagli fini.
Latent diffusion: fare meno calcolo
Un'immagine 512×512 sono 262.144 pixel — e poiché ognuno porta tre canali di colore, 786.432 valori da trattare. Fare 1.000 passi di denoising su tanti pixel è molto costoso. Stable Diffusion ha popolarizzato un trucco: lavorare in uno spazio latente compresso.
Prima di addestrare il modello di diffusione, si addestra un autoencoder (un VAE) che comprime le immagini in uno spazio latente 64×64×4 — circa 48× più piccolo. La diffusione si applica allora solo a questo latente, non ai pixel. Alla fine del denoising, si decodifica il latente verso l'immagine finale.
È ciò che rende Stable Diffusion eseguibile su una GPU consumer in qualche secondo — mentre un modello pixel-based equivalente richiederebbe un cluster.
CLIP: il ponte tra testo e immagine
Per condizionare sul testo, serve una rappresentazione testuale che condivida uno spazio con quella delle immagini. È il ruolo di CLIP (Contrastive Language-Image Pretraining), addestrato da OpenAI su 400 milioni di coppie immagine/didascalia.
CLIP impara due encoder — uno per le immagini, uno per il testo — che producono embedding in uno spazio comune. Una didascalia e la sua immagine target hanno embedding vicini; una didascalia senza relazione è lontana. Questo allineamento permette al modello di diffusione di capire prompt testuali che non ha mai visto esattamente all'addestramento.
U-Net vs Transformer (DiT)
Per molto tempo, l'architettura di riferimento per la diffusione era la U-Net: una rete convolutiva a U, con skip connection che preservano i dettagli fini. Stable Diffusion 1.4, 1.5 e 2 usano tutti delle U-Net.
Ma nel 2022, Peebles e Xie hanno proposto DiT (Diffusion Transformer): sostituire la U-Net con un Transformer puro. Ogni "patch" dell'immagine è trattata come un token, con attention completa su tutti gli altri patch. Niente più piramide convolutiva, niente più skip connection — solo block Transformer impilati.
Stable Diffusion 3, FLUX, Sora (video) — tutte le architetture recenti sono migrate al Transformer. Perché? Perché i Transformer scalano meglio: si ritrovano le stesse leggi di scala che per il linguaggio. Raddoppiare il compute su un DiT migliora le immagini in modo prevedibile.
Il sampler: DDPM, DDIM, DPM-Solver
Il sampler è l'algoritmo che decide, a ogni passo, come combinare la predizione del rumore con lo stato corrente per produrre il passo successivo.
| Sampler | Passi tipici | Particolarità |
|---|---|---|
| DDPM | 1000 | Stocastico, fedele all'addestramento, lento |
| DDIM | 20–50 | Deterministico, qualità comparabile a DDPM in molti meno passi |
| DPM-Solver | 10–25 | Solver di EDO, ancora più veloce |
| Euler / Heun | 20–30 | Metodi classici di EDO, semplici e robusti |
| LCM | 4–8 | Distillazione latente, ultra-veloce |
La scelta del sampler è una delle leve più accessibili per regolare velocità vs qualità.
Perché questa famiglia esiste accanto ai Transformer
Si potrebbe chiedere: perché non generare immagini come si genera testo, token per token? La risposta è sottile.
Per il testo, l'ordine è naturale: si legge da sinistra a destra, e ogni parola dipende dalle precedenti. Per un'immagine, non c'è un ordine canonico. Generare pixel per pixel introduce artefatti (i primi pixel non hanno il contesto degli ultimi). La diffusione risolve questo problema generando tutta l'immagine in parallelo, raffinata globalmente a ogni passo.
È per questo che gli approcci autoregressivi sui pixel (PixelRNN, l'ImageGPT iniziale di OpenAI) sono stati abbandonati: troppo lenti, e il risultato portava la traccia dell'ordine di generazione.
Ma la storia non si è fermata lì, ed è una bella lezione di umiltà. L'autoregressivo è tornato — non più sui pixel, ma su token di immagine, esattamente come un LLM manipola token di testo. Quando OpenAI ha integrato la generazione di immagini direttamente nei suoi modelli linguistici nel 2025, l'approccio è passato in testa ai confronti, davanti alle migliori diffusioni del momento. Da allora la frontiera mescola le due cose: un transformer autoregressivo che decide cosa rappresentare, un decoder di tipo diffusione che produce l'immagine finale.
La diffusione non è un Transformer: è un altro modo, matematicamente ortogonale, di apprendere una distribuzione complessa. Domina ancora l'open source per le immagini — ma l'idea che « la diffusione ha vinto » ha fatto il suo tempo. Le due famiglie si stanno ricongiungendo.
Ed è un buon modo di chiudere questo percorso. Sei partito da un sistema che predice la parola successiva, e hai seguito quel filo fino ai token, ai vettori, all'attenzione, all'allineamento, agli agenti, alle feature. Quest'ultimo capitolo ricorda che esisteva un'altra strada — e che finisce per incrociare la prima. Niente di tutto questo è stabilizzato: le architetture dominanti di oggi non saranno per forza quelle di fra tre anni. Ma i meccanismi che ora conosci, quelli, non si muoveranno molto. Sono loro a permetterti di leggere la prossima sorpresa per quello che è: un'idea di ingegneria, non magia.
Aggiornato il