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: a race car parked on a runway, cinematic, professoinal photograph
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 = 334391595
Seed = 2430139697
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 = 11
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
Desoinsing strenght = 0.2
Denoising strength = 0.65
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
Inpainting mask weight = Full
Inpainting mask weight = High
Inpainting mask weitgh = Empty
Considerazioni
Stable Diffusion è quindi uno strumebto utile per evitare di infrangere le norme del copyright? Lo scoprirete nel prossimo articolo! Rimanete connessi.