PowerAppsin hallintasivulle ilmestyi AI Builder, josta kaikki ovat innoissaan.
Miksi?
Koska sen avulla voi rakentaa helposti erilaisia tekoälymalleja, joita taas voi hyödyntää PowerAppsissa ja Flow:ssa.
Katsotaan tarkemmin miten helppoa (tai vaikeaa) AI Builderin hyödyntäminen on.
Esimerkki – Hyllyinventaario
Kuvitellaan että meillä on myyntiedustaja, joka kiertää myymälöitä. Yksi hänen tehtävistään on tarkistamaa, miten moni yrityksen tuotteista löytyy hyllystä.
Mitä jos tämän voisi tehdä automaattisesti kuvaamalla hyllyt?
Tarvitsemme ainoastaan
- Tuotetiedot, jotka on tallennettu Common Data Serviceen
- Riittävästi esimerkkikuvia tuotteista
- Yhden PowerAppsin
- Hieman aikaa
Aloitetaan!
Mallin luominen
Ensin tulee luoda käytettävä malli. Etsimme kohteita valokuvasta, jolloin valitsemme pohjalle Object Detection -mallin.
Hyllyistä etsimämme tuotteet ovat tietenkin makeisia, joten nimetään malli sen mukaan (Candies).
Etsittäviä kohteita vastaava entiteetti
Tunnistettaville kohteille tulee löytyä vastine Common Data Servicestä. Luodaan uusi entiteetti (Candy). Karkeista ylläpidetään seuraavia tietoja
- Tuotteen nimi (Name)
- Hinta (Price)
- Pakkauskoko (Size (g))
Lisätään sopivaksi katsomamme määrä eri makeisia. Voit ladata tiedot excelistä tai tehdä yksinkertaisen Powerappsin, jolla tiedot syötät.
Tämän jälkeen voimme jatkaa varsinaisen mallin kanssa.
Mallin liittäminen Common Data Servicen entiteettiin
Seuraavaksi valitaan, mitä CDS:n entiteettiä olemme tunnistamassa.
Valitaan Candies-entiteetti ja käytetään kuvien luokittelussa sen nimi-kenttää (Name).
Seuraavaksi määritellään, mitä tuotteista olemme tunnistamassa. Jotta tästä tulee joskus valmista, opetetaan malli tunnistamaan ainoastaan Re-Mix, Ässä Mix ja Missä X -karkkipussit.
Mallin opettaminen esimerkkivalokuvien avulla
Tekoälymalli vaatii toimiakseen esimerkkidataa. Tässä tapauksessa se tarkoittaa valokuvia karkkipusseista.
Käydään lähikaupassa napsimassa sopivia kuvia. Loput kuvamateriaalista haetaan netistä.
Seuraavaksi jokaiseen kuvaan merkitään kaikki tunnistettavat tuotteet.
Jokaista tunnistettavaa tuotetta kohden tulee olla vähintäään 15 kuvaa. Suositus on 50. Kuvien merkitseminen on sitten käsityötä.
100 tuotetta tunnistavan mallin rakentamiseen menee siis hetki. Ei koneelta vaan sinulta.
Siihen on syynsä että esimerkkisovelluksemme tunnistaa ainoastaan kolme erilaista karkkipussia.
Valmis malli
Mallia pitää ensin harjoittaa (train), jonka jälkeen sen voi julkaista.
Ainoastaan julkaistut mallit ovat PowerAppsin ja Flow:n hyödynnettävisä.
Kone arpoo myös mallin hyvyyttä kuvaavan luvun (kuvassa 81%). Sitä ei kannata liikaa tuijottaa, vaan testata itse miten malli suoriutuu. Se onnistuu helpoiten saman sivun pikatestin (Quick test) avulla.
Lataa koneelta esimerkkikuva.
Ja palvelu näyttää mitä kohteita se kuvasta tunnisti ja millä varmuudella.
Ässä mix 91% varmuudella. Lupaavaa. Voimme siirtyä seuraavaan vaiheeseen, eli varsinaisen työkalun rakentamiseen.
PowerApps
Luodaan tyhjä PowerApps mobiililayoutilla ja lisätään siihen AI Builder -valikosta objektintunnistustoiminto.
Valitaan ObjectDetector -kontrolli käyttämään luomaamme mallia (Candies).
Kontrollia klikkaamalla käyttäjä voi joko valita puhelimestaan kuvan tai ottaa uuden.
Kuva analysoidaan mallin avulla ja tunnistetut kohteet löytyvät kontrollin VisionObjects-ominaisuuden takaa. Kustakin kohteesta löytyy nimi, sekä montako kappaletta niitä kuvasta löytyi.
Sovellusta käytetään kartoittamaan, onko hyllyssä kaikki myyntiedustajan vastuulla olevat tuotteet.
Lisätään galleria, jossa esitetään kaikki Candies -entiteetin tietueen tietueet. Kuvitellaan että myyntiedustaja vastaa niistä kaikista.
Esitetään gallerian sisältö kahdessa sarakkeessa ja lisätään kunkin tuotteen kohdalle symboli tuotteen löytymisen merkiksi.
Lisätään samalla gallerialle otsikko.
Seuraavaksi lisätään näytölle painike, jonka teksti kertoo montako karkkipussia kuvasta löytyi.
Mikäli karkkipusseja ei löytynyt, ei painiketta voi painaa (DisplayMode = Disabled).
DisplayMode = If(CountRows(Filter(ObjectDetector1.VisionObjects; count > 0)) > 0; DisplayMode.Edit; DisplayMode.Disabled)
Painiketta painamalla lisätään löydetyt kohteet erilliseen kokoelmaan (colFoundProducts).
Nyt voimme visualisoida, mitkä tuotteet ovat hyllyssä ja mitkä eivät.
Vaihdetaan vielä ikonin väri riippumaan näytettävästä symbolista.
Color = If(Icon1.Icon = Icon.Cancel; RGBA(255; 0; 0; 1); Green)
Valmista.
Olemme rakentaneet sovelluksen, jolla myyntiedustaja voi ottaa hyllystä kuvia. Jokaisen kuvan jälkeen hän voi päivittää sovelluksen tuotelistaa.
Lopetettuaan hän näkee suoraan listasta, mitkä hänen edustamistaan tuotteista löytyi hyllystä ja mitkä ei.
Yhteenveto
Onko tällaisista sovelluksista mitään todellista hyötyä?
On. Mieti jos myyntiedustaja tarkistaakin 100 erilaista makeistuotetta Prisman hyllystä. Tuotteiden automaattisenen tunnistaminen kuvista on varmasti nopeampaa kuin niiden manuaalinen läpikäynti.
Mallin rakentamisessa on samat haasteet kuin kaikissa kohteiden tunnistamis -malleissa. Esimerkkikuvien pitää olla oikeanlaisia ja riittävän kattavia, jotta malli toimisi oikein.
PowerAppsin ObjectDetector -kontrolli on ominaisuuksiltaan vielä aika kevyt. Omaa logiikkaa sen ympärille voi rakentaa vielä varsin rajallisesti.
Hieman vastaava (kohteen tunnistus) esimerkki löytyy aiemmasta kirjoituksesta. Silloin hyödynnettiin Azuren Custom Vision -palvelua.
Kumpi tapa tuntuu helpommalta?