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.
Régiójavasló hálók (R-CNN család)
- Először régiókat jelölnek ki, aztán osztályoznak
- Pontosabb eredmény, magasabb mAP
- Lassabb, több másodperces feldolgozás is lehet
- Akkor jó, ha a pontosság a fő szempont
Egylépéses módszerek (YOLO, SSD)
- Egyetlen áthaladással jósolnak osztályt és dobozt
- Valós idejű működésre alkalmasak
- Kicsit pontatlanabbak lehetnek
- Önvezető autók és élő videófolyamok választása
- R-CNNSzelektív keresés adja a régiókat, külön konvolúciós háló és SVM osztályoz. Rendkívül lassú.
- Fast R-CNNA régiókijelölés már a konvolúciós rétegek után történik, így kevesebb az ismételt számítás.
- Faster R-CNNMagát a régiójavaslást is neurális háló végzi, a folyamat jelentősen felgyorsul.
- YOLOA kép rácsra bomlik, minden cella egyszerre jósol osztályt, koordinátát és megbízhatóságot. Valós idejű.
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.
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 →