Diffúziós modellek és képgenerálás · Lecke 07

Szövegvezérelt képgenerálás és latens diffúzió

Eddig a modell véletlen képet állított elő az adatok eloszlásából. A mindennapokban viszont éppen azt akarjuk irányítani, mi legyen a képen egy szöveges leírás alapján. Ebben a leckében megnézzük, hogyan lesz a diffúzióból feltételes, szövegvezérelt képgenerálás, és mi az a latens diffúzió, ami mindezt gyakorlativá teszi nagy felbontáson is.

Vissza a tananyaghoz


A feltétel nélküli és a feltételes generálás

Az eddig tárgyalt modell feltétel nélküli (unconditional) volt. Húzott egy adag zajt, és abból egy tetszőleges, a tanítóadatokra jellemző képet készített, de nem tudtuk megmondani neki, mit szeretnénk látni. A feltételes generálás (conditional generation) ezen változtat. A zajtalanító hálónak a zajos kép és a lépés sorszáma mellett egy további bemenetet is adunk, a feltételt, ami leírja, milyen legyen az eredmény. Ha ez a feltétel egy szöveg, akkor szövegvezérelt, más néven szöveg alapú képgenerálásról (text-to-image) beszélünk. A gondolat lényege, hogy a modell minden zajtalanító lépésben figyelembe veszi a feltételt, ezért a végeredmény nem akármilyen kép lesz, hanem a leírásnak megfelelő.


A szöveg beágyazása

A háló nem tud közvetlenül szavakkal dolgozni, ezért a szöveges leírást először számokká kell alakítani. Ezt egy külön szövegkódoló, egy szövegenkóder (text encoder) végzi, amely a mondatot egy beágyazássá (embedding) alakítja, vagyis egy olyan számsorozattá, amely a jelentést tömören hordozza. Ez a beágyazás lesz a feltétel, amit a zajtalanító háló minden lépésben megkap. A szövegenkódert jellemzően úgy tanítják be, hogy a szöveg és a kép jelentése egy közös térben közel kerüljön egymáshoz, így a beágyazás valóban a leírt tartalmat képviseli. Amikor tehát azt írjuk, hogy piros alma egy asztalon, akkor ennek a mondatnak a beágyazása tereli a zajtalanítást a megfelelő irányba.


szöveges leírás piros alma az asztalon szövegenkóder text encoder beágyazás a feltétel zajos kép és lépés t zajtalanító háló figyelembe veszi a feltételt a leírásnak megfelelő kép A beágyazás minden zajtalanító lépésben tereli az eredményt.
A szövegvezérelt képgenerálás váza. A leírásból beágyazás lesz, ezt a feltételt a zajtalanító háló minden lépésben figyelembe veszi, így a kép a szöveghez igazodik.

A keresztfigyelem és az irányítás erőssége

Az, ahogyan a szöveges feltétel bekerül a hálóba, jellemzően a keresztfigyelem (cross-attention) mechanizmuson keresztül történik. Ennek lényege, hogy a kép különböző részei mintegy rákérdeznek a szöveg beágyazására, és onnan gyűjtik ki a releváns információt, például hogy hova kerüljön az alma és milyen színű legyen. Van egy további, gyakran használt fogás is, az osztályozó nélküli irányítás (classifier-free guidance). Ez úgy erősíti a szöveghez való hűséget, hogy a modell minden lépésben összeveti, mit becsülne a feltétellel és mit anélkül, és a különbség irányába nyomja az eredményt. Így szabályozható, mennyire ragaszkodjon a modell szó szerint a leíráshoz, a nagyobb erősség pontosabb, de olykor kevésbé természetes képet ad.


A latens diffúzió

Egy probléma marad. Egy nagy felbontású képnek rengeteg pixele van, és ha a diffúzió minden lépését közvetlenül a pixeleken végezzük, az nagyon számításigényes. A latens diffúzió (latent diffusion) erre ad megoldást, és egyben visszakapcsol a második leckében látott autoenkóderhez. Az ötlet, hogy a diffúziót ne a nyers pixeleken, hanem egy tömör, alacsony dimenziós látens térben végezzük. Előbb egy enkóder a képet egy jóval kisebb látens leírássá sűríti, a teljes zajosító és zajtalanító folyamat ebben a látens térben zajlik, végül egy dekóder a kész látens leírásból állítja vissza a teljes felbontású képet. Mivel a látens tér sokkal kisebb, a folyamat gyorsabb és olcsóbb lesz, ezért lett a latens diffúzió a nagy felbontású szövegvezérelt képgenerátorok, például a Stable Diffusion alapja.


nagy felbontású sok pixel enkóder látens tér, kicsi és gyors látens diffúzió itt zaj és zajtalanítás dekóder kész nagy kép A drága diffúzió a kis látens térben fut, nem a sok pixelen, ezért gyakorlati a nagy felbontás.
A latens diffúzió menete. A képet egy enkóder tömör látenssé sűríti, a teljes diffúzió a kis látens térben fut, majd egy dekóder állítja vissza a nagy felbontású képet.

Diffúzió a pixeleken

  • Közvetlenül a nyers képen dolgozik
  • Nagy felbontáson nagyon számításigényes
  • Minden lépés sok pixelt érint

Latens diffúzió

  • Egy tömör látens térben dolgozik
  • Sokkal gyorsabb és olcsóbb
  • Enkóder sűrít, dekóder állít vissza

3

Három építőelem. A feltétel a szöveg beágyazása, a keresztfigyelem viszi be a hálóba, és a latens diffúzió teszi gyorssá a nagy felbontást. Együtt ez adja a mai szövegvezérelt képgenerátorokat.


← Előző lecke Következő lecke →

Workshop

AI Transformation Day

Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.

Érdekel a program →