Kokeilin hiljattain onnistunko opettamaan Azuren Custom Vision Servicelle onko kuvan henkilöllä päällään firman huppari vai ei. Pääsin kohtuulliseen tulokseen, mutten missään nimessä täydelliseen. Suurin ongelma oli käyttämieni kuvien erilaisuus. Kuvia oli otettu eri tiloissa, eri valaistuksissa, eri henkilöistä, eri kulmista ja eri rajauksin.
Custom Vision Service yrittää parhaansa mukaan luokitella kuvia. Ikäväksemme se ei kerro, mitä se kuvissa itseasiassa luokittelee.
Käytin palvelun opettamisessa allaolevaa kuvaa (yhtenä yli kahdesta sadasta kuvasta).
Kerroin palvelulle että kuvassa henkilöllä on päällään DI huppari. Tämän jälkeen rajasin kuvaa hieman, jolloin se näytti tältä.
Sama kuva? Niinpä. Palvelun mielestä kuvassa henkilöllä ei olekkaan enää päällään DI hupparia. Masentavaa. Väkisin hiipii mieleen ajatus, että tekoäly luokittelee kuvia joidenkin muidenkin muuttujien mukaan kuin kuvassa olevan hupparin.
Kunpa kuvasta voisi jotenkin merkitä sen osan, jonka haluamme koneen tunnistavan.
Eikä aikaakaan kun Microsoft julkaisi mahdollisuuden tunnistaa kohteita (Object Detection) Custom Vision Servicen avulla. Kuulostaa niin mahtavalta että sitä pitää heti kokeilla.
Custom Vision Service luominen
Minulla on valmiina perinteiseen luokitteluun (classification) perustuva kuvantunnistuspalvelu. Tätä ei voi muuttaa käyttämään kohteen tunnistusta (Object Detection), joten luodaan ensimmäiseksi oikean tyyppinen palvelu.
Käytetään opetusaineistona samoja kuvia kuin aiemmin tekemässäni palvelussa. 214 kuvaa joista 82:ssa henkilöllä on päällään DI huppari. Voimme myöhemmin vertailla näiden kahden palvelun suoriutumista tässä haastavassa tehtävässä
Kuvien lisäämisen jälkeen alkaa mekaaninen työ. Merkitään jokainen kuvissa esiintyvä DI huppari. Rajaan nelikulmaisen alueen, jossa huppari on ja annan sille tagin ”DIHoodie”. Helppoa, mutta menee siihen hetki aikaa.
Kun kaikki 84 DI hupparia on merkitty, käynnistän mallin harjoittamisen Train-painikeella.
Kohteen tunnistavan mallin harjoittaminen kestää selvästi pidempään kuin pelkkä kuvien luokittelu. Ei tämäkään kauaa kestä (muutama minuutti), mutta lopputuloksen saavuttamiseksi Azure joutuu jo tekemään hieman töitä.
Mallin valmistuessa sen hyvyys esitetään muutamalla perusmittarilla.
- Precision – Miten todennäköisesti merkitty kohde on merkitty oikein
- Recall – Miten suuri osa kuvassa olevista kohteista tunnistetaan
- M.A.P. – Mean average precision, miten hyvin keskimäärin kohteet tunnistetaan ja merkitään oikein.
Luvut näyttävät mahtavilta! Suoraan tuotantoon? Ehkä kuitenkin testaamme mallia vielä pikaisesti…
Luvut kertovat miten malli suoriutuu tehtävästä, jonka se kuvittelee meidän sille antaneen.
Palvelussa on kätevä pikatesti (Quick test), jolla mallia voi testata omilla tai verkosta löytyvillä kuvilla. Kokeillaan palvelua kuvalla, jossa ei ole hupparia laisinkaan, vaan typerä t-paita.
DI-huppari 96,9% varmuudella. Muutaman lisäkokeilun jälkeen tuomio on selvä. Olemme epähuomiossa luoneet kuvantunnistuspalvelun, joka tunnistaa firman hupparin sijasta minkä tahansa vaatteen, joka henkilöllä on ylävartalonsa suojana. Ei ihan sitä mitä tavoiteltiin.
Seuraava yritys – vertailukuvien tägäys
Ei lannistuta. Meillä on mallissamme yli 100 kuvaa, joissa ei ole firman hupparia. Seuraavaksi merkitsemme ne tägillä ”NoDIHoodie”.
Kun kaikki kuvat on käyty läpi, käynnistetään mallin harjoittaminen uudelleen. Lopulta malli valmistuu ja saamme uudet luvut.
Hyvältähän nämä näyttävät. Mutta niin ne näyttivät viimeksikin. On koeajon aika.
Toimiiko se?
Aloitetaan helpolla kuvalla.
Kohteen tunnistukseen perustuva palvelu kertoo 95,4% varmuudella kuvassa olevan firman huppari. Alkuperäinen, kuvan luokitteluun perustuva, palvelumme tunnistaa saman kuvan hupparikuvaksi 76,6% varmuudella.
Seuraavaksi kuva jossa on huppari, mutta ei firman huppari.
Palvelumme on jo kahden vaiheilla. Todennäköisempänä (63,2%) se kuitenkin pitää sitä että kuvassa on joku muu kuin firman huppari. Alkuperäinen palvelumme on tästä varmempi (98,9%).
Seuraava koekuvamme onkin yllätys.
Palvelu kuvittelee kuvassa olevan firman hupparin. Vaikka kuvassa ei itseasiassa ole mitään hupparia. Alkuperäinen palvelumme toteaa viileästi (98%) ettei kuvassa ole firman hupparia.
Seuraavassa kuvassa huppari roikkuu naulassa.
Uusi palvelumme hoitaa tämän kotiin (56,6%). Saman tekee alkuperäinen palvelu.
Yritetään vähän hankalampaa. Toisen firman huppari?
Palvelumme ei hämäänny (86,3%). Toisin kun alkuperäinen palvelumme joka on täysin (99,9%) varma kyseessä olevan meidän firman huppari.
Mallin harjoittaminen jatkuu
Otan lisää kuvia ja jatkan mallin kokeilua. Ulkona otetut kuvat eivät vala kauheasti uskoa.
Ainoastaan yksi uusista firman hupparin sisältävistä kuvista tunnistetaan oikein. Lohdutuksesi voidaan todeta että alkuperäinen luokitteluun perustuva malli pärjää yhtä huonosti. Uusi malli tunnistaa sentään kaikki kuvat, joissa ei ole firman hupparia oikein. Vanha malli tuottaa niissäkin yhden pummin.
Lisään ottamani 10 uutta kuvaa molempiin malleihin. Harjoittamisen jälkeen tunnusluvut näyttävät seuraavilta.
Tämä on tyypillistä. Mitä enemmän mallia opettaa, sitä enemmän luvut putoavat. Malli huomaa, että triviaalina pitämänsä ongelma ei olekaan triviaali.
Ainakaan koneelle. Kuvista hupparit osaisi poimia pieni lapsikin.
Mallin harjoittamista pitää jatkaa kunnes luvut ovat taas säädyllisellä tasolla. Ja tietenkin testata lopputuloksia käytännössä.
Yhteenveto
Hieman yllättäen noin 230 kuvan opetusaineistolla en saanut merkittävää eroa pelkän kuvan luokitteluun perustuvan mallin ja kohteen tunnistukseen perustuvan mallin välille. Ongelma ei ole tunnistaa kuvia, joissa ei ole hupparia. Ongelma on tunnistaa luotettavasti kuvat joissa huppari on.
Esimerkkikuvia lisäämällä uskon saavani molemmat palvelut tunnistamaan kuvista riittävällä varmuudella, onko henkilöllä päällään harmaa collegehuppari. Kohteen tunnistuksen voi opettaa tunnistamaan kuvasta Digital Illustrated -tekstin sekä logon. Näitä tietoja yhdistelemällä voisi päätellä entistä varmemmin, onko kuvassa firman huppari.
Vai voisiko… Kaikissa firman hupparista otetuissa kuvissa näitä tunnisteita ei näy. Firman logo voi olla kuvassa jossain muualla kuin hupparissa, esimerkiksi laukussa, jolloin homma menee uudella tapaa pieleen.
Kaikesta huolimatta Custom Vision Service on erinomainen palvelu, jota hyödyntämällä voit rakentaa aivan uudenlaisia ja mielenkiintoisia palveluja.
Ja todella helposti. Esimerkkiaineiston täytyy vain olla riittävän kattava.
Kohteen tunnistuksen avulla Custom Vision Servicen käyttömahdollisuudet laajenevat. Kuvasta voidaan tunnistaa sama kohde useaan kertaan (laskea kuvassa näkyvät firman hupparit) tai tunnistaa useita eri kohteita (firman huppari ja firman lippalakki). Kohteen tunnistus on preview -vaiheessa eikä sen hinnoittelua ole vielä julkaistu.