lunedì 9 ottobre 2023

Guida all'installazione - Webui di Automatic1111

Questa è una guida per Win10/Win11 e GPU Nvidia serie 10xx/16xx/20xx/30xx/40xx

- Se non avete la powershell di windows installatela, vi servirà

- È consigliato avere almeno 100GB liberi su disco da dedicare Stable Diffusion perché i modelli pesano svariati GB.

- Installate cuda_11.8.0_522.06_windows.exe se avete driver più recenti potete evitare d'installare la versione inclusa nel pacchetto selezionado in installation option la voce custom per poi togliere la spunta a components e driver components, procedete ed ignorate l'eventuale warning relativo all'assenza di CUDA Visual Studio integration spuntando la casella e andando avanti.

- Installate Git standalone a 64bit l'ultima versione va benissimo.

- Installate python-3.10.6-amd64.exe questa è la versione consigliata dal dev per non incorrere in problemi ed errori.

- Finito con le installazioni verificate che nelle variabili d'ambiente di Windows siano presenti i percorsi di CUDA, GIT e Python.

- Aprite con powershell un percorso di vostro gradimento e lanciate il comando :  

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 

appena finito di scaricare andate nella cartella stable-diffusion-webui e lanciate webui.bat ed aspettate, scaricherà tutto il necessario, tra cui anche la versione v1-5-pruned-emaonly.safetensors del checkpoint model di Stable Diffusion.

- Sempre nella stessa cartella è presente il file webui-user.bat che servirà per lanciare la webui, potete linkarlo sul desktop se vi fa comodo.

- Cliccate due volte su webui-user.bat vi si aprirà la finestra di caricamento, appena avrà finito di caricare tutti i componenti senza darvi alcun messaggio di errore, dovrebbe aprirsi in automatico il browser che usate di default all’indirizzo http://127.0.0.1:7860/ con l’interfaccia pronta da usare.

domenica 8 ottobre 2023

Guida all'ottimizzazione - Webui di Automatic1111

Per ottimizzare l'uso della GPU si possono utilizzare dei parametri da aggiungere nel file webui-user.bat alla seguente voce :

set COMMANDLINE_ARGS=

Questi parametri riguardano le ottimizzazioni per le prestazioni in general :

--xformers : va bene per tutte le serie NVIDIA 10xx/16xx/20xx/30xx/40xx vi istallerà gli xformers e ve li farà usare ad ogni avvio.

--opt-sdp-no-mem-attention : da usare come alternativa agli xformers sopratutto sulle schede più recenti.

--opt-channelslast : darà un ulteriore boost alle schede dotate di tensorcore presenti nelle serie 16xx/20xx/30xx/40xx

Questi parametri sono utili per ottimizzare al meglio l'utilizzo della memoria disponibile e potete aggiungerli all'occorrenza :

--medvram : è utile a ridurre l'utilizzo della vram se la vostra scheda ha 8-11GB , se usate risoluzioni maggiori di 512x512 o checkpoint model più pesanti.

--lowvram : è utile a ridurre l'utilizzo della vram se la vostra scheda ha 4-6GB e potrebbe essere essenziale nel vostro caso per non avere messaggi di out of memory

--medvram-sdxl : è utile a ridurre l'utilizzo della vram se state usando SDXL su GPU con meno di 12GB di vram o anche su schede con 12-16GB dove vengono utilizzati in contemporanea altri checkpoint model come il refiner o qualsiasi altra estensione che occupa memoria.

Se volete approfondire l'argomento parametri fate riferimento a questa risorsa ufficiale Command Line Arguments and Settings della Webui.

 

Ottimizzazioni ulteriori per la serie 40xx :

Installando i cuDNN più aggiornati per la serie 40xx possiamo ottenere un boost di prestazioni del +40-50%

Scaricate i cuDNN 8.7.0 per Cuda 11.8 decomprimete l'archivio, copiate le .dll nella cartella Bin nel percorso stable-diffusion-webui\venv\Lib\site-packages\torch\lib e sovrascrivete i file presenti.

Esistono anche versioni più recenti come cuDNN 8.9.4 sempre per Cuda 11.8 ma dovete registrarvi al sito per poterli scaricare

sabato 7 ottobre 2023

Guida rapida ai Prompt per Stable Diffusion

I testi che scriverete nel campo prompt sono case insensitive non fanno distinzioni tra maiuscole e minuscole. Un prompt breve come Cat servirà solo a testare il corretto funzionamento della Webui. Una guida dettagliata con tutte le informazioni all'uso del Prompt la trovate a questo link.

Se siete poco ispirati in rete ci sono tool AI Prompt Generator per generare un prompt completamente random da testare subito. Se avete già in mente un soggetto con Prompt Generator inserendo il termine Cat otterrete un prompt random come il seguente :

realistic 3D cat character, soft realistic lighting, polycount, skottie young, trending on artstation

Le quality tags ci permettono di influenzare il prompt che andiamo a scrivere, chiundendo tra parentesi tonde ( ) una parola o un gruppo di parole possiamo enfatizzare uno o più aspetti, mentre con le parentesi quadre [ ] lo de-enfatizzeremo, ecco un esempio :

realistic [[3D cat character]], soft (realistic lighting),(polycount:0.8), skottie young, (((trending on artstation)))

Ci sono due modi per usare le parentesi il primo è quello di aumentare il numero di parentesi, l'altro è aggiungere i due punti di fianco al termine ed un numero maggiore o minore di 1 utilizzando un punto come separatore decimale, le virgole come potete vedere servono per separare i blocchi di testo.

A questo link c'é una guida molto estesa ai prompt ed alle quality tags con immagini ed esempi di ogni genere.

Riguardo ai negative prompt a partire dalla 2.0 di Stable Diffusion sono stati inclusi nel training del modello, ciò li ha resi molto più importanti rispetto alla versione 1.5 a questo link e quest'altro link troverete delle guide di approfondimento.

Un buon negative prompt per tutte le stagioni potrebbe essere il seguente : 

ugly, deformed, duplicate, too many fingers, extra limbs, out of frame, blurry, lowres, watermark

dovrebbe essere sufficiente ad eliminare la maggior parte dei difetti tipici che si possono presentare, potete customizzarlo con i quality tags e/o aggiungendo termini relativi ai difetti che volte eliminare dalle immagini generate.

venerdì 6 ottobre 2023

Guida essenziale a txt2img - Webui di Automatic1111

In questa guida non ci saranno approfondimenti riguardo alle funzioni avanzate di txt2img ( come Hiresfix e Refiner ) ma verranno coperti solo gli elementi essenziali del funzionamento del campo Generation della Webui.

Prompt e Negative Prompt : sono stati coperti a parte in questa guida link

Sampling Method : il metodo di default DPM++ 2M Karras è ottimo ed anche UniPC è molto valido entrambi rendono bene a 20-30 Sampling Steps questi metodi hanno la convergenza ovvero vi permetteranno di generare coi medesimi prompt, settaggi e checkpoint le mendesime immagini. Mentre altri metodi come Euler a sono definiti ancestrali ed aggiungono noise random ad ogni step questo li depriva della convergenza sulle immagini generate. Se volete approfondire ecco un link con tutti i dettagli.

Steps : il numero di steps impostato decide quanto noise verrà tolto alla nostra immagine, il valore impostato a 20 è generalmente sufficiente, già a 40-50 i risultati sono ottimi, aumentare questo parametro oltre i 100 non ci darà risultati apprezzabili ed allungherà solo tempi di elaborazione.

Width e Height : l'impostazione di default è 512x512 questa è anche la risoluzione con cui SD 1.5 è stato addestrato, si consiglia di tener presente la cosa é non discostarsi troppo da questa risoluzione, il risultato potrebbe deludervi con elementi duplicati ed anomalie.

Se volete salire con le risoluzioni SD 2.1 è stato addestrato a 768x768 e riesce a gestire anche aspect ratio non standard, se avete vram a sufficienza c'é il recentissimo SDXL che è addestrato a 1024x1024.

CFG Scale : Più il numero è basso e maggiore sarà l'attinenza al prompt più è alto e più il risultato potrebbe essere creativo fino a diventare strano. Muoversi nel range tra 3 e 15 in genere è sufficiente anche se ad osare ogni tanto si ottiene qualche sorpresa.

Batch Count : rappresenta il numero di immagini che volete generare in serie, le immagini verranno generate dalla GPU una alla volta.

Batch Size : rappresenta il numero di immagni da generare in parallelo, la convenienza  nel suo utilizzo si palesa nello spremere al massimo GPU e vram in modo da ottenere un aumento delle iterazioni al secondo fino al 20-30% il rischio è quello di ottenere un errore di out of memory.

Seed : impostato di default a -1 genera immagini con seed random questa è anche l'impostazione da usare col Batch Count/Batch Size, se dopo aver generato varie immagini se qualcuna in particolare è di vostro gradimento potrete riutilizzare quello stesso seed inserendolo nel campo e rifinire il risultato modificanto gli altri parametri.




giovedì 5 ottobre 2023

Guida essenziale a img2img - Webui di Automatic1111

Il tool img2img della Webui visivamente è molto simile al txt2img già coperto in questa guida link non ci ripeteremo spiegare le voci già coperte nella precedente guida, ne tantomeno verranno approfondite altre funzionalità diverse da img2img ( come sketch, inpaint ecc.) che verranno coperte in futuro.

Come lascia già intuire il nome in questo tool si parte di già da un immagine in nostro possesso, che sia stata precedentemente generata o presa da qualche altra sorgente non farà alcuna differenza, basterà aprirla dall'apposito form.

Interrogate CLIP : premendo questo bottone alla destra del form prompt ( dopo un eventuale dowload la prima volta ) verrà interrogato il text encoder CLIP che analizzerà l'immagine e ne ricaverà un prompt che andrà a riempire il form prompt con una descrizione. Questo tool di Image Captioning è molto utile e potete utilizzarlo anche quando volete ricavare un prompt di partenza da un immagine di riferimento.

Interrogate DeepBooru : premendo questo bottone alla destra del form negative prompt controintuitivamente a quanto possiate pensare non genererà un negative prompt ma verrà interrogato il text encoder DeepBooru che analizzerà l'immagine e ne ricaverà un prompt che andrà a riempire anche in questo caso il form prompt ma questa volta non sarà una descrizione articolata ma letteralmente un mero elenco di parole separate da virgole, inerenti agli elementi riconosciuti nell'immagine. Questo tipo di text enconding viene definito in modo gergale Tag ma anche in questo caso la categoria è quella dell'image captioning

Denoise strenght : è l'elemento fondamentale dell'img2img si va ad aggiungere blocco degli slider già visto in txt2img sotto alla voce CFG Scale. Il valore di default è 0.75 più lo spostiamo vicino allo 0 e più l'immagine sarà fedele a quella di partenza più spostiamo verso 1 e più iniziano a pesare i nostri prompt in fase di generazione.

Width e Height : in questo caso è molto più simile alla versione che trovate in Extras troverete l'opzione Resize to oltre a farvi scegliere la risolzione vi mostrerà un quadrilatero rosso in trasparenza per farvi regolare al meglio le proporzioni, l'icona con la squadretta farà coincidere la risoluzione estattamente la risoluzione a quella dell'immagine di partenza. L'opzione Resize By vi darà l'opzione Scale col valore di default a 1 che equivale al 100% muovendo lo slider potrete decidere in percentuale e sotto la voce resize:from riporterà il valore della risoluzione che otterrete.

Resize mode : Lo trovate sopra alla voce Sampling Method questa modalità interviene principalmente quando la risoluzione selezionata di Width e Height è maggiore rispetto a quelle dell'immagine di partenza. Just Resize, non terrà conto dell'aspect ratio. Crop e Resize ne terrà conto. Resize and Fill riempirà la porzione in più generando la parte mancante in fase di inferenza. Just resize (latent upscale) questa opzione è come la precedente ma con l'upscale del latent space l'argomento verrà approfondito in una guida apposita in futuro.


Come usare al meglio img2img ?

Bisogna partire avendo l'idea di cosa vogliamo ottenere, se vogliamo che una linea retta solcata da una doppia-vu capovolta su un foglio bianco, si trasformi in un prato con delle montagne. Il nostro prompt dovrà descrivere quella scena. Se siamo a corto di parole possiamo cercare un immagine che somigli a quella che abbiamo in mente caricarla in img2img cliccare su Interrogate CLIP ottenere un prompt e lavorare con quello magari migliorandolo, aggiungendo i termini riguardanti lo stile. Se è un immagine estremamente semplice per riempirla con dei dettagli bisogna salire con la Denoise Strenght di default a 0.75 piccoli passi da 0.1~0.2 alla volta e modificare i parametri di CFG Scale per incrementare o decrementare l'attinenza al nostro prompt. Se l'imagine è già abbastanza dettagliata ma la vogliamo solo trasformare in qualche cosa di diverso molto probabilmente dovremmo scendere con la Denoise Strenght a 0.50 e poi regolarci di conseguenza. In ogni caso sono i prompt a fare la differenza.

Guida essenziale a Extras - Webui di Automatic1111

Come ribadito nelle altre guide le versioni 1.5 e 2.0 base di Stable Diffusion sono addestrate a 512x512 anche le versioni più recenti come la 2.1 a 768x768 e la SDXL a 1024x1024 per quanto abbiano fatto un salto notevole, restano lontane dai 2560 × 1440 del QHD ed i 4096×2160 del 4K degli schermi recenti.

I filtri offerti dai programmi di grafica come Bilinear e Bicubic o nel migliore dei casi i più avanzati Lanczos e Spline non fanno certo miracoli dai 200% in su.

La Webui ci viene in aiuto con il tool Extras, trasciniamo un immagine qualsiasi ( non necessariamente generata con SD ) sulla scritta Drop Image Here oppure apriamola da disco Click to Upload o ancora spediamola direttamente da txt2img cliccando sull'icona a forma di squadretta sotto l'immagine generata.

Resize : se lo stiamo impostando dall'opzione Scale By il valore di default a 4 significa upscale del 400% se la nostra immagine di partenza è 512x512 il risultato sarebbe un upscale a 2048x2048 mentre in Scale to  possiamo operare direttamente su Width e Height specificando la risoluzione con la spunta a Cropt to Fit cropperemo automaticamente l'immagine senza deformarla se l'aspect ratio iniziale è diverso da quello della risoluzione impostata.

Upscaler 1 : Selezionate ESRGAN_4x che si adatta a molte situazioni, con Resize di default a 4 clicchiamo su Generate. La prima volta servirà qualche scondo extra per scaricare il modello ed in pochi secondi l'immagine verrà upscalata. 

Upscaler 2 : Selezionate SwinIR_4x impostate Upscaler 2 visibility a 0.5 cliccate su Generate ed ammirate il risultato. Col primo modello abbiamo upscalato l'immagine a 4x col secondo l'abbiamo rifinito renderndolo più nitido senza incrementare ulteriormente la risoluzione, modificando il parametro con lo slider si possono ottenere immagini più o meno nitide.

Potete incrociare vari modelli per ottenere i risultati che più vi aggradano, a questo Link troverete un approfondimento sui modelli. Tenete presente che con Upscaler 1 si otterrà il resize e con Upscaler 2 la rifinitura, se non sentite la necessintà di quest'ultima potete lasciarlo impostato su None.

GFPGAN visibility e CodeFormer visibility : sono algoritmi di face restoration per volti umani, entrambi sono impostati di default a 0 e non abilitati perché potrebbero interferire con i volti non umani. Se sono presenti volti umani/umanoidi nelle vostre immagini, provate ad abilitarli modificando gli slider, possono essere usati singolarmente o in contemporanea, in certi casi i risultati sono quasi miracolosi.

mercoledì 4 ottobre 2023

Guida generica ai Checkpoint Models di Stable Diffusion

Stable Diffusion 1.5 : questo checkpoint model è addestrato con immagini con una risoluzione 512x512 è si presta molto alle generazioni in vari stili di autori famosi.

Stable Diffusion 2.x : La 2.0 c’é anche in 512x512 mentre la 2.1 è solo a 768x768 sono basate su un dataset che incude anche immagini NSFW, alcuni stili/artisti sono stati rimossi per motivi di copyright, da questa versione in poi negative prompts svolgono un ruolo molto importante nella generazione delle immagini ed il modello si presta ad essere usato con risoluzioni e aspect ratio non standard.

SD-XL 0.9 e 1.0 : queste versioni sono addestrate a 1024x1024 si prestano molto bene alla generazione immagini di altissima qualità con colori molto vibranti. 

SD-Turbo : è una versione distillata di stable diffusion 2.1 pensata per la sintesi in tempo reale delle immagini, in appena 1-4 step.

Ema e nonema : i modelli ema sono ideali per generare le immagini ( inferenza) in alcuni casi tali modelli sono anche più leggeri, mentre i noema sono ideali per i finetuning con Dreambooth, LoRA ecc. ma possono occupare molta più vram anche se ciò non accade sempre.

LoRA : sono dei checkpoint models di dimensioni ridotte addestrati su uno specifico dataset e vanno utilizzati con la versione specifica del modello su cui è stato eseguito il training.

VAE :  Sono i variational autoencoder non sono strettamente necessari perché già sono inclusi nei checkpoint models, se è riportata la dicitura Baked VAE sono presenti, altrimenti vanno aggiunti a parte. Ci sono VAE migliorano la resa in fase di generazione dei dettagli come fili d’erba, capelli, occhi e scritte. Certi VAE opportunamente ottimizzati aumentano le prestazioni e riducono l’utilizzo della memoria di Checkpoint molto onerosi come SDXL.

Refiner : è un modello introdotto con SDXL e si affianca ad esso per aumentare ulteriormente il livello di dettaglio dell'inferenza.

Estensioni .ckpt e .safetensor : i modelli con l'estensione .ckpt sono un potenziale rischio per l'esecuzione di codice malevolo è più sicuro usare modelli .safetensor preferite sempre quest'ultimi se potete. A questo link troverete un tool molto comodo per poter convertire i file .ckpt in .safetensor . A quest'altro link trovere un altro tool per il pickle scannig per verificare se siano presenti malware nei file con le estensioni .pt , .ckpt e .bin.