Che cos'è Stable Diffusion?

Stable Diffusion è un modello di deep-learning che genera immagini a partire da un input testuale o da un'altra immagine. Per svolgere questo compito, la sua rete neurale è stata "addestrata" a rimuovere rumore dalle immagini. A partire da un seed, un numero naturale, viene prodotta un'immagine casuale iniziale, che verrà poi processata togliendo il rumore, come se sotto di esso ci sia l'immagine desiderata. Ogni generazione avviene in modo deterministico, l'unico fattore che determina la casualità degli output è il seed, che di default viene ogni volta randomizzato.

Di seguito alcuni esempi di immagini generate a partire da un testo, detto prompt, scelto da noi. Sono state eseguite diverse generazioni text-to-image, fino ad ottenere il seed che portava al risultato migliore: 

Esempio 1
Prompt: portrait of a young man, brown eyes, brown hair, happy, professional photograph, studio lighting

Esempio 1

Esempio 2
Prompt: old-style black steam train running on two parallel well-formed tracks during a sunny day, cinematic, professional photograph, highliy detailed

Esempio 2

 

Processi image-to-image

Con Stable Diffusion è possibile effettuare processi image-to-image, che prendono in input un'immagine e ne restituiscono una nuova. Questi processi sono inpainting, outpainting, e upscaling.

  • Inpainting
    La tecnica dell'inpainting consiste nel ridisegnare una parte dell'immagine individuata da una maschera. Nell'esempio seguente è stato dato come input l'immagine iniziale, la maschera, e una descrizione dell'output che si vuole ottenere: 
    - Prompt: portrait of a young man, brown eyes, brown hair, happy, green screen, professional photograph, studio lighting
    - Negative prompt: beard, woman, muscles

Immagine di partenza

Inpainting immagine di partenza

Maschera di inpainting

Maschera di inpainting

Immagine risultante

Inpainting immagine risultante

  • Outpainting
    Per outpainting si intende la generazione delle parti che sono "fuori" dall'immagine, oltre i bordi: come se la IA cercasse di immaginare cosa ci potrebbe essere sotto, sopra, a destra o a sinistra dell'immagine data. I risultati del processi di outpainting possono sembrare poco soddisfacenti, in questo caso occorre veramente provare molte volte per trovare il seed migliore. In più, l'outpainting funziona bene se l'immagine di input è stata generata da Stable Diffusion tramite un processo text-to-image, ma non funziona altrettanto bene se si parte da una foto reale.

Immagine di partenza

Outpainting immagine di partenza

Dopo il primo outpainting

Outpainting immagine di partenza

Dopo il secondo outpainting

Outpainting secondo outpainting

Dopo il terzo outpainting

Dopo il terzo outpainting

  • Upscaling
    Essendo stato addestrato con immagini 512x512, Stable Diffusion fornisce i migliori risultati con output di quella dimensione, la quale al giorno d'oggi risulta essere troppo limitante. Per ovviare a questo problema, viene messa a disposizione la funzione di upscaling, effettuabile mediante l'utilizzo di diversi modelli, ognuno dei quali è specializzato per certe tipologie di immagini. In questo esempio è stato utilizzato il modello "4x-UltraSharp".

Immagine generata (512x512)

Immagine generata

Immagine dopo l'upscaling (1024x1024)

Immagine dopo upscaling

Immagine dopo upscaling  Immagine dopo upscaling

 

Stable Diffusion WebUI
Per effettuare le generazioni abbiamo utilizzato Stable Diffusion WebUI, la quale mette a disposizione un web server e un'interfaccia grafica molto completa. Una volta installata in locale (con un hardware adeguatamente potente) si può iniziare subito a generare.

È il sistema più comodo, facile e popolare per utilizzare Stable Diffusion.

Le ultime dal blog

Nimaia parte della Seeweb Community Partner

Siamo lieti di annunciare di aver partecipato al prestigioso evento dedicato alla Seeweb Community Partner, tenutosi recentemente a Bologna. Questo incontro ha riunito numerosi partner di Seeweb, nostro partner tecnico di fiducia tra i primi...
leggi tutto