|
|
||
|---|---|---|
| .. | ||
| lab | ||
| ObjectDetection.ipynb | ||
| README.md | ||
README.md
Objektumfelismerés
Az eddig tárgyalt képosztályozási modellek egy képet vettek alapul, és egy kategóriát eredményeztek, például az 'szám' osztályt egy MNIST problémában. Azonban sok esetben nem elég tudni, hogy egy kép tárgyakat ábrázol - szeretnénk meghatározni azok pontos helyét is. Ez az objektumfelismerés lényege.
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 alábbi lenne:
- A képet felosztjuk 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 fájlból
Ez a megközelítés azonban messze nem ideális, mivel az algoritmus csak nagyon pontatlanul tudja meghatározni az objektum határoló dobozát. A pontosabb helymeghatározáshoz valamilyen regressziót kell futtatnunk a határoló doboz koordinátáinak előrejelzésére - ehhez pedig speciális adatállományokra van szükség.
Regresszió az objektumfelismeréshez
Ez a blogbejegyzés remek bevezetőt nyújt az alakzatok felismeréséhez.
Adatállományok objektumfelismeréshez
Az alábbi adatállományokkal találkozhatsz ebben a feladatban:
- PASCAL VOC - 20 osztály
- COCO - Közönséges tárgyak kontextusban. 80 osztály, határoló dobozok és szegmentációs maszkok
Objektumfelismerési metrikák
Metszet az unió felett
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 a határoló doboz helyének pontosságát is. Ehhez az úgynevezett Metszet az unió felett (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ű - a két alakzat metszetének területét elosztjuk 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 határoló dobozokat vesszük figyelembe, amelyek IoU értéke 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 az érzékenységet 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 néz ki:
Kép a NeuroWorkshop oldalról
Az adott C osztály á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{Precision}(\mbox{Recall}={i\over10})
AP és IoU
Csak azokat a detektálásokat vesszük figyelembe, amelyek IoU értéke egy bizonyos küszöbérték felett van. Például a PASCAL VOC adatállományban általában \mbox{IoU Threshold} = 0.5 értéket feltételezünk, míg a COCO esetében az AP-t különböző \mbox{IoU Threshold} értékekre mérjük.
Kép a NeuroWorkshop oldalról
Átlagos Pontosság - mAP
Az objektumfelismerés fő metrikája az Átlagos Pontosság, vagy mAP. Ez az Átlagos Pontosság értéke, amelyet az összes objektumosztályra átlagolunk, és néha az \mbox{IoU Threshold} értékekre is. Az mAP számításának részleteit
ebben a blogbejegyzésben), valamint itt kóddal találod.
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 érdeklődési régiókat (ROI) generálunk, és CNN-t futtatunk rajtuk, keresve a maximális aktivációt. Ez kissé hasonlít a naiv megközelítéshez, azzal a különbséggel, hogy az ROI-kat okosabb módon generáljuk. Az egyik fő hátránya ezeknek a módszereknek, 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 előrejelezze az osztályokat és az ROI-kat.
R-CNN: Régióalapú CNN
Az R-CNN Szelektív Keresést használ az ROI régiók hierarchikus struktúrájának generálására, amelyeket ezután CNN jellemzőkivonók és SVM-osztályozók dolgoznak fel az objektumosztály meghatározására, valamint lineáris regresszióval a határoló doboz koordinátáinak meghatározására. 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ározzák 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épek dolgozzák 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, határoló doboz koordinátákat és bizalom=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
- Áttekintés a mély tanulási algoritmusokról objektumfelismeréshez
- Lépésről lépésre bevezetés az alapvető objektumfelismerési algoritmusokba
- Gyorsabb R-CNN implementáció Pythonban objektumfelismeréshez
Feladat: Objektumfelismerés
Felelősség kizárása:
Ez a dokumentum az AI fordítási szolgáltatás Co-op Translator segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet.









