Tällä kertaa ihmetellään Azuren konenäköön liittyviä palveluja (Cognitive Services – Vision), joita hyödyntämällä voi toteuttaa mielenkiintoisia ratkaisuja. Varsinkin oman kuvantunnistuspalvelun (Custom Vision Service) rakentaminen avaa monia mahdollisuuksia. Sen avulla voit opettaa palvelun tunnistamaan kuvasta erilaisia asioita.

Esimerkiksi

  • Web-kamera ottaa teinin huoneesta kerran päivässä kuvan. Palvelu kertoo onko huone siisti vai. Tämän mukaan maksetaan viikkoraha.
  • Kamera kuvaa rakennustyömaalle tulevat. Kuvasta tunnistetaan henkilöt, joiden varusteet ovat puutteelliset (ei kypärää, ei suojalaseja, ei turvasaappaita, ei nimilappua jne.)
  • Liukuhihnalta kuvataan valmistuvia tuotteita. Palvelu tunnistaa vialliset tuotteet.

Vaikuttaa aika edistyneeltä teknologialta. Onkohan tällaisen ratkaisun tekeminen vaikeaa?

No sitä pitää tietenkin itse kokeilla.

Esimerkki – Kellä on päällä firman huppari?

Työpaikallemme saapui tammikuussa usea laatikollinen tyylikkäitä Digital Illustrated -huppareita. Tämän kunniaksi tehdään työyhteisöä riemastuttamaan sovellus, joka tunnistaa

  • kuka työntekijä kuvassa on
  • onko hänelle päällään kyseinen huppari

Hupparin tunnistaminen kuvasta – Custom Vision Service

Ensimmäisenä rakennetaan palvelu, joka opetetaan tunnistamaan kuvasta onko henkilöllä päällä firman huppari vai ei. Kirjaudutaan https://www.customvision.ai/-palveluun ja luodaan uusi projekti (Digital Illustrated Hoodie). Domainiksi valitaan yleinen (General).

Näyttökuva 2018-2-6 kello 19.07.45

Luodaan omat tagit kuville, joissa henkilöllä on päällään firman huppari (Wearing Digital Illustrated hoodie), sekä niille jossa ei ole (Not wearing Digital Illustrated hoodie). Ladataan palveluun esimerkkikuvia ja luokitellaan ne manuaalisesti näihin kahteen kategoriaan.

Näyttökuva 2018-2-6 kello 19.17.26

Jotta palvelusta saa luotettavan, pitää erilaisia esimerkikuvia olla riittävästi. Eri paikoissa, kulmista, valaistuksessa jne otettuja. Muutoin luulet palvelun tunnistavan kuvassa olevan hupparin, kun se oikeasti tunnistaa kuvan otetun olohuoneessasi. Tai että kuvassa henkilö istuu. Tai että kuva on otettu kirkkaassa valossa. Emme voi tietää mitä kone kuvasta todellisuudessa tunnistaa.

Lopuksi mallia harjoitetaan (Train). Osumatarkkuus vaikuttaa hyvältä. Mallia voi kokeilla lataamalla palveluun yksittäisiä kuvia, joista palvelu kertoo miten ne mallin mukaan luokiteltaisiin (Quick test).

customer vision api.png

Sovellustamme varten tarvitsemme vielä palvelun avaimen. Se löytyy rattaan takaa asetuksista.

customvisionsettings.png

Henkilön tunnistaminen kuvasta – Face API

Haluamme lisäksi tunnistaa kuvassa olevan henkilön. Tähän tarkoitukseen Azuresta löytyy oma palvelunsa, Face API:n Face Identification.

Idea on yksinkertainen

  • Luodaan ryhmä
  • Lisätään ryhmään henkilöitä
  • Lisätään kutakin henkilöä esittäviä kuvia

Tämän jälkeen palveluun voi ladata kuvan ja se kertoo kuka ryhmän henkilöistä kuvassa on. Tunnistaminen suoritetaan kasvoista, joten niiden tulee näkyä kuvassa.

Ensin luodaan Face API -palvelu Azureen. Helpoiten se löytyy plussaan (New) takaa haulla.

face api.png

Tarvitsemme myöhemmin palvelun avaimen (Key), joten käydään poimimassa se talteen.

face api keys.png

Seuraavaksi luodaan ryhmä ja henkilöt, sekä lisätään henkilöiden kasvoista muutamia esimerkkikuvia.

Pettymys on kohtalainen kun tajuan ettei tätä varten ole olemassa käyttöliittymää.

Malliin voi luoda sisältöä Face API:n dokumentaatiosta löytyvän API testing consolen avulla (tai vaikka Postmanilla). Itse päädyin tekemään pienen konsolisovelluksen Microsoftin ohjeen pohjalta ja lisäsin sisällön malliini sen avulla.

face console application.png

Muiden AI-palvelujen tapaan mallia pitää lopuksi harjoittaa (TrainPersonGroup).

Tarvittavat palvelut ovat nyt valmiit. Tehdään lopuksi sovellus, joka niitä hyödyntää.

Digital Illustrated hoodie chatbot

Alunperin tarkoituksenani oli tehdä PowerApps -sovellus, joka kertoisi kuka kuvassa on ja onko hänellä huppari päällä.

Hetken mietittyäni PowerApps (vaikka kevyt onkin) alkoi tuntumaan turhan raskaalta näin triviaaliin toimenpiteeseen. Ja kun tiedostojen käsittely PowerAppsissa aiheuttaa lähinnä pahaa mieltä, päätin keksiä jotain muuta.

Halusin helpon ja nopean tavan ottaa valokuvan, lähettää sen palveluun ja saada palvelulta vastauksen. Sehän kuulostaa aivan chatbotilta!

Chatbottia voi käyttää Teams-sovelluksella, joka on kaikilla ratkaisuni käyttäjillä valmiiksi asennettuna, sekä työasemalla että kännykässä.

Avataan Azure portaali, luodaan uusi Web App Bot ja valitaan pohjaksi (Bot template) Basic.

Näyttökuva 2018-2-10 kello 21.56.06.png

Kun chatbot on luotu, ladataan sen lähdekoodi omalle koneelle.

hoodiebot source code zip.png

Ensimmäinen haaste on keksiä miten chatbotille lähetetty liitetiedosto lähetetään edelleen käyttämilleni palveluille. Kun tämä saa tehtyä, on varsinaisten palveluiden käyttö helppoa.

Face API:n käyttöön löytyy mainio Microsoft.ProjectOxford.Face -kirjasto, etkä voi Microsoftin sivuilta löytyvien ohjeiden avulla epäonnistua.

Custom vision API:n käyttöön löytyy myös hyvät ohjeet, mikäli käytät Microsoft.Cognitive.CustomVision.Prediction -kirjastoa. Minä en tässä onnistunut. Sain aiheutettua ainoastaan mystisiä ongelmia kirjastojen versioiden kanssa, eikä projekti suostunut enää kääntymään. Joku näppärämpi tämän olisi korjannut, mutta omat taidot eivät riittäneet.

Onneksi Custom visionin rajapintoja voi kutsua suoraan http-kutsuina. Niin ne lopulta toteutinkin.

Valmis chatbot on yksinkertainen. Sille lähetetään kuva ja se kertoo kuvasta kaiken oleellisen.

IMG_C2FAF58D8506-1

Kustannukset

Customer Vision on Preview -vaiheessa ja toistaiseksi täysin ilmainen. Käyttöä on kutenkin rajoitettu. Voit tehdä 20 projektia, joissa kussakin on 1000 esimerkkikuvaa ja 20 tagia. Vuorokaudessa palveluun voi tehdä 1000 kyselyä.

Face API:sta käytin ilmaista versiota, joka riittää hyvin tällaisiin kokeiluihin (20 tapahtumaa minuutissa / 30 000 tapahtumaa kuussa). Esimerkkikuvien tallennuksesta veloitetaan 0.422€ / 1000 kuvaa / kk.

Chatbot-toteutus generoi päälle omat kulunsa käytön mukaan.

Yhteenveto

Eniten aikaa meni chatbot-toteutuksen kanssa säheltäessä.

Henkilöiden tunnistaminen kasvojen perusteella toimii varsin luotettavasti. Tämä ei yllätä, kasvojen tunnistus on koeteltua teknologiaa.

Yrityksen hupparin tunnistaminen tuottaa kuitenkin palvelulleni keskisuuria hankaluuksia. Olen opettanut sitä 200 erilaisella kuvalla. Hupparin kanssa ja ilman. Edelleen palvelu saattaa todeta 100% varmuudella, ettei kuvan henkilöllä ole yrityksen hupparia päällään. Vaikka kuvan hupparissa näkyy yrityksen logo. Grrrr…. Jatkan palvelun harjoittamista. Voin ladata vielä 800 esimerkkikuvaa. Josko se lopulta oppisi.

Kuva: https://www.customvision.ai