AI a képfelismerésben: technológiák gyakorlati alkalmazása, saját példákkal – 2.rész

Máté Kasó

2023-10-16

Ezen cikkünkben az AI gyakorlati alkalmazásaiba fogunk elmélyülni. Főként a state of the art képfelismerő neurális hálózatokat fogjuk áttekinteni. Egy következő cikkünkben pedig kitérünk a nagy nyelvi modellekre is (LLM).

A képfelismerés vagy a szöveganalízis csak néhány példa arra, hogyan alkalmazható az AI a gyakorlatban. Az alábbi esetek szemléltetik, hogyan működnek ezek a technológiák a valós életben!

Mesterséges intelligencia alapú képfelismerés és képfeldolgozás

Ezen széleskörű terület magába foglalja a képek tartalmának ismert, előre meghatározott osztályokba sorolását (classification), adott objektumok képen való megtalálását (detection), vagy pixel pontos körbevágását (segmentation). Ezen kívül képesek még a kép tartalmának természetes nyelvű szöveges leírására, vagy akár univerzális, prompt alapú szabadszavas objektum keresésre! Nem csak detektálhatjuk a képeket, hanem a manapság erősen terjedőben lévő kép generátorokkal az emberi képzelet mintájára hozhatunk létre, vagy módosíthatunk képeket!

Léteznek módszerek 3D rekonstrukcióra több látószög alapján, vagy akár monokuláris (1 db) képéből ki következtetve. Több kamera képét egyszerre összekombinálva olcsó 3D scanner-é alakíthatjuk őket! Erre a legjobb megoldás a NeRF (Neural Radiance Fields), de sztereoszkopikus (szem mintájára egymás mellett lévő) kamerák képéből is jól számítható távolság.

 A képfelismerés rendkívül sok módon használható, intelligens kamerákat készíthetünk, amik nem csak néznek, hanem látnak! Nem csak felismerni képesek az objektumokat, de értékelni is tudják, pl: épp, vagy sérült e egy termék; milyen autó van a képen; hány személy, vagy ki látható rajta…

 A neurális képfeldolgozás terület egyik legnagyobb előnye a számítási kapacitás igénye: megfelelő tudás birtokában szinte bármilyen számítógépen, vagy akár mobil telefonon is helyben, offline használhatóak, valamint moderált számítási kapacitással taníthatóak be új kategóriák felismerésére!

Alább a nyílt forráskódú, szabadon elérhető és egyben csúcs teljesítményt nyújtó, “state of the art” neurális hálózatokat mutatjuk be:

Objektum detekció és szegmentáció, You Only Look Once (YOLO) v8-al
Image recognition with YOLO (You Only Look Once) neural networks:

Ez a háló a jelenlegi legpontosabb és egyben leggyorsabb képfelismerő megoldás, ami szegmentálni (körbevágni) is képes! Alapból 80 hétköznapi objektumot tud szegmentáltan megtalálni, valamint 1000 féle objektum meglétét tudja megállapítani a képen. Ez utóbbi a classification, amikor nem adja vissza, hogy hol van az adott objektum a képen, csak azt, hogy hány % esély van rá, hogy látszik rajta valahol.

Egy erős GPU gyorsított számítógépen pár millisec alatt futtatható, így még akár élő videóra is alkalmazható! Akár egy Raspberry PI-n is használható, másodperceken belül.

Lehetséges új felismerendő kategóriákra is betanítani fine tune módszerrel néhány óra alatt (bár erre már megfelelően erős GPU-kell)! Ilyenkor kategóriánként néhány 100 képre van szüksége, de lehetséges kevesebbel is, ha jól augmentáljuk őket: ekkor nagyságrendekkel több variációkat készítünk a képekből, különböző képtorzítás, szín, valamint kontraszt módosítás műveletek kombinálásával, ami megakadályozza az overfitting-et, így nem csak “bemagolja” a képeket.

A tanítás alatt lehetőleg olyan képeket kell megadnunk a hálónak, amik tükrözik a valós használati eseteket, valamit jól látszik a felismerendő objektum valamely része. Minél változatosabb hátterek és beállítások mellett érdemes megmutatni neki a felismerendő objektumot, mert az elősegíti a minden képen előforduló részletek (vagyis az objektum) helyes lokalizációját.

Mint mindig, természetesen itt is folyamatosan ellenőrizni kell a tanítás eredményét, vagyis a pontosságot, ezelőtt sosem látott példák esetén!

GroundingDINO: “Zero shot” objektum felismerés, fine tuning nélkül
Image recognition without fine tuning, using the GroundingDINO project:
Ábra: keresési prompt: person, boat, wheel
Ábra: keresési prompt: sail, sailboat, bottom part, water
Ábra: keresési prompt: sail, sailboat, bottom part, water
Ábra: keresési prompt: long hair

Ez egy igen érdekes kutatás eredménye, ahol nem az eddig megszokott módon tanították be a felismerendő kategóriákat a neurális hálónak (eddig ugye 1 adott kategória egy adott indexű kimeneti neuronnak felelt meg), hanem részletes szabad szöveges leírást adtak minden tanítandó képhez. A neurális háló magától megtanulta a kapcsolatot a szavak, vagy kifejezések és a képen épp látható objektumok, helyzetük és események között. Ezzel a módszerrel nem szükséges előre kijelölni a felismerendő tárgyakat, a háló a tanítás alatt rájön magától mely tokenek milyen pixel halmazok meglétével kapcsolódnak össze.

Ez egyrészt rendkívül sok kategória felismerését teszi lehetővé, valamint a képen szereplő objektumok közötti kapcsolatokat is jobban megérti. Ennek használatához elég csak megadnunk szabad szavasan mit szeretnénk megtalálni és a háló magától kijelöli nekünk a képen! Nem olyan pontos mint a hagyományos társai, de sokkal széleskörűbb, out of box működést tesz lehetővé! Nem feltétlen szükséges hosszú és lassú után tanítás (ez itt körülményesebb is lenne), valamint referencia training képek készítése. Némi prompt engineering segítségével egyből fel lehet ismerni új objektumokat.

3D modell számítása

Ha egy tárgyról vagy jelenetről több látószögből van képünk, rekonstruál hatjuk azt 3D-ben! Ennek legegyszerűbb módja ha 2 sztereoszkopikusan elhelyezett kamerát használunk! Ez a technika ugyanúgy működik mint a látásunk, 2 kamera egymás melletti képéből számítjuk ki a távolságot minden egyes képponthoz. A kapott képet depth map-nek, vagyis mélység térképnek hívják. Erre több megoldást is használhatunk: a jelenlegi csúcstartó az Nvidia StereoDNN technológiája, ami szintén neurális hálózatok-ra épít, viszont akár OpenCV-s hagyományos, de sokkal gyorsabb, algoritmikus, vagy akár egyedi megoldást is tudunk erre kínálni:

Ábra: a bal és jobb kamera képe, alul az abból számolt eredeti és szűrt mélység térkép.
Ábra: a bal és jobb kamera képe, alul az abból számolt eredeti és szűrt mélység térkép.

Ha nem csak egymás melletti, hanem több, jelentősen eltérő szögből készült képünk van, akkor már az egész scene rekonstruálható, erre viszont más módszerek kellenek. Ez eddig csak fotogrammetriával volt lehetséges, ami viszont jó minőség igény esetén órákon át tartó számításokat igényelt és még úgysem volt garantálható a használható végeredmény. Ezt változtatta meg nemrég a Neural Radiance Field (NeRF) rekonstrukció!

Nem csak több látószögből rekonstruálható 3D-ben egy kép, de ma már akár 1 db fotóból is ki lehet következtetni! Egy neurális hálózat, mint pl: a MiDaS képes “elképzelni” a 3D mélységet a meglévő eddigi objektum ismeretei és vizuális hintek alapján, ugyan úgy mint ahogy az egy ember képzelné el egy kép láttán:

A jövőben a terjedőben lévő VR, AR technológiának szerves része lesz az AI vezérelt 3D rekonstrukció, mind a régi felvételek konverziójában, mind a környezet jobb felismerésében!
Testhelyzet meghatározás

Az előzőek mentén nem csak az objektumokat tudjuk megtalálni, hanem azok elhelyezkedése, vagy részleteinek helyzete is lokalizálható! Erre talán a legszemléletesebb és egyben legnehezebb példa az emberek dinamikusan változó részeinek lokalizációja, viszont ma már erre is vannak AI alapú megoldások, mint pl: az OpenPose:

 

Ezen hálók képesek megmondani az arcvonásokat, test helyzetet, valamint akár az ujjak helyzetét is pár másodperc alatt! Ezek jelentős alkalmazási lehetőségekkel bírnak, főleg videó felvételek esetén, vagy 3D rekonstrukcióval összekapcsolva! Lehetőség nyílik velük: gesztusvezérlésre, viselkedés analízisre, automatikus felügyeletre, személyazonosításra és követésre…

Univerzális objektum szegmentáció

A Meta legújabb, közelmúltban, nyílt forráskódúan kiadott, lokálisan is gyorsan futtatható: Segment Anything Model (SAM) neurális hálójának megtanították hogy ismerjen fel generalizáltan objektumokat. Ugyan nem rendelkezik tudással arról, hogy ezek mik, de jól érti a logikailag elkülönülő részleteket a képen! Ez önmagában limitált haszonnal bír ugyan, viszont remekül használható szinte minden image processing pipelineban filterezésre, így gyorsításra és a pontosság növelésére! Különösen hasznos, ha 3D-s depth mappel is kombináljuk az egybefüggő objektumok jobb lokalizációjához. Nagyon hasznos egyedi datasetek gyors annotációjához is!

Kép generálás és módosítás Stable Diffusion-el

A legújabb generatív AI-ok természetes szöveges leírás (prompt) alapján képesek szinte bármilyen képet előállítani, bármilyen stílusban (fotó, festmény, grafika, 2D, 3D…). Ennek beláthatatlanul sok felhasználási lehetősége van szinte minden képekkel foglalkozó iparban! Többféle fizetős szolgáltatás épül erre (DallE, Midjourney…), de a csúcstartó jelenleg a nyílt forráskódú, ingyenes és helyben is futtatható: Stable Diffusion.

Ez nem csak minőségében vetekszik minden mással, hanem kontrollálhatóságban is messze felülmúlja őket! Itt nem csak szöveges leírás alapján lehet képeket generálni, hanem egy control net nevű, másik neurális hálózattal tandem használva pontosan irányíthatóvá válik a kép generációs folyamat: referencia képek, 3D depth map, élek, rajz, szín, testhelyzet, vagy szemantikus labelek (felcímkézett régiók) alapján!

A beláthatatlan sok használati módja közül kiemelnék egyet: képes egy meglévő, alacsony minőségű 3D renderelt képet, fotó minőséggé alakítani percek alatt! Ezután akár teljesen új elemeket is adhatunk hozzá, egyszerű rajzolással és promt-okkal! Az alábbi példán egy ház 3D-s látványterv renderét láthatjuk, majd a StableDiffusion-el valódi fotó szerűvé alakított változatát:

Ez olyannyira sokoldalú, és egyszerű, hogy még régi videojáték grafikából is képes valódinak tűnő képet generálni! Példának egy screenshot átalakítása a GTA Vice City-ből, különböző mértékben, helyi számítógépen, saját beállításokkal, neurálisan kvázi re-renderelve:

Image generation and modification can be run locally with Stable Diffusion

A generatív AI ugyan még kvázi gyerekcipőben jár, de már most a teljes szórakoztató és művészi ipar alapjait érintő technológia, amely segítségével, megfelelő kezekben percek alatt eddig elképzelhetetlennek számító eredmények generálhatóak!

Összefoglaló:

Ebben a cikkben az AI gyakorlati alkalmazásait vizsgáltuk meg, különös tekintettel a képfelismerésre és képfeldolgozásra. Bemutattuk a neurális hálózatok legújabb fejlesztéseit, mint a YOLO v8 és a GroundingDINO, és azok képességeit objektum detekcióban és szegmentációban. Kitértünk a 3D rekonstrukció lehetőségeire, ahol akár egyetlen képből is képesek vagyunk mélységi információt nyerni. A cikk rávilágít, hogy az AI milyen mértékben képes átalakítani a képfeldolgozás területét, és milyen szerepet játszik majd a jövő VR és AR technológiáiban.

Amennyiben be szeretnél építeni mesterséges intelligenciát vállalkozásod, céged, startupod, vagy terméked működésébe, keress minket bizalommal, szakértőink a kezdeti konzultációtól, tanácsadáson át a lehetőségek feltérképezésén túl a megvalósításban is segítségedre lesznek!

Szeretnél még hasonló tartalmat olvasni a jövőben?

Ha tetszett cikkünk, iratkozz fel hírlevelünkre!