I följande lektioner lär du dig hur man kan skapa AI-appar.
Vi tittar på en app för att bestämma hundraser, hur en utvecklingsmiljö kan installeras och hur appen kan byggas och köras på din maskin.
De två sista lektionerna är bonuslektioner men jag rekommenderar att du studerar dom ändå. Bara för att se att det inte är alltför svårt.
Om du är nördigt lagd gör övningarna i bonuslektionerna.
OBS: Jag förstår att du kanske tycker att de här lektionerna är svåra. Men ge inte upp nu! Efter de här lektionerna blir det lättare!
I den här lektionen låtsas vi att du är en IT-konsult och att du har fått ditt första uppdrag inom AI: Att utveckla en app som utgående från en bild av en hund kan bestämma hundrasen.
Kraven från kunden är att appen bara behöver vara en prototyp. Kunden kan själv snygga till appen.
Däremot måste resten vara klart: Klassificeringen (vilken hundras) måste vara bra och det ska vara lätt att få in nya bilder till appen.
Appen image från lektion 5 kan vara en bra start. Appen använder MobileNet som modell och med ImageNet som dataset.
Det finns 118 klasser för hundar (olika hundraser). Det kanske räcker?
Appen image klassificerar tre bilder och är sedan klar – det är för dåligt.
Du måste utöka appen så att:
Videon överst på sidan visar hur den färdiga appen kan användas.
”Klistra in” (paste) är ganska nytt för webbappar så din webbläsare måste vara uppdaterad (ny) för att det ska funka.
”Klistra in” funkar inte för webbläsaren Firefox.
Vi kallar appen imagecp. Så här ser den ut när den är klar:
HTML-koden (index.html) definierar vilka element (knappar/button, text, bild osv) som ska finnas i appen. Den talar också om vilken Javascript-fil som ska användas.
Det här är HTML-koden:
index.js innehåller programkoden till appen. Programspråket är Javascript.
I index.js finns logiken i appen. Den bestämmer till exempel vad som ska hända när du trycker på en knapp.
Javascript-koden (index.js) ser ut så här:
Det AI-ramverk som används i appen är TensorFlow.js som är en avknoppning av TensorFlow. TensorFlow är det mest använda ramverket för AI (Deep Learning) och är skapat av Google. TensorFlow.js är en variant av TensorFlow där Javascript används som programmeringsspråk.
Modellen med tillhörande mjukvara beskrivs på https://github.com/tensorflow/tfjs-models/tree/master/mobilenet
Du har testat appen med lite hundbilder och det verkar funka.
Du lämnar över appen till kunden och väntar på resultatet.
Jag gissar att kunden kanske anmärker på några saker:
Bilderna i ImageNet användes för att träna MobileNet som vår app använder.
Det är alltså ImageNet som bestämmer vilka hundraser (klasser) som vår app klarar.
Hundraserna i ImageNet finns med index från 151 (’Chihuahua’) till och med 268 (’Mexican hairless’).
Alltså 118 raser.
Tyvärr ger model.classify() som vi använder inte index (klassnummer) utan bara texten för klassen t.ex. ’Mexican hairless’.
Vi kan (med hjälp av hundexperter) bygga en översättningstabell engelskt namn -> svenskt namn. På så vis kan vi få det svenska namnet från det engelska. Blir en del jobb.
Om vi inte hittar det engelska namnet i vår översättningstabell så är klassen inte en hundklass och vi ger resultatet ”Det här är inte en hund”.
I båda fallen måste vi träna modellen med mer bilder. Träning ingår inte i den här kursen men vi kan göra så här:
I den här lektionen har du bekantat dig med en mer lättanvänd app där vi använder kopiera och klistra för att få nya bilder.
Vi tittade också på förbättringar av appen.
I nästa lektion får du lära dig lite mera om Javascript.