Kombinasjon av romlige data og mobilsensorer for bestemmelse av menneskelig aktivitet

Siden antikkens Hellas har menneskelig aktivitet og bevegelser vært et tema for forskning, fra forskning på menneskets fysiologiske natur til informasjonsalderens bruk av teknologi. I dag har datamaskiner, sensorer og programvare blitt kraftig, billige og mer tilgjengelig, noe som er utnyttet i oppgaven for analyse av menneskelig aktivitet.

I masteroppgaven analyseres menneskelige bevegelsesmønstre. Oppgaven er todelt; del 1 omhandler utviklingen av en applikasjon for å loggføre akselerometer- og romlige data med mobiltelefon. I del 2 analyseres innsamlede data, der bevegelsesmønstre klassifiseres til kollektivtransport, kjøring, gange, sykling og løping.

Applikasjon

For å samle inn data ble en enkel app utviklet med React Native rammeverket. React Native er utviklet av Facebook og bygger på React som er et tilsvarende rammeverk rettet mot web. Målet med React Native er  å muliggjøre utvikling av «native» mobile applikasjoner med Javascript kryssplattform, rettet mot både Android og IOS.

De essensielle komponentene i applikasjonen er det innebygde Geolocation-API’et for posisjonsdata og sensor biblioteket React Native Sensor Manager for sensordata.

Figuren viser applikasjonens design. Dataene som samles inn vises fram der, men i teorien trenger ikke selve applikasjonen å vise noe som helst.

app

Dataene fra applikasjonen ble logget som CSV filer i en Digital Ocean droplet, via et API laget med Python og Flask.

Analyse

Et akselerometer er en sensor som måler akselerasjon og tyngdekraften den gjennomgår. Akselerometeret i vanlige smart telefoner måler i 3 akser, X, Y og Z som illustrert i figuren under.

 akselerometer

 

Figurene under illustrerer de innsamlede dataene. Figur 4.1 viser et plott fra alle aksene i akseleromeret. Videre i oppgavene benyttes normen av aksene der tyngdekraften på 9.81 m/s2 er trukket fra, illustrert i figur 4.3. For å måle aktivitet ser vi på utslaget til akselerometerdataene basert på ulike terskelverdier. Figur 4.1 og 4.3 viser et segment som blir klassifisert som «ikke aktivitet», figur 4.4 og 4.6 viser store utslag på akselerometer, som klassifiseres til «hard aktivitet».

12

34

Innsamlingsfrekvensen for akselerometerdata ble satt til hvert 300. millisekund, mens posisjonsdata oppdatert hver gang brukeren forflyttet seg 4 meter. For å slå sammen datakildene ble en enkel interpolasjonsteknikk benyttet. Først ble akselerometerdataene plassert i klasser basert på differanser i segmenter av 10 datapunkter. Disse klassene representerte ro, aktivitet og hard aktivitet. Klassene ble videre tilegnet nærmeste datapunkt for posisjonsdata i tidsdomenet, i en veldig enkel interpolasjon.

6

 

For å gi mening til de nå akselerometerklassifiserte geodataene ble det integrert romlige data til analysen for å benyttet geofencing teknikker.

Følgende data ble hentet fra OpenStreetMap og lagret i en PostGIS database for å bidra til analysen:

  • Busstasjoner
  • Trikkestasjoner
  • T-banestasjoner
  • Togstasjoner
  • T-banelinjer
  • Toglinjer
  • Trikkelinjer

 

Egenskapene til posisjonsdataene ble oppdatert med boolske uttrykk om brukeren var innenfor 10 meter fra buss-, t-bane-, trikk-, t-banestopp eller innenfor 10 meter fra tog-, eller t-banelinjer.

 

Klassifikasjon

5

Figuren over beskriver metodikken for den endelig klassifiseringen av type aktivitet. Klassifiseringen skjer gradvis, der første steg er å skille «moving» fra «stationary»,. Dette er hovedsakelig basert på fart og delvis akselerometer utslag.

Videre klassifiseres «moving» til transport eller aktivitet. I denne delen skal transport uten aktivitet som kjøring og kollektivtransport skilles fra transport ved bevegelse som gange, sykling og løping. Her er akselerometeret viktig. Hvis akselerometeret gir høyere utslag er sannsynligheten for at punktet klassifiseres som aktivitet ved bevegelse høy. Ved høy fart uten utslag på akselerometeret er sannsynligheten tilsvarende høy for at dette regnes som transport.

Fra klassifisering av bevegelse ble klassene transport og aktivitet opprettet. Transport skal klassifiseres videre til kollektivtrafikk eller bilkjøring. Kollektivtrafikk vil si buss, t-bane, trikk og tog. Dette er ganske lett å klassifisere ved å utnytte geografisk data i PostGIS databasen. Om et datapunkt klassifisert som transport er innenfor bufferen til tog- eller t-banelinjer vil delen automatisk bli klassifisert som kollektivtransport. Problemet ligger ved klassifiseringen av buss. Foreløpig finnes det ikke geografisk data for bussruter, men kun stopp. Om det fantes linjer ville det uansett være problematisk med tanke på at bilene kjører akkurat samme ruter. En metode ble laget der segmenter genereres av ”transport”, ”stationary” og ”public transport”, der de fire første og siste datapunktene blir sjekket om de innenfor en buffer 10 meter fra busstopp. En busstur blir derav klassifisert om et segment starter og slutter ved et busstopp.

Siste del av klassifiseringen bestemmer type aktivitet. Gange, sykling eller løping. Her blir datapunktene klassifisert som aktivitet evaluert. Fart og utslag på akselerometeret er grunnlag for denne analysen.

 

Resultater

Eksempel under med tilhørende kart viser et tilfelle der klassifiseringen har fungert svært godt. Loggen inneholder hovedsakelig kollektivtransport, med en overgang fra t-bane til buss, samt avstigning fra buss med noe gange. Av 431 punkter med kollektivtransport som sannhet har 419 punkter blitt riktig klassifisert, noe som tilsvarer 97.2%. Gange har blitt klassifisert 58% riktig, dette er ikke særlig imponerende, men kan forklares ut fra menneskelige feil. I en situasjon der man blir nødt til å løpe til bussen er det ikke blitt tastet inn ny sannhetsverdi. Samlet resultat for klassifiserte punkter ligger i dette datasettet på 89.0% riktig klassifiserte punkter.

7

Konklusjon

Del 1 av problemstillingen innebar å utvikle en applikasjon for innhenting av sensordata fra mobiltelefon. Appen ble utviklet med rammeverket React Native. 162 linjer kode (som lett kan komprimeres) og noe konfigurasjon av biblioteker illustrerer at React Native er effektivt og enkelt rammeverk. Dette kan også sies om applikasjonen som ble utviklet, enkel men effektiv for sitt formål.

Kombinasjonen av romlige data, geolocation- og akselerometerdata har vist seg å være overraskende effektivt. Analysen av datasettene har generelt levert gode resultater, med noen unntak.

 

Oppgaven all kode som er benyttet i prosjektet er tilgjengelig på Github, men er beklageligvis nok kun lesbar av oppgavens forfatter. Lytt også gjerne til denne podcasten https://talkpython.fm/episodes/show/135/capturing-human-moments-with-ai-and-python som desverre kom lenge etter at oppgaven ble levert.

Legg igjen en kommentar

Fyll inn i feltene under, eller klikk på et ikon for å logge inn:

WordPress.com-logo

Du kommenterer med bruk av din WordPress.com konto. Logg ut /  Endre )

Google+-bilde

Du kommenterer med bruk av din Google+ konto. Logg ut /  Endre )

Twitter-bilde

Du kommenterer med bruk av din Twitter konto. Logg ut /  Endre )

Facebookbilde

Du kommenterer med bruk av din Facebook konto. Logg ut /  Endre )

w

Kobler til %s

WordPress.com.

opp ↑

%d bloggere like this: