Modelli generativi

Stable Diffusion: cos’è, quali sono le applicazioni pratiche

Rilasciato dalla start up StabilityAI con licenza Open Source, questo modello consente di eseguire tre operazioni: generare immagini a partire da un testo scritto; generare immagini a partire da una bozza o altra immagine di partenza indicando uno o più stili; fare image impainting [...]
Guglielmo Iozzia

Associate Director - ML/AI/Computer Vision presso MSD

Stable Diffusion
  1. Home
  2. Intelligenza Artificiale
  3. Stable Diffusion: cos’è, quali sono le applicazioni pratiche

Ad agosto 2022 è stato rilasciato un modello di Deep learning denominato Stable Diffusion, che consente la generazione di immagini a partire da un testo scritto. Vediamo di cosa si tratta e i potenziali casi d’uso per cui tale modello si presta.

Stable Diffusion, cos’è

Stable Diffusion è un modello di Deep learning rilasciato con licenza Open Source dalla startup StabilityAI; consente di eseguire sostanzialmente tre operazioni:

  1. generare immagini a partire da un testo scritto (figura 1)

Fig. 1 – Esempio di immagini generate tramite Stable Diffusion a partire dal testo “Kermit the frog drinking Guinness in Dublin” (Kermit the Frog mentre sta bevendo birra Guinness a Dublino)

 

2. generare immagini a partire da una bozza o altra immagine di partenza indicando uno o più stili (figura 2)

Fig. 2 – Esempi di trasformazione image to image con Stable Diffusion3

3. fare image inpainting, cioè ricostruire a partire da un testo la parte mancante di una immagine o sostituire uno o più degli elementi in essa raffigurati (figura 3)

Fig. 3 – Esempio di image inpainting tramite Stable Diffusion

Le immagini generate tramite l’ultima versione di questo modello hanno come risoluzione 512 x 512 pixel.

I modelli generativi

Il modello proposto da StabilityAI in realtà non è il primo basato su Diffusion per la generazione di immagini: questo è un concetto introdotto già a partire dal 2015 e che ha visto dal 2020 in poi un moltiplicarsi di sforzi di ricerca da parte di diversi laboratori universitari di AI che hanno prodotto i primi paper e modelli relativi allo stesso campo di applicazione. I modelli di Diffusion sono sostanzialmente dei modelli generativi che, così come le GAN (Generative Adversarial Network), producono immagini realistiche (relative al dominio su cui sono allenate), ma rispetto a queste architetture sono basate su di un meccanismo diverso.

WHITEPAPER
Smart building: una guida per semplificare la progettazione della rete

La denominazione di questa nuova classe di modelli fa riferimento al meccanismo che in termodinamica viene chiamato diffusione. Per avere un’idea di come questo funzioni, si immagini di spruzzare una sostanza gassosa, per esempio un deodorante per ambienti, in un angolo di una stanza chiusa. Al momento dello spruzzo ci sarà un’alta concentrazione del deodorante nell’area della stanza in prossimità del punto del contenitore da cui il deodorante proviene, mentre sarà più bassa o nulla nel resto dell’ambiente. Quindi, considerando la stanza nel suo complesso, si ha una situazione di non equilibrio per quanto riguarda la concentrazione di deodorante. Il processo di diffusione avviene affinché il deodorante possa raggiungere una posizione di equilibrio: le sue molecole si muovono dalla parte della stanza con alta concentrazione a quelle a concentrazione più bassa, finché la concentrazione non risulta pressoché uniforme in tutto l’ambiente.

I modelli di Diffusion

I modelli di Diffusion operano in maniera analoga. Sono composti come una catena di Markov, cioè un processo stocastico in cui la probabilità di transizione che determina il passaggio a uno stato di sistema dipende solo dallo stato del sistema immediatamente precedente e non da come vi si è giunti. Il training avviene prendendo una immagine reale a cui si aggiunge una certa quantità di contenuto di disturbo. Quindi in sequenza si genera una nuova immagine a partire dall’originale “sporcata” e si itera aggiungendo via via altro contenuto di disturbo alla immagine generata al passo precedente e usandola come immagine di input per lo step successivo, finché alla fine si ottiene una immagine che è contenuto “sporco” allo stato puro (situazione di equilibrio). Una volta completato questo processo di diffusione, si può procedere all’operazione inversa, cioè utilizzare la stessa/e architettura/e di rete neurale usata per generare l’immagine “sporca” per ricostruire il contenuto originale, ma stavolta cercando di predire il contenuto di disturbo che è stato aggiunto e sottrarlo alla immagine in esame, anziché predire l’immagine di partenza. Figura 4 riassume il processo di diffusione nelle sue due direzioni (avanti e all’indietro).

An image of a cat is perturbed from left to right by adding Gaussian noise. Arrows indicate fixed forward diffusion and generative reverse denoising processes.

Fig. 4 – Esempio di meccanismo di Diffusion (diretto e inverso)

Come mai Stable Diffusion ha suscitato tanto interesse? Innanzitutto, il fatto di essere stato rilasciato come Open Source, a differenza di altri modelli generativi da testo a immagine proprietari implementati da altre entità quali OpenAI, Google, etc., inteso come un ulteriore passo verso la democratizzazione della AI. Inoltre, le dimensioni più compatte del modello lo rendono fruibile anche con risorse di calcolo “limitate” (se confrontate con quanto disponibile ad attori appartenenti all’ambito accademico o industria big tech). Il rilascio dei modelli e del relativo codice sorgente ha reso possibile diversi sforzi da parte della comunità Open Source nel migliorare l’efficienza delle performance del processo di generazione di immagini, consentendo così di utilizzare Stable Diffusion anche in ambienti cloud free che mettono a disposizione di un utente macchine virtuali dotate di una singola GPU di medio/alto livello (quali Google Colab o HuggingFace), l’esecuzione anche su laptop dotati di modelli di GPU diverse da quelle prodotte da NVIDIA (quali Apple Silicon M1 o M2), il porting a un framework diverso da quello originale (da PyTorch a TensorFlow) e la creazione di interfacce grafiche per un utilizzo no-code da parte di utenti con bassa conoscenza di programmazione o Deep Learning. Quest’ultimo aspetto ha destato particolarmente l’interesse di molti artisti grafici digitali.

Stable Diffusion, casi d’uso

Subito dopo il rilascio ufficiale di Stable Diffusion si è registrato un crescendo di utilizzatori appartenenti a diverse categorie (Data Scientist, ML Engineer, Software Engineer, ma anche semplici appassionati di Deep learning e AI) che hanno iniziato, soprattutto per curiosità o svago, a generare immagini a partire da frasi più o meno bizzarre. In parallelo, un gran numero di grafici e artisti digitali ha iniziato a esplorare le potenzialità di questo modello per capire quanto esso possa aggiungere alla loro creatività naturale. Diverse critiche sono state sollevate verso Stable Diffusion, prima di tutto in relazione al set di immagini utilizzato da StabilityAI durante la fase di apprendimento. Il dataset multi-modale (testo e immagini) scelto è stato un subset di LAION-5B, open e creato a partire da immagini disponibili sul web.

Lungi da questo articolo fare considerazioni in merito alla legittimità dell’uso di tali immagini che potrebbero contenere informazioni personali o sensibili raccolte senza il consenso dei soggetti interessati o sul rischio, così come per tutti i modelli generativi basati su reti neurali, che Stable Diffusion possa essere utilizzato per la creazione di contenuti a fini disinformativi e/o non leciti. Oppure la possibilità che alcuni individui possano spacciare contenuti che in realtà sono stati generati da un algoritmo di AI per arte originale prodotta da esseri umani. Per poter mitigare alcuni rischi, i creatori di questo modello hanno comunque introdotto alcune misure preventive, quali ad esempio l’aggiunta automatica di un watermark invisibile alle immagini generate (in modo da poter sempre verificare se una data immagine sia stata creata artificialmente) e un meccanismo di sicurezza che previene la creazione di contenuti espliciti.

Tuttavia, al di là di alcuni rischi, i potenziali campi di applicazione pratica del modello Stable Diffusion sono tanti. Oltre alla già citata illustrazione, esso rappresenta un ausilio da prendere in considerazione per la generazione non solo di immagini statiche, ma anche di sequenze video e di effetti speciali, nella cinematografia, nei videoclip musicali e nei videogiochi. Si registrano inoltre i primi tentativi di automatizzare la generazione di illustrazioni per racconti. Anche l’e-commerce si presta bene: diverse le possibilità di miglioramento della esperienza utente in combinazione con la realtà aumentata (non l’unica applicazione di RA per la verità, ma sicuramente quella dove il valore aggiunto è più facilmente calcolabile). E ovviamente tante opportunità nel campo della generazione di immagini sintetiche (mercato in crescita, ancora dominato da altre architetture di modelli generativi) per il training di modelli di Deep learning per task di classificazione, object detection, etc.: in particolare immagini di apparecchiature diagnostiche, macchinari industriali, texture, capi di abbigliamento. Per non parlare poi della integrazione come plugin (o serie di plugin) e filtri in software di manipolazione immagini, fotoritocco, design o modellazione 3D. Attualmente sono già partiti i primi esperimenti per cercare di capire se Stable Diffusion possa essere utilizzato anche per aumentare la risoluzione di immagini statiche. La natura Open Source di questo modello sicuramente sta accelerando i processi di fattibilità delle applicazioni sopra menzionate, in quanto si registrano contributi da parte non solo di aziende interessate a tali business, ma anche da appassionati e/o esperti dei settori in questione.

Conclusioni

Stable Diffusion è un modello che sembra prestarsi bene a diverse interessanti applicazioni pratiche. Nonostante la sua configurazione ed esecuzione non siano complesse, è tuttavia necessario dedicare particolare attenzione e tempo alla ricerca delle frasi di testo ad hoc per la generazione dei risultati desiderati. Tutta da verificare ancora invece la possibilità di poterlo utilizzare per la generazione di immagini in domini diversi da quello in cui è stato allenato e certamente più complessi, quali ad esempio diagnostica per immagini, biotech, manufacturing, etc.

FacebookTwitterLinkedIn
FacebookTwitterLinkedIn