Trene en bildeklassemodell med Create ML

Maskininnlæring er flott, men det kan være vanskelig å implementere i mobile applikasjoner. Dette gjelder spesielt for folk uten en datavitenskapelig grad. Med Core ML, gjør Apple det imidlertid enkelt å legge til maskinlæring i din eksisterende iOS-app ved hjelp av den helt nye Create ML-plattformen for å trene lette, tilpassede nevrale nettverk.

Med et blikk

Hva er maskinlæring?

Maskininnlæring er bruk av statistisk analyse for å hjelpe datamaskiner til å ta avgjørelser og spådommer basert på egenskaper som finnes i dataene. Med andre ord, det er en handling å ha en datamaskin å analysere en datastrøm for å danne en abstrakt forståelse av den (kalt en "modell"), og bruke den modellen til å sammenligne med nyere data.

Hvordan er det brukt?

Mange av favorittappene dine på telefonen vil trolig inkorporere maskinlæring. For eksempel, når du skriver en melding, forutser autokorrigering hva du skal skrive neste ved hjelp av en maskininnlæringsmodell som kontinuerlig oppdateres mens du skriver. Selv virtuelle assistenter, som Siri, Alexa og Google Assistant, er helt avhengige av maskinlæring for å etterligne menneskelig oppførsel.

Starter

La oss endelig bruke din nyoppdagede kunnskap om maskinlæring for å faktisk bygge din første modell! Du må sørge for at du har installert Xcode 10, sammen med MacOS Mojave som kjører på utviklings Mac. I tillegg antar jeg at du allerede har erfaring med Swift, Xcode og IOS-utvikling generelt.

1. Datasett og bilder

I denne opplæringen klassifiserer vi bilder basert på om de har et tre eller en blomst. Det anbefales imidlertid at du følger med dine egne bilder og objekter du vil klassifisere i stedet. Av denne grunn vil du ikke bli forsynt med blomster- og trebilder som brukes i dette eksemplet. 

Finne bilder

Hvis du har problemer med å finne bilder (eller hvis du ikke har nok av dine egne bilder), kan du prøve PhotoDune eller Google Images. Med det formål å lære, bør dette være nok for deg å komme i gang. Prøv å finne bilder som har et klart hovedobjekt (for eksempel ett oransje, ett tre) i stedet for flere (for eksempel bananer med bananer, hele skoger) for å unngå å forvirre modellen til å begynne med. Selvfølgelig kan du alltid legge til flere komplikasjoner senere, etter at du har litt erfaring.

80:20 Datavitenskapsregel

På datavitenskapsområdet er det god praksis å dele datasettene dine i to kategorier: en for trening av modellen og en for testing. Siden du vil gi den mest opptatte modellen din, bør 80% av datasettet brukes til opplæring, og du bør spare 20% for å sikre at alt fungerer som det skal. Det er jo også viktig!

Splitting forskjellen

Med 80:20-regelen i tankene, gå videre og opprett to mapper: Trening og testing, hvor du legger inn riktig mengde bilder i hver av mappene. Når du har 80% av dataene dine i Treningog 20% ​​i testingdet er endelig tid til å dele dem opp etter kategori. For mitt eksempel vil jeg ha to mapper som heter blomster og trær i min Trening mappe, og jeg vil få 20% av bildene usortert i min testing mappe.

2. Trening av modellen

Så, la oss dykke inn og faktisk lage modellen. Du kan bli overrasket over å høre at det meste av arbeidet ditt allerede er gjort! Nå er alt vi har igjen å gjøre, skriv kode og legg Swift og Xcode til å jobbe for å gjøre det magiske for oss.

Opprette en ny lekeplass

Mens de fleste av oss er vant til å lage faktiske iOS-applikasjoner, blir vi ledet til lekeplassen denne gangen for å lage våre maskinlæringsmodeller. Interessant, er det ikke? Hvis du tenker på det, er det faktisk fornuftig - du trenger ikke alle de ekstra filene, men trenger bare en ren skifer for å fortelle Swift hvordan du lager din modell. Gå videre og opprett en macOS lekeplass for å starte.

Åpne først Xcode.

Deretter oppretter du en ny lekeplass.

Og gi det et nyttig navn.

De tre linjene

I motsetning til hva du kanskje har tenkt, trenger du bare tre kodelinjer for å få lekeplassen klar til å trene din modell. Slett all kjelekoden som genereres automatisk, og gjør deretter følgende:

Importer CreateMLUI API for å aktivere Lag ML i din Swift Playground:

importere CreateMLUI

Deretter oppretter du en forekomst av MLImageClassifierBuilder og ring til showInLiveView (:) metode for å kunne samhandle med klassen i et intuitivt brukergrensesnitt på lekeplassen din:

la builder = MLImageClassifierBuilder () builder.showInLiveView ()

Flott! Det er alt du trenger å gjøre når det gjelder kode. Nå er du endelig klar til å dra og slippe bildene dine for å skape en fullt funksjonell Core ML-modell.

Dra og slipp

Nå har vi utviklet et brukergrensesnitt der vi kan begynne å legge til bildene våre og se på det magiske utfolde seg! Som nevnt tidligere har jeg syv bilder av blomster og syv bilder av trær. Selvfølgelig vil dette ikke være nok for en super-nøyaktig modell, men det gjør kunsten.

Når du åpner assistenteditoren, ser du en boks som sier Slip bilder for å begynne å trene, hvor du kan dra din Trening mappe. Etter et par sekunder ser du litt utgang på lekeplassen din. Nå er du klar til å teste din nyopprettede Core ML-modell.

3. Testing og eksport

Når du er ferdig med å trene modellen din, er det enkelt å teste modellen og laste den ned til bruk i appene dine. Du kan teste det rett på lekeplassen din uten å måtte lage et prosjekt. Når du vet at modellen din er klar, kan du sette den i en iOS (eller macOS) app.

Testing av modellen

Husk testing mappe du opprettet? Gå videre og dra hele mappen på lekeplassen din (hvor du droppet din Trening bilder tidligere i opplæringen). Du bør se bildene dine i en liste, sammen med hva modellen synes hver av dem er. Du kan bli overrasket - selv med så lite data, kan du fortsatt få en ganske nøyaktig modell.

Nedlasting av modellen

Når du er fornøyd med modellen din, kan du eksportere den i Core ML-format og bruke den i appene dine. Ved siden av Image Classifier, gå videre og klikk på nedovervendt pil å avsløre noen felt som du kan endre for å endre navn, forfatter eller beskrivelse av modellen din. Du kan også velge hvor du skal laste den ned.

Når du treffer den blå Lagre knappen, din .mlmodel filen vil vises på ønsket sted. Hvis du er interessert, kan du også lese utgangen på lekeplassen for å lære informasjon som presisjon, tilbakekalling og hvor modellen din ble lagret.

Bruke modellen

Denne opplæringen forutsetter at du er kjent med Core ML-modeller generelt, men jeg vil kort forklare hvordan det fungerer. For mer informasjon om hvordan du bruker modellen når den er i appen din, kan du lese min andre veiledning:

For å bruke modellen, dra den inn i Xcode-prosjektet (som du ville ha et bilde eller en lydfil). Deretter importerer du Core ML i filen der du vil bruke den. Med noen få ekstra skritt, bør du kunne behandle modellen som en Swift-klasse og anropsmetoder på den som beskrevet i min andre veiledning.

For mer informasjon om hvordan du gjør dette, kan du også besøke Apples dokumentasjon og lese om hvordan du integrerer maskinlæring i appen din.

Konklusjon

I denne opplæringen lærte du hvordan du kan bygge et egendefinert bildeklassifikasjonens nevrale nettverk, mens du bare skriver tre kodelinjer. Du trente denne modellen med dine egne data, og brukte 20% av den til å teste modellen. Når det virket, eksporterte du det og la det til din egen app.

Jeg håper du likte denne opplæringen, og jeg anbefaler sterkt at du sjekker ut noen av våre andre maskininlæringskurs og opplæringsprogrammer her på Envato Tuts+! 

Hvis du har kommentarer eller spørsmål, vennligst ikke nøl med å legge dem ned i delen nedenfor.