|
|
||
|---|---|---|
| .. | ||
| lab | ||
| ObjectDetection.ipynb | ||
| README.md | ||
README.md
Kohteiden Tunnistus
Kuvien luokittelumallit, joita olemme tĂ€hĂ€n mennessĂ€ kĂ€sitelleet, ottavat kuvan ja tuottavat kategorisen tuloksen, kuten luokan 'numero' MNIST-ongelmassa. Monissa tapauksissa emme kuitenkaan halua vain tietÀÀ, ettĂ€ kuva esittÀÀ kohteita â haluamme pystyĂ€ mÀÀrittĂ€mÀÀn niiden tarkka sijainti. Juuri tĂ€hĂ€n kohteiden tunnistus keskittyy.
Pre-lecture quiz
Naiivi LĂ€hestymistapa Kohteiden Tunnistukseen
Oletetaan, ettÀ haluaisimme löytÀÀ kissan kuvasta. Hyvin yksinkertainen lÀhestymistapa kohteiden tunnistukseen voisi olla seuraava:
- Pilko kuva useisiin ruutuihin.
- Suorita kuvien luokittelu jokaisessa ruudussa.
- Ruutuja, jotka tuottavat riittÀvÀn korkean aktivoinnin, voidaan pitÀÀ sisÀltÀvÀn halutun kohteen.
TĂ€mĂ€ lĂ€hestymistapa on kuitenkin kaukana ihanteellisesta, koska se sallii algoritmin paikantaa kohteen rajauslaatikon hyvin epĂ€tarkasti. Tarkempaa sijaintia varten meidĂ€n tĂ€ytyy suorittaa jonkinlainen regressio ennustamaan rajauslaatikoiden koordinaatit â ja tĂ€tĂ€ varten tarvitsemme erityisiĂ€ tietoaineistoja.
Regressio Kohteiden Tunnistukseen
TÀmÀ blogikirjoitus tarjoaa hyvÀn johdannon muotojen tunnistamiseen.
Kohteiden Tunnistuksen Tietoaineistot
TÀssÀ tehtÀvÀssÀ saatat törmÀtÀ seuraaviin tietoaineistoihin:
- PASCAL VOC â 20 luokkaa
- COCO â Common Objects in Context. 80 luokkaa, rajauslaatikot ja segmentointimaskit
Kohteiden Tunnistuksen Mittarit
Intersection over Union
Kuvien luokittelussa algoritmin suorituskyvyn mittaaminen on helppoa, mutta kohteiden tunnistuksessa meidÀn tÀytyy mitata sekÀ luokan oikeellisuus ettÀ ennustetun rajauslaatikon sijainnin tarkkuus. JÀlkimmÀistÀ varten kÀytÀmme niin kutsuttua Intersection over Union (IoU) -mittaria, joka mittaa, kuinka hyvin kaksi laatikkoa (tai kaksi mielivaltaista aluetta) menevÀt pÀÀllekkÀin.
Idea on yksinkertainen â jaamme kahden kuvion leikkausalueen niiden yhdistymisalueella. Kahdelle identtiselle alueelle IoU olisi 1, kun taas tĂ€ysin erillisille alueille se olisi 0. Muuten se vaihtelee vĂ€lillĂ€ 0â1. YleensĂ€ otamme huomioon vain ne rajauslaatikot, joiden IoU ylittÀÀ tietyn arvon.
Keskiarvoinen Tarkkuus
Oletetaan, ettÀ haluamme mitata, kuinka hyvin tietty kohdeluokka C tunnistetaan. TÀtÀ varten kÀytÀmme Keskiarvoinen Tarkkuus -mittaria, joka lasketaan seuraavasti:
- Tarkastellaan Precision-Recall-kĂ€yrÀÀ, joka nĂ€yttÀÀ tarkkuuden havaintokynnyksen arvon (0â1) mukaan.
- Kynnyksen mukaan saamme enemmÀn tai vÀhemmÀn havaittuja kohteita kuvassa sekÀ erilaisia tarkkuuden ja palautteen arvoja.
- KÀyrÀ nÀyttÀÀ tÀltÀ:
Kuva NeuroWorkshopista
Keskiarvoinen tarkkuus tietylle luokalle C on tÀmÀn kÀyrÀn alla oleva alue. Tarkemmin sanottuna Recall-akseli jaetaan yleensÀ 10 osaan, ja tarkkuus keskiarvoistetaan kaikissa nÀissÀ pisteissÀ:
AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})
AP ja IoU
Otamme huomioon vain ne havainnot, joiden IoU ylittÀÀ tietyn arvon. Esimerkiksi PASCAL VOC -tietoaineistossa yleensÀ \mbox{IoU Threshold} = 0.5, kun taas COCO:ssa AP mitataan eri \mbox{IoU Threshold}-arvoille.
Kuva NeuroWorkshopista
Keskiarvoinen Tarkkuus Kaikkien Luokkien Yli â mAP
Kohteiden tunnistuksen pÀÀmittari on Keskiarvoinen Tarkkuus Kaikkien Luokkien Yli, eli mAP. Se on keskiarvoinen tarkkuus, keskiarvoistettuna kaikkien kohdeluokkien yli, ja joskus myös \mbox{IoU Threshold}-arvojen yli. Tarkempi kuvaus mAP-laskentaprosessista löytyy
tÀstÀ blogikirjoituksesta) sekÀ tÀÀltÀ koodiesimerkkien kanssa.
Erilaiset Kohteiden TunnistusmenetelmÀt
Kohteiden tunnistusalgoritmit voidaan jakaa kahteen pÀÀluokkaan:
- Alue-ehdotusverkot (R-CNN, Fast R-CNN, Faster R-CNN). PÀÀidea on luoda kiinnostusalueita (ROI) ja ajaa CNN niiden lÀpi etsimÀllÀ maksimiaktivointia. TÀmÀ on hieman samanlainen kuin naiivi lÀhestymistapa, mutta ROI:t luodaan ÀlykkÀÀmmin. Yksi suurimmista haittapuolista tÀllaisissa menetelmissÀ on niiden hitaus, koska CNN-luokittelijaa tÀytyy ajaa kuvan lÀpi monta kertaa.
- Yhden passin (YOLO, SSD, RetinaNet) menetelmÀt. NÀissÀ arkkitehtuureissa verkko suunnitellaan ennustamaan sekÀ luokat ettÀ ROI:t yhdellÀ passilla.
R-CNN: Aluepohjainen CNN
R-CNN kÀyttÀÀ Selective Search -menetelmÀÀ luodakseen hierarkkisen rakenteen ROI-alueista, jotka sitten kulkevat CNN-ominaisuuksien erottelijoiden ja SVM-luokittelijoiden lÀpi mÀÀrittÀmÀÀn kohdeluokan sekÀ lineaarisen regression mÀÀrittÀmÀÀn rajauslaatikon koordinaatit. Virallinen artikkeli
Kuva van de Sande et al. ICCVâ11
Kuvat tÀstÀ blogista
F-RCNN â Fast R-CNN
TÀmÀ lÀhestymistapa on samanlainen kuin R-CNN, mutta alueet mÀÀritellÀÀn vasta konvoluutiokerrosten soveltamisen jÀlkeen.
Kuva virallisesta artikkelista, arXiv, 2015
Faster R-CNN
TĂ€mĂ€n lĂ€hestymistavan pÀÀidea on kĂ€yttÀÀ neuroverkkoa ennustamaan ROI:t â niin kutsuttu Region Proposal Network. Artikkeli, 2016
R-FCN: Aluepohjainen TĂ€ysin Konvoluutioverkko
TÀmÀ algoritmi on jopa nopeampi kuin Faster R-CNN. PÀÀidea on seuraava:
- Ominaisuudet erotellaan ResNet-101:llÀ.
- Ominaisuudet kÀsitellÀÀn Position-Sensitive Score Map -kartalla. Jokainen kohde luokasta
Cjaetaank\times kalueisiin, ja verkkoa koulutetaan ennustamaan kohteiden osia. - Jokaiselle osalle
k\times kalueista kaikki verkot ÀÀnestÀvÀt kohdeluokista, ja kohdeluokka, jolla on eniten ÀÀniÀ, valitaan.
YOLO â You Only Look Once
YOLO on reaaliaikainen yhden passin algoritmi. PÀÀidea on seuraava:
- Kuva jaetaan
S\times Salueisiin. - Jokaiselle alueelle CNN ennustaa
nmahdollista kohdetta, rajauslaatikon koordinaatit ja luottamus=todennÀköisyys * IoU.
Muut Algoritmit
- RetinaNet: virallinen artikkeli
- PyTorch-toteutus Torchvisionissa
- Keras-toteutus
- Kohteiden tunnistus RetinaNetillÀ Keras-esimerkeissÀ
- SSD (Single Shot Detector): virallinen artikkeli
âïž Harjoitukset: Kohteiden Tunnistus
Jatka oppimista seuraavassa muistikirjassa:
Yhteenveto
TÀssÀ oppitunnissa tutustuit moniin eri tapoihin, joilla kohteiden tunnistus voidaan toteuttaa!
đ Haaste
Lue nÀmÀ artikkelit ja muistikirjat YOLO:sta ja kokeile niitÀ itse:
- HyvÀ blogikirjoitus YOLO:sta
- Virallinen sivusto
- Yolo: Keras-toteutus, askel-askeleelta muistikirja
- Yolo v2: Keras-toteutus, askel-askeleelta muistikirja
Post-lecture quiz
Kertaus & Itseopiskelu
- Kohteiden Tunnistus kirjoittanut Nikhil Sardana
- HyvÀ vertailu kohteiden tunnistusalgoritmeista
- Katsaus syvÀoppimisalgoritmeihin kohteiden tunnistuksessa
- Perusteellinen johdanto kohteiden tunnistusalgoritmeihin
- Faster R-CNN:n toteutus Pythonilla kohteiden tunnistukseen
TehtÀvÀ: Kohteiden Tunnistus
Vastuuvapauslauseke:
TÀmÀ asiakirja on kÀÀnnetty kÀyttÀmÀllÀ tekoÀlypohjaista kÀÀnnöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, huomioithan, ettÀ automaattiset kÀÀnnökset voivat sisÀltÀÀ virheitÀ tai epÀtarkkuuksia. AlkuperÀinen asiakirja sen alkuperÀisellÀ kielellÀ tulisi pitÀÀ ensisijaisena lÀhteenÀ. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskÀÀnnöstÀ. Emme ole vastuussa vÀÀrinkÀsityksistÀ tai virhetulkinnoista, jotka johtuvat tÀmÀn kÀÀnnöksen kÀytöstÀ.









