|
|
||
|---|---|---|
| .. | ||
| lab | ||
| ObjectDetection.ipynb | ||
| README.md | ||
README.md
Objektumfelismerés
Az eddig tárgyalt képosztályozási modellek egy képet vettek bemenetként, és egy kategóriát adtak eredményül, például az 'szám' osztályt az MNIST problémában. Azonban sok esetben nem elég, hogy tudjuk, egy kép tárgyakat ábrázol - szeretnénk meghatározni azok pontos helyét is. Ez az objektumfelismerés célja.
Előadás előtti kvíz
Kép a YOLO v2 weboldaláról
Egy naiv megközelítés az objektumfelismeréshez
Tegyük fel, hogy egy képen szeretnénk megtalálni egy macskát. Egy nagyon egyszerű megközelítés az objektumfelismeréshez a következő lenne:
- Felosztjuk a képet több csempére.
- Képosztályozást futtatunk minden csempén.
- Azok a csempék, amelyeknél elég magas aktivációt kapunk, tartalmazhatják a keresett objektumot.
Kép az Exercise Notebook-ból
Ez a megközelítés azonban messze nem ideális, mivel az algoritmus csak nagyon pontatlanul tudja meghatározni az objektum körvonalát. A pontosabb helymeghatározáshoz valamilyen regressziót kell futtatnunk, hogy előre jelezzük a körvonalak koordinátáit - ehhez pedig speciális adatállományokra van szükség.
Regresszió az objektumfelismeréshez
Ez a blogbejegyzés remek bevezetést nyújt az alakzatok felismeréséhez.
Adatállományok objektumfelismeréshez
Az alábbi adatállományokkal találkozhatsz ezen a területen:
- PASCAL VOC - 20 osztály
- COCO - Közönséges tárgyak kontextusban. 80 osztály, körvonalak és szegmentációs maszkok
Objektumfelismerési metrikák
Metszet az unióhoz viszonyítva
Míg a képosztályozásnál könnyű mérni az algoritmus teljesítményét, az objektumfelismerésnél nemcsak az osztály helyességét kell mérni, hanem az előre jelzett körvonal helyének pontosságát is. Ehhez az úgynevezett Metszet az unióhoz viszonyítva (IoU) metrikát használjuk, amely azt méri, hogy két doboz (vagy két tetszőleges terület) mennyire fedik egymást.
Az ötlet egyszerű - elosztjuk a két alakzat metszetének területét az uniójuk területével. Két azonos terület esetén az IoU értéke 1, míg teljesen különálló területeknél 0. Egyébként 0 és 1 között változik. Általában csak azokat a körvonalakat vesszük figyelembe, amelyeknél az IoU egy bizonyos érték felett van.
Átlagos pontosság
Tegyük fel, hogy egy adott C osztályú objektum felismerésének hatékonyságát szeretnénk mérni. Ehhez az Átlagos Pontosság metrikát használjuk, amelyet az alábbiak szerint számítunk ki:
- Vegyük a Pontosság-Visszahívás görbét, amely a pontosságot mutatja a detektálási küszöbérték függvényében (0-tól 1-ig).
- A küszöbértéktől függően több vagy kevesebb objektumot detektálunk a képen, és különböző pontosság- és visszahívásértékeket kapunk.
- A görbe így fog kinézni:
Kép a NeuroWorkshop-ból
Az adott C osztályú objektum Átlagos Pontossága a görbe alatti terület. Pontosabban, a visszahívás tengelyt általában 10 részre osztjuk, és a pontosságot átlagoljuk ezeken a pontokon:
AP = {1\over11}\sum_{i=0}^{10}\mbox{Pontosság}(\mbox{Visszahívás}={i\over10})
AP és IoU
Csak azokat a detektálásokat vesszük figyelembe, amelyeknél az IoU egy bizonyos érték felett van. Például a PASCAL VOC adatállományban általában \mbox{IoU Küszöbérték} = 0.5 az alapértelmezett, míg a COCO esetében az AP-t különböző \mbox{IoU Küszöbérték} értékekre mérik.
Kép a NeuroWorkshop-ból
Átlagos Pontosság Átlaga - mAP
Az objektumfelismerés fő metrikája az Átlagos Pontosság Átlaga, vagy mAP. Ez az Átlagos Pontosság értéke, amelyet az összes objektumosztályra átlagolunk, és néha az \mbox{IoU Küszöbérték} értékére is. Az mAP számításának részleteit
ebben a blogbejegyzésben) találod, valamint itt kóddal.
Különböző objektumfelismerési megközelítések
Az objektumfelismerési algoritmusoknak két fő típusa van:
- Régiójavasló hálózatok (R-CNN, Fast R-CNN, Faster R-CNN). Az alapötlet az, hogy érdekes régiókat (ROI) generálunk, és CNN-t futtatunk rajtuk, keresve a maximális aktivációt. Ez némileg hasonlít a naiv megközelítéshez, azzal a különbséggel, hogy az ROI-kat okosabb módon generáljuk. Az ilyen módszerek egyik fő hátránya, hogy lassúak, mivel sok CNN osztályozót kell futtatni a képen.
- Egyszeri futtatású (YOLO, SSD, RetinaNet) módszerek. Ezekben az architektúrákban a hálózatot úgy tervezzük, hogy egyszerre jósolja meg az osztályokat és az ROI-kat.
R-CNN: Régióalapú CNN
Az R-CNN a Szelektív Keresést használja, hogy hierarchikus ROI régiókat generáljon, amelyeket aztán CNN jellemzőkivonókon és SVM-osztályozókon futtatunk, hogy meghatározzuk az objektum osztályát, valamint lineáris regresszióval a körvonal koordinátáit. Hivatalos tanulmány
Kép van de Sande et al. ICCV’11
Képek ebből a blogból
F-RCNN - Gyors R-CNN
Ez a megközelítés hasonló az R-CNN-hez, de a régiókat a konvolúciós rétegek alkalmazása után határozzuk meg.
Kép a Hivatalos tanulmányból, arXiv, 2015
Gyorsabb R-CNN
Ennek a megközelítésnek az alapötlete, hogy neurális hálózatot használunk az ROI-k előrejelzésére - az úgynevezett Régiójavasló Hálózat. Tanulmány, 2016
Kép a hivatalos tanulmányból
R-FCN: Régióalapú Teljesen Konvolúciós Hálózat
Ez az algoritmus még gyorsabb, mint a Gyorsabb R-CNN. Az alapötlet a következő:
- Jellemzőket vonunk ki ResNet-101 segítségével.
- A jellemzőket Pozíció-Érzékeny Pontszám Térképen dolgozzuk fel. Minden objektumot
Cosztálybólk\times krégiókra osztunk, és az objektumok részeinek előrejelzésére tanítjuk a hálózatot. - Minden részre a
k\times krégiókból a hálózatok szavaznak az objektumosztályokra, és a maximális szavazatot kapó osztályt választjuk.
Kép a hivatalos tanulmányból
YOLO - You Only Look Once
A YOLO egy valós idejű egyszeri futtatású algoritmus. Az alapötlet a következő:
- A képet
S\times Srégiókra osztjuk. - Minden régióra CNN előrejelzi
nlehetséges objektumot, körvonal koordinátákat és bizalmi szintet=valószínűség * IoU.
Kép a hivatalos tanulmányból
Egyéb algoritmusok
- RetinaNet: hivatalos tanulmány
- SSD (Single Shot Detector): hivatalos tanulmány
✍️ Gyakorlatok: Objektumfelismerés
Folytasd a tanulást az alábbi jegyzetfüzetben:
Összegzés
Ebben a leckében gyors áttekintést kaptál az objektumfelismerés különböző megközelítéseiről!
🚀 Kihívás
Olvasd el ezeket a cikkeket és jegyzetfüzeteket a YOLO-ról, és próbáld ki őket magad:
- Jó blogbejegyzés a YOLO-ról
- Hivatalos oldal
- Yolo: Keras implementáció, lépésről-lépésre jegyzetfüzet
- Yolo v2: Keras implementáció, lépésről-lépésre jegyzetfüzet
Előadás utáni kvíz
Áttekintés és önálló tanulás
- Objektumfelismerés Nikhil Sardana által
- Jó összehasonlítás az objektumfelismerési algoritmusokról
- Mélytanulási algoritmusok áttekintése objektumfelismeréshez
- Lépésről-lépésre bevezetés az alapvető objektumfelismerési algoritmusokba
- Gyorsabb R-CNN implementáció Pythonban objektumfelismeréshez









