Txt2img (Stable Diffusion): differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 281: | Riga 281: | ||
|title=Guida all'utilizzo di Txt2img | |title=Guida all'utilizzo di Txt2img | ||
|title_mode=append | |title_mode=append | ||
|keywords= | |keywords=stable diffusion, txt2img, intelligenza artificiale, image generation, generazione immagini, guida, tutorial, parametri, dettagli, qualità, upscaler, denoising strength, cfg scale, sampling steps, batch count, batch size, textual inversion, hypernetworks, LORA | ||
|description= | |description=Questa guida fornisce una panoramica completa su Txt2img, il tool di Stable Diffusion per generare immagini da prompt testuali. Esplora le varie impostazioni come Sampling Steps, CFG Scale e Denoising Strength, con esempi e confronti visivi. Scopri come ottimizzare i risultati e ottenere immagini di alta qualità. | ||
|image=Overview_diffusion.png | |image=Overview_diffusion.png | ||
}} | }} |
Versione attuale delle 16:26, 17 ago 2024
Txt2img è un tool di Stable Diffusion che, come intuibile, genera un'immagine .png basata su un prompt testuale. Il suo ultimo aggiornamento risale al 28 Ottobre 2022.
I parametri di Txt2img non verranno descritti con massimo dettaglio dal momento che la finalità di questa Wiki entry è di fornire delle linee guida comprovate da sperimentazione diretta.
- Il primo obiettivo è ricondurre con praticità il livello di performance riscontrato nel modello alle relative combinazioni di parametri.
- Il secondo obiettivo è creare collegamenti tra ciascun parametro e la corrispondente sezione dell'architettura.
Link di approfondimento
Nel caso si voglia approfondire i setting si può visitare il github relativo alla UI: [1]
Nel caso si voglia approfondire l'architettura generale si può visitare il repository: [2]
Overview dell'interfaccia
- Sampling steps:
-Tra l'1 e i 15 step: l'immagine è relativamente sfocata.
-Tra i 15 e i 25 step: L'immagine è abbastanza chiara e di buona qualità.
-Tra i 25 e i 45: La qualità dell'immagine è molto alta e comprende la texture.
-Dai 45 in poi: La loss function si stabilizza e si osserva una variazione minima nella risoluzione.
![]() |
![]() |
![]() |
---|
![]() |
![]() |
![]() |
---|
![]() |
![]() |
---|
Upscaler:
L'upscaling è il processo di aumentare la risoluzione di un'immagine, cioè di ingrandirla, mantenendo al contempo la qualità visiva il più alta possibile e può essere ottenuto mediante algoritmi di interpolazione e tecniche avanzate di elaborazione delle immagini, che aggiungono dettagli artificiali per migliorare l'aspetto dell'immagine.
- Hires Steps: migliorano la qualità dell'immagine attraverso iterazioni aggiuntive durante il processo di generazione
- Denoising strenght
- Upscale by: L'upscale di solito avviene dopo che l'immagine è stata completamente generata. L'immagine viene resa più grande senza perdere significativamente in qualità o dettaglio. Si esprime come un multiplier delle dimensioni dell'immagine generata, da 1 a 4.
- Width/Height: Dimensioni
- Batch count: il numero di gruppi in cui i dati vengono divisi durante l'elaborazione. Più batch count può significare una maggiore divisione dei dati durante il processo.
- Batch size: quanti dati vengono elaborati contemporaneamente in ciascun gruppo. Un batch size più grande può accelerare il processo ma richiedere più memoria, mentre un batch size più piccolo può richiedere più tempo ma portare a risultati più precisi.
- CFG Scale (Classifier Free Guidance Scale)
- Seed: Un numero che inizializza il generatore di numeri casuali. Utilizzare lo stesso seed con gli stessi parametri di input produrrà sempre la stessa immagine. È utile per la riproducibilità o per fare piccoli aggiustamenti su un'immagine esistente.
Tecniche

Sperimentazioni
Per effettuare un'analisi bilanciata utilizzeremo gli stessi due metri di giudizio per valutare gli output:
- Inception Score
- Visual Inspection by GPT4
Sperimentazione: Denoising Strength
Questo parametro si riferisce all'intensità della riduzione del rumore applicata a un'immagine. Il "rumore" è il termine usato per descrivere variazioni casuali e non desiderate nei livelli di luminosità o colore di un'immagine, che possono renderla granulosa o offuscata e possono distorcere i dettagli.
- Parametri Statici:
- Prompt = "A man cooking a steak, he is in the kitchen, the stoves are on"
- Clip skip = 1
- Sampling Method: DPM++2M SDE SGMUniform
- Sampling Steps: 30
- Upscaler : Latent (nearest-exact)
- Hires Step: 0
- Batch count : 1
- Batch size: 1
- CFG : 15
(Le sperimentazioni iniziano dopo il valore 0, poiché non si sta fornendo al modello l'opportunità di "pulire" o trasformare il rumore in un'immagine coerente basata sul prompt fornito)
![]() |
![]() |
![]() |
Osservazioni
Impostando il Denoising Strenght a "0,1", si nota un'elevata quantità di rumore che rende indefiniti sia i dettagli che le sagome degli elementi a schermo. Aumentando de facto il valore del parametro si può osservare nettamente la differenza e l'efficacia fra il valore intermedio (0,3) e quello iniziale, fino ad arrivare ad una qualità più che sufficiente impostando il parametro a "0,7".
Visual inspection by ChatGPT4
Qui di seguito ci sarà una descrizione di ChatGPT4 sulla qualità delle immagini, in modo da comprendere se il modello riesca a individuare rumore e artefatti.
<<Le tre immagini mostrano una sequenza di azioni in una cucina, con un uomo che sembra impegnato nella preparazione di un piatto di carne. Nella prima immagine, il cuoco sta flambando la carne, creando un effetto visivo spettacolare con le fiamme che si alzano dalla padella. Nella seconda, appare concentrato nel girare o condire la carne, mentre nella terza è intento a cucinare, forse verificando la cottura o aggiungendo altri ingredienti. Ogni immagine ha una qualità elevata, con dettagli nitidi e colori vivaci che catturano bene la scena della cucina. L'illuminazione è ben gestita, evidenziando le azioni del cuoco e dando vita agli alimenti in preparazione. La composizione è dinamica e sembra che ci sia stata attenzione nel posizionare ogni elemento per creare una scena armoniosa che guida l'occhio verso il soggetto principale senza distrazioni superflue. Non si notano artefatti che suggeriscono una manipolazione digitale e le immagini trasmettono un senso di autenticità e professionalità. Ciò suggerisce che probabilmente sono state scattate durante una vera sessione di cucina e che fanno parte di una serie tematica ben pianificata. In sintesi, si tratta di una rappresentazione coerente e accattivante del processo culinario in azione.>>
Dalla descrizione fornita, si nota come ChatGPT4 non riesca ad individuare le differenze sostanziali presenti fra le tre immagini, dimostrando comunque la capacità di saper descrivere il contesto in modo eccellente.
Sperimentazione: CFG Scale
Questo parametro controlla quanto fedelmente il processo di generazione delle immagini segue il prompt di testo fornito. Un valore più alto del CFG Scale significa che l'immagine generata sarà più aderente al testo di input, ossia seguirà più strettamente le indicazioni date. In contrasto, un valore più basso dà al modello più libertà di inventare o di essere creativo, portando a risultati che possono deviare di più dal prompt originale.
- Parametri Statici:
- Prompt = "A man cooking a steak, he is in the kitchen, the stoves are on"
- Clip skip = 1
- Sampling Method: DPM++2M SDE SGMUniform
- Sampling Steps: 30
- Upscaler : Latent (nearest-exact)
- Hires Step: 0
- Batch count : 1
- Batch size: 1
- Denoising Strength = 0,7
![]() |
![]() |
![]() |
Osservazioni
Impostando il parametro al suo valore minimo si nota come il modello segua ben poco il prompt fornito. Viene presentato un ragazzo e non un uomo, situato in un posto che ricorda appena una cucina, mentre sta cucinando del cibo che ricorda vagamente la carne. Con un valore pari a "3", il setting è già interamente riconoscibile. In questo caso sono solo le azioni che vengono rappresentate a schermo ad essere poco chiare, poiché si nota un uomo che ha messo una fetta di carne in un forno a legna. L'ultima immagine mostra un contesto totalmente credibile: sia l'ambiente che le azioni sono coerenti con il prompt fornito, benché gli unici difetti facilmente visibili sono gli oggetti che l'uomo tiene in mano per cucinare, essendo poco definiti.
Il parametro "Share attention in batch" è una funzionalità dove l'attenzione del modello, ovvero la parte che il modello "considera" più importante durante la generazione dell'immagine, viene condivisa o sincronizzata tra le immagini in un batch. Quando si generano più immagini contemporaneamente (un batch), questo parametro fa in modo che tutte le immagini nel batch diano priorità a parti simili dell'input, o che le caratteristiche stilistiche siano coerenti tra di loro. Per esempio, se si stanno generando immagini di volti e si vuole che l'attenzione sia focalizzata sugli occhi per tutti i volti nel batch, attivare questa opzione potrebbe aiutare a garantire che tutti i volti generati abbiano occhi ben definiti e uno stile simile. Questo può essere particolarmente utile quando l'obiettivo è creare una serie di immagini che devono essere visivamente coerenti l'una con l'altra.
- Parametri Statici:
- Prompt = "A man cooking a steak, he is in the kitchen, the stoves are on"
- Clip skip = 1
- Sampling Method: DPM++2M SDE SGMUniform
- Sampling Steps: 30
- Upscaler : Latent (nearest-exact)
- Hires Step: 0
- Batch count : 1
- Batch size: 1
- CFG : 15
- Denoising Strength = 0,7
![]() |
![]() |
Sperimentazione: Hires steps
Questo parametro si riferisce ai passaggi aggiuntivi di elaborazione che vengono eseguiti per rifinire l'immagine dopo la sua creazione iniziale. Aumentare l'Hire ssteps può migliorare la qualità dell'immagine, ma rallenterà anche il processo di generazione.
- Parametri Statici:
- Prompt = "A man cooking a steak, he is in the kitchen, the stoves are on, the steak is being cooked on a pan"
- Clip skip = 1
- Sampling Method: DPM++2M SDE SGMUniform
- Sampling Steps: 30
- Upscaler : Latent (nearest-exact)
- Batch count : 1
- Batch size: 1
- CFG : 15
- Denoising Strength = 0,7
![]() |
![]() |
Osservazioni
In questa sperimentazione si notano poche differenze fra un'immagine e l'altra; fra l'assenza del parametro e il suo valore massimo. L'unico difetto individuabile si trova nella prima immagine dove l'uomo sta cercando di cuocere la carne senza una padella.
Sperimentazione: SelfAttentionGuidance Integrated
Questa tecnica è progettata per rendere il processo di generazione delle immagini più semplice e veloce per l'utente, migliorando allo stesso tempo la qualità delle immagini prodotte. La funzionalità integrata della "self attention guidance" può aiutare a creare immagini che appaiono più realistiche e con oggetti meglio definiti senza che l'utente debba effettuare configurazioni complesse o passaggi supplementari. Il termine "Scale" si riferisce all'intensità con cui la guida basata sull'auto-attenzione viene applicata durante il processo di generazione. Una "Scale" maggiore implica un'adesione più forte al prompt testuale e può portare a immagini più dettagliate e coerenti con l'input, anche se potrebbe ridurre la diversità delle immagini generate. Il parametro "Blur Sigma", invece, è associato al grado di sfocatura che viene applicato alle regioni selezionate di un'immagine. Questo processo agisce dove le aree con maggiore auto-attenzione — ovvero quelle parti dell'immagine che il modello riconosce come più importanti o informative — vengono sfocate leggermente. L'idea è che enfatizzando il lavoro del modello su queste aree sfocate, il modello può generare risultati migliori, perfezionando le parti più significative dell'immagine e riducendo potenzialmente il rumore o i dettagli superflui nelle regioni meno importanti. I valori di default sono i seguenti: <<Scale = 0,5>> - <<Blur sigma = 2>>
- Parametri Statici:
- Prompt = "A man cooking a steak, he is in the kitchen, the stoves are on, the steak is being cooked on a pan"
- Clip skip = 1
- Sampling Method: DPM++2M SDE SGMUniform
- Sampling Steps: 30
- Upscaler : Latent (nearest-exact)
- Hires Step: 0
- Batch count : 1
- Batch size: 1
- CFG : 15
- Denoising Strength = 0,7
![]() |
![]() |
![]() |
Osservazioni
Nella prima immagine si osserva il confronto tra l'immagine generata senza la tecnica del SAG e quella generata con quest'ultima. Si evidenzia come l'immagine generata con la tecnica con valori impostati di default sia di qualità inferiore alla prima, suggerendo che bisogna regolare i parametri di "scale" e di "blur sigma". Per quanto riguarda le immagini generate variando solo il parametro di scale, si nota come si ottengano dei pessimi risultati impostando dei valori sia troppo bassi che troppo alti, e che quindi sia necessario lavorare nei valori intermedi (i risultati cambiano in base alla complessità del prompt). Relativamente al parametro di Blur sigma, si notano poche differenze fra le tre immagini, benché ci siano errori evidenti sul modo in cui l'uomo tenga in mano degli oggetti difficilmente identificabili, soprattutto nei valori "0,1" e "10".
Altri componenti
![]() |
ControlNet
Un modello di rete neurale progettato per controllare i modelli di Stable Diffusion, fornendo agli utenti un controllo dettagliato sugli output dei modelli di diffusione nelle attività di generazione di testo in immagine. ControlNet è una struttura di rete neurale che consente l'aggiunta di condizioni aggiuntive per influenzare l'output dei modelli di diffusione. Queste condizioni possono assumere molte forme, come Edge maps, Depth maps, e Semantic segmentations. L'uso di ControlNet su Stable Diffusion offre numerosi vantaggi. Consente un controllo preciso sulla semantica e sulle caratteristiche del contenuto generato, consentendo la generazione di output più accurati e personalizzati.
DynamicThresholding (CFG-Fix)
è un filtro per migliorare le immagini. Aiuta a risolvere problemi di colore quando si usano impostazioni più alte. Queste ultime, si riferiscono a valori maggiori o livelli superiori, significa utilizzare valori più grandi per migliorare l’immagine. Ad esempio, se un’immagine è leggermente sbiadita e la si vuole rendere più nitida, è possibile aumentare determinati parametri. Tuttavia, a volte, quando si usano valori troppo alti, potrebbero verificarsi problemi di colore. Ecco dove entra in gioco CFG-Fix: risolve questi problemi di colore quando si utilizzano impostazioni elevate.
FreeU
Un componente aggiuntivo di Stable Diffusion che migliora la qualità dell'immagine modificando il denoiser del modello. Il miglioramento avviene senza costi: nessun addestramento, nessun parametro aggiuntivo introdotto e nessun aumento della memoria o del tempo di campionamento.
Prompt: A 25 year old mage, dress, full body, magic, lightning, rim light, moon, night
(Da sinistra) Generazione neutra e utilizzo FreeU.
HyperTile
è un metodo che ottimizza il livello di auto-attenzione all’interno dei modelli Stable-Diffusion. Questo porta a una riduzione del tempo di calcolo che varia da 1 a 4 volte, a seconda della risoluzione iniziale.
Prompt: A man eating pasta
(Da sinistra) Generazione neutra (15 sec) e utilizzo di Hypertile (7 sec)
Kohya HRFix
è un’estensione utilizzata nei modelli Stable-Diffusion per migliorare la risoluzione delle immagini generate. Questa estensione è stata sviluppata da Kohya e ha lo scopo di limitare i problemi di clonazione/crollo nelle immagini ad alta risoluzione. Tuttavia, l’uso di Kohya HRFix può ridurre la varietà delle immagini generate, rendendole più identiche tra loro. Le impostazioni ottimali per Kohya HRFix possono variare a seconda delle esigenze specifiche dell’utente.
Prompt: A potrait of a white cat, cozy house
(Da sinistra) Generazione neutra e utilizzo Kohya HRFix.
Possiamo notare che nonostante presenti risultati migliori per quanto riguarda la risoluzione e dei dettagli, Kohya ha anche il contro di alterare leggermente l'interpretazione del prompt il che, per artisti dedicati e che curano ogni dettaglio della generazione, può essere un grosso dealbreaker.

LatentModifier
è un componente che modifica i valori latenti durante il processo di diffusione in un modello di generazione di immagini. Queste modifiche possono influenzare vari aspetti dell’immagine finale, come la nitidezza, il contrasto e il rumore. Ci sono parametri
Prompt: A potrait of a white cat, cozy house
(Da sinistra) Generazione neutra e utilizzo LatentModifier.
Sharpness Multiplier:
Prompt: a cute kitten smoking a cigar


Tonemap Multiplier:


MultiDiffusion
è un framework unificato che consente la generazione di immagini versatili e controllabili, utilizzando un modello di diffusione text-to-image pre-addestrato. Al centro dell’approccio c’è un nuovo processo di generazione, basato su un compito di ottimizzazione che lega insieme più processi di generazione di diffusione con un insieme condiviso di parametri o vincoli. Quindi, invece di utilizzare un'unica immagine di riferimento (prompt), la multidiffusion combina le informazioni da più immagini per creare un'immagine finale più ricca e complessa.

Never OOM
Parametro puramente tecnico che permette di scaricare sempre i modelli dalla VRAM. Questo può essere utile se si utilizzano più software insieme e si desidera che Stable Diffusion utilizzi meno VRAM e ne dia una parte ad altri software, o quando si utilizzano vecchie estensioni che competono con la VRAM di Stable Diffusion. Non ha impatto sulla generazione.
Script
Questa funzione è utilizzata per implementare script personalizzati che possono modificare il comportamento del processo di generazione di immagini.
- None: Questa è l’opzione predefinita che significa che non viene eseguito alcuno script.
- Prompt matrix: permette di testare e confrontare le modifiche che i prompt apportano alle immagini generate. Si possono strutturare i prompt in modo che ogni immagine nella matrice abbia un prompt che inizia con una frase comune.Per esempio, una immagine avrà il prompt “una ciotola di frutta, mele”, un’altra avrà “una ciotola di frutta, mele, pere” e così via.
- Prompts from file or textbox: permette di caricare i prompt da un file o da un textbox. Si può creare un prompt a piacimento, creare un numero x di variazioni su di esso, copiare quel file di testo, e ripetere fino a quando non hai centinaia di mini file di testo.
- X/Y/Z plot: permette di eseguire test sui propri prompt e impostazioni per vedere i risultati, senza impegnarsi in una generazione di immagini completa. Utilizzando un grafico, si possono confrontare i risultati per vedere quale combinazione di impostazioni funziona meglio.