Lähteiden etsiminen: ”Cascading classifiers” – uutiset – sanomalehdet – kirjat – tutkija – JSTOR (kesäkuu 2019) (Opi poistamaan tämä malliviesti ja milloin se poistetaan)
Skaalaus ja rotaatiotMuokkaa
Kuvauksesta käy ilmi, että luokittelija ei hyväksy kasvoja, jotka ovat ylösalaisin (kulmakarvat eivät ole oikeassa asennossa) tai kasvojen kyljessä (nenä ei ole enää keskellä, ja nenän kyljessä saattaa puuttua varjoja). Erilliset kaskadiluokittimet on koulutettava jokaista kiertoa varten, joka ei ole kuvatasossa (kasvojen sivu), ja ne on koulutettava uudelleen tai ajettava kierretyillä piirteillä jokaista kiertoa varten, joka on kuvatasossa (kasvot ylösalaisin tai sivulle kallellaan). Skaalaus ei ole ongelma, koska piirteet voidaan skaalata (centerpixelillä, leftpixelillä ja rightpixelillä on ulottuvuus vain suhteessa tarkasteltuun suorakulmioon). Viimeaikaisissa kaskadeissa pikseliarvo jostain suorakulmion osasta toiseen verrattuna on korvattu Haar-waveleteilla.
Vaiheen ominaisuudetMuokkaa
Hyvän kokonaissuorituskyvyn saamiseksi seuraavien kriteerien on täytyttävä:
- Jokaista vaihetta käytettäessä on validoitava kaikki kasvot, ja se voi tuottaa paljon vääriä positiivisia tuloksia. Jos esimerkiksi vaihe 1 merkitsisi ”ei sisällä kasvoja” 20 % kasvoja sisältävistä suorakulmioista (väärien negatiivisten virheiden osuus = 20 %), ketjun kokonaissuorituskyky ei voi olla suurempi kuin 80 % todellisia positiivisia, olivatpa seuraavat vaiheet mitä tahansa, koska 20 % kasvoista on jo hylätty.
- Tämän perusteella voidaan päätellä, että hyvässä vaiheessa on oltava 100 % todellisia positiivisia ja esimerkiksi 40 % vääriä positiivisia virheellisiä positiivisia virheitä, eli hyväksyttävä kaikki kasvoja sisältävät suorakulmiot ja merkittävä erheellisesti monet suorakulmiot mahdollisesti kasvoja sisältäviksi, jotka myöhemmät vaiheet poistavat. Ensimmäisessä vaiheessa 100 % oikeat positiiviset ja 40 % väärät positiiviset antavat silti paljon vääriä negatiivisia, jos vain yksi 1000 suorakulmiosta kuvassa sisältää kasvot, ensimmäisen vaiheen jälkeen on vielä 400-1 väärää mahdollista kasvoa.
- Jos ensimmäinen vaihe on hyvin nopea (muutama operaatio), olemme poistaneet 60 % suorakulmioista, jotka eivät sisällä kasvoja, hyvin nopeasti.
Koulutusprosessi yhtä vaihetta varten on siis se, että meillä on monta heikkoa oppijaa (yksinkertaisia pikseliero-operaattoreita), koulutamme niitä ryhmänä (nostamme niiden painoa, jos ne antavat oikean tuloksen), mutta pidämme huolen siitä, että meillä on vain muutama aktiivinen heikko oppija, jotta laskenta-aika pysyy alhaisena.
Viola &Jonesin & ensimmäisellä ilmaisimella oli 38 vaihetta, joissa oli 1 piirre ensimmäisellä vaihetta varten ja sitten seuraavissa viidessä seuraavassa 5:ssä vaihetta varten tarvittavia piirteitä oli 1, sitten 10,25, 25, 25, 50. Tämä tarkoittaa, että piirteitä kertyi yhteensä 6000. Ensimmäiset vaiheet poistavat ei-toivotut suorakulmiot nopeasti, jotta vältyttäisiin seuraavien vaiheiden laskentakustannusten maksamiselta, joten laskenta-aika käytetään analysoimalla syvällisesti se osa kuvaa, joka suurella todennäköisyydellä sisältää kohteen.
KaskadiharjoitteluEdit
Kaskadiharjoittelu tehdään yleensä kustannustietoisen ADAboostin avulla. Herkkyysrajaa (esimerkissämme 0,8) voidaan säätää niin, että todellisia positiivisia tuloksia on lähes 100 % ja vääriä positiivisia tuloksia jonkin verran. Tämän jälkeen voidaan aloittaa uudelleen vaihe 2, kunnes haluttu tarkkuus/laskenta-aika on saavutettu.
Alkuperäisen algoritmin jälkeen ymmärrettiin, että kaskadin kouluttamista kokonaisuutena voidaan optimoida, jotta saavutetaan haluttu todellisen havaitsemisen osuus mahdollisimman pienellä monimutkaisuudella. Esimerkkejä tällaisista algoritmeista ovat RCBoost, ECBoost tai RCECBoost. Yksinkertaisimmillaan ne voidaan ymmärtää siten, että jokaisessa vaiheessa valitaan joko vaiheen lisääminen tai heikon oppijan lisääminen edelliseen vaiheeseen sen mukaan, kumpi on edullisempaa, kunnes haluttu tarkkuus on saavutettu. Luokittelijan jokaisen vaiheen havaitsemisaste (herkkyys) ei voi olla alle halutun tason, joten kyseessä on rajoitettu optimointiongelma. Tarkalleen ottaen kokonaisherkkyys on vaiheiden herkkyyksien tulo.
Kaskadiluokittimet ovat saatavilla OpenCV:ssä, jossa on valmiiksi koulutettuja kaskadeja kasvojen etupuolelle ja ylävartalolle. Uuden kaskadin kouluttaminen OpenCV:ssä on myös mahdollista joko haar_training- tai train_cascades-menetelmillä. Tätä voidaan käyttää spesifisempien kohteiden nopeaan kohteiden havaitsemiseen, mukaan lukien muiden kuin ihmisten kohteet, joilla on Haar-tyyppisiä piirteitä. Prosessi vaatii kaksi näytesarjaa: negatiiviset ja positiiviset näytteet, joissa negatiiviset näytteet vastaavat mielivaltaisia ei-kohdekuvia. Kaskadiluokittelijan kouluttamiseen liittyvä aikarajoite voidaan kiertää käyttämällä pilvilaskentamenetelmiä.