Machine learning

For fjerde gang afholdte Touchlogic et intensivt Hackaton. Emnet denne gang var machine learning, samt at arbejde med modeller i Core ML. 

I forrige blogindlæg skrev vi lidt om iOS11 og de nye muligheder det gav for udviklerne. Vi skrev blandt andet om introduktionen af machine learning med Core ML. Med Core ML, har man givet iOS-udviklere mulighed for, at arbejde med stort set hvilken som helst form for machine learning model, og implementere den i iOS-apps. Derfor var det oplagt at tage op til dette Hackaton.

Hackaton bød på Machine learning og face detection
 

Opsætning af modeller og pre-trained models

For at teste mulighederne i Core ML, krævede det research for iOS-holdet. Da tanken var, at teste mulighederne for billedeforståelse, som vi også havde arbejdet med på forrige hackaton, måtte vi afveje hvor meget vi kunne undersøge med den tid vi havde til rådighed. Vi
besluttede os for følgende:

Undersøge mulighederne for at skabe sin egen model
Core ML giver muligheder for at man kan bygge sine egne modeller i Python eller Caffe, og konvertere dem til Core ML modeller.

Teste allerede eksisterende modeller
Apple tilbyder allerede flere pre-trained models, der giver mulighed for at teste og udvikle apps med machine learning. Dette kræver ikke lige så meget kodning, da modellerne allerede er sat op. Dette ville være en test af og arbejde med modellerne samt træningsdata i CoreML.

 

Face Detection og Artistic Style Transfer

Vi holdt os til billedgenkendelse og -forståelse, som vi også havde arbejdet lidt med på forrige hackaton. Herunder afprøvede vi forskellige modeller, for at se, hvordan de var at arbejde med. Det var dog ikke alle pre-trained models, vi undersøgte, der fungerede lige optimalt. Nogle modeller levede ikke op til det de på papiret lovede.

Face detection

Vi testede en model til face detection. Med mobilkameraet skulle modellen kunne scanne en persons ansigt og vurdere vedkommendes køn og alder. Udfordringerne var at få en præcis vurdering af både alder og køn. Det betød at nogle mandlige testpersoner blev vurderet yngre end de var, mens andre (alt efter hvor tæt på kameraet de var) blev vurderet til at være kvinder. 

Det betød, at der skulle arbejdes med hhv. vurderingen af køn og vurderingen af alder, hvortil der også skulle ses på vægtningen af den vurdering, modellen foretog. Det krævede derfor en del arbejde at få den til at registrere personer nogenlunde, og på den tid vi havde til rådighed, fik vi ikke en app til at fungere helt optimalt.

Artistic style transfer

Den anden model vi testede, var en artistic style transfer model. Udfordringen for denne type model er, at den skal arbejde med indholdet (content) af et billede mens udtrykket, eller stilen (style), skal overføres fra et andet billede. Det betyder, at maskinen skal kunne forstå tre forskellige billeder, hvor indhold og stil er forskellig. I arbejdet med denne model, oplevede vi ikke de samme udfordringer, som vi gjorde med face detection. Det virkede til at modellerne var lidt mere modne end dem vi fandt for face detection.

Opsætningen af appen og dens funktioner kræver ikke megen kodning med CoreML, da træningen allerede er foretaget på de tilgængelige modeller. Input kom fra mobilens kamera og fotoalbum, mens vi havde 6 forskellige kunstværker, der udgjorde de forskellige stilarter. Det betød også, at der forholdsvis hurtigt kunne laves en funktionel app, som meget effektivt skiftede stilen, på de billeder vi uploadede til appen. Resultaterne kan ses i galleriet nedenfor. 

Egne modeller

Som det sidste undersøgte vi hvad det krævede, at sætte en model op selv og konvertere den til Core ML. Hvis der skulle arbejdes videre med ideen om en virtuel receptionist, som vi arbejdede med på et tidligere hackaton, krævede det en stor mængde træningsdata. Det betød samtidig, at modellerne der skulle sættes op, kunne bruge lang tid på at registrere og forstå denne data, hvilket kunne tage op til flere uger. Samtidig skulle man have modellen klar, for at kunne konvertere denne til en Core ML model. Hvis Core ML ikke understøtter modellen, kan den ikke konverteres. Dermed er Core ML ikke så meget et framework til at arbejde videre med egne modeller eller unikke data, men en funktion til at konvertere en eksisterende model.

Da vi samtidig undersøgte om modellerne kunne trænes til at blive bedre, altså lære af sig selv, viste dette sig ikke muligt. Dermed er der nogle væsentlige machine learning elementer, der ikke er understøttet af det nye framework. Core ML kan kun fungere med allerede opsatte modeller, og kan ikke selv ændre på forståelsen af den tilgængelige træningsdata. Det er samtidig begrænset, hvor mange forskellige typer modeller Core ML understøtter, hvilket begrænser mulighederne i brugen af machine learning algoritmerne.

 

Begrænset funktionalitet

Vores arbejde med Core ML og machine learning har vist, at det ikke er alt, der fungerer lige godt. Til opsætning af simplere apps, som ændring af stilen på billeder, fungerede modellerne vi testede godt. Det krævede ikke så meget kode, og det var muligt at sætte en funktionel app op til formålet. 

De andre modeller vi testede fungerede ikke optimalt. Der var en større udfordring i at få dem til at fungere og lave præcise vurderinger. Og det kræver for meget justering for at modellerne er brugbare, og er derfor er bedst i testmiljøer. Det kræver også meget arbejde og tid, hvis der skal udvikles en model, der ikke er pre-trained. Det vil derfor være et meget stort arbejde at få opsat en sådan model, og derefter få modellen implementeret i en app. Yderligere er det også begrænset, hvor meget man kan få ud af modellerne, hvis de ikke kan trænes til at lære selv.

Det er derfor begrænset hvad vi mener, man på nuværende tidspunkt kunne bruge Core ML til. I forhold til at udvikle Touchlogic's virtuelle receptionist, kræver det i hvert fald et stort arbejde at få udviklet en funktionel app.

 

Af Kristian Nørgaard
Marketingsmedarbejder hos Touchlogic