5) Så klassificeras bilder

I de första lektionerna lärde du dig en del begrepp som du kommer att ha nytta av nu.

I denna lektion lär du dig hur en app kan klassificera bilder: hund, katt osv. Hund är här en klass, katt är en annan.

Klassificera betyder alltså att tala om vad bilden föreställer. Vilka klasserna är och hur många klasser bestäms av hur många olika etiketter som finns och hur modellen ser ut. Det bestäms innan träningen.

Apparna i den här kursen är webbappar. Webbappar körs i webbläsaren. Webbappar kan köras i mobil, platta, PC och Mac.

Javascript är ett programmeringsspråk som körs i webbläsaren. Javascript togs ursprungligen fram för att få mera dynamiska och flexibla webbsidor. Våra webbappar är programmerade i Javascript.

Image - en mycket liten webbapp för bildklassificering

På min PC öppnar jag en ny flik i webbläsaren Chrome (du får göra det här senare som en övningsuppgift). Som länk ger jag kurser.gubboit.se/image

Bilder på en katt, en höna och en pudel visas (se ovan). Appen klassificerar nu bilderna. Appen är mycket enkel och bara bilderna visas på webbsidan - inga resultat.

För att se resultaten av klassificeringen måste jag öppna webbläsarens Javascript-konsol. Det gör jag med F12-tangenten. I menyn väljer jag Konsol (Console):

Appen har gjort 3 förutsägelser (predicitions), en för varje bild. Den mest troliga förutsägelsen för varje bild är:

Bild Klass "Sannolikhet"
1 Tabby (randig katt) 0.68
2 Hen (höna) 0.96
3 Standard poodle (kungspudel) 0.71

Här är ”sannolikhet” ett mått på hur säker modellen är på sin förutsägelse. Den är mycket säker på hen (0.96), mindre säker på tabby (0.68), osäker på till exempel cock (tupp)(0.04)

Sannolikheter

Sannolikheten för en viss händelse beskriver hur ”troligt” det är att händelsen inträffar. En sannolikhet ges som ett tal mellan 0.0 (händer aldrig) och 1.0 (händer alltid).

Vad är sannolikheten att du får en 6:a när du kastar en tärning? 1 på 6 eller 1/6=0.16667.

Programmet för vår lilla app

För att se Javascript-programmet för vår lilla app klickar jag på någon av länkarna (index.js:xx) till höger i konsolen:

Jag har lagt in kommentarer i koden (följer efter //) så att det ska bli mera begripligt.

Anropet loadModel() kör funktionen loadModel() som läser in modellen och sedan klassificerar bilderna i funktionen predict() med hjälp av den laddade modellen.

Detaljerna är kanske inte så viktiga men det är intressant hur enkel en AI-app kan vara och hur lite kod som behövs.

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 Javascript-version av TensorFlow.

Modellen som appen använder är MobileNet som är snabbt och ganska litet och kan köras i mobiler.

Summering

I den här lektionen lärde du dig hur enkel bildklassificering kan gå till.

Appen i den här lektionen klassificerar bara tre bilder och är sedan klar. I nästa lektion ska vi titta på en mera avancerad app men också om hur resultatet av en klassificering kan tolkas.

<< Bakåt Framåt >>