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.
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.
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
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.
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 →