Az eddig megismert képosztályozó modellek egy képhez egyetlen kategóriát rendeltek, például eldöntötték, melyik számjegyet ábrázolja egy MNIST kép. A gyakorlatban azonban gyakran nem elég tudni, hogy egy kép tartalmaz valamilyen objektumot, azt is szeretnénk tudni, pontosan hol helyezkedik el. Erre a feladatra való az objektumdetektálás.
Egy naiv megközelítés szerint a képet sok kisebb csempére bontanánk, minden csempén lefuttatnánk egy képosztályozót, és azokat a csempéket tekintenénk találatnak, amelyeknél az aktiváció elég magas. Ez a módszer működik valamennyire, de nagyon pontatlan, mert a keresett objektum ritkán illeszkedik pontosan egy csempe határaihoz. A pontos elhelyezéshez regresszióra van szükség, amely közvetlenül az objektumot körülvevő téglalap, az úgynevezett bounding box koordinátáit jósolja meg. Ehhez viszont speciálisan felcímkézett adathalmazokra van szükség, amelyek nemcsak az osztályt, hanem a pontos koordinátákat is tartalmazzák. A két legismertebb ilyen adathalmaz a húsz osztályt tartalmazó PASCAL VOC, illetve a nyolcvan osztályos, bounding boxokat és szegmentációs maszkokat is tartalmazó COCO.
Hogyan mérjük a pontosságot
Az objektumdetektálásnál nemcsak azt kell mérni, hogy a modell eltalálta-e az osztályt, hanem azt is, mennyire pontos a becsült téglalap. Erre szolgál az Intersection over Union, röviden IoU mutató, amely a két terület metszetét osztja el az uniójukkal. Ha a két terület teljesen egybeesik, az IoU értéke 1, ha egyáltalán nem érintkeznek, akkor 0. A gyakorlatban jellemzően csak azokat a találatokat fogadjuk el, amelyeknél az IoU egy megadott küszöb, például 0,5 felett van.
Egy adott osztály felismerésének minőségét az átlagos pontosság, angolul Average Precision méri, amelyet a pontosság és a fedés közti összefüggést leíró görbe alatti területként számolunk ki. Ha ezt az összes osztályra átlagoljuk, megkapjuk az objektumdetektálás fő mérőszámát, a mean Average Precision értéket, röviden mAP-t, amely gyakran a különböző IoU küszöbökre is átlagolva jelenik meg.
Két fő megközelítés
Az objektumdetektáló algoritmusok nagyjából két nagy családba sorolhatók. A régiójavasló hálózatok, mint az R-CNN, a Fast R-CNN vagy a Faster R-CNN, először érdekes régiókat jelölnek ki a képen, majd ezeket egyenként osztályozzák. Ez a megközelítés pontos, de lassú, mert sokszor kell lefuttatni a klasszifikátort ugyanazon a képen. Ezzel szemben az egylépéses módszerek, mint a YOLO, az SSD vagy a RetinaNet, egyetlen áthaladással jósolják meg egyszerre az osztályokat és a hozzájuk tartozó bounding boxokat, ezért jóval gyorsabbak, valós idejű alkalmazásokra is alkalmasak.
Az R-CNN család fokozatosan fejlődött. Az eredeti R-CNN úgynevezett szelektív kereséssel generált régiókat, majd ezeket külön konvolúciós hálóval és SVM osztályozóval dolgozta fel, ami rendkívül lassú volt. A Fast R-CNN már a konvolúciós rétegek után jelöli ki a régiókat, a Faster R-CNN pedig magát a régiójavaslást is egy külön neurális hálóra bízza, jelentősen felgyorsítva a folyamatot. A YOLO ezzel szemben a képet egy rácsra osztja, és minden rácscellához egyszerre jósol osztályt, koordinátákat és egy megbízhatósági értéket, ez teszi lehetővé a valós idejű működést.
Hol találkozunk vele a gyakorlatban
Az objektumdetektálás ma már számos iparágban alapvető technológia. Az önvezető autók a YOLO típusú, gyors architektúrákkal ismerik fel a gyalogosokat, más járműveket és jelzőtáblákat, méghozzá a gépjármű sebessége miatt szinte valós időben. A gyáriparban a minőségellenőrző kamerák hasonló elven keresik meg a hibás alkatrészeket a gyártósoron, a kiskereskedelemben pedig a polcképek automatikus elemzésénél vagy a raktárkészlet felméréseknél alkalmazzák. A biztonságtechnikában a kamerarendszerek objektumdetektálással azonosítják a mozgó személyeket vagy tárgyakat, az orvosi képalkotásban pedig a következő leckében tárgyalt szegmentáláshoz vezető úton az első lépés gyakran szintén egy objektumdetektáló modell.
Fontos szem előtt tartani, hogy a modell kiválasztása mindig kompromisszum sebesség és pontosság között. Egy valós idejű alkalmazásnál, mint egy önvezető rendszer vagy egy élő videófolyamon futó biztonsági megoldás, az egylépéses módszerek, mint a YOLO, jellemzően jobb választás. Ha viszont a pontosság a legfontosabb szempont, és van idő több másodperces feldolgozásra, a régiójavasló hálózatok, mint a Faster R-CNN, gyakran pontosabb eredményt adnak.
Egy projekt tervezésénél érdemes már az elején tisztázni, milyen kompromisszumot vállal a szervezet. A mAP mutató önmagában ritkán elég döntési alap, hiszen egy magas pontosságú, de lassú modell hiába pontos, ha a rendelkezésre álló hardveren nem éri el a szükséges feldolgozási sebességet. Éppen ezért a kiválasztás során mindig a konkrét felhasználási környezetet, a rendelkezésre álló számítási kapacitást és az elfogadható válaszidőt kell alapul venni, nem csupán a benchmark táblázatokban közölt legjobb eredményt.
Gyakorlati kód
Az objektumdetektálás gyakorlati megvalósítását, konkrét példákkal és kóddal, a Microsoft eredeti jegyzetfüzete mutatja be. 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.
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 →