A nyelvi feladatokban bevált transzformer architektúrát hamar átültették a számítógépes látás világába is. Ezzel párhuzamosan egyre nagyobb lett az igény olyan modellekre, amelyek nem csak egyetlen modalitást kezelnek, hanem a képet és a természetes nyelvet együtt, egymásra vonatkoztatva értelmezik. Az OpenAI két ilyen modellel is előrukkolt, ezek a CLIP és a DALL-E. Ez a lecke ezt a két megközelítést mutatja be, valamint azt, hogyan lehet belőlük működő képgeneráló rendszert építeni.
A CLIP alapötlete
A CLIP (Contrastive Language-Image Pre-training) célja egyszerű megfogalmazásban az, hogy össze tudja hasonlítani egy szöveges leírást egy képpel, és meg tudja mondani, mennyire illenek egymáshoz. A modellt hatalmas mennyiségű, internetről gyűjtött képen és a hozzájuk tartozó feliraton tanítják. Minden tanítási kötegben N darab kép-szöveg párt vesznek, majd ezeket vektoros reprezentációkká alakítják. A veszteségfüggvény úgy van felépítve, hogy az egymáshoz tartozó kép és szöveg vektorai között maximalizálja a hasonlóságot, minden más párosítás között pedig minimalizálja azt. Éppen ez a szembeállító, kontrasztos tanítási elv adja a modell nevét.
A betanított CLIP modellnek egyszerre lehet megadni képeket és szöveges leírásokat, és a kimenete egy valószínűségi mátrix lesz arról, melyik kép melyik leíráshoz illik legjobban. Ez a tulajdonság két nagyon hasznos gyakorlati feladatra ad lehetőséget.
Az első a képosztályozás. Ha például macskákat, kutyákat és embereket szeretnénk megkülönböztetni, elég egy képet és néhány szöveges leírást megadni a modellnek, mint "egy macska képe", "egy kutya képe" vagy "egy ember képe", és a legmagasabb valószínűségű leírás adja a választ. Nincs szükség külön betanított osztályozóra minden egyes kategóriára.
A második a szöveg alapú képkeresés, ami ennek a fordítottja. Ha van egy nagyobb képgyűjteményünk, egyetlen szöveges lekérdezéssel megkereshetjük azt a képet, amelyik leginkább megfelel a leírásnak, anélkül hogy a képeket előzőleg címkéztük volna.
Képalkotás VQGAN és CLIP együttesével
A CLIP önmagában nem generál képet, viszont kiválóan alkalmas arra, hogy megmondja, egy adott kép mennyire felel meg egy szöveges utasításnak. Ehhez egy generátor modellre van szükség, amely egy vektorból tényleges képet tud előállítani. Erre a célra terjedt el a VQGAN (Vector-Quantized GAN), amely két ponton is eltér a hagyományos generatív ellenfeles hálóktól. Egyrészt egy autoregresszív transzformer architektúrát használ, amely a képet alkotó, kontextusban gazdag vizuális elemek sorozatát generálja, ezeket az elemeket pedig egy konvolúciós háló tanulja meg. Másrészt nem egyetlen, mindent eldöntő diszkriminátorral dolgozik, hanem alképrészenként ítéli meg, hogy az adott részlet valóságosnak hat-e, ami sokkal finomabb visszajelzést ad a tanítás során.
A hagyományos GAN-nal ellentétben a VQGAN önmagában szinte bármelyik bemeneti vektorból koherens, valóságosnak ható képet tud készíteni, viszont nincs eszköze arra, hogy egy adott szöveges leírás felé terelje az eredményt. Itt lép be a CLIP. A folyamat egy véletlenszerű kódoló vektorral indul, amelyet a VQGAN alakít képpé, majd a CLIP megméri, mennyire illeszkedik a kép a célként megadott szöveghez. Ez a mérés adja a veszteségfüggvényt, amit visszaterjesztéssel minimalizálnak, lépésről lépésre módosítva a bemeneti vektort, amíg a kép egyre inkább megfelel a leírásnak. Ezt a megközelítést valósítja meg többek között a Pixray nevű nyílt forráskódú könyvtár is, amellyel tisztán szöveges utasításból, mint például "egy fiatal irodalomtanár akvarell portréja", meglepően kifejező képek készíthetők.
A DALL-E családja
A DALL-E az OpenAI másik, ezúttal egységesebb megközelítése ugyanerre a problémára. Az első verzió a GPT-3 architektúráján alapul, 12 milliárd paraméterrel, és arra tanították, hogy szöveges utasításokból közvetlenül képet generáljon. A CLIP-pel ellentétben a DALL-E nem két külön modellt kombinál, hanem a szöveget és a képet egyetlen közös tokenfolyamként kezeli, ami lehetővé teszi, hogy a modell egységesen tanulja meg a két modalitás közti kapcsolatot.
A DALL-E 2 lényegében ugyanezt az elvet viszi tovább, de jelentősen valósághűbb és részletgazdagabb képeket és művészi alkotásokat képes létrehozni, mint elődje. A CLIP, a VQGAN és a DALL-E együtt jól szemléltetik, milyen irányba fejlődött a képgenerálás az elmúlt években, a szöveg és a kép egyre szorosabb összekapcsolása felé, ami a mai modern generatív képmodellek egyik alapját is adja.
Gyakorlati kód
A CLIP gyakorlati használatát képosztályozásra és képkeresésre a Microsoft eredeti jegyzetfüzete mutatja be lépésről lépésre, PyTorchban. Gyakorlati kód a GitHubon.
Forrás
Ez a lecke a Microsoft nyílt forráskódú, MIT licenc alatt elérhető "AI For Beginners" tananyagának magyar adaptációja. Eredeti angol lecke. GitHub. Felhasznált magyar gépi fordítás. GitHub.
Ezzel a leckével a teljes 25 részes "AI kezdőknek" tananyagot végigjárta. Gratulálunk a kitartáshoz. Ha szeretné átismételni a leckéket, vagy egy adott témára visszatérni, a tananyag főoldalán mindegyik elérhető egy helyen. Ha pedig azon gondolkodik, hogyan lehetne mindebből a saját szervezetében is valódi, működő AI alkalmazást építeni, vegye fel velünk a kapcsolatot, vagy foglaljon egy időpontot egy közös átbeszélésre.
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 →