Introduzione AI parametri di SD
Un’introduzione su alcuni parametri di Stable Diffusion (Seed, Steps, CFG Scale, Samplers)
Una qualunque Intelligenza Artificiale capace di generare immagini parte da una specie di chaos e ciclo dopo ciclo arriva all’immagine finale.
In questo video sono mostrati i vari step di questo processo, si parte da un’immagine caotica iniziale creata mettendo insieme il prompt (la richiesta fatta dall’utente) ed un insieme di parametri per arrivare all’immagine finale attraverso un certo numero di cicli che “tolgono” il rumore un poco per volta.
Stable Diffusion permette di creare delle griglie in cui tenendo fermo tutto si possono fare variare solo due degli n parametri.
Ho fatto qualche test, per il primo ho usato questo prompt: (art:1.4) of white chaos, dark background, highly detailed, (intricate:1.2) che potrebbe tradursi in fammi qualcosa di caotico, giocato sul bianco e su fondo scuro. Non è un prompt particolarmente complesso, serviva solo per questa prova.
Fra tutti i parametri ho fatto variare Seed e CFG scale, in modo da ottenere una griglia di 80 elementi, questa (ogni griglia si apre a grandezza naturale, basta cliccarci sopra).

Queste tabelle si leggono da sinistra verso destra e dall’alto verso il basso. Bisogna fare attenzione ai valori di Seed, sono 555555550, 555555551, 555555552, … insomma variano di una unità eppure in orizzontale non c’è nessuna progressione visiva ma le immagini sono slegate fra loro. Sarebbe successo qualsiasi valore avessi usato, numeri vicini fra loro oppure molto distanti. Si può notare invece che ogni colonna sembra avere una sua progressione. Per capire la tabella occorre sapere cosa sono i parametri fatti variare:
Seed va da 0 a 4.294.967.296 ed è un fattore di chaos, o meglio è un fattore aggiuntivo che si somma a quello che si genera mescolando prompt e parametri. Per provare a fare un’analogia, pensiamo ad un puzzle, l’immagine finale è quando il puzzle è composto mentre l’immagine caotica da cui parte il processo di generazione si può paragonare alle tessere scomposte buttate su un piano. Il Seed è equivalente ad un ulteriore passaggio di una mano per mescolare gli elementi. Si potrebbe dire che un seed uguale ad 1 è un giro della mano, un seed uguale a 2 è due giri e così via. Non c’è correlazione fra i diversi valori, tornando all’analogia del puzzle ogni giro di mano scombina in modo assolutamente casuale le posizioni delle tessere sul tavolo e non è detto che più giri di mano vogliano dire più chaos. Questo spiega perché non c’è una progressione visiva nelle immagini sulla stessa riga.
CFG Scale va da 1 a 30 e dice quanta libertà creativa vogliamo lasciare a SD nell’eseguire la nostra richiesta. Con valori fino a 6 stiamo dicendo all’applicativo di fare un po’ come vuole, dal 10 in su deve eseguire quello che gli chiediamo in modo sempre più stringente, dal 6 al 10 è ovviamente una cosa intermedia, ha una certa libertà ma deve tenere abbastanza conto della nostra richiesta. Valori sopra 14/15 possono portare ad evidenti artefatti, specie se si vuole un risultato di qualità fotografica di una figura umana. Confrontando le prime due linee (CFG 2 e 4) si vede che a parità di seed ci sono immagini molto diverse fra loro, mentre man mano che si scende le variazioni diminuiscono.
Ho fatto un’altra prova facendo variare Steps e CFG scale. Il risultato è stato questo

Steps va da 1 in su ed è il numero di cicli del processo di generazione dell’immagine. Un numero basso (10) può portare a deformazioni dell’immagine generata, più evidenti quando si ha a che fare con figure umane. All’estremo opposto valori alti non implicano immagini finali meglio definite.
Qui la progressione sembra esserci sia nelle colonne sia nelle righe orizzontali e il risultato è ordinato anche visivamente nel suo insieme.
In queste due prove ho usato il modello Illuminati Diffusion.
Ho rifatto le stesse prove con una figura umana, con il prompt a photorealistic portrait of (one:2.0) (lady:1.5), cinematic, studio lighting, detailed and intricate, che si può pensare come la richiesta di un ritratto dettagliato di una signora (per evitare di ritrovarmi con adolescenti ipersessualizzate). Ho usato il modello RPG.
La prima prova, CFG e Seed, prendendo per il secondo parametro valori vicini fra loro. Questo il risultato, con Steps impostato a 50

Mentre la prova facendo variare Steps e CFG è questa

Guardando le tabelle le considerazioni che si possono fare sono:
Steps un range tipico può andare da 20 a 90, un valore basso come è 10 può portare a deformazioni, che non è detto siano evidenti su soggetti fantastici/astratti mentre possono esserlo su soggetti umani
CFG Scale usare con attenzione valori alti, specie quando si ha a che fare con figure umane. Ricordando la richiesta fate attenzione all’età apparente in funzione del valore del parametro, questo succede perché valori bassi implicano un alto grado di libertà di interpretazione della richiesta da parte di SD e la risposta è influenzata dai contenuti dei Dataset con cui le AI sono state istruite.
Seeds ha un uso particolare, mentre tutto sommato gli altri parametri influiscono in un modo approssimativamente lineare sull’immagine (se li vario di poco l’immagine risultante cambierà di poco, il concetto “di poco” varia da parametro a parametro) in questo caso anche cambiare il suo valore di una unità può portare a variazioni drastiche. Per questo lo si può usare nella fase iniziale di un lavoro, se si vogliono provare configurazioni diverse. Oppure quando si vuole ripartire da capo o quasi.
Una considerazione finale, i parametri non funzionano in modo isolato ma interagiscono fra di loro. Ad esempio queste prove le ho fatte usando Euler A come metodo di sampling, a sua volta un altro parametro. Ma cos’è un Sampler? È il metodo matematico usato da SD per togliere il rumore ad ogni ciclo. Ne esistono almeno una ventina, in questo test ne ho messi a confronto alcuni

Conclusioni, sia pure parziali, lavorare con una AI è complesso, dire che basta sedersi e digitare la richiesta è fuorviante. Da un lato è vero che si può fare ed è vero che qualcosa si ottiene, con Midjourney quasi sicuramente si genera una bella immagine perché è progettato (anche) per questo, mentre con Stable Diffusion dipende dai settaggi impostati. Meno semplice è riuscire a controllare il processo e spero che questa chiacchierata possa essere servita a fare capire perché non è così vero che “basta sedersi e digitare quello che vuoi ottenere e ce l’hai“, anche tenuto conto che qui ho parlato solo di 4 parametri su una decina. Questo discorso vale anche per Midjourney, la differenza rispetto a SD è che i parametri non sono immediatamente visibili, cosa dovuta alla scelta di Discord come interfaccia (aspettando di vedere la web app che dovrebbe essere prossima al rilascio).
