Oppsummering fra tidligere
Hei, jeg heter Mathias og er i praksis hos NNL. I forrige innlegg forklarte jeg om den åpne source-coden jeg jobber med hos NNL innen eyetracking (ET). Koden som jobbes med heter pupil_labs og er ute på github for alle. Målet er å endre koden fra å ta inn live-video fra 3-kameraer, til å ta inn 3 videofiler i stedet for kamera. Sist gang fullførte jeg å streame 3-videoer til pupil_labs, det neste som mangler var en effektiv måte å kalibrere.
Funnet kalibreringsløsning
For å kalibrere ET-systemet fant jeg en løsning som allerede var integrert i koden. Fordi i world-camera video-filen så klarer pupil_labs å detektere en single-marker. Dette er en marker som ser ut som ett pluss-tegn og som lagres som et bilde. Jeg lagde en helt hvit world-video hvor marker-en er redigert inn i hvert punkt som øyet ser til riktig tid fra eye0 og eye1 videoene (hhv. venstre og høyre øye), med ekstra forsiktighet i at disse er sync-et. Dette er ikke den mest optimale metoden fordi den avhenger av pupil_labs sin evne til å detektere markeren. Ettersom denne vises med en grønn sirkel rundt i world-videoen, mener jeg at denne funker nokså effektivt.
Algoritme og resultat
Nå som kalibreringen har en løsning er det eneste som står igjen å teste eyetracking algoritmen. Det eneste problemet nå er at den sliter med å detektere pupilen og dermed bestemme gaze (gaze; punkt en persons øyne fokuserer på). For å løse dette kan jeg justere parametrene til pupil_labs. Intensitet og max-min pupil size er noen av disse parametrene jeg kan stille på. Et problem med denne metoden er at det kan være vanskelig å finne de beste parametrene, noe som kanskje et nevralt nettverk eller en annen maskinlæringsmodell kunne effektivisert. Likevel klarer jeg å få noen brukbare resultater av dette som vist nedenfor.

Den røde prikken på den hvite skjermen viser hvor algoritmen beregner at øynene ser, og på eye0 (venstre øye-video) ser man hvordan algoritmen fungerer for å detektere pupillen og dermed beregne gaze.
Avslutning og videre tanker
For nå er jeg ferdig å arbeide med prosjektet så dette blir sluttresultatet for meg. Dersom jeg skulle jobbet videre med det ville jeg prøvd å finne en måte å optimalisere alt jeg har gjort for å gi bedre resultater og høyere nøyaktighet. Blogginnlegget er bare en liten snutt av hva jeg har jobbet med og det ligger mye mer ‘kjedelig’ arbeid i mellom resultatene. Dette har vært et veldig spennende prosjekt og har gitt mye mestringsfølelse men også like mye frustrasjon. En stor takk til NNL for at jeg har kunne jobbet hos dem med noe så relevant i den medisinske verden.