Träna en bildklassificeringsmodell med Skapa ML

Maskininlärning är bra, men det kan vara svårt att genomföra i mobila applikationer. Detta gäller särskilt för personer utan datavetenskap grad. Med Core ML gör det dock enkelt att lägga till maskininlärning till din befintliga iOS-app med den helt nya Create ML-plattformen för träning av lätta, anpassade neurala nätverk.

Kortfattat

Vad är maskinlärning?

Maskininlärning är användningen av statistisk analys för att hjälpa datorer att fatta beslut och förutsägelser baserat på egenskaper som finns i den data. Med andra ord är det en handling att få en dator att analysera en dataström för att bilda en abstrakt förståelse för den (kallad en "modell") och använda den modellen för att jämföra med nyare data.

Hur används den?

Många av dina favoritappar på telefonen kommer sannolikt att innefatta maskininlärning. När du till exempel skriver ett meddelande, förutspår autokorrigering vad du ska skriva nästa med en maskininlärningsmodell som ständigt uppdateras när du skriver. Även virtuella assistenter, som Siri, Alexa och Google Assistant, är helt beroende av maskininlärning för att efterlikna mänskligt beteende.

Komma igång

Låt oss äntligen använda din nyfunna kunskap om maskininlärning för att faktiskt bygga din första modell! Du måste se till att du har Xcode 10 installerat, tillsammans med MacOS Mojave som körs på din utvecklings Mac. Dessutom antar jag att du redan har erfarenhet av Swift, Xcode och iOS-utveckling i allmänhet.

1. Dataset och bilder

I denna handledning klassificerar vi bilder baserat på om de har ett träd eller en blomma. Det är dock rekommenderat att du följer med dina egna bilder och objekt som du vill klassificera i stället. Av den anledningen får du inte blommor och trädbilder som används i det här exemplet. 

Hitta bilder

Om du har problem med att hitta bilder (eller om du inte har tillräckligt med egna bilder), kan du prova PhotoDune eller Google Images. För lärandets syfte borde det räcka för att du ska komma igång. Försök hitta bilder som har ett distinkt huvudobjekt (t ex ett apelsin, ett träd) istället för flera (t ex banor av bananer, hela skogar) för att undvika att förvirra modellen för att börja med. Naturligtvis kan du alltid lägga till mer komplikationer senare, efter att du har någon erfarenhet.

80:20 Datavetenskapsregeln

På datavetenskapsområdet är det bra att dela dina dataset i två kategorier: en för träning av modellen och en för testning. Eftersom du vill ge din verkliga modell mest uppmärksamhet, bör 80% av din dataset användas för träning, och du bör spara 20% för att se till att allt fungerar som det ska. Det är trots allt viktigt också!

Att dela upp skillnaden

Med 80:20-regeln i åtanke, fortsätt och skapa två mappar: Träning och Testning, där du lägger rätt mängd bilder i var och en av mapparna. När du har 80% av dina data i Träningoch 20% i TestningDet är äntligen dags att dela upp dem efter kategori. För mitt exempel har jag två mappar som heter Blommor och träd i min Träning mapp, och jag kommer att ha 20% av bilderna osorterade i mina Testning mapp.

2. Träning av modellen

Så, låt oss dyka in och faktiskt skapa modellen. Du kan bli förvånad att höra att det mesta av ditt arbete redan är gjort! Nu är allt vi har kvar att göra, skriv en kod och sätt Swift och Xcode till jobbet för att göra magiken för oss.

Skapa en ny lekplats

Medan de flesta av oss är vana vid att skapa faktiska iOS-applikationer, kommer vi att ledas till lekplatsen den här gången för att skapa våra maskininlärningsmodeller. Intressant, eller hur? Om du tycker om det, är det verkligen meningsfullt - du behöver inte alla de extra filerna men behöver bara en ren skiffer för att berätta för Swift hur man skapar din modell. Gå vidare och skapa en macOS-lekplats för att börja.

Öppna först Xcode.

Skapa sedan en ny lekplats.

Och ge det ett användbart namn.

De tre linjerna

I motsats till vad du kanske har trott behöver du bara tre rader av kod för att få din lekplats redo att träna din modell. Ta bort all den pannkodskod som genereras automatiskt och gör sedan följande:

Importera CreateMLUI API för att aktivera Skapa ML i din Swift Playground:

importera CreateMLUI

Skapa sedan en instans av MLImageClassifierBuilder och ringa till showInLiveView (:) metod för att kunna interagera med klassen i ett intuitivt användargränssnitt inom din lekplats:

låt byggaren = MLImageClassifierBuilder () builder.showInLiveView ()

Bra! Det är allt du behöver göra när det gäller kod. Nu är du äntligen redo att dra och släppa dina bilder för att skapa en fullt fungerande Core ML-modell.

Dra och släpp

Nu har vi utvecklat ett användargränssnitt där vi kan börja lägga till våra bilder och se det magiska utspelet! Som tidigare nämnts har jag sju bilder av blommor och sju bilder av träd. Självklart kommer det inte att vara tillräckligt för en super-exakt modell, men det gör tricket.

När du öppnar assistentredigeraren ser du en ruta som säger Släpp bilder för att börja träna, där du kan dra din Träning mapp. Efter några sekunder ser du lite resultat på din lekplats. Nu är du redo att testa din nybyggda Core ML-modell.

3. Testning och Exportering

När du har tränat din modell är det enkelt att testa modellen och ladda ner den för att använda i dina appar. Du kan testa det direkt i din lekplats utan att någonsin behöva skapa ett projekt. När du vet att din modell är klar kan du lägga den i en iOS (eller macOS) app.

Testa modellen

Kom ihåg det Testning mapp du skapade? Gå vidare och dra hela mappen på din lekplats (där du släppte din Träning bilder tidigare i handledningen). Du borde se dina bilder visas i en lista, tillsammans med vad modellen tycker var och en av dem är. Du kan bli förvånad - även med så lite data kan du fortfarande få en ganska exakt modell.

Nedladdning av modellen

När du är nöjd med din modell kan du exportera den i Core ML-format och använda den i dina appar. Bredvid Image Classifier, fortsätt och klicka på nedåtriktad pil för att avslöja vissa fält som du kan ändra för att ändra namn, författare eller beskrivning av din modell. Du kan också välja var du ska ladda ner den.

När du slår den blå Spara knappen, din .mlmodel filen visas på önskad plats. Om du är intresserad kan du också läsa produktionen på lekplatsen för att lära dig information som precision, återkallelse och var din modell sparades.

Använda modellen

Denna handledning förutsätter att du är bekant med Core ML-modeller i allmänhet, men jag förklarar kortfattat hur det fungerar. För mer information om hur du använder modellen när den är i din app kan du läsa min andra handledning:

För att använda modellen, dra den till ditt Xcode-projekt (som du skulle ha en bild eller ljudfil). Sedan importera Core ML i filen där du skulle vilja använda den. Med några ytterligare steg borde du kunna behandla modellen som en Swift-klass och samtalsmetoder på den som beskrivs i min andra handledning.

För mer information om hur du gör det kan du också besöka Apples dokumentation och läsa om hur du integrerar maskininlärning i din app.

Slutsats

I den här handledningen lärde du dig hur du enkelt skapar ett anpassat bildklassificeringsnätverk medan du bara skriver tre kodrader. Du utbildade denna modell med egna data och använde sedan 20% av det för att testa modellen. När det funnades, exporterade du det och lade det till din egen app.

Jag hoppas att du njöt av denna handledning, och jag rekommenderar starkt att du kolla in några av våra andra maskininlärningskurser och handledning här på Envato Tuts+! 

Om du har några kommentarer eller frågor, tveka inte att lämna dem i nedanstående avsnitt.