Lucrul în spațiul comprimat
O fotografie modernă conține milioane de valori, iar difuzia trebuie să treacă prin fiecare pixel la fiecare pas, de zeci de ori la rând. Însă o uriașă risipă se ascunde aici: aproape niciun pixel individual nu participă la marile decizii de compoziție. Soluția este la fel de înțeleaptă ca practica arhitecturii: marile hotărâri se iau pe o schiță comprimată — planul arhitectural —, iar textura, tencuiala și cărămizile se așază o singură dată, la final.
Termeni cheie: autocodificator (autoencoder) reprezentare latentă (spațiu latent) difuzie latentă (LDM) halucinații de decodificare
Coșmarul pixelilor: unde se duce efortul de calcul
Dacă am aplica difuzia direct pe ecran, la fiecare pas de curățare a zgomotului rețeaua neuronală ar primi o imagine uriașă și ar returna o predicție de aceeași mărime. Pentru o fotografie obișnuită de o mie de pixeli pe latură, colorată în cele trei canale fundamentale (roșu, verde, albastru), asta înseamnă peste trei milioane de numere procesate la fiecare pas, de zeci de ori la rând, pentru un singur cadru generat.
Și totuși, cea mai mare parte din acel potop numeric poartă simple detalii de suprafață: mici firicele de zgomot, granulația aspră, variații minuscule de lumină pe o frunză. Toate acestea contează pentru senzația finală de claritate, dar nu au nicio legătură cu marile decizii luate pe parcurs: dacă desenăm o casă sau un copac, dacă cerul e senin sau unde anume se așază personajele în scenă.
Așa s-a născut o idee strălucită: de ce să mutăm munți de pixeli la fiecare fracțiune de secundă, când putem lua toate deciziile grele într-un spațiu restrâns, lăsând textura și fardul să fie aplicate o singură dată, la sfârșit?
Autocodificatorul: arhitectul și constructorul
Piesa care face posibilă această mutare funcționează asemenea unei echipe formate din două rețele partenere. Prima jumătate (codificatorul) strânge imaginea mare într-un pumn concentrat de numere esențiale. A doua jumătate (decodificatorul) ia acel pumn de numere și reconstruiește din ele o imagine completă. Antrenate împreună, ele învață o regulă sacră: ce iese la capăt trebuie să semene fidel cu ce a intrat. Această pereche se numește autocodificator, iar pumnul de numere din mijloc poartă numele de reprezentare latentă (sau spațiu latent).
Nimeni nu dictează mecanic ce trăsături să păstreze. Fiindcă spațiul din mijloc este o trecătoare foarte strâmtă, sistemul ajunge de la sine să rețină doar informația vitală din care se poate reface tabloul — adică exact marile contururi care deosebesc o imagine de alta. Strâmtoarea este cel mai bun profesor de sinteză.
Figura de mai jos folosește o formă simplificată de comprimare liniară, calculată riguros pe baza exemplelor geometrice. Deși o rețea neuronală modernă este mult mai bogată, proprietățile fundamentale sunt identice: reduceți numărul de valori latente și priviți cum pânza își păstrează sensul chiar și când este comprimată drastic.
Schița arhitecturală: ce se păstrează cu adevărat
Întrebarea care stabilește dacă mutarea are rost nu este dacă imaginea refăcută e identică pixel cu pixel, ci dacă din numerele păstrate se mai poate citi fără echivoc ce se află în ea.
Tabelul de mai jos măsoară simultan ambele dimensiuni: eroarea vizuală de reconstrucție (cât se pierde pe ecran) și acuratețea recunoașterii (cât de ușor poate o regulă simplă să afle forma corectă privind doar cele câteva numere comprimate).
Priviți contrastul dintre cele două coloane: refacerea fină a pixelilor se degradează treptat pe măsură ce tăiem din valori, dar recunoașterea semantică rezistă admirabil! Chiar și cu de douăzeci și cinci de ori mai puține valori numerice, modelul știe precis ce desen se află acolo.
Este exact rolul schiței de lucru a arhitectului: nu conține textura tencuielii și nici nuanța exactă a parchetului, dar conține tot ce este indispensabil pentru a hotărî unde se ridică zidurile și unde se deschid ușile.
Difuzia latentă: dansul pe schiță
Aici se produce marea cotitură care a deschis calea generatoarelor moderne de imagini (cum este Stable Diffusion). În loc să aplicăm zgomot și să facem calcule greoaie pe milioane de pixeli, mutăm întregul laborator al difuziei în spațiul latent!
Fotografiile de antrenament sunt trecute o singură dată prin codificator, transformându-se în schițe comprimate. Apoi, tot dansul difuziei se petrece exclusiv acolo: zgomotul se adaugă pe numerele latente, rețeaua învață să-l ghicească acolo, iar drumul înapoi de 50 de pași curăță doar această schiță compactă. Abia la finalul procesului, rezultatul trece o singură dată prin decodificator, care îl transformă într-o fotografie de rezoluție înaltă. Aceasta este difuzia latentă.
Economia de resurse este uriașă și se poate calcula cu precizie, deoarece efortul unei rețele crește direct proporțional cu numărul de valori pe care le manevrează.
Comprimarea acționează pe ambele laturi ale imaginii: o reducere de opt ori pe latură înseamnă o suprafață de 64 de ori mai mică! Chiar dacă fiecare punct latent poartă mai multe canale de informație decât cele trei culori ale unui pixel obișnuit, câștigul net rămâne de ordinul zecilor de ori, făcând posibil ca generarea să ruleze chiar pe un laptop obișnuit.
Ce se pierde: măruntele invenții ale decodificatorului
Această viteză formidabilă are însă un preț ascuns. Decodificatorul care pictează pixelii finali nu poate citi trecutul cu o lupă infailibilă: el inventează detalii și texturi plauzibile care să se potrivească cu numerele primite, inspirându-se din imaginile pe care le-a văzut la antrenament.
De aici provin cusururile celebre pe care le cunoaște oricine s-a uitat de aproape la astfel de rezultate: textul minuscul de pe o etichetă din fundal arată ca un text credibil, dar nu conține litere reale; țesăturile fine capătă modele sintetice stranii; iar chipurile mici aflate în depărtare primesc trăsături ușor deformate sau halucinate. Nu sunt defecte ale procesului de difuzie, ci improvizații ale decodificatorului, vizibile exact la scara microscopică la care acesta a fost lăsat să inventeze.
Difuzia este astăzi regina sintezei de imagini, dar nu este singura familie generativă și nu a fost nici prima. În lecția următoare vom așeza difuzia alături de celelalte mari rude ale sale — rețelele adversariale și fluxurile generative —, comparând pas cu pas siguranța și viteza fiecăreia.