AI kezdőknek · Számítógépes látás · Lecke 11

Objektumdetektálás

A képosztályozás megmondja, mi látható egy képen, de nem árulja el, hol. Ez a lecke a Microsoft "AI kezdőknek" tananyagának magyar adaptációja, és bemutatja, hogyan tanulja meg egy neurális háló az objektumok pontos helyét is meghatározni egy képen.

Vissza a tananyaghoz


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.


← Előző lecke Következő lecke →

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 →