Come usare Stable Diffusion?

Il nostro obiettivo

Nello scrivere contenuti per il web, come un articolo per un blog, una delle attività più complicate è cercare un'immagine da associarvi: bisogna stare molto attenti a non infrangere le norme del copyright, cercando immagini non protette. 

Come alternativa a questa ricerca, abbiamo pensato di studiare il funzionamento di un software basato su IA come Stable Diffusion, di cui abbiamo già parlato in un precedente articolo, per capire se le immagini da esso generate potessero essere un'alternativa valida e copyright-free, e per scoprire se effettivamente questo metodo fosse più efficace rispetto a cercare immagini online.

Per raggiungere questo obiettivo sono stati tentati diversi approcci:
1) Inizialmente si è provato a estrarre dall'articolo le parole chiave, e scriverle una di seguito all'altra nel prompt. Come risultato si ottenevano immagini generiche con oggetti o soggetti irriconoscibili. L'osservazione emersa è stata che per generare un'immagine accettabile Stable Diffusion necessita di prompt concreti: per esempio, invece del concetto di "privacy" è preferibile inserire un oggetto che concretizzi il concetto di "privacy", come per esempio un lucchetto.

2) Come secondo approccio, memori dell'osservazione fatta, sono state tentate alcune generazioni di soggetti concreti, e in questo caso ci si è scontrati con i limiti principali di Stable Diffusion e dei suoi simili. Molto spesso non si riescono a generare occhi, bocche, mani, i quali risultano sempre imprecisi. In conclusione, questo metodo richiede la generazione di molte immagini per trovare il seed giusto in cui tutto appaia naturale e non sia deformato, risultando un metodo troppo dispendioso in termini di tempo.

3) Come ultimo approccio abbiamo provato a modificare immagini esistenti. Tralasciando le criticità esposte nel secondo approccio, che seppure molto meno marcate sono state riscontrate anche qui. Con questo metodo i risultati erano migliori. Bisogna tuttavia considerare che le immagini ottenute sono "figlie dirette" di un'immagine di qualcun'altro, quindi è più facile rientrare in una violazione di copyright, reale o presunta.

 

Parametri di generazione di Stable Diffusion

Ecco alcuni dei parametri su cui abbiamo agito per la generazione di immagini, alla ricerca dell'output da noi desiderato.

1) Prompt e negative prompt
Sono i parametri principali: il primo descrive l'immagine che si desidera ottenere, il secondo ciò che non si vuole ottenere.

Prompt: a race car parked on a runway, cinematic, fisheye, professoinal photograph

Prompt e negative prompt_1

Prompt: a race car parked on a runway, cinematic, professoinal photograph

Prompt e negative prompt_2

Da notare in questo esempio cosa comporta la presenza o assenza della parola "fisheye" da i parametri testuali da noi indicati.

2) Seed
Il seed determina il rumore da cui partire per generare un'immagine. Di default, questo parametro viene randomizzato per ogni generazione, e in un certo senso identifica univocamente l'immagine di output: è l'unico parametro che conferisce casualità all'immagine risultante, per il resto (in base agli altri parametri) la generazione è deterministica. Nelle immagini di esempio, generate con tre valori diversi di seed, si può notare che il soggetto è lo stesso (in quanto il prompt rimane invariato) ma cambia il "modo" in cui viene raffigurato.

Prompt: astronaut riding a brown horse in a desert during a sunny day, professional photograph

Seed_a
Seed = 334391595

Seed_b
Seed = 2430139697

Seed_c
Seed = 2928510529

3) CFG scale
Questo parametro determina il peso che le parole del prompt hanno nel processo di generazione.

CFG scale = 3

cfg scale_1

CFG scale = 11

CFG_2

Nell'esempio, entrambe le immagini sono state generate con lo stesso seed, a partire dal seguente prompt: "a young man smiling with brown hair and brown eyes, with a red shirt, photograph". Nell'output con CFG scale = 3 la maglia non è rossa: questo significa che il concetto di "red shirt" non è abbastanza "pesante" per risultare nell'output.

4) Denoising strength
Entriamo ora nel campo dei processi image-to-image, tramite i quali viene generata un'immagine a partire da un'altra immagine. Il parametro denoising strength indica quanto l'immagine di partenza sarà modificata. È un valore che va da 0 a 1, dove 0 indica che l'immagine deve rimanere invariata.

Immagine di partenza

immagine di partenza

Desoinsing strenght = 0.2

Desoising strenght = 0.2

Denoising strength = 0.65

Denoising strength = 0.65

Denoising strength = 0.98

Denoising strength = 0.98

Le tre immagini processate avevano tutte come prompt il seguente: "pencil sketch of a man, a character portrait".

5) Inpainting mask weight
Anche questo parametro, facente parte dei processi image-to-image, ha a che fare con il peso dell'immagine iniziale, anche se in maniera diversa. I possibili valori a disposizione sono: full, highest, high, medium, low, lowest, empty. Evitando spiegazioni troppo tecniche, esso permette la modifica dello 'stile' dell'immagine senza impattare troppo sul soggetto.

Immagine di partenza

Immagine di partenza

Inpainting mask weight = Full

Inpainting mask weight = Full

Inpainting mask weight = High

Inpainting mask weight = high

Inpainting mask weitgh = Empty

Inpainting mask weight = Empty

Considerazioni

Stable Diffusion è quindi uno strumebto utile per evitare di infrangere le norme del copyright? Lo scoprirete nel prossimo articolo! Rimanete connessi.

Le ultime dal blog