Mesterséges intelligencia a képalkotásban

A mesterséges intelligencia (AI) már a spájzban van és mivel kezdenek a fotós blogok is tele lenni szenzációs hírekkel, gondoltam kicsit összefoglalom, hogy mit is tud, miben különbözik egy AI az egyszerű matematikai algoritmusokat használó programoktól.

Először is, külön köszönetet szeretnék mondani Pfliegel Bálint barátomnak – aki nem csak nagyszerű fotós, hanem zseniális mérnök is – a Fotófaluban, a témában tartott érdekes előadásáért és hogy a diákat a rendelkezésemre bocsátotta, így sokkal teljesebb képet tudok megrajzolni nektek a témában. Mindazonáltal ez csak nagyon leegyszerűsített összefoglaló lesz arról, hogy hol tartunk, nem várjatok technikai mélységeket. Aki mélyebben kíváncsi arra, hogy mi a van a színfalak mögött ezek alapján utánaolvashat a neten.Először is, lássuk, mi az a mesterséges intelligencia, vagy manapság divatos nevén gépi tanulás.

A legegyszerűbben talán úgy lehet összefoglalni, hogy olyan matematikai (statisztikai) algoritmus, ami a bemenő értékeket különféle csoportokba szervezi és a csoportosítás alapján generál egy kimenetet. A legtöbb esetben a kimeneten megjelenő értékeket ellenőrzik és az eredmény helyességét visszacsatolják a rendszerbe, ami alapján az algoritmus felülvizsgálja és ha szükséges módosítja a belső csoportokat. Ezért aztán az AI annál pontosabb, jobb eredményt produkál, minél több mintát ismer.

Azt viszont, hogy egy fotóval dolgozik vagy egy szöveggel, vagy mondjuk sakk állásokkal nem tudja. Ezt úgy képzeld el, hogy ha az a feladata, hogy megtaláljon minden kutyát a képen, akkor beadunk neki egy adathalmazt (a fotót), amit átalakít (encode) a belső statisztikai reprezentációjára, majd az eredményt visszaalakítja (decode) egy olyan fotóvá, amin a kutya be van keretezve. A következő videón egy olyan AI-t láthattok, ami felismeri az autókat kresz táblákat, gyalogosokat és valós időben színekkel megjelöli a videón.

Ebből következőleg a megfelelő encoder és decoder segítségével, egy sor érdekes dolgot lehet csinálni vele, mondjuk egy kép tartalmát szövegesen leíratni vagy ellenkezőleg egy szöveg alapján képet készíttetni vele.

A legfontosabb különbség az AI és egy matematikai algoritmus között, hogy amíg az algoritmus valamilyen előre meghatározott dolog szerint determinisztikusan adja meg a végeredményt addig az AI által adott válaszok az általa megtanult adatok alapján időben változó eredményt produkálnak. Minél több dolgot láttak annál bölcsebbek lesznek.

Nézzünk egy példát. Egy (nagyításhoz használt) élkereső algoritmus a szomszéd képpontok közötti világosság különbségekkel dolgozik, valamilyen értéknél nagyobb különbséget élnek érzékel. Ha ennek az algoritmusnak beadunk egy erősen elmosódott képet, nem lesz képes rajta felismerni az éleket. Ezzel szemben a mesterséges intelligencia az éleket az általa megtanult képek alapján azonosítja és ha látott az elmosódott képhez hasonló karakterisztikájú képet, simán élnek fogja detektálni.

Mi van a képen?

Az első fotósok számára érdekes felhasználás a google vision nevű projektje, ami képes felismerni a kép bizonyos jellemzőit és – többek között – automatikusan címkékkel ellátni a beadott fotót.

Rajzold le

Ha megfordítjuk a dolgot, szöveget adunk be és képet várunk eredményként, akkor egy olyan AI-t kapunk, ami a beadott szöveg alapján lerajzol (szintetizál) valamit. A következő képen látható madarakat, a fent látható angol nyelvű leírás alapján rajzolta egy 4 különböző egyetemen dolgozó kutató által készített AI. Meg nem mondaná az ember, hogy ilyen madár nincs is, ugye?

Hasonlóan ehhez, egy mesterséges intelligencia megtanítható arra is, hogy az emberi szemnek kedves arcokat rajzoljon. Igen, az itt látható emberek nem filmszínészek, sosem léteztek, az nVIDIA által készített AI szintetizálta őket annak a tudásnak a birtokában, hogy egy ember mikor lát szépnek egy másik embert.

És most evezzünk a fotósoknak szóló területre, mert egy csomó dolgot szebben, jobban képes a mesterséges intelligencia megcsinálni, mit a matematikai algoritmusok.

Demosaicing

Azt az eljárást, ami a digitális fényképezőgépen az adott képpont színét megmondja, demosaicnak hívják. Ha megnézed a belinkelt cikket, láthatod, hogy egy sor matematikai algoritmuson alapuló különféle eljárás létezik, de ugyanezt meg lehet csinálni mesterséges intelligenciával is. A rendszer lát egy csomó RAW fotót és ezek alapján a minták alapján képes kikövetkeztetni, hogy az adott kép, hogy fog kinézni színesben.

Zajszűrés

Hasonló módszerekkel meglepően jó zajszűrés érhető el, hiszen nem az AI-nak kép pixeleiből kell kiindulnia, hanem a képrészletek tartalmából és ennek ismeretében (gyakorlatilag a madaraknál látott módon) újrarajzolni a képet. Az ilyen technikák kidolgozásában egyébként a videokártya gyártók járnak az élen, hiszen ezekben az eszközökben van annyi számítási kapacitás, hogy ezt valós időben meg tudják csinálni. A következő videót az nVIDIA szakemberei készítették a zajcsökkentő eljárásukról.

Érdemes visszagondolni arra, amit a bejegyzés elején írtam az élkereső algoritmusokról. Az általában használt, matematikai algoritmusokon alapuló zajcsökkentő eljárások lágyabbá teszik a képet, itt viszont az élek jól láthatóak, köszönhetően annak, hogy az AI a zajos képen is felismeri a tárgyakat és tudja, hogy azokon hol vannak élek.

Élesítés / Felbontás növelés

Már-már unalmas, de egy jól betanított AI képes egy fotót úgy felnagyítani, hogy közben a tartalom az ember számára alig észrevehető változást szenved. Tudod, ha mondjuk egy arc van a képen, a szemet nem bután felnagyítja, hanem mivel látott már egy csomó szemet, újrarajzolja úgy, hogy nagyon hasonlítson az eredetihez, de szemszerű is legyen egyben. A lenti képen jól látható ez a kamerát tartó kéz esetében.

A baloldali fotót Photoshopban, a jobb oldalit a letsenhance.io AI-jával nagyították fel.

Tartalomérzékeny kitöltés

Ha roncsolódott egy fotó, vagy épp ellenkezőleg szeretnénk valamit eltávolítani róla, nem tehetünk mást, mint újra rajzoljuk a képet. Vagy újra rajzoltatjuk egy mesterséges intelligenciával.

Az alkalmazások végére hagytam még egy érdekességet. A bejegyzés elején láthattad, hogy az AI képes felismerni az egyes képrészleteket valamint a bemenet alapján szintetizálni képet (vagyis a bemeneten kapott kép részletét valószerűen át tudja helyezni egy másik képre – akár valós időben is). Nézd csak:

Ugyanezzel a módszerrel készülnek azok a hamisított pornófilmek is, ahol a szereplő arcát egy másik emberére cserélik.

Mire jó ez az egész?

Ezek után felmerül a kérdés, hogy mire jó ez az egész, illetve, hogy jó-e egyáltalán. Igazából se nem jó se nem rossz, csupán egy lehetőség, egy eszköz vagy szerszám, amit arra használunk amire akarunk, legyen az a fényképek automatikus kategorizálására, vagy akár értékelésére. Vannak már olyan fotós pályázatok, ahol az egyik zsűritag egy mesterséges intelligencia.

Használhatjuk arra, hogy egy rossz hardver (okostelefon) által készített képet javítsuk fel. Ez nagyon hasonló ahhoz, ahogy az ember működik. A szemünk által szolgáltatott kevés információt az agyunk feldolgozza, feljavítja és ennek megfelelően cselekszik.

Az AI arra is képes, hogy a képen megváltoztassa a világítási viszonyokat vagy kijavítsa az arcon a bőrhibákat, használható még arra is, adatokat szolgáltasson egy önvezető autó vezérléséhez vagy arra is, hogy a közterületi kamerák képe alapján valakinek a mozgását kövessük, esetleg valakiről lejárató videót készítsünk.

Tudni kell, hogy mesterséges intelligencia kutatásban – akár hiszed, akár nem – a kínaiak járnak manapság az élen. Azt, hogy a kínai kormány miért támogatja ezeket projekteket, mindenkinek a fantáziájára bízom.

Egy azonban biztos, hogy többé nem igaz: “hiszem, ha látom”.

UPDATE: insay barátom felhívta a figyelmemet arra, hogy létezik olyan mesterséges intelligencia is, ami képes a mesterséges intelligencia által módosított képek és videók felismerésére.