# Stable Diffusion

Stable Diffusion és un model d'aprenentatge profund de text a imatge llançat el 2022. S'utilitza principalment per a generar imatges detallades condicionades a descripcions de text, tot i que també es pot aplicar a altres tasques com ara la restauració d'imatges, repintar i generar traduccions d'imatge a imatge guiades per una entrada de text.
Stable Diffusion és un model de difusió latent, una varietat de xarxes neuronals generatives profundes desenvolupades pel grup CompVis de la LMU de Múnic. El model ha estat llançat per una col·laboració de Stability AI, CompVis LMU i Runway amb el suport d'EleutherAI i LAION. L'octubre de 2022, Stability AI va recaptar 101 milions de dòlars en una ronda liderada per Lightspeed Ventures i Coatue.
El codi i els pesos del model de Stable Diffusion són públics i es pot executar amb la majoria de maquinari de consum equipat amb una GPU modesta. Això va marcar una diferència dels models propietaris anteriors de text a imatge, com ara DALL-E i Midjourney, als quals només es podia accedir mitjançant serveis al núvol.

## Desenvolupament

El desenvolupament de Stable Diffusion va ser finançat i modelat per l'empresa emergent Stability AI. La llicència tècnica per al model va ser llançada pel grup CompVis a la Universitat Ludwig Maximilian de Munic. El desenvolupament va ser dirigit per Patrick Esser de Runway i Robin Rombach de CompVis, que eren entre els investigadors que havien inventat anteriorment l'arquitectura del model de difusió latent utilitzada per Stable Diffusion. Stability AI també va acreditar EleutherAI i LAION (una organització sense ànim de lucre alemanya que va reunir el conjunt de dades en què Stable Diffusion va ser entrenada) com a partidaris del projecte.
A l'octubre de 2022, la IA d'Estabilitat va recaptar 110 milions de dòlars en una ronda liderada per Lightspeed Venture Partners i Coatue Management.

## Tecnologia
### Arquitectura

Stable Diffusion utilitza un tipus de model de difusió (DM), anomenat model de difusió latent (LDM) desenvolupat pel grup CompVis a LMU Munich. Introduït el 2015, els models de difusió són entrenats amb l'objectiu d'eliminar aplicacions successives de soroll gaussià en imatges d'entrenament, que es pot pensar com una seqüència d'autoencòders de soroll. La difusió estable consta de 3 parts: el codificador automàtic variacional (VAE), U-Net, i un codificador de text opcional. El codificador VAE comprimeix la imatge des de l'espai de píxels a un espai latent de dimensió més petita, capturant un significat semàntic més fonamental de la imatge. El soroll gaussià s'aplica iterativament a la representació latent comprimida durant la difusió cap endavant. El bloc U-Net, compost d'un tronc ResNet, denuncia la sortida de la difusió cap endavant cap enrere per obtenir una representació latent. Finalment, el descodificador VAE genera la imatge final convertint la representació de nou en espai de píxels.
El pas de soroll es pot condicionar flexiblement a una cadena de text, una imatge o una altra modalitat. Les dades de condicionament codificat s'exposen a denoure xarxes U a través d'un mecanisme d'atenció creuada. Per a condicionar el text, el codificador de text ViT-L/14 de CLIP fix i preentrenat s'utilitza per transformar els indicadors de text a un espai d'incrustació. Els investigadors apunten a una major eficiència computacional per a l'entrenament i la generació com a avantatge dels LDM.
Amb 860 milions de paràmetres a la U-Net i 123 milions al codificador de text, Stable Diffusion es considera relativament lleuger pels estàndards de 2022, i a diferència d'altres models de difusió, pot funcionar amb GPUs de consum.

### Data d'entrenament

Stable Diffusion es va entrenar en parells d'imatges i llegendes preses de LAION-5B, un conjunt de dades disponibles públicament derivat de Common Crawl data scraped from the web, on es van classificar 5 mil milions de parells d'imatge-text basats en el llenguatge i filtrats en conjunts de dades separats per resolució, una probabilitat predita de contenir una marca d'aigua, i una puntuació "estètica" predita (per exemple, qualitat visual subjectiva). El model Stable Diffusion va ser creat en tres subconjunts de LAION-5B: laion2B-en, laion-high-resolution i laion-aesthetics v2 5+. Una anàlisi de tercers de les dades d'entrenament del model va identificar que d'un subconjunt més petit de 12 milions d'imatges van venir de 100 dominis diferents, amb Pinterest ocupant el 8,5% del subconjunt, seguit per llocs web com WordPress, Blogspot, Flickr, DeviantArt i Wikimedia Commons. Una investigació de Bayerischer Rundfunk va mostrar que els conjunts de dades de LAION, allotjats a Hugging Face, contenen grans quantitats de

### Procediments d'entrenament

El model es va entrenar inicialment en els subconjunts laion2B-en i laion-alta resolució, amb les últimes rondes d'entrenament realitzades en laION-Estètica v2 5+, un subconjunt de 600 milions d'imatges amb subtítols que el predictor LAION-Estètica V2 va predir que els humans, de mitjana, donarien una puntuació de com a mínim 5 sobre 10 quan se'ls demanés que valoressin quant els agradava. El subconjunt LAION-Aesthetics v2 5+ també excloïa imatges de baixa resolució i imatges que LAION-5B-WatermarkDetection identificava com portadores d'una marca d'aigua amb més del 80% de probabilitat. Les rondes finals d'entrenament, a més, van reduir el 10% del condicionament del text per millorar l'orientació de difusió sense classificadors.
El model va ser entrenat utilitzant 256 GPU Nvidia A100 a Amazon Web Services per un total de 150.000 GPU-hores, amb un cost de 600.000 dòlars.

### Limitacions

Stable Diffusion té problemes amb la degradació i les inexactituds en determinats escenaris. Els llançaments inicials del model es van entrenar en un conjunt de dades que consta de 5125512 imatges de resolució, el que significa que la qualitat de les imatges generades es degrada notablement quan les especificacions de l'usuari es desvien de la seva resolució "esperada" 5125512; l'actualització de la versió 2.0 del model de difusió estable va introduir més tard la capacitat de generar imatges de manera nativa a 7687768 resolució. Un altre repte és generar extremitats humanes a causa de la mala qualitat de les dades de les extremitats i cares humanes a causa de la manca de característiques representatives de la base de dades, i provocar que el model de generació d'imatges d'aquest tipus pugui confondre el model. Stable Diffusion XL (SDXL) versió 1.0, llançat el juliol de 2023, va introduir la resolució nativa 1024x1024 i va millorar la generació de les extremitats i el text.
L'accessibilitat per a desenvolupadors individuals també pot ser un problema. Per tal de personalitzar el model per a nous casos d'ús que no s'inclouen en el conjunt de dades, com ara la generació de caràcters d'anime ("difusió de Waifu"), calen noves dades i més entrenament. Les adaptacions afinades de la difusió estable creades a través de reciclatge addicional s'han utilitzat per a una varietat de casos d'ús diferents, des d'imatges mèdiques fins a música generada algorítmicament. No obstant això, aquest procés d'ajust fi és sensible a la qualitat de les noves dades; imatges de baixa resolució o diferents resolucions de les dades originals no només poden fallar en aprendre la nova tasca, sinó degradar el rendiment general del model. Fins i tot quan el model està addicionalment format en imatges d'alta qualitat, és difícil per als individus executar models en electrònica de consum. Per exemple, el procés d'entrenament per waifu-diffusion requereix un mínim de 30 GB de VRAM, que supera el recurs habitual proporcionat en GPUs de consum com la sèrie GeForce 30 de Nvidia, que només té uns 12 GB.
Els creadors de Stable Diffusion reconeixen el potencial de biaix algorítmic, ja que el model es va formar principalment en imatges amb descripcions en anglès. Com a resultat, les imatges generades reforcen els biaixos socials i es troben des d'una perspectiva occidental, ja que els creadors assenyalen que el model manca de dades d'altres comunitats i cultures. El model dona resultats més precisos per a les indicacions que s'escriuen en anglès en comparació amb les escrites en altres llengües, amb cultures occidentals o blanques sovint sent la representació per defecte.

## Capacitats

El model Stable Diffusion dona suport a la capacitat de generar noves imatges des de zero mitjançant l'ús d'un indicador de text que descriu els elements que s'han d'incloure o ometre des de la sortida. El model pot tornar a dibuixar les imatges existents per incorporar nous elements descrits per un indicador de text (un procés conegut com a " síntesi d'imatge guiada "). A més, el model també permet l'ús de rèpliques per alterar parcialment les imatges existents a través de la pintura i sortida, quan s'utilitza amb una interfície d'usuari adequada que admet aquestes característiques, de les quals existeixen nombroses implementacions de codi obert.
Es recomana que Stable Diffusion s'executi amb 10 GB o més VRAM, però els usuaris amb menys VRAM poden optar per carregar els pesos amb precisió float16 en lloc del float32 per defecte per compensar el rendiment del model amb un ús més baix de VRAM.

### Generació d'imatge a partir de text

L'script de mostreig de text a imatge dins de Stable Diffusion, conegut com a "txt2img", consumeix un indicador de text a més de paràmetres d'opcions variades que cobreixen els tipus de mostreig, les dimensions de la imatge de sortida i els valors de la llavor. L'script emet un fitxer d'imatge basat en la interpretació del model de l'indicador. Les imatges generades s'etiqueten amb una marca d'aigua digital invisible per permetre als usuaris identificar una imatge generada per la difusió estable, tot i que aquesta marca d'aigua perd la seva eficàcia si la imatge es redimensiona o gira.
Cada generació de txt2img implicarà un valor de llavor específic que afectarà la imatge de sortida. Els usuaris poden optar per a aleatoritzar la llavor per a explorar diferents sortides generades, o utilitzar la mateixa llavor per a obtenir la mateixa sortida d'imatge que una imatge generada prèviament. Els usuaris també són capaços d'ajustar el nombre de passos d'inferència per al mostrador; un valor més alt triga una durada més llarga, però un valor més petit pot donar lloc a defectes visuals. Una altra opció configurable, el valor d'escala d'orientació sense classificador, permet a l'usuari ajustar la proximitat de la imatge de sortida a l'indicador. Els casos d'ús més experimentatius poden optar per un valor d'escala més baix, mentre que els casos d'ús que apunten a sortides més específiques poden utilitzar un valor més alt.
Les característiques addicionals de text2img es proporcionen mitjançant implementacions frontals de Stable Diffusion, que permeten als usuaris modificar el pes donat a parts específiques de l'indicador de text. Els marcadors d'èmfasi permeten als usuaris afegir o reduir l'èmfasi a les paraules clau mitjançant la seva inclusió amb claudàtors. Un mètode alternatiu d'ajustar el pes a parts de l'indicador són "indicacions negatives". Les indicacions negatives són una característica inclosa en algunes implementacions frontals, incloent el propi servei de núvol DreamStudio de la IA d'Estabilitat, i permeten a l'usuari especificar les indicacions que el model ha d'evitar durant la generació d'imatges. Les indicacions especificades poden ser característiques d'imatge no desitjades que d'altra manera estarien presents dins de les sortides d'imatge a causa de les indicacions positives proporcionades per l'usuari, o a causa de com el model va ser originalment entrenat, amb mans humanes mangled sent un exemple comú.

### Modificació d'imatge

Stable Diffusion també inclou un altre script de mostreig, "img2img", que consumeix un indicador de text, camí a una imatge existent, i valor de força entre 0.0 i 1.0. L'script emet una imatge nova basada en la imatge original que també inclou elements proporcionats dins de l'indicador de text. El valor de força denota la quantitat de soroll afegit a la imatge de sortida. Un valor de força més gran produeix més variació dins de la imatge, però pot produir una imatge que no és semànticament coherent amb l'indicador proporcionat.
La capacitat d'img2img d'afegir soroll a la imatge original fa que sigui potencialment útil per a l'anonimització de dades i l'augment de dades, en què les característiques visuals de les dades de la imatge es canvien i s'anonimitzen. El mateix procés també pot ser útil per a l'augment de la imatge, en què la resolució d'una imatge s'incrementa, amb més detalls potencialment afegits a la imatge. A més, s'ha experimentat amb la difusió estable com a eina per a la compressió de la imatge. Comparat amb JPEG i WebP, els mètodes recents utilitzats per a la compressió d'imatges en les limitacions de les cares de difusió estable en la preservació de petits textos i cares.
Els casos d'ús addicionals per a la modificació d'imatge mitjançant img2img s'ofereixen per nombroses implementacions frontals del model de difusió estable. Inpainting implica modificar selectivament una porció d'una imatge existent delineada per una màscara de capa proporcionada per l'usuari, que omple l'espai emmascarat amb contingut generat recentment basat en l'indicador proporcionat. Un model dedicat específicament afinat per a casos d'ús de pintura va ser creat per Stability AI juntament amb l'alliberament de Stable Diffusion 2.0. Al revés, la pintura externa estén una imatge més enllà de les seves dimensions originals, omplint l'espai prèviament buit amb contingut generat basat en l'indicador proporcionat.
Un model guiat per la profunditat, anomenat "depth2img", es va introduir amb el llançament de Stable Diffusion 2.0 el 24 de novembre de 2022; aquest model infereix la profunditat de la imatge d'entrada proporcionada, i genera una nova imatge de sortida basada tant en l'indicador de text com en la informació de profunditat, que permet mantenir la coherència i la profunditat de la imatge d'entrada original a la sortida generada.

## Referències

* ↑ «Diffuse The Rest - a Hugging Face Space by huggingface». huggingface.co. Arxivat de l'original el 2022-09-05. [Consulta: 5 setembre 2022].
* ↑ Rombach, Robin; Blattmann, Andreas; Lorenz, Dominik; Esser, Patrick; Ommer, Björn «High-Resolution Image Synthesis with Latent Diffusion Models». arXiv:2112.10752 [cs], 13-04-2022.
* ↑ «Stable Diffusion Launch Announcement». Arxivat de l'original el 2022-09-05. [Consulta: 6 setembre 2022].
* ↑ «Stable Diffusion Repository on GitHub». CompVis - Machine Vision and Learning Research Group, LMU Munich, 17-09-2022. [Consulta: 17 setembre 2022].
* ↑ «Revolutionizing image generation by AI: Turning text into images». LMU Munich. [Consulta: 17 setembre 2022].
* ↑ Wiggers, Kyle. «Stability AI, the startup behind Stable Diffusion, raises $101M» (en anglès). Techcrunch. [Consulta: 17 octubre 2022].
* ↑ «Stable Diffusion», 27-12-2022. [Consulta: 27 desembre 2022].
* ↑ «The new killer app: Creating AI art will absolutely crush your PC». PCWorld. Arxivat de l'original el 2022-08-31. [Consulta: 31 agost 2022].
* ↑ Vincent, James. «Anyone can use this AI art generator — that’s the risk» (en anglès americà), 15-09-2022. [Consulta: 27 desembre 2022].

## Enllaços externs

* Demostració de Stable Diffusion