Unghiul lui Anderson
Trei provocări pentru Stable Diffusion

Lansarea modelului de sinteză a imaginilor latent diffusion de la stability.ai, Stable Diffusion, acum câteva săptămâni, poate fi una dintre cele mai semnificative dezvăluiri tehnologice de la DeCSS în 1999; cu siguranță, este cel mai mare eveniment în imagistica generată de inteligență artificială de la codul deepfakes din 2017 care a fost copiat pe GitHub și forkat în ceea ce avea să devină DeepFaceLab și FaceSwap, precum și software-ul de streaming deepfake în timp real DeepFaceLive.
La un moment dat, frica utilizatorilor cu privire la restricțiile de conținut din API-ul de sinteză a imaginilor DALL-E 2 au fost înlăturate, deoarece s-a dovedit că filtrul NSFW al lui Stable Diffusion poate fi dezactivat prin modificarea unei singure linii de cod. Comunitățile Reddit dedicate pornografiei cu Stable Diffusion au apărut aproape imediat și au fost eliminate la fel de repede, în timp ce dezvoltatorii și utilizatorii s-au împărțit în comunitățile oficiale și NSFW de pe Discord, iar Twitterul a început să se umple cu creații fantastice cu Stable Diffusion.
În acest moment, fiecare zi aduce o inovație uimitoare din partea dezvoltatorilor care au adoptat sistemul, cu plugin-uri și adaosuri third-party scrise în grabă pentru Krita, Photoshop, Cinema4D, Blender și multe alte platforme de aplicații.
Între timp, promptcraft – arta profesională de “șoptire AI”, care ar putea fi cea mai scurtă opțiune de carieră de la “legător de Filofax” – este deja comercializată, în timp ce monetizarea inițială a lui Stable Diffusion are loc la nivelul Patreon, cu siguranța că vor urma oferte mai sofisticate pentru cei care nu sunt dispuși să navigheze instalări Conda ale codului sursă sau filtrele NSFW prescriptive ale implementărilor web.
Ritmul de dezvoltare și sentimentul de explorare liberă din partea utilizatorilor sunt atât de rapide încât este greu de văzut foarte departe înainte. În esență, nu știm exact cu ce ne confruntăm încă, sau care sunt toate limitările sau posibilitățile.
Cu toate acestea, să aruncăm o privire asupra a trei dintre cele mai interesante și provocatoare obstacole pentru comunitatea Stable Diffusion în formare și în creștere rapidă, pentru a le depăși și, sperăm, a le învinge.
1: Optimizarea conductelor bazate pe tile-uri
Prezentate cu resurse hardware limitate și limite dure asupra rezoluției imaginilor de antrenament, pare probabil că dezvoltatorii vor găsi soluții pentru a îmbunătăți atât calitatea, cât și rezoluția ieșirii lui Stable Diffusion. Multe dintre aceste proiecte implică exploatarea limitărilor sistemului, cum ar fi rezoluția sa nativă de doar 512×512 pixeli.
Ca de obicei, cu inițiativele de viziune computerizată și sinteză de imagini, Stable Diffusion a fost antrenat pe imagini cu raport de aspect pătrat, în acest caz, reîmprospătate la 512×512, astfel încât imaginile sursă să poată fi regularizate și să se potrivească în constrângerile GPU-urilor care au antrenat modelul.
Prin urmare, Stable Diffusion “gândește” (dacă gândește deloc) în termeni de 512×512 și, cu siguranță, în termeni pătrați. Mulți utilizatori care explorează limitele sistemului raportează că Stable Diffusion produce cele mai fiabile și mai puțin glitchy rezultate la acest raport de aspect destul de constrâns (vezi “adresarea extremelor” mai jos).
Deși diverse implementări prezintă upscale prin RealESRGAN (și pot fixa fețe slab renderizate prin GFPGAN), mai mulți utilizatori dezvoltă metode pentru a diviza imaginile în secțiuni de 512×512 pixeli și a le coase pentru a forma lucrări compozite mai mari.

Acest render de 1024×576, o rezoluție obișnuit imposibilă într-un singur render Stable Diffusion, a fost creat prin copierea și lipirea fișierului attention.py Python din fork-ul DoggettX al lui Stable Diffusion (o versiune care implementează upscaling-ul bazat pe tile-uri) într-un alt fork.
Deși unele inițiative de acest fel utilizează cod original sau alte biblioteci, portul txt2imghd al GOBIG (un mod în ProgRockDiffusion, care consumă multă memorie video) este setat să ofere această funcționalitate ramurii principale în curând. În timp ce txt2imghd este un port dedicat al GOBIG, alte eforturi din partea dezvoltatorilor comunitari implică implementări diferite ale GOBIG.

O imagine abstractă convenabilă în renderul original de 512×512 pixeli (stânga și a doua de la stânga); upscalată prin ESGRAN, care este acum mai mult sau mai puțin nativă în toate distribuțiile Stable Diffusion; și care a primit “atenție specială” prin implementarea GOBIG, producând detalii care, cel puțin în limitele secțiunii imaginii, par mai bine upscalate.
Acest tip de exemplu abstract prezentat mai sus are multe “regate mici” de detalii care se potrivesc acestei abordări solipsistice de upscaling, dar care pot necesita soluții de cod mai provocatoare pentru a produce upscaling ne-repetitiv și coerent care nu arată ca fiind asamblat din multe părți. Nu în ultimul rând, în cazul fețelor umane, unde suntem neobișnuit de sensibili la aberații sau artefacte “jarring”. Prin urmare, fețele pot necesita în cele din urmă o soluție dedicată.
Stable Diffusion nu are în prezent niciun mecanism pentru a se concentra asupra feței în timpul unui render, în același mod în care oamenii prioritizează informația facială. Deși unii dezvoltatori din comunitățile Discord iau în considerare metode pentru a implementa acest tip de “atenție îmbunătățită”, este în prezent mult mai ușor să se îmbunătățească manual (și, în cele din urmă, automat) fața după ce renderul initial a avut loc.
O față umană are o logică semantică internă completă care nu se va găsi într-un “tile” din colțul inferior al (de exemplu) unei clădiri, și prin urmare, este în prezent posibil să se “zoom” și să se re-renderizeze o față “schetchy” în ieșirea lui Stable Diffusion.

Stânga, efortul inițial al lui Stable Diffusion cu promptul ‘Fotografie color în întregime a Christinei Hendricks intrând într-un loc aglomerat, purtând o raincoat; Canon50, contact vizual, detalii înalte, detalii faciale înalte’. Dreapta, o față îmbunătățită obținută prin introducerea feței blurate și schetchy din primul render înapoi în atenția deplină a lui Stable Diffusion, utilizând Img2Img (vezi imaginile animate mai jos).
În absența unei soluții dedicate de inversare textuală (vezi mai jos), acest lucru va funcționa doar pentru imagini de celebrități care sunt deja bine reprezentate în subseturile de date LAION care au antrenat lui Stable Diffusion. Prin urmare, va funcționa pentru persoane ca Tom Cruise, Brad Pitt, Jennifer Lawrence și un interval limitat de adevărați luminari media care sunt prezenți în număr mare de imagini în datele sursă.

Generarea unei fotografii de presă plauzibile cu promptul ‘Fotografie color în întregime a Christinei Hendricks intrând într-un loc aglomerat, purtând o raincoat; Canon50, contact vizual, detalii înalte, detalii faciale înalte’.
Pentru celebritățile cu cariere lungi și de durată, Stable Diffusion va produce de obicei o imagine a persoanei la o vârstă recentă (adică mai în vârstă), și va fi necesar să se adauge adjuncți de prompt precum ‘tânăr’ sau ‘în anul [AN]’ pentru a produce imagini care arată mai tinere.

Cu o carieră proeminentă, foarte fotografiată și consistentă, care se întinde pe aproape 40 de ani, actrița Jennifer Connelly este una dintre puținele celebrități din LAION care permit lui Stable Diffusion să reprezinte o gamă de vârste. Sursă: prepack Stable Diffusion, local, punct de control v1.4; prompturi legate de vârstă.
Acest lucru se datorează în mare măsură proliferației fotografiei de presă digitale (și nu pe bază de emulsie) din mijlocul anilor 2000 și creșterii ulterioare a volumului de ieșiri de imagini datorită vitezelor de bandă largă crescute.

Imaginea renderizată este trecută prin Img2Img în Stable Diffusion, unde se selectează o ‘zonă de focalizare’, și se face un nou render de dimensiune maximă doar pentru acea zonă, permițând lui Stable Diffusion să se concentreze toate resursele disponibile pe re-crearea feței.

Compozitarea feței ‘cu atenție ridicată’ înapoi în renderul original. Pe lângă fețe, acest proces va funcționa doar cu entități care au o apariție cunoscută, coerentă și integrală, cum ar fi o parte a fotografiei originale care are un obiect distinct, cum ar fi un ceas sau o mașină. Upscalarea unei secțiuni a unui perete, de exemplu, va duce la un perete reasamblat care arată foarte ciudat, deoarece renderizările tile-urilor nu aveau niciun context mai larg pentru această ‘piesă de puzzle’ în timp ce le renderizau.
Unele celebrități din baza de date vin ‘înghețate’ în timp, fie pentru că au murit devreme (cum ar fi Marilyn Monroe), fie pentru că au ajuns la o faimă mainstream efemeră, producând un volum mare de imagini într-o perioadă limitată de timp. Sondează lui Stable Diffusion și oferă, în mod paradoxal, un fel de ‘index de popularitate actual’ pentru stele moderne și mai vechi. Pentru unele celebrități mai vechi și actuale, nu există suficiente imagini în datele sursă pentru a obține o asemănare foarte bună, în timp ce popularitatea de durată a unor stele decedate sau estompate asigură că o asemănare rezonabilă poate fi obținută din sistem.

Renderizările lui Stable Diffusion dezvăluie rapid care dintre fețele celebre sunt bine reprezentate în datele de antrenament. În ciuda popularității sale uriașe ca adolescent mai în vârstă la momentul scrierii, Millie Bobby Brown a fost mai tânără și mai puțin cunoscută atunci când subseturile de date sursă LAION au fost extrase de pe web, făcând dificilă obținerea unei asemănări de înaltă calitate cu Stable Diffusion în acest moment.
În cazul în care datele sunt disponibile, soluțiile de up-res bazate pe tile-uri în Stable Diffusion ar putea merge mai departe decât focalizarea pe față: ar putea permite, de fapt, fețe și mai precise și detaliate prin descompunerea trăsăturilor faciale și prin aplicarea tuturor resurselor locale de GPU pe fiecare trăsătură în parte, înainte de reasamblare – un proces care, în prezent, este, din nou, manual.
Acest lucru nu se limitează la fețe, dar este limitat la părți ale obiectelor care sunt cel puțin la fel de previzibile plasate în contextul mai larg al obiectului gazdă și care se conformează unor încorporări de nivel înalt pe care s-ar putea să le găsiți într-un set de date de scară hiperspectrală.
Limita reală este cantitatea de date de referință disponibile în setul de date, deoarece, în cele din urmă, detalii profund iterate vor deveni complet “halucinate” (adică fictive) și mai puțin autentice.
Asemenea măririri granulare funcționează în cazul lui Jennifer Connelly, deoarece ea este bine reprezentată într-o gamă de vârste în LAION-aesthetics (subsetul principal al LAION 5B pe care îl utilizează Stable Diffusion) și, în general, în LAION; în multe alte cazuri, precizia va suferi din cauza lipsei de date, necesitând fie fine-tuning (antrenament suplimentar, vezi “Customizare” mai jos), fie inversare textuală (vezi mai jos).
Tile-urile sunt o modalitate puternică și relativ ieftină pentru ca Stable Diffusion să poată produce ieșiri de înaltă rezoluție, dar upscaling-ul algoritmic de acest tip, dacă lipsește o anumită mecanism de atenție de nivel superior, poate să nu atingă standardele sperate într-o gamă de tipuri de conținut.
2: Abordarea problemelor cu membrele umane
Stable Diffusion nu-și justifică numele atunci când reprezintă complexitatea extremităților umane. Mâinile pot să se multiplice aleator, degetele pot să se contopească, picioarele pot să apară fără să fie chemate, iar membrele existente pot să dispară fără urmă. În apărarea sa, Stable Diffusion împărtășește problema cu “frații” săi, și, cu siguranță, cu DALL-E 2.

Rezultate needitate de la DALL-E 2 și Stable Diffusion (1.4) la sfârșitul lunii august 2022, ambele arătând probleme cu membrele. Promptul este ‘O femeie îmbrățișând un bărbat’
Susținătorii lui Stable Diffusion care speră că următorul punct de control 1.5 (o versiune mai intens antrenată a modelului, cu parametri îmbunătățiți) va rezolva confuzia membrelor sunt probabil să fie dezamăgiți. Noul model, care va fi lansat în aproximativ două săptămâni, este în prezent prezentat la portalul comercial stability.ai DreamStudio, unde utilizatorii pot compara ieșirile noi cu renderizările de la sistemele locale sau alte sisteme 1.4:

Sursă: prepack 1.4 local și https://beta.dreamstudio.ai/

Sursă: prepack 1.4 local și https://beta.dreamstudio.ai/

Sursă: prepack 1.4 local și https://beta.dreamstudio.ai/
Ca de obicei, calitatea datelor ar putea fi cauza principală care contribuie.
Bazele de date deschise care alimentează sistemele de sinteză a imaginilor, cum ar fi Stable Diffusion și DALL-E 2, pot oferi multe etichete pentru oameni individuali și acțiuni interumane. Aceste etichete sunt antrenate împreună cu imaginile sau segmentele de imagini asociate.

Utilizatorii lui Stable Diffusion pot explora conceptele antrenate în model prin interogarea setului de date LAION-aesthetics, un subset al setului de date mai mare LAION 5B, care alimentează sistemul. Imaginile sunt ordonate nu după etichetele lor alfanumerice, ci după ‘scorul estetic’. Sursă: https://rom1504.github.io/clip-retrieval/
O ierahie bună de etichete individuale și clase care contribuie la reprezentarea unui braț uman ar fi ceva de genul corp>braț>mână>degete>[subdegete + deget mare]> [segmente de deget]>unghii.

Segmentare semantică granulară a părților unei mâini. Chiar și această deconstruire neobișnuit de detaliată lasă fiecare ‘deget’ ca o entitate singulară, fără a lua în considerare cele trei secțiuni ale unui deget și cele două secțiuni ale degetului mare Sursă: https://athitsos.utasites.cloud/publications/rezaei_petra2021.pdf
În realitate, imaginile sursă sunt puțin probabil să fie atât de consistent etichetate pe întregul set de date, și algoritmii de etichetare nesupravegheați vor opri probabil la nivelul superior al – de exemplu – ‘mână’, și vor lăsa pixelii interiori (care conțin, în mod tehnic, informații despre ‘degete’) ca o masă nelabelată de pixeli, din care se vor deriva caracteristici arbitrar, și care se pot manifesta în renderizări ulterioare ca un element “jarring”.

Cum ar trebui să fie (dreapta sus, dacă nu sus, atunci tăiat), și cum tinde să fie (dreapta jos), din cauza resurselor limitate pentru etichetare, sau a exploatării arhitecturale a acestor etichete, dacă există în setul de date.
Prin urmare, dacă un model de difuzie latentă ajunge să renderizeze un braț, este aproape sigur că va încerca să renderizeze o mână la capătul acelui braț, deoarece braț>mână este ierarhia minimă necesară, destul de sus în ceea ce știe arhitectura despre ‘anatomia umană’.
După aceea, ‘degetele’ pot fi cel mai mic grup, deși există 14 sub-părți suplimentare de degete și degete de luat în considerare atunci când se reprezintă mâinile umane.
Dacă această teorie se dovedește a fi valabilă, nu există niciun remediu real, din cauza lipsei de buget pentru etichetarea manuală, și a lipsei de algoritmi suficient de eficienți care ar putea automatiza etichetarea, producând rate de eroare scăzute. În esență, modelul se bazează în prezent pe consistența anatomică umană pentru a acoperi deficiențele setului de date pe care a fost antrenat.
Unul dintre motivele pentru care nu se poate baza pe aceasta, propus recent la Discord-ul lui Stable Diffusion, este că modelul ar putea fi confuz în legătură cu numărul corect de degete pe care ar trebui să le aibă o mână umană realistă, deoarece baza de date LAION care alimentează modelul prezintă personaje de desene animate care ar putea avea mai puține degete (ceea ce este, în sine, o scurtătură care economisește muncă).

Două dintre potențialii vinovați în ‘sindromul degetului dispărut’ în Stable Diffusion și modele similare. Mai jos, exemple de mâini de desene animate din setul de date LAION-aesthetics care alimentează Stable Diffusion. Sursă: https://www.youtube.com/watch?v=0QZFQ3gbd6I
Dacă acest lucru este adevărat, atunci singura soluție evidentă este să reantreneze modelul, excluzând conținutul uman nerealist, și asigurându-se că cazurile reale de omisiune (de exemplu, amputați) sunt etichetate corespunzător ca excepții. Din punct de vedere al curățeniei datelor, acest lucru ar fi o provocare considerabilă, în special pentru eforturile comunitare cu resurse limitate.
A doua abordare ar fi să se aplice filtre care exclud un astfel de conținut (de exemplu, ‘mână cu trei sau cinci degete’) de la a apărea la momentul renderizării, în același mod în care OpenAI a filtrat GPT-3 și DALL-E 2, astfel încât ieșirile lor să poată fi reglementate fără a necesita reantrenarea modelelor sursă.

Pentru Stable Diffusion, distincția semantică dintre degete și chiar membre poate deveni oribil de neclară, amintind de strandul ‘groazei corporale’ din filmele de groază din anii 1980, de la regizori ca David Cronenberg. Sursă: https://old.reddit.com/r/StableDiffusion/comments/x6htf6/a_study_of_stable_diffusions_strange_relationship/
Ar putea fi argumentat că există două drumuri rămase înainte: aruncarea mai multor date la problema respectivă, și aplicarea unor sisteme interpretative terțe care pot interveni atunci când greșeli fizice de acest tip sunt prezentate utilizatorului final (cel puțin, acesta din urmă ar oferi OpenAI o metodă pentru a oferi rambursări pentru renderizări ‘de groază’, dacă compania ar fi motivată să o facă).
3: Customizarea
Una dintre cele mai interesante posibilități pentru viitorul lui Stable Diffusion este perspectiva ca utilizatori sau organizații să dezvolte sisteme revizuite; modificări care permit conținut în afara sferei preantrenate LAION să fie integrat în sistem – ideal, fără costul imposibil de antrenat din nou întregul model, sau riscul implicat în antrenarea unui volum mare de imagini noi într-un model existent, matur și capabil.
Prin analogie: dacă doi elevi mai puțin dotați se alătură unei clase avansate de treizeci de elevi, ei vor fie se asimila și se vor recupera, fie vor eșua ca outsideri; în orice caz, media de performanță a clasei nu va fi, probabil, afectată. Dacă cincisprezece elevi mai puțin dotați se alătură, însă, curba de notare pentru întreaga clasă este probabil să sufere.
La fel, rețeaua sinergică și destul de delicată de relații care se construiesc pe parcursul unui antrenament de model prelungit și costisitor poate fi compromisă, în unele cazuri, efectiv distrusă, prin date noi excesive, reducând calitatea ieșirii modelului în general.
Cazul pentru a face acest lucru este, în primul rând, acolo unde interesul dvs. se află în a prelua complet înțelegerea conceptuală a modelului a relațiilor și a lucrurilor, și a o apropria pentru producerea exclusivă de conținut care este similar cu materialul suplimentar pe care l-ați adăugat.
Prin urmare, antrenarea a 500.000 de cadre Simpsons într-un punct de control existent al lui Stable Diffusion este probabil, în cele din urmă, să vă ofere un simulator Simpsons mai bun decât cea pe care construcția originală ar fi putut-o oferi, presupunând că suficiente relații semantice ample supraviețuiesc procesului (de exemplu, Homer Simpson mănâncă un hotdog, care ar putea necesita material despre hotdogi care nu a fost în materialul dvs. suplimentar, dar care exista deja în punctul de control), și presupunând că nu doriți să treceți brusc de la conținut Simpsons la crearea peisajelor fabuloase de Greg Rutkowski – pentru că modelul dvs. post-antrenat a avut atenția sa masiv deviat, și nu va fi la fel de bun la a face acest lucru, cum era înainte.
Un exemplu notabil al acestuia este waifu-diffusion, care a reușit să antreneze 56.000 de imagini anime într-un punct de control complet antrenat al lui Stable Diffusion. Este o perspectivă dificilă pentru un hobbyist, însă, deoarece modelul necesită o cantitate minimă de 30 GB de VRAM, mult dincolo de ceea ce este probabil să fie disponibil la nivelul consumatorilor în lansările viitoare 40XX ale NVIDIA.

Antrenarea conținutului personalizat în Stable Diffusion prin waifu-diffusion: modelul a necesitat două săptămâni de post-antrenament pentru a produce acest nivel de ilustrație. Cele șase imagini din stânga arată progresul modelului, pe măsură ce antrenamentul a progresat, în producerea de ieșiri coerente pe baza noilor date de antrenament. Sursă: https://gigazine.net/gsc_news/en/20220121-how-waifu-labs-create/
Un efort considerabil ar putea fi cheltuit pe astfel de ‘furci’ ale punctelor de control ale lui Stable Diffusion, doar pentru a fi împiedicat de datoria tehnică. Dezvoltatorii de la Discord-ul oficial au indicat deja că lansările viitoare de puncte de control nu vor fi, probabil, compatibile cu versiunile anterioare, nici măcar cu logica prompturilor care ar fi putut funcționa cu o versiune anterioară, deoarece interesul lor principal este să obțină cel mai bun model posibil, mai degrabă decât să susțină aplicații și procese legacy.
Prin urmare, o companie sau o persoană care decide să ramifice un punct de control într-un produs comercial, efectiv, nu are niciun drum de întoarcere; versiunea lor a modelului este, la acel moment, o ‘furcă tare’, și nu va putea să atragă beneficii upstream din lansările ulterioare de la stability.ai – ceea ce este o angajare considerabilă.
Speranța actuală și mai mare pentru personalizarea lui Stable Diffusion este inversarea textuală, unde utilizatorul antrenează o mână de CLIP-imagini aliniate.

O colaborare între Universitatea Tel Aviv și NVIDIA, inversarea textuală permite antrenarea entităților discrete și noi, fără a distruge capacitățile modelului sursă. Sursă: https://textual-inversion.github.io/
Limitarea aparentă a inversării textuale este că se recomandă un număr foarte mic de imagini – cât mai puțin cinci. Acest lucru produce, în esență, o entitate limitată care poate fi mai utilă pentru sarcini de transfer de stil decât pentru inserarea de obiecte fotorealiste.
În ciuda acestor factori limitatori, experimente sunt în desfășurare în cadrul diverselor Discords ale lui Stable Diffusion, care utilizează un număr mult mai mare de imagini de antrenament, și rămâne de văzut cât de productive ar putea dovedi a fi această metodă. Din nou, tehnica necesită o cantitate mare de VRAM, timp și răbdare.
Din cauza acestor factori limitatori, s-ar putea să trebuiască să așteptăm o vreme pentru a vedea unele dintre experimentele mai sofisticate de inversare textuală de la entuziaștii lui Stable Diffusion – și dacă abordarea respectivă poate ‘pune în imagine’ într-un mod care arată mai bine decât o operațiune de tăiere și lipire în Photoshop, în timp ce păstrează funcționalitatea uimitoare a punctelor de control oficiale.
Publicat pentru prima dată pe 6 septembrie 2022.













