# Stable Diffusion

Stable Diffusion è un modello di apprendimento automatico profondo pubblicato nel 2022, utilizzato principalmente per generare immagini dettagliate a partire da descrizioni di testo, sebbene possa essere applicato anche ad altre attività come la pittura, la pittura esterna e la generazione di traduzioni da immagine a immagine guidate da un prompt di testo.
Stable Diffusion è un modello di diffusione latente, una variante di rete neurale generativa profonda sviluppata dal gruppo CompVis alla LMU di Monaco. Il modello è stato rilasciato da una collaborazione tra Stability AI, CompVis LMU e Runway con il supporto di EleutherAI e LAION. Nell'ottobre 2022, Stability AI ha raccolto 101 milioni di dollari in un round di investimenti guidato da Lightspeed Venture Partners e Coatue Management.
Il codice di Stable Diffusion e i pesi del modello sono stati rilasciati pubblicamente.
Stable Diffusion può funzionare sulla maggior parte dell'hardware dotato di una GPU discreta con almeno 10 GB di VRAM. Ciò ha segnato un allontanamento dai precedenti modelli proprietari di creazione immagini da testo come DALL-E e Midjourney, accessibili solo tramite servizi cloud.
Nel novembre 2023 Stable AI lancia Stable 3D per la creazione di modelli 3D di oggetti complessi.

## Tecnologia
### Architettura

Stable Diffusion utilizza una variante del modello di diffusione (DM), chiamato modello di diffusione latente (LDM). Introdotti nel 2015, i modelli di diffusione vengono addestrati con l'obiettivo di rimuovere le successive applicazioni del rumore gaussiano sulle immagini di addestramento che possono essere pensate come una sequenza di autocodificatori per la riduzione del rumore. Stable Diffusion è costituito da 3 parti: l'autoencoder variazionale (VAE), U-Net e un codificatore di testo opzionale. Il codificatore VAE comprime l'immagine dallo spazio dei pixel a uno spazio latente di dimensioni inferiori, acquisendo un significato semantico più fondamentale dell'immagine. Il rumore gaussiano viene applicato iterativamente alla rappresentazione latente compressa durante la diffusione diretta. Il blocco U-Net, composto da una dorsale ResNet, pulisce il segnale in uscita dalla diffusione diretta all'indietro per ottenere una rappresentazione latente. Infine, il decoder VAE genera l'immagine finale riconvertendo la rappresentazione nello spazio dei pixel. La fase di riduzione del rumore può essere condizionata, in modo flessibile, da una stringa di testo, un'immagine e alcune altre modalità. I dati di condizionamento codificati sono esposti a U-Net di riduzione rumore tramite un meccanismo di attenzione incrociata. Per il condizionamento del testo, il codificatore di testo CLIP ViT-L/14 fisso e preaddestrato viene utilizzato per trasformare i prompt di testo in uno spazio di incorporamento. I ricercatori indicano che il vantaggio degli LDM sono una maggiore efficienza computazionale per la formazione e la generazione.

### Dati di addestramento

Stable Diffusion è stato addestrato su coppie di immagini e didascalie tratte da LAION-5B, un set di dati pubblicamente disponibile derivato dai dati di Common Crawl prelevati dal Web, in cui 5 miliardi di coppie immagine-testo sono state classificate in base alla lingua, filtrate in set di dati separati per risoluzione, una probabilità prevista di contenere una filigrana e un punteggio "estetico" previsto (ad es. qualità visiva soggettiva). Il set di dati è stato creato da LAION, un'organizzazione no-profit tedesca che riceve finanziamenti da Stability AI. Il modello Stable Diffusion è stato addestrato su tre sottoinsiemi di LAION-5B: laion2B-en, laion-high-resolution e laion-aesthetics v2 5+. Un'analisi di terze parti dei dati di addestramento del modello ha identificato che su un sottoinsieme più piccolo di 12 milioni di immagini tratte dal set di dati originale più ampio utilizzato, circa il 47% della dimensione del campione delle immagini proveniva da 100 domini diversi, con Pinterest che occupava l'8,5% del sottoinsieme, seguito da siti web come WordPress, Blogspot, Flickr, DeviantArt e Wikimedia Commons.

### Procedure di addestramento

Il modello è stato inizialmente addestrato sui sottoinsiemi laion2B-en e laion-ad alta risoluzione, con gli ultimi cicli di formazione eseguiti su LAION-Aesthetics v2 5+, un sottoinsieme di 600 milioni di immagini con didascalie che il LAION-Aesthetics Predictor V2 prevedeva gli esseri umani, in media, darebbero un punteggio di almeno 5 su 10 quando gli viene chiesto di valutare quanto gli sono piaciuti. Il sottoinsieme LAION-Estetica v2 5+ escludeva anche immagini a bassa risoluzione e immagini che LAION-5B-WatermarkDetection ha identificato come portanti una filigrana con una probabilità superiore all'80%. I round finali di addestramento hanno inoltre ridotto del 10% il condizionamento del testo per migliorare la guida alla diffusione senza classificatori.
Il modello è stato addestrato utilizzando 256 GPU Nvidia A100 su Amazon Web Services per un totale di 150.000 ore di GPU, al costo di $ 600.000.

### Limitazioni

Stable Diffusion presenta problemi di degrado e imprecisioni in determinati scenari. Poiché il modello è stato addestrato su un set di dati costituito da immagini con risoluzione 512 × 512, la qualità delle immagini generate peggiora notevolmente quando le specifiche dell'utente si discostano dalle immagini con risoluzione "prevista" 512 × 512. Un'altra sfida è la generazione di arti umani a causa della scarsa qualità dei dati degli arti nel database LAION.. Oltre agli arti umani, è stato osservato che anche la generazione di arti di animali è impegnativa, con il tasso di fallimento osservato del 25% quando si cerca di generare l'immagine di un cavallo.
Anche l'accessibilità per i singoli sviluppatori può essere un problema. Per personalizzare il modello per nuovi casi d'uso che non sono inclusi nel set di dati, come la generazione di personaggi anime ("diffusione waifu"), sono necessari nuovi dati e ulteriore formazione. Tuttavia, questo processo di ottimizzazione è sensibile alla qualità dei nuovi dati; immagini a bassa risoluzione o risoluzioni diverse dai dati originali possono non solo non riuscire ad apprendere il nuovo compito ma degradare le prestazioni complessive del modello. Anche quando il modello è ulteriormente addestrato su immagini di alta qualità, è difficile per le persone eseguire modelli nell'elettronica di consumo. Ad esempio, il processo di formazione per waifu-diffusion richiede un minimo di 30 GB di VRAM, che supera la normale risorsa fornita nelle GPU consumer, come la serie GeForce 30 di Nvidia con circa 12 GB.
I creatori di Stable Diffusion riconoscono il potenziale di bias algoritmico, poiché il modello è stato addestrato principalmente su immagini con descrizioni in inglese. Di conseguenza, le immagini generate rafforzano i pregiudizi sociali e provengono da una prospettiva occidentale poiché i creatori notano che il modello manca di dati da altre comunità e culture. Il modello fornisce risultati più accurati per i prompt scritti in inglese rispetto a quelli scritti in altre lingue con culture occidentali o bianche che spesso sono la rappresentazione predefinita.

## Capacità

Il modello Stable Diffusion supporta la capacità di generare nuove immagini da zero attraverso l'uso di un prompt di testo che descrive gli elementi da includere o omettere dall'output. Le immagini esistenti possono essere ridisegnate dal modello per incorporare nuovi elementi descritti da un prompt di testo (ad es. sintesi guidata di immagini) attraverso il suo meccanismo di riduzione del rumore della diffusione. Inoltre, il modello consente anche l'uso di prompt per alterare parzialmente le immagini esistenti tramite inpainting e outpainting, se utilizzato con un'interfaccia utente appropriata che supporta tali funzionalità, di cui esistono numerose diverse implementazioni open source.
Si consiglia di eseguire Stable Diffusion con 10 GB o più VRAM, tuttavia gli utenti con meno VRAM possono scegliere di caricare i pesi con precisione float16 anziché float32 predefinito per compensare le prestazioni del modello con un utilizzo VRAM inferiore.

### Generazione da testo a immagine

Lo script di campionamento da testo a immagine all'interno di Stable Diffusion, noto come "txt2img", utilizza un prompt di testo oltre a parametri di opzione assortiti che coprono i tipi di campionamento, le dimensioni dell'immagine di output e i valori seme. Lo script genera un file immagine basato sull'interpretazione del modello del prompt. Le immagini generate sono contrassegnate con una filigrana digitale invisibile per consentire agli utenti di identificare un'immagine generata da Stable Diffusion, sebbene questa filigrana perda la sua efficacia se l'immagine viene ridimensionata o ruotata.
Ogni generazione di txt2img coinvolgerà un valore seme specifico che influisce sull'immagine di output. Gli utenti possono scegliere di randomizzare il seme per esplorare diversi output generati o utilizzare lo stesso seme per ottenere lo stesso output di immagine di un'immagine generata in precedenza. Gli utenti possono anche regolare il numero di passi di inferenza per il campionatore; un valore più alto richiede una durata maggiore, tuttavia un valore più basso può causare difetti visivi. Un'altra opzione configurabile, il valore della scala di guida senza classificatore, consente all'utente di regolare il grado di aderenza dell'immagine di output al prompt. I casi d'uso più sperimentali possono optare per un valore di scala inferiore, mentre i casi d'uso che mirano a risultati più specifici possono utilizzare un valore più alto.
Ulteriori funzionalità di text2img sono fornite dalle implementazioni front-end di Stable Diffusion, che consentono agli utenti di modificare il peso assegnato a parti specifiche del prompt di testo. I marcatori di enfasi consentono agli utenti di aggiungere o ridurre l'enfasi alle parole chiave racchiudendole tra parentesi. Un metodo alternativo per regolare il peso su parti del prompt sono i "richiesti negativi". I prompt negativi sono una funzionalità inclusa in alcune implementazioni front-end e consentono all'utente di specificare i prompt che il modello dovrebbe evitare durante la generazione dell'immagine. I prompt specificati possono essere caratteristiche dell'immagine indesiderabili che sarebbero altrimenti presenti all'interno degli output dell'immagine a causa dei prompt positivi forniti dall'utente oa causa del modo in cui il modello è stato originariamente addestrato.

### Modifica dell'immagine

Stable Diffusion include anche un altro script di campionamento, "img2img", che utilizza una stringa di testo, un percorso a un'immagine esistente e un valore di intensità compreso tra 0,0 e 1,0. Lo script genera una nuova immagine basata sull'immagine originale che presenta anche elementi forniti all'interno della stringa di testo. Il valore dell'intensità indica la quantità di rumore aggiunta all'immagine di output. Un valore di intensità più elevato produce una maggiore variazione all'interno dell'immagine, ma può produrre un'immagine che non è semanticamente coerente con la stringa fornita.
La capacità di img2img di aggiungere rumore all'immagine originale lo rende potenzialmente utile per l'anonimizzazione dei dati e l'aumento dei dati, in cui le caratteristiche visive dei dati dell'immagine vengono modificate e rese anonime. Lo stesso processo può essere utile anche per l'upscaling dell'immagine, in cui viene aumentata la risoluzione di un'immagine, aggiungendo potenzialmente più dettagli all'immagine. Inoltre, Stable Diffusion, è stato sperimentato come strumento per la compressione delle immagini e, rispetto a JPEG e WebP, i metodi recenti utilizzati per la compressione delle immagini in Stable Diffusion sono limitati a preservare testo e volti piccoli.
Ulteriori casi d'uso per la modifica dell'immagine tramite img2img sono offerti da numerose implementazioni front-end del modello Stable Diffusion. L'inpainting implica la modifica selettiva di una porzione di un'immagine esistente delineata da una maschera di livello fornita dall'utente, che riempie lo spazio mascherato con il contenuto appena generato in base al prompt fornito. Al contrario, la pittura esterna estende un'immagine oltre le sue dimensioni originali, riempiendo lo spazio precedentemente vuoto con il contenuto generato in base al prompt fornito.

## Utilizzo

Stable Diffusion non rivendica alcun diritto sulle immagini generate e concede liberamente agli utenti i diritti di utilizzo di qualsiasi immagine generata dal modello, a condizione che il contenuto dell'immagine non sia illegale o dannoso per le persone. La libertà fornita agli utenti sull'utilizzo delle immagini ha causato polemiche sull'etica della proprietà, poiché Stable Diffusion e altri modelli generativi sono formati da immagini protette da copyright senza il consenso del proprietario.
Poiché gli stili visivi e le composizioni non sono soggetti a copyright, si interpreta spesso che gli utenti di Stable Diffusion che generano immagini di opere d'arte non dovrebbero essere considerati in violazione del copyright di opere visivamente simili. Tuttavia, gli individui raffigurati nelle immagini generate possono essere protetti dai diritti della personalità se viene utilizzata la loro somiglianza, e la proprietà intellettuale come i loghi dei marchi riconoscibili rimangono ancora protetti dal diritto d'autore. Tuttavia, gli artisti visivi hanno espresso preoccupazione per il fatto che l'uso diffuso di software di sintesi delle immagini come Stable Diffusion possa portare gli artisti umani, insieme a fotografi, modelli, cineasti e attori, a perdere gradualmente la redditività commerciale rispetto ai concorrenti basati sull'intelligenza artificiale.
Stable Diffusion è in particolare più permissiva nei tipi di contenuti che gli utenti possono generare, come immagini violente o sessualmente esplicite, rispetto ad altri prodotti commerciali basati sull'IA generativa. Affrontando le preoccupazioni che il modello possa essere utilizzato per scopi abusivi, il CEO di Stability AI, Emad Mostaque, spiega che "[è] la responsabilità delle persone se sono etiche, morali e legali nel modo in cui utilizzano questa tecnologia", e che mettere le capacità di Stable Diffusion nelle mani del pubblico porterebbe la tecnologia a fornire un beneficio netto, nonostante le potenziali conseguenze negative. Inoltre, Mostaque sostiene che l'intenzione alla base della disponibilità aperta di Stable Diffusion è quella di porre fine al controllo aziendale e al dominio su tali tecnologie, che in precedenza hanno sviluppato solo sistemi di IA chiusi per la sintesi di immagini. Ciò si riflette nel fatto che qualsiasi restrizione che Stability AI pone sui contenuti che gli utenti possono generare può essere facilmente aggirata a causa della natura open source della licenza in base alla quale Stable Diffusion è stato rilasciato.

## Licenza

A differenza di modelli come DALL-E, Stable Diffusion rende disponibile il suo codice sorgente, insieme a pesi pre-addestrati. La sua licenza proibisce alcuni casi d'uso, tra cui reati, diffamazione, molestie, doxing, "sfruttamento di minori", consulenza medica, creazione automatica di obblighi legali, produzione di prove legali e "discriminazione o danneggiamento di individui o gruppi sulla base di .. .comportamento sociale o...caratteristiche personali o della personalità...[o] caratteristiche o categorie legalmente protette ”. L'utente possiede i diritti sulle immagini di output generate ed è libero di utilizzarle commercialmente.