12 KiB
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ä.









