SAMI KOSKIMÄKI AKTIVITEETIN TUNNISTUS MOBIILILAITTEIDEN KIIHTYVYYSANTUREILLA Diplomityö Tarkastaja: tutkimusjohtaja Alpo Värri Tarkastajat ja aihe hyväksytty Teknisten tieteiden tiedekuntaneuvoston kokouksessa 4. kesäkuuta 2014 TAMPEREEN TEKNILLINEN YLIOPISTO Automaatiotekniikan koulutusohjelma KOSKIMÄKI, SAMI: Aktiviteetin tunnistus mobiililaitteiden kiihtyvyysantureilla Diplomityö, 49 sivua Tammikuu 2015 Pääaine: Signaalinkäsittely Tarkastajat: tutkimusjohtaja Alpo Värri Avainsanat: aktiviteetin tunnistus, kiihtyvyysanturi, hahmontunnistus, älypuhelin Tässä työssä luodaan järjestelmä, joka tunnistaa mobiililaitteen käyttäjän aktiviteetin kiihtyvyysanturin avulla. Tunnistettavat aktiviteetit ovat kävely, juoksu, pyöräily, passiivisuus ja muu liikunta. Tavoitteena on luoda järjestelmä, joka toimii huomaamattomasti mobiililaitteessa ja kerää jatkuvasti tietoa käyttäjän arkipäiväisestä aktiivisuudesta. Koska järjestelmän on tarkoitus toimia taustalla ilman, että käyttäjä erikseen ilmoittaa aktiviteetin alkaneen, on yksi suurimmista haasteista erottaa muut jokapäiväiset liikkeet ja toiminnot kuten mobiililaitteen normaali käyttö tunnistettavista aktiviteeteista. Työssä kiinnitetään erityistä huomiota myös järjestelmän resurssivaatimuksiin mobiililaitteen akkukulutuksen minimoimiseksi. Toteutettu järjestelmä käsittelee mobiililaitteen tarjoamaa kolmiulotteista kiihtyvyysaikasarjaa lyhyissä ikkunoissa. Ikkunasta irrotetaan joukko piirteitä, joiden avulla tilastollinen luokitin tekee alustavan luokituksen aktiviteetista. Tätä tulosta jalostetaan jälkikäsittelyalgoritmilla, joka ottaa huomioon useamman peräkkäisen luokituksen. Luokittimen koulutusdatan keräämiseen kiinnitettiin erityistä huomiota. Toteutettu järjestelmä asettaa kiihtyvyyssensorille erittäin vähän vaatimuksia. Järjestelmän vaatima 15 Hz:n näytteenottotaajuus on saatavilla lähes jokaisessa markkinoilla olevassa kiihtyvyysanturissa. Myös vaadittu ±2 g arvoalue on tarpeeksi pieni useimmille kiihtyvyysantureille. Toteutettu järjestelmä asettaa erittäin vähän vaatimuksia myös sensorin asennolle ja sijainnille käyttäjän vartalossa. Mobiililaitteen asennolla ei ole merkitystä, ja sen voi sijoittaa taskujen lisäksi jopa reppuun tai käsilaukkuun. Järjestelmän vaikutus akun kulutukseen on pieni. Lisäksi järjestelmä toteutettiin taustaprosessina, joka ei häiritse laitteen normaalia käyttöä millään tavalla. Järjestelmä tunnistaa passiivisuuden, kävelyn ja juoksun tarkasti. Koulutettu luokitin saavuttaa näille luokille 99 prosentin tunnistustarkkuuden työssä kerätyllä datajoukolla, joka sisältää 12 tuntia kävelyä, 3 tuntia juoksua ja 4,5 tuntia pyöräilyä yhteensä kahdek- II salta eri henkilöltä. Myös pyöräilyn tunnistustarkkuus on hyvä, mutta asettaa mobiililaitteen sijainnille erityisvaatimuksia. Nämä erityisvaatimukset huomioiden myös pyöräilyn tunnistustarkkuus on lähes 98 prosenttia. III TAMPERE UNIVERSITY OF TECHNOLOGY Master’s Degree Programme in Automation Technology KOSKIMÄKI, SAMI: Activity detection using accelerometers in mobile devices Master of Science Thesis, 49 pages January 2015 Major: Signal Processing Examiners: Associate professor Alpo Värri Keywords: activity detection, accelerometer, pattern recognition, smartphone This thesis reports the creation of a system that uses accelerometer to recognize mobile device user’s activity. The recognized activities are walking, running, cycling, passiveness and other physical exercise. The purpose of the system is to work unnoticed in a mobile device and collect information on user’s everyday activities. As the system is meant to work in the background, without the user specifically indicating that an activity has started, one of the greatest challenges in creating the system is to separate other ordinary motions and actions such as the normal usage of the mobile device from the before mentioned physical activities. Special attention was paid to the system resource requirements to minimize its effect on the battery usage in the mobile device. The executed system processes the tridimensional acceleration time series retrieved from the mobile device in short time windows. From a time window, the system extracts a group of characters that a statistical classifier then analyses to determine a preliminary classification for the activity. This result is further refined with a post processing algorithm that takes into account several consecutive classifications. The training data for the classifier was gathered carefully in order to assure its comprehensiveness. The resulting system imposes very few requirements for an accelerometer. The system requires a sampling frequency of 15Hz which is available in almost every accelerometer in the market. The required value range of ±2g is sufficiently small for most of the accelerometers as well. The executed system also sets very little requirements for the position of the sensor and for its location on the user’s body. The position of the mobile device is irrelevant and the users can place the device not only in their pockets but even in their backpacks or handbags. The system has only a small effect on the battery usage. In addition to this, the system was executed as a background process that does not affect the normal usage of the device in any way. IV The system recognizes passiveness, walking and running precisely. The trained classifier achieves 99 percent recognition accuracy in these classes with the collected data set that includes 12 hours of walking, 3 hours of running and 4.5 hours of cycling in total from eight different people. It also recognizes cycling well but, unlike the other activities, cycling posits requirements for the location of the mobile device during the activity. When these requirements are met, the recognition accuracy in cycling is almost 98 percent. V ALKUSANAT Työn tekninen toteutus tehtiin osana asiakasprojektia Vincit Oy:ssä vuosina 2011–2012. Työn kirjallinen osuus valmistui hyvin hitaasti seuraavien kolmen vuoden aikana. Kiitos siitä, että työ yleensäkin valmistui, kuuluu tyttöystävälleni Merja Koski-Sipilälle ja työkaverilleni Juha Riipille, jotka potkivat minua eteenpäin tasaisin välein. Osa kiitoksesta kuuluu myös ahdistaville unilleni, jotka muistuttivat minua keskeneräisestä koulutuksestani. Haluan kiittää myös työn ohjaajaa, tutkimusjohtaja Alpo Värriä. Hän oli tavoitettavissa aina kun tarvitsin neuvoja tai palautetta ja vastasi kysymyksiini nopeasti ja tarkasti. Tampereella, 25.1.2015 Sami Koskimäki VI SISÄLLYS 1 2 3 4 5 6 Johdanto .................................................................................................................... 2 Teoreettinen tausta .................................................................................................... 4 2.1 Hahmontunnistusjärjestelmät ............................................................................. 4 2.2 Kiihtyvyysanturit ................................................................................................ 5 2.2.1 Toimintaperiaate ......................................................................................... 6 2.2.2 Mobiililaitteiden kiihtyvyysanturit ............................................................. 6 2.3 Mittausdatan esikäsittely .................................................................................... 7 2.3.1 Uudelleennäytteistys ................................................................................... 8 2.3.2 Projektio orientaatioriippumattomaan avaruuteen ...................................... 9 2.4 Piirteet .............................................................................................................. 10 2.4.1 Aikatason piirteet ...................................................................................... 10 2.4.2 Taajuustason piirteet ................................................................................. 11 2.5 Luokittimet ....................................................................................................... 12 2.5.1 MLP-neuroverkko ..................................................................................... 13 2.5.2 Tukivektorikone ........................................................................................ 14 2.5.3 Binääripäätöspuu ....................................................................................... 15 Koulutusdata ........................................................................................................... 17 3.1 Lähestymistapojen vertailua ............................................................................. 17 3.2 Hyvä koulutusdata ............................................................................................ 19 3.3 Keräysjärjestelmä ............................................................................................. 20 3.4 Keräysjärjestelyt ............................................................................................... 21 3.5 Kerätty data ...................................................................................................... 23 Toteutettu järjestelmä .............................................................................................. 26 4.1 Järjestelmän rakenne ........................................................................................ 26 4.2 Esikäsittely ....................................................................................................... 27 4.2.1 Uudelleennäytteistys ................................................................................. 27 4.2.2 Orientaatioriippuvuuden poisto................................................................. 28 4.3 Piirteiden valinta............................................................................................... 28 4.4 Luokitus ............................................................................................................ 34 4.4.1 Tukivektorikone ........................................................................................ 34 4.4.2 MLP-neuroverkko ..................................................................................... 36 4.4.3 Binääripäätöspuu ....................................................................................... 36 4.4.4 Luokittimen valinta ................................................................................... 37 4.5 Temporaalinen jälkikäsittely ............................................................................ 37 4.6 Resurssien hallinta ............................................................................................ 39 Tulokset ja niiden tarkastelu ................................................................................... 40 5.1 Tarkkuus arkipäiväisessä käytössä ................................................................... 40 5.1.1 Ensimmäisen koehenkilön tulokset ja analyysi......................................... 40 5.1.2 Toisen koehenkilön tulokset ja analyysi ................................................... 43 5.2 Akun kulutus arkipäiväisessä käytössä ............................................................ 46 Yhteenveto .............................................................................................................. 48 VII Lähteet ............................................................................................................................. 50 VIII LYHENTEET JA MERKINNÄT Lyhenteet DC FFT GPS IIR MCR MLP RBF SVM WLAN ZCR engl. Direct Current, tasavirta engl. Fast Fourier Transform, nopea algoritmi diskreetin Fouriermuunnoksen laskemiseen engl. Global Positioning System, maailmanlaajuinen paikallistamisjärjestelmä engl. Infinite Impulse Response, suodatintyyppi, jonka impulssivaste on äärettömän pitkä engl. Medium Crossing Rate, taajuus jolla signaalin arvo siirtyy keskiarvon toiselle puolelle engl. Multilayer Perceptron, neuroverkkotyyppi, joka koostuu useasta tasosta neuroneita engl. Radial Basis Function, kantafunktio, jonka arvo riippuu etäisyydestä origoon engl. Support Vector Machine, tukivektorikone, lineaarinen luokitinmalli engl. Wireless Local Area Network, langaton lähiverkkoteknologia engl. Zero Crossing Rate, taajuus jolla signaalin arvo siirtyy nollan toiselle puolelle Muuttujat ja funktiot ( ) ( ) ( ) Φ ̂ ( ) Muuttujien h ja v välinen korrelaatio Muuttujien h ja v välinen kovarianssi Signaalin S entropia Muuttujan h keskihajonta Kernelifunktio Arvioitu maan vetovoimavektori Kiihtyvyyden vaakasuuntainen komponentti Kiihtyvyyden pystysuuntainen komponentti Aikasarjan n:s kiihtyvyysvektori 2 1 JOHDANTO Mobiililaitteiden ja mobiilipalveluiden kontekstitietoisuus (engl. context awareness) on ajankohtainen aihealue, johon kehitetään jatkuvasti lisää sovelluksia. Kontekstilla tarkoitetaan tässä yhteydessä esimerkiksi käyttäjän aktiviteettia (mitä tekee), sijaintia, tunnetilaa tai ympäristöä. Kontekstitietoinen palvelu käyttää kontekstitietoa hyväkseen tarjotakseen palvelun käyttäjälle tilanteeseen (kontekstiin) paremmin sopivaa tietoa. Mobiililaitteen ja sen käyttäjän sijaintitiedon hyödyntäminen on hyvä esimerkki kontekstitietoisesta sovelluksesta. Käyttäjän sijainnin automaattinen määrittäminen on helppoa mobiililaitteista nykyään lähes poikkeuksetta löytyvän GPS-anturin ansiosta. Mobiililaitteissa on usein muitakin sensoreita, joita voidaan käyttää kontekstin havainnointiin, kuten kiihtyvyysanturi, kompassi, mikrofoni, WLAN-adapteri ja bluetoothadapteri. Esimerkiksi WLAN-yhteyden avulla voidaan yrittää päätellä, onko käyttäjä lähellä rakennusta vai ei, koska WLAN-yhteyksiä on yleensä vain rakennusten sisällä. Mikrofonin tallentamasta äänisignaalista voidaan yrittää päätellä onko käyttäjä ihmisjoukossa vai yksin, koska ihmisjoukossa usein kuuluu monen ihmisen puhetta samaan aikaan. Käyttäjän aktiviteetin tunnistamiseen soveltuu parhaiten kiihtyvyysanturi, joka tallentaa hyvin yksityiskohtaista tietoa käyttäjän liikkeistä. Käyttäjän aktiviteettia voidaan käyttää hyväksi monessa sovelluksessa. Yksinkertaisimmillaan sovellus voi pitää kirjaa käyttäjän aktiviteetista, jotta käyttäjä voi seurata liikuntansa määrää. Sovellus voi tarjota mahdollisuuden toimintojen automatisointiin aktiviteetin perusteella. Käyttäjä voi esimerkiksi valita, että laitteen musiikkisoitin menee automaattisesti päälle, kun käyttäjä lähtee lenkille ja alkaa juosta. Tässä työssä keskitytään käyttäjän aktiviteetin tunnistamiseen kiihtyvyysanturin avulla. Tunnistettavat aktiviteetit ovat kävely, juoksu, pyöräily, passiivisuus ja muu liikunta. Nämä ovat yleisiä jokapäiväisiä aktiviteetteja, ja tavoitteena on luoda järjestelmä, joka toimii huomaamattomasti mobiililaitteessa, ja jatkuvasti kerää tietoa käyttäjän arkipäiväisestä aktiivisuudesta. Koska järjestelmän on tarkoitus toimia taustalla ilman, että käyttäjä erikseen ilmoittaa aktiviteetin alkaneen, on yksi suurimmista haasteista erottaa muut jokapäiväiset liikkeet ja toiminnot, kuten mobiililaitteen normaali käyttö, tunnistettavista aktiviteeteista. Työssä kiinnitetään erityistä huomiota myös järjestelmän resurssivaatimuksiin mobiili- 3 laitteen akkukulutuksen minimoimiseksi ja täten järjestelmän huomaamattomuuden maksimoimiseksi. Aktiviteetin tunnistusta kiihtyvyysanturin avulla on tutkittu laajasti. Useimmissa tutkimuksissa on kuitenkin käytetty montaa kiihtyvyysanturia, jotka on sijoitettu tiettyihin asentoihin eri puolille käyttäjän vartaloa. Tässä työssä luotava järjestelmä on riippumaton sensorin (eli mobiililaitteen) asennosta ja sijainnista vartalossa. Työn tuloksena luodaan ohjelma, jota voidaan ajaa taustalla mobiililaitteissa jatkuvasti ilman merkittävää vaikutusta akun kulutukseen. Järjestelmä tunnistaa valitut aktiviteetit suurella tarkkuudella ja osaa olla reagoimatta mobiililaitteen normaaliin käyttöön. Tunnistusjärjestelmä toteutetaan yleiskäyttöisenä Java-kirjastona, joka ei tee oletuksia alla olevasta käyttöjärjestelmästä tai laitteistosta. Teoriassa järjestelmän voi integroida mihin tahansa laitteeseen, jolle on saatavilla Java 6 -yhteensopiva Java-virtuaalikone. Työssä kuitenkin käytetään android-käyttöjärjestelmällä varustettuja mobiililaitteita niiden helpon saatavuuden, halvan hinnan ja monimuotoisuuden vuoksi. 4 2 TEOREETTINEN TAUSTA 2.1 Hahmontunnistusjärjestelmät Tässä työssä luotava järjestelmä on pohjimmiltaan hahmontunnistusjärjestelmä. Tässä luvussa käydään lyhyesti läpi hahmontunnistusjärjestelmien perusrakenne ja tärkeimmät osat. Seuraavat aliluvut keskittyvät tarkemmin tämän työn kannalta oleellisiin hahmontunnistusjärjestelmän osiin. Hahmontunnistus on operaatio, jossa joukko kohteesta tehtyjä havaintoja sijoitetaan oikeaan luokkaan. Tässä työssä havainnot ovat kiihtyvyysanturilta saatuja näytearvoja ja mahdolliset luokat ovat aktiviteetit kävely, juoksu, pyöräily, passivisuus, ja muu liikunta. Kuvassa 1 on esitetty hahmontunnistusjärjestelmän yksinkertaistettu rakenne. Sensori raakadata (havainnot) Esikäsittely esikäsitelty data Piirteenirrotus piirrevektori Luokitus luokitustulos Jälkikäsittely lopullinen luokka Kuva 1. Hahmontunnistusjärjestemän rakenne 5 Sensori voi olla mikä tahansa laite, joka havainnoi kohdetta ja tarjoaa siitä mittauksia. Sensori voi olla esimerkiksi kamera, jonka tarjoamat mittaukset ovat kuvia kohteesta. Tämän työn tapauksessa sensori on mobiililaitteen kiihtyvyysanturi, joka tarjoaa havaintoja kiihtyvyysarvojen muodossa laitteen ja siten myös sen kantajan liikkeistä. Esikäsittelyssä sensorin tarjoamaa mittausdataa käsitellään siten, että siitä on helpompi irrottaa kiinnostavia piirteitä. Kohinan suodatus ja segmentointi ovat yleisiä esikäsittelyoperaatioita. Segmentointi tarkoittaa luokiteltavan objektin erottamista muusta datasta. Jos esimerkiksi auton kuvasta on tarkoitus tunnistaa rekisterinumero, segmentointi etsii kuvasta rekisterikilven ja erottaa sen taustasta. Tässä työssä esikäsittely koostuu datan näytetaajuuden alentamisesta ja sensorin asennon vaikutusten poistamisesta. Molemmissa operaatioissa poistetaan raakadatasta epäoleellista tietoa. Piirteenirrotus (engl. feature extraction) on operaatio, jossa mittausdatasta irrotetaan piirteitä, jotka kuvaavat luokiteltavia objekteja mahdollisimman hyvin. Mittausdata on usein moniulotteista ja sisältää paljon sovelluksen kannalta ylimääräistä informaatiota. Esimerkiksi kuva voi helposti sisältää miljoonia näytearvoja. Piirteenirrotuksen yksi päätarkoitus onkin alentaa mittausdatan dimensiota ja siten yksinkertaistaa mittausdataa. Mittausdatasta muodostettua piirteiden joukkoa kutsutaan piirrevektoriksi. Itse piirteet ja niiden irrotusmenetelmät riippuvat paljon sovelluksesta ja käytettävästä luokittimesta. Jos järjestelmän tarkoitus on esimerkiksi luokitella ihmisiä miehiksi ja naisiksi, hyviä piirteitä voisivat olla pituus, paino ja rinnanympärys. Yksinkertaistettuna tarkoitus on muokata mittausdata muotoon, joka tekee luokittimen työn mahdollisimman helpoksi. Luokitin sijoittaa piirrevektorin todennäköisimpään luokkaan ja siten muodostaa alustavan arvion luokasta, johon sensorin tarjoamat havainnot kuuluvat. Luokitin ei yleensä ota huomioon kuin yhden piirrevektorin, eikä siksi usein pysty yksin muodostamaan optimaalista luokitustulosta. Jälkikäsittelyssä voidaan ottaa huomioon useampi luokitustulos ja parantaa tarkkuutta ottamalla huomioon tulosten keskinäiset riippuvuussuhteet. Oletetaan esimerkiksi, että luokitin on tuottanut aktiviteettisekvenssin {P, J, P, J, P, J}, missä P trakoittaa pyöräilyä, J juoksua ja jokainen tapahtuma on viiden sekunnin mittainen. Voidaan helposti päätellä, että henkilö ei todennäköisesti ole juossut pyörän kanssa viiden sekunnin välein, vaan kyseessä on luokitusvirhe. Kun luokittimen suorituskyvystä on hyvä käsitys, voidaan virhe yrittää korjata. 2.2 Kiihtyvyysanturit Tässä työssä kehitettävän hahmontunnistusjärjestelmän sensorina toimii kiihtyvyysanturi. Kiihtyvyysanturi on laite, joka mittaa kappaleen kiihtyvyyttä eli nopeuden muutosta tietyssä ajassa. Tässä luvussa esitellään kiihtyvyysanturien toimintaperiaate ja perehdy- 6 tään mobiililaitteiden kiihtyvyysantureiden dataformaattiin, ominaisuuksiin ja rajoituksiin. 2.2.1 Toimintaperiaate Kiihtyvyysanturi mittaa niin sanottua oikeaa kiihtyvyyttä (engl. proper acceleration). Levossa anturin antama lukema on noin 1 g eli noin 9,81 ylöspäin johtuen maan ) tai kolmen ( ) vetovoimasta. Anturit mittaavat kiihtyvyyttä yleensä kahden ( toisiaan vastaan kohtisuoran akselin suhteen omassa paikallisessa koordinaatistossaan. Kiihtyvyysanturin voidaan ajatella koostuvan kitkavaimennetusta massasta, joka on kiinnitetty jousen päähän. Kun anturin runko liikkuu, jousi venyy. Mittaamalla jousen venymä saadaan laskettua massaan kohdistuva voima ja sen avulla kiihtyvyys. Käytännön antureissa käytetään pietsosähköisiä, pietsoresistiivisiä tai kapasitiivisia komponentteja, jotka muuttavat mekaanisen liikkeen sähköiseksi signaaliksi. Kiihtyvyysantureiden antamissa lukemissa on anturin laadusta riippuen eri määrä virhettä. Yleensä anturin jokaisella akselilla on sekä vääristymää (engl. bias) että skaalavirhettä (engl. scale error). Vääristymä on vakiosuuruinen virhe kiihtyvyyslukemassa ja skaalavirhe on suoraan verrannollinen kiihtyvyyteen. 2.2.2 Mobiililaitteiden kiihtyvyysanturit Nykyaikaisista älypuhelimista löytyy lähes poikkeuksetta kiihtyvyysanturi. Älypuhelimien kiihtyvyysanturit on tarkoitettu pääasiassa puhelimen asennon tunnistamiseen ja pelien ohjaamiseen, eikä tieteelliseen, tarkkuutta vaativaan käyttöön. Tämän vuoksi mittauksien laatu on usein heikko. Mobiililaitteiden käyttöjärjestelmien ohjelmointirajapinnan kautta kiihtyvyysantureilta ). Käytännössä saatava mittaus on yleensä kolmiulotteinen reaalilukuvektori ( näytteiden arvoalueet ovat kuitenkin kvantisoituneet, koska anturin A/D-muunnin tuottaa 8–24 bittisiä kokonaislukuja. Käytännön kokeilujen perusteella näytteiden bittisyvyys on useimmissa älypuhelimissa enintään 6–8 bittiä. Antureiden näytetaajuudet vaihtelevat paljon. Mobiililaitteesta ja käyttöjärjestelmästä riippuen käytössä olevat näytetaajuudet ovat väliltä 10–100 Hz. Myös kiihtyvyysantureiden arvo-alue on käytännössä aina rajoitettu välille ±2 g. Taulukossa 1 on listattu tässä työssä käytettyjen älypuhelimien kiihtyvyysantureiden keskimääräiset näytetaajuudet, näytetaajuuksien keskihajonnat ja kiihtyvyysarvojen arvoalueet. Laitteille, jotka tarjosivat useamman näytetaajuuden, suurin on esitetty. 7 Taulukko 1. Mobiililaitteiden näytetaajuudet ja niiden keskihajonnat Mobiililaite HTC Desire HTC Desire Z Samsung Galaxy Tab Google Nexus S ZTE Blade Näytetaajuuden keskiarvo 49 Hz 60 Hz 113 Hz 50 Hz 12 Hz Näytetaajuuden keskihajonta 8.4 Hz 2.9 Hz 9.3 Hz 1.4 Hz 4.2 Hz Arvoalue ±2 g ±2 g ±2 g ±2 g ±2 g Taulukon 1 arvot saatiin tallentamalla jokaisen laitteen kiihtyvyyssignaalia 1000 näytteen mittainen pala ja laskemalla peräkkäisten näytteiden aika-arvojen erotuksien käänteisarvojen (näytetaajuus) keskiarvo ja keskihajonta. Näytteen tallennuksen aikana laitetta ravistettiin voimakkaasti muutaman sekunnin ajan, jolloin kiihtyvyysarvot leikkaantuivat ylä- ja alapäästä ja näin arvo-alue saatiin määritettyä. Kuvassa 2 on esitetty HTC Desire -laitteen näytetaajuushistogrammi. Kuva 2. HTC Desire -laitteen näytetaajuushistogrammi 2.3 Mittausdatan esikäsittely Kiihtyvyysdatan epätasavälisyys ja riippuvuus laitteen orientaatiosta ovat seikkoja, jotka vaikeuttavat datan analysoimista ja piirteiden irrotusta. Tässä luvussa esitellään me- 8 netelmät sekä näytetaajuuden tasoittamiseen eli uudelleennäytteistämiseen (engl. resampling) että orientaatioriippuvuuden poistamiseen. 2.3.1 Uudelleennäytteistys Kuten taulukosta 1 ja kuvasta 2 nähdään, käytettävissä oleva kiihtyvyysdata saattaa laitteesta riippuen olla hyvinkin epätasavälistä. Datan epätasavälisyys vaikeuttaa analysointia ja aiheuttaa virhettä varsinkin taajuusspektrin estimointiin. Epätasavälisesti näytteistetylle datalle on kehitetty useita spektrin estimointimenetelmiä, mutta ne ovat laskennallisesti huomattavasti raskaampia kuin tasavälisen datan kanssa yleisesti käytetty nopea Fourier-muunnos (FFT). Yksinkertaisin ja laskentatehokkain tapa tasavälistää data on käyttää lineaarista interpolointia. Kuvassa 3 on esitetty lineaarista interpolointia käyttävän uudelleennäytteistäjän rakenne. Sensori epätasavälinen data Interpolointi tasavälinen data Alipäästösuodatus kaistarajoitettu data Alinäytteistys data jatkokäsittelyyn Kuva 3. Uudelleennäytteistyksen rakenne Ensin sensorilta tuleva epätasavälinen näytedata tasavälistetään interpoloimalla lineaarisesti. Tasavälisen datan näytetaajuus täytyy Nyquistin teoreeman nojalla olla vähintään kaksi kertaa suurempi kuin epätasavälisen datan suurin taajuus, jotta laskostumista (engl. aliasing) ei tapahtuisi. Tämä taajuus voidaan arvioida esimerkiksi koulutusdatasta. Koulutusdataa käsitellään myöhemmin luvussa 3. Lisäksi näytetaajuuden täytyy olla halutun ulostulonäytetaajuuden moninkerta N, jotta alinäytteistys olisi yksinkertaista. 9 Näin saatu ylinäytteistetty tasavälinen data alipäästösuodatetaan, jotta laskostumista ei esiinny myöskään alinäytteistysvaiheessa. Alipäästösuodatus voidaan suorittaa esimerkiksi toisen asteen IIR (Infinite Impulse Response) -suodattimella. IIR-suodattimet ovat yksinkertaisia toteuttaa ja hyvin laskentatehokkaita. Viimeisessä vaiheessa alipäästösuodatetusta datasta yksinkertaisesti valitaan joka N:s näyte. 2.3.2 Projektio orientaatioriippumattomaan avaruuteen Suurin ongelma mobiililaitteen kiihtyvyysdatassa hahmontunnistuksen kannalta on datan riippuvuus laitteen orientaatiosta. Data ja siitä lasketut piirteet siis riippuvat laitteen asennosta. Tämä vaikeuttaa luokittimen koulutusta, koska koulutusdataa täytyisi kerätä erikseen laitteen kaikista orientaatioista. Suurimmassa osassa aikaisempia tutkimuksia tämä ongelma on kierretty kiinnittämällä sensori tiettyyn asentoon [1–9][12–13]. Yksi vaihtoehto on käyttää vain orientaatioriippumattomia piirteitä summaamalla data yksiulotteiseksi [10]. Poistamalla orientaatiotieto kokonaan menetetään kuitenkin paljon oleellista informaatiota. Laitteen asento on mahdollista päätellä vetovoimavektorin suunnasta. Kiihtyvyysnäytteiden keskiarvo ajan yli antaa hyvän arvion vetovoiman suunnasta. Mizell esitteli menetelmän, jolla kolmiulotteinen kiihtyvyysdata voidaan projisoida kaksiulotteiseen orientaatioriippumattomaan avaruuteen [14]. Yang et al. käyttivät tätä menetelmää onnistuneesti töissään [10][11]. Projektion vaatimat matemaattiset operaatiot on esitetty kaavoissa (1)–(5). ∑ ( ̂ ‖ ‖ (1) ̂ ‖ ̂‖ ̂ ‖ ‖ ) (2) ( )〉 〈̂ ‖ ( ) ( ) [ ] ̂ ‖ (3) (4) (5) Olkoon ( ) kolmiulotteinen kiihtyvyysvektori ajanhetkellä . Silloin arvioitu vetovoimavektori ajanhetkellä on ̂. Kokonaisluku N määrää liukuvan keskiarvotusikkunan pituuden. Yang et al. käyttivät N:lle arvoa, joka vastasi neljää sekuntia [11]. Mitä pidempi N, sitä tarkempi arvio, mutta hitaampi reaktionopeus orientaation vaihteluihin. Pystysuuntainen, eli vetovoimavektorin ̂ suuntainen, kiihtyvyyskomponentti saadaan 10 helposti kiihtyvyysvektorin ( ) ja vetovoimavektorin ̂ pistetulona. Vektorin ( ) vektoria vasten kohtisuora komponentti kuvaa vaakasuuntaista kiihtyvyyttä. Vektorin suuntaa vaakatasossa ei pystytä määrittämään, vaan on aina vektoreiden ̂ ja ( ) virittämällä tasolla. Vaakasuuntaiseksi kiihtyvyyskomponentiksi voidaan valita vektorin pituus . Orientaatioprojektion tuloksena on siis jokaiselle ajanhetkelle vektori . Tästä eteenpäin tässä työssä symbolilla ( ) viitataan kaavan (5) vektoriin. 2.4 Piirteet Esikäsittelyvaiheesta saatava kaksiulotteinen orientaatioriippumaton kiihtyvyysdata sisältää vielä suuren määrän informaatiota, josta osa on hyödytöntä kohinaa. Kiihtyvyysdatasta voidaan irrottaa suuri määrä erilaisia piirteitä. Monet piirteet kuvaavat kuitenkin samaa ilmiötä, osa on epäoleellista tässä työssä tunnistettavien luokkien kannalta ja osa on yksinkertaisesti liian raskaita laskettavaksi mobiililaitteessa. Oikein valitut piirteet ovat järjestelmän suorituskyvyn kannalta koulutusdatan jälkeen tärkein osa. Valtavasta potentiaalisesta piirrejoukosta parhaiden piirteiden valinta olisi todella hidas operaatio. Onneksi potentiaalisten piirteiden rajaukseen saadaan apua aikaisemmista tutkimuksista. Piirteet voidaan jakaa karkeasti aikatason ja taajuustason piirteisiin. Aikatason piirteet irrotetaan suoraan kiihtyvyysdatasta, ja ne ovat usein yksinkertaisesti laskettavissa. Taajuustason piirteet vaativat kiihtyvyysdatan muuntamista taajuustasoon FFT:n avulla. Seuraavissa aliluvuissa esitellään kirjallisuudessa hyödyllisiksi todetut piirteet. Useimmat esiteltävät piirteet voidaan laskea molemmille kiihtyvyyskomponenteille ( ja ) erikseen, osaan taas tarvitaan molemmat komponentit. Esiteltäväksi on valittu piirteet, jotka ovat aikaisemmissa tutkimuksissa yleisimmin käytettyjä. Usein valittu piirrejoukko on ollut hyvin samantyylinen. Poikkeuksina tästä pääsäännöstä Maurer et al. keskittyivät erityisesti aikatason piirteisiin [7]. Lester et al. tutkivat tavallista laajempaa joukkoa taajuustason piirteitä. Piirrejoukko sisälsi muun muassa kepstri (engl. cepstrum) -komponentteja ja kaistapäästösuodattimien ulostulotehoja. [6] Taajuustason piirteet on yleensä laskettu FFT:n avulla, mutta Mäntyjärvi et al. käyttivät työssään [5] poikkeuksellisesti wavelet-muunnosta. 2.4.1 Aikatason piirteet Keskiarvo eli näyteikkunan DC-komponentti on yksinkertaisin ja käytetyin piirre. Keskiarvon voidaan ajatella esittävän myös näyteikkunan histogrammin sijaintia. Keskiarvopiirrettä on käytetty monissa aikaisemmissa tutkimuksissa [1–4][5–13]. Varianssi kuvaa liikkeen intensiteettiä ja on hyödyllinen erottamaan kevyet aktiviteetit, kuten kävely, intensiivisistä, kuten juoksu. Varianssi on myös näyteikkunan histogrammin leveyden mitta. Myös varianssia on hyödynnetty useissa aikaisemmissa tutkimuk- 11 sissa [2][6-9][11][13]. Monesti on käytetty keskihajontaa, joka kuvaa samaa piirrettä, ja on itse asiassa varianssin neliöjuuri [1][3][10–12]. Vinous (engl. skewness) on histogrammin muotoa kuvaava käsite. Vinous on suuri, jos suuri osa arvoista on joko keskiarvoa suurempia tai pienempiä. Vinoutta on käytetty usein tutkimuksissa, joissa yksi tunnistettavista luokista on portaissa kävely, koska se aiheuttaa pystysuuntaisen kiihtyvyyden histogrammiin vinoutta. [1][2][9] Huipukkuus (engl. kurtosis) on vinouden tavoin histogrammin muotoa kuvaava piirre. Terävähuippuinen histogrammi antaa positiivisen huipukkuusarvon ja litteähuippuinen negatiivisen. Huipukkuutta on käytetty usein samoissa tutkimuksissa kuin vinoutta. [1][2][9] Persentiili (engl. percentile) on histogrammista laskettava piirre, joka kuvaa arvojen kertymää tietyn arvon alapuolelle. Esimerkiksi 5. persentiili on sellainen arvo että sitä pienempiä arvoja on histogrammissa 5 %. Tunnetuin on 50. persentiili, eli mediaani. Käyttämällä useampaa persentiiliä saadaan histogrammin muoto kuvattua halutulla tarkkuudella. Persentiilejä on käytetty onnistuneesti piirteinä muutamissa tutkimuksissa [2][9]. Kwapisz et al. käyttivät välille [0, 1] skaalattuja persentiilejä, jotka kuvaavat vain histogrammin muodon eivätkä lainkaan sijaintia tai skaalaa [12]. Nollan ylitystaajuus (ZCR) ja keskiarvon ylitystaajuus (MCR) ovat yksinkertaisia aikatason signaalista helposti laskettavia piirteitä, jotka riippuvat kuitenkin vahvasti signaalin taajuussisällöstä. ZCR on taajuus, jolla signaalin arvo muuttuu negatiivisesta positiiviseksi tai positiivisesta negatiiviseksi. MCR puolestaan on taajuus, jolla signaalin arvo siirtyy keskiarvon toiselta puolelta toiselle. MCR:ää ja ZCR:ää on käytetty joissain töissä taajuuspiirteiden laskentatehokkaina vaihtoehtoina [7][10][11]. Korrelaatio erisuuntaisten kiihtyvyyskomponenttien välillä auttaa tunnistamaan aktiviteetit, jotka sisältävät liikettä useammassa suunnassa. Bao ja Intille käyttivät korrelaatiota erottamaan normaalin kävelyn portaissa kävelystä [3]. Korrelaatio voidaan määritellä kovarianssin avulla kaavassa (6) esitetyllä tavalla. [3][4][10][11] ( ) ( ) (6) 2.4.2 Taajuustason piirteet Spektrin piikkitaajuus eli se taajuus, jota näyteikkuna sisältää eniten, on hyödyllinen piirre, joka auttaa erottamaan toisistaan jaksollisia aktiviteetteja, kuten kävely ja juoksu. Kävelyn piikkitaajuus on yleensä pienempi kuin juoksun. Spektrin piikkitaajuus voi- 12 daan arvioida helposti ja laskennallisesti suhteellisen tehokkaasti FFT:n avulla. Spektrin piikkitaajuutta on käytetty yllättävän vähän, vaikka se on intuitiivisesti erinomainen piirre [2][8][11]. Pärkkä et al. käyttivät piirteenä myös spektrin piikkitehoa, joka on spektrin piikkitaajuuden teho [2]. Spektrin energiat eri taajuuskaistoilla on yksi eniten käytetyistä piirteistä. Ihmisen luonnolliset aktiviteetit sijoittuvat taajuuskaistan alapäähän (alle 4 Hz). Korkeataajuiset komponentit, kuten ajoneuvon tärinä, sijoittuvat spektrin yläpäähän ja voidaan helposti erottaa ihmisen liikkeistä [11]. Lisäksi eri aktiviteetit sijaitsevat usein omilla toisistaan erotettavilla kaistoilla. Spektrin energia-arvot voidaan laskea FFT:n neliöityjen komponenttien summana halutulla taajuuskaistalla. [2][6][9][11][13] Spektrin energiasuhdeluvut ovat spektrin energioiden suhteita toisiinsa. Usein ei ole kiinnostavaa tietää taajuuskaistan absoluuttista energiaa, vaan kaistan energian suhde johonkin toiseen kaistaan riittää. Esimerkiksi matalien (alle 4 Hz) taajuuksien suhde korkeisiin (yli 4 Hz) voi olla hyvä piirre erottamaan ihmisen aktiviteetit ajoneuvossa istumisesta. Lisäksi energiasuhdelukuja käyttämällä piirrevektorin pituutta voidaan usein lyhentää, joka puolestaan vähentää luokittimen työtä. [11] Spektrin entropia kuvaa spektrin taajuuksien hajontaa. Spektri, jonka entropia on pieni, sisältää paljon muutamaa taajuutta. Jos spektrin entropia on suuri, spektri sisältää useita merkittäviä komponentteja eri taajuuksilla. Entropian avulla voidaan erottaa samalla taajuuskaistalla olevia aktiviteetteja toisistaan. Esimerkiksi pyöräily saattaa tuottaa hyvin siniaaltomaisen pystysuuntaisen taajuuskomponentin ja siten pienen entropian. Pyöräily voidaan mahdollisesti erottaa samantaajuisesta kävelystä, koska kävely tuottaa harmonisia taajuuskomponentteja myös muille taajuuksille, ja täten nostaa entropiaa. Spektrin entropia on todettu hyödylliseksi useissa aikaisemmissa tutkimuksissa. Spektrin entropia on määritelty signaalin tehospektrin funktiona kaavassa (7) esitetyllä tavalla. [4][6][8][9][11] ( ) 2.5 ∑ ( ) ∑ ( ( )) ( ) (7) Luokittimet Kun piirrevektori on luotu, se syötetään luokittimelle, joka päättää joidenkin kriteerien perusteella, mihin luokkaan vektori kuuluu. Yleensä mallinnettava ilmiö on monimutkainen ja mitään intuitiivista ja yksinkertaista kuvausta piirreavaruudesta luokkajoukkoon ei ole olemassa. Tällaisten ongelmien ratkaisemiseen on kehitetty useita erilaisia luokittimia, jotka pystyvät esimerkkien avulla luokittamaan piirrevektorin todennäköiseen luokkaansa. Luokittimille annetaan tavalla tai toisella käyttöön joukko esimerkki- 13 piirrevektoreita, joiden oikea luokka tiedetään. Luokitin osaa sijoittaa uudet, ennestään tuntemattomat piirrevektorit luokkaan, jonka esimerkkivektorit muistuttavat eniten uutta vektoria. Esimerkkien antamista luokittimelle kutsutaan luokittimen kouluttamiseksi ja tällaista koulutusprosessia ohjatuksi oppimiseksi. Koulutuksen yksityiskohdat riippuvat luokittimesta, mutta prosessi on pääpiirteittäin samanlainen. Ensin täytyy kerätä koulutusdata, joka sisältää esimerkkejä kaikista tunnistettavista luokista. Lisäksi tarvitaan erillinen testidata, jolla luokittimen suorituskykyä voidaan mitata. Testidata täytyy valita siten, että sillä on mahdollisimman vähän riippuvuuksia koulutusdataan. Oletetaan esimerkiksi, että piirrevektori sisältää jotain mittauksia ihmisestä. Jotta luokitin toimisi henkilöstä riippumatta, koulutusdataa täytyy kerätä usealta henkilöltä. Nyt testidata voitaisiin valita siten, että jokaiselta koulutushenkilöltä valitaan satunnaisesti osa näytteistä testidataan. Paljon parempi testi saadaan kuitenkin aikaan poistamalla yksi henkilö koulutusdatasta ja käyttämällä tämän henkilön mittauksia testidatana. Tällöin testi kuvaa paremmin todellista käyttötilannetta. Se kuinka monta koulutusnäytettä luokitin tarvitsee toimiakseen hyvin, riippuu luokittimesta ja koulutusalgoritmista. Yksi suurimmista haasteista luokitinta koulutettaessa on ylioppimisen välttäminen. Luokittimen ylioppiminen viittaa tilanteeseen, jossa luokitin sovittuu esimerkkeihin liian tarkasti ja tunnistaa luokkaan vain vektoreita, jotka ovat lähes identtisiä esimerkkien kanssa. Ylioppimista voidaan välttää tarpeeksi kattavalla koulutusdatalla ja valitsemalla luokittimen parametrit oikein. Luokittimia on tutkittu vuosikymmeniä ja useita erilaisia luokittimia on kehitetty. Tässä luvussa tutustutaan lyhyesti muutamaan yleisimmistä luokittimista. Esiteltävät luokittimet on aikaisemmissa tutkimuksissa todettu parhaiksi [7][10][12]. 2.5.1 MLP-neuroverkko Neuroverkko on abstrakti laskentamalli, joka matkii aivojen tapaa käsitellä tietoa. Kuten aivoissa, neuroverkossa on neuroneita, joiden välillä on yhteyksiä eli synapseja. Neuronit kommunikoivat toisilleen lähettämällä signaaleja yhteyksiä pitkin. Neuroverkon ”muisti” tallentuu aivojen tapaan yhteyksien vahvuuksina. Tunnetuin neuroverkkotyyppi on niin sanottu monitasoinen perceptron -neuroverkko (MLP). Yksinkertaisimmillaan MLP-neuroverkko koostuu kolmesta tasosta neuroneita, jotka ovat sisääntulotaso (engl. input layer), piilotaso (engl. hidden layer) ja ulostulotaso (engl. output layer). Jokaisen tason neuronit on yhdistetty jokaiseen seuraavan tason neuroniin. 14 Sisääntulotasossa on neuroni jokaiselle piirrevektorin alkiolle. Sisääntuloneuroneiden ulostulo on sama kuin niiden sisääntulo. Jokaisen sisääntuloneuronin ulostulo syötetään jokaiselle piilotason neuronille kerrottuna yhteyden painoarvolla . Lisäksi jokaiselle piilotason neuronille syötetään sisääntulotasosta riippumaton vakioarvo (engl. bias). Piilotason neuronit summaavat sisääntulonsa, syöttävät summan aktivaatiofunktiolle ja antavat funktion arvon ulostulonaan. Ulostulotason neuronit toimivat samalla tavalla kuin piilotason neuronit ja näin saadaan ulostulona arvo jokaiselta ulostulotason neuronilta. Neuroverkko koulutetaan niin, että yksi ulostuloista aktivoituu (antaa suuren arvon) kullekin luokalle. Koulutus muuttaa kertoimia ja kunnes tarpeeksi moni koulutusnäyte luokitetaan oikein tai suorituskyky ei enää parane. Kwapisz et al. vertailivat useampaa luokitinta aktiviteetin tunnistussovelluksessa ja totesivat MLP-neuroverkon suorituskyvyn parhaaksi [12]. Myös Baek et al. ja Mäntyjärvi et al. käyttivät MLP-neuroverkkoja onnistuneesti [1][5]. 2.5.2 Tukivektorikone Tukivektorikone (engl. support vector machine) määrittää luokkien välille hypertason, joka on mahdollisimman kaukana molempien luokkien koulutusnäytteistä. Luokitus tapahtuu määrittämällä, kummalle puolelle tätä tasoa tuntematon näyte kuuluu. Perinteisessä muodossaan tukivektorikone on siis lineaarinen luokitin. Tukivektorikone saadaan muodostamaan epälineaarisia päätöspintoja kuvaamalla näyteavaruus niin sanotulla kernelifunktiolla epälineaarisesti korkeampiulotteiseksi avaruudeksi, jossa luokat ovat lineaarisesti erotettavissa. Kuva 4 havainnollistaa tukivektorikoneen toimintaa kaksiulotteisessa piirreavaruudessa. Kuva 4. Tukivektorikoneen muodostama päätöspinta kahden luokan välillä. Vasemmanpuoleisessa kuvassa alkuperäinen piirreavaruus ja oikeanpuoleisessa kuvassa piirreavaruus kuvattuna kernelifunktion ϕ läpi 15 Tukivektorikoneen etuja MLP-neuroverkkoon nähden on sen parempi yleistämiskyky. Toisin sanoen tukivektorikone ei yliopi ongelmaa yhtä helposti. Lisäksi tukivektorikoneen kouluttaminen on huomattavasti nopeampaa kuin MLP:n, koska koulutus voidaan esittää neliöllisenä optimointiongelmana, jolle on olemassa tehokkaita ratkaisualgoritmeja. Tukivektorikone on kuitenkin rakenteeltaan huomattavasti monimutkaisempi kuin MLP ja tukivektorikoneen koulutusalgoritmit päätyvät usein ratkaisuun, joka tekee luokituksesta laskennallisesti raskaan operaation. Bao ja Intille sekä Yang et al. tutkivat tukivektorikoneen suorituskykyä aktiviteetin tunnistuksessa. Kaikissa näissä tutkimuksissa tukivektorikone oli luokitustarkkuudeltaan yksi parhaista luokittimista [4][10][11]. 2.5.3 Binääripäätöspuu Binääripäätöspuu on puurakenne, jossa jokaisella solmulla on joko kaksi tai ei yhtään lasta. Jokaisessa solmussa jonkin piirteen arvoa verrataan tiettyyn kynnysarvoon. Jos piirteen arvo on pienempi kuin kynnysarvo, siirrytään vasempaan lapsisolmuun, muuten oikeaan. Tätä prosessia jatketaan kunnes on saavutettu lehtisolmu eli solmu, jolla ei ole lapsia. Lehtisolmut on sidottu tiettyyn luokkaan ja luokittimen ulostulo on sen lehden luokka, johon vertailulla päädyttiin. Kuvassa 5 on esitetty päätöspuu, joka on koulutettu MATLAB-ohjelmiston tutulla fisheriris-datajoukolla. Kuva 5. Binääripäätöspuu joka on koulutettu MATLAB-ohjelmiston fisheririsdatajoukolle 16 Binääripuun koulutusalgoritmit muodostavat puun ja määrittävät kynnysarvot koulutusdatan avulla. Binääripäätöspuu pystyy muodostamaan epälineaarisia päätöspintoja luokkien välille, esittämällä ne ”sahalaitatasoina”. Epälineaarisuudet kuitenkin kasvattavat puun kokoa nopeasti. Algoritmien luomaa puuta täytyykin usein karsia (engl. prune) poistamalla solmut, jotka eivät paranna luokitustarkkuutta merkittävästi. Koulutusalgoritmit, kuten C4.5, luovat puun siten, että parhaiten piirreavaruutta jakavat piirteet ovat puussa ylimpänä. Puun rakenteesta voidaan siis vetää johtopäätöksiä piirteiden hyvyydestä, eli kyvystä erottaa luokat toisistaan. Binääripäätöspuut muodostavat selkeitä päätösketjuja, joita ihmisen on helppo ymmärtää ja tulkita. Tämän vuoksi ne ovat saaneet paljon huomiota aikaisemmissa tutkimuksissa [2-4][6-12]. Usein binääripäätöspuut on myös todettu luokitustarkkuudeltaan erinomaisiksi, kun niitä on verrattu muihin luokittimiin [7][10][11]. Binääripäätöspuiden kiehtovuutta lisää niille kehitetyt todella nopeat koulutusalgoritmit ja puun evaluoinnin laskentatehokkuus. 17 3 KOULUTUSDATA Koulutusdata on joukko piirrevektoreita, joiden oikea luokka tiedetään ja joiden avulla luokitin koulutetaan. Tarpeeksi kattava koulutusdata on järjestelmän suorituskyvyn kannalta tärkein osa. Luokitusdatan monipuolisuus määrittää luokittimen kyvyn tunnistaa uusia tuntemattomia piirrevektoreita. Monipuolisuuden lisäksi on erittäin tärkeää, että koulutusdata ei sisällä virheellisiä näytteitä. Näytteet, joiden luokka on merkitty virheellisesti, heikentävät nopeasti luokittimen suorituskykyä. Tässä luvussa tutustutaan ensin aikaisempien tutkimusten koulutusdatoihin ja määritellään tämän avulla hyvä koulutusdata. Aliluvussa 3.3 esitellään laitteisto ja ohjelmisto, joiden avulla keräys suoritettiin. Lopuksi listataan kerätty koulutusdata. 3.1 Lähestymistapojen vertailua Aikaisemmat tutkimukset voidaan jakaa karkeasti kolmeen ryhmään sen perusteella miten koulutusdata on niissä kerätty ja miten koulutusdatan tärkeyteen on suhtauduttu. 1. Ensimmäinen ryhmä ei keskittynyt koulutusdataan vaan työ painottui algoritmeihin. Näissä töissä koulutusdataa kerättiin epäluonnollisissa ja tarkasti valvotuissa koeolosuhteissa yhdeltä tai muutamalta henkilöltä. Usein keräys suoritettiin samana päivänä ja samassa paikassa. [1][5][8][10][13] 2. Toisen ryhmän töissä kritisoitiin ensimmäisen ryhmän töitä ja otettiin usein täysin vastakkainen lähestymistapa. Koulutusdatan luonnollisuutta korostettiin ja data kerättiin täysin valvomattomissa olosuhteissa siten, että koehenkilö merkitsi itse mitä milloinkin oli tekemässä. Koehenkilöiden annettiin usein vapaasti valita missä ja miten he suorittivat tarvittavat kokeet. Näissä tutkimuksissa koulutusdataa kertyi usein runsaasti. [2][3][4][6][9] 3. Kolmas ryhmä valitsi kultaisen keskitien. Koulutusdataa kerättiin luonnollisissa olosuhteissa siten, että kokeen järjestäjä oli valvomassa suorituksia. Näissä, kuten ryhmän 2 töissä, tiedostettiin koulutusdatan tärkeys ja dataa kerättiin useilta erityyppisiltä koehenkilöiltä useissa eri tilanteissa. [4][7][9][11][12] Ensimmäisen ryhmän töiden tuloksista nähdään, että kattava koulutusdata on tärkeää. Esimerkiksi Baek et al. keräsivät koulutusdatan yhdessä paikassa, yhtenä päivänä ja yhdeltä henkilöltä [1]. Kun tämän datan perusteella koulutetulla luokittimella myöhemmin 18 luokiteltiin saman koehenkilön aktiviteetteja, tulokset olivat huonot. Työn tekijät arvioivat syyksi sen, että koehenkilö liikkui nopeammin jälkimmäisen kokeen aikana. Ilman tällaisia todisteitakin on loogista päätellä, että koulutusdatan täytyy olla kattava, koska luokitin toimii täysin näiden esimerkkien varassa. Ihmiset liikkuvat kukin hieman eri tavalla. Lisäksi liikkumistyyli riippuu tilanteesta (kiire, väsymys, liukas tie). On siis tärkeää, että valitut koehenkilöt edustavat erilaisia liikuntatyylejä ja kerääminen suoritetaan erilaisissa tilanteissa ja paikoissa. Liikkuminen epäluonnollisissa laboratorio-olosuhteissa saattaa poiketa todellisesta liikuntatyylistä voimakkaasti. Usein koehenkilö on lisäksi ollut joku tutkimusryhmän jäsen. Näissä tapauksissa liikkeisiin on saattanut vaikuttaa tutkijan tieto siitä minkä perusteella liike tunnistetaan, joka on saattanut aiheuttaa näiden piirteiden korostamista. Toisen ryhmän töissä koulutusdatan kattavuus ei ole ongelma. Esimerkiksi Ermes ja Pärkkä keräsivät yhteensä 47 tuntia dataa 12 henkilöltä [9]. Koulutusdata sisälsi näytteitä kattavasti kaikista tunnistettavista aktiviteeteista. Koehenkilöt valitsivat itse paikan, ajan ja tyylin, jolla he suorittivat kokeet. Koehenkilöä pyydettiin esimerkiksi pyöräilemään puoli tuntia, ja koehenkilö sai itse päättää missä, millä pyörällä ja milloin koe suoritettiin. Koehenkilöt merkitsivät itse kämmentietokoneen avulla kokeiden alun ja lopun. Tällä lähestymistavalla saavutetaan luonnollinen ja kattava koulutusdatajoukko, kunhan koehenkilöt on valittu siten, että he edustavat erilaisia liikuntatyylejä. Toisen ryhmän lähestymistavassa suurin ongelma on virheellisesti merkityt näytteet. Vaikka koehenkilöille painotettaisiin, että aktiviteetit tulee merkitä tarkasti, ei tarvittavaa tarkkuutta usein saavuteta. Koehenkilöt eivät yleensä ole kiinnostuneita tutkimuksen tuloksista kuten tutkimuksen tekijät, ja aktiviteettien merkintä on usein epätarkkaa. Vaikka koehenkilö olisi kuinka tarkka, unohduksia ja vahinkoja sattuu, ja virheellisiä merkintöjä on lähes mahdotonta huomata jälkikäteen. Esimerkiksi Pärkkä et al. mainitsivat heikkojen tulosten todennäköiseksi syyksi virheelliset merkinnät koulutusdatassa [2]. Jos koehenkilö esimerkiksi pyöräilee, hän saattaa merkitä pyöräilyksi koko lenkin, vaikka se sisältäisi liikennevaloissa seisoskelua ja jopa kävelyn kodista polkupyörälle. Vaikka tällaiset tauot merkittäisiinkin, polkupyörän päällä polkematta istuminen, kuten alamäen laskeminen tulisi melko varmasti merkittyä pyöräilyksi. Jos koehenkilö merkitsisi aktiviteetit tarpeeksi tarkasti ottaen huomioon kaikki edellä mainitut tilanteet, lähtisi toiminnasta se luonnollisuus, joka oli toisen ryhmän lähestymistavan tarkoitus. Kolmas ryhmä tiedosti kahden ensimmäisen ryhmän lähestymistapojen rajoitteet. Koetilanteet olivat luonnollisia, mutta niitä valvottiin tarkemmin ja suoritusten merkintään oli kiinnitetty erityistä huomiota. Yang et al. käyttivät datankeräysjärjestelmää, jossa dataa kerääviä laitteita oli samanaikaisesti useampia koehenkilön vartalossa [11]. Kaikkia lait- 19 teita ohjattiin langattomasti ohjauslaitteella. Näin datan keräystä valvova henkilö saattoi merkitä dataan sekunnin kymmenyksen tarkkuudella aktiviteettien alku- ja loppuhetket. Viitaten aikaisempaan pyöräilijäesimerkkiin, tällaisella järjestelmällä valvoja voi vaivattomasti merkitä hetket, jolloin koehenkilö ei polje pyörää. 3.2 Hyvä koulutusdata Edellisen aliluvun perusteella on selvää, että koulutusdatan keräämisen täytyy olla valvottua tarpeeksi tarkkojen merkintöjen varmistamiseksi. Valvonta ei saa kuitenkaan häiritä koehenkilöiden suorituksia. Koehenkilöiden täytyy saada valita miten ja missä he suorittavat keräyksen, jotta taataan mahdollisimman luonnolliset tulokset. Koetta valvovan henkilön täytyy varoa, ettei hänen oma liikuntansa vaikuta koehenkilön liikuntaan. Kokeen aikana täytyy edetä koehenkilön tahtia. Jotta tällainen häiritsemätön toiminta olisi mahdollista, on koehenkilöiden pystyttävä olemaan rentoja koetilanteissa. Yksi vaihtoehto on valita valvojalle tuttuja henkilöitä. Tässä tapauksessa ei saa kuitenkaan tinkiä koehenkilöiden erilaisuudesta. Esimerkiksi sisarukset saattavat liikkua liian samankaltaisesti. Eri aktiviteetit asettavat erilaisia vaatimuksia koehenkilöille ja keräystilanteelle. Nämä erikoisvaatimukset täytyy ottaa huomioon datan keräystä suunnitellessa ja myös itse keräystilanteessa. Seuraavissa kappaleissa määritellään ”hyvä koulutusdata” jokaiselle tunnistettavalle aktiviteetille erikseen. Kävelydata riippuu paljon henkilöstä. Kävelyä täytyy kerätä tarpeeksi kattavalta joukolta erilaisia kävelytyylejä edustavia henkilöitä. Kävelytyyli muuttuu iän myötä ja siihen vaikuttaa pituus, paino ja sukupuoli. Tyyliin vaikuttaa oleellisesti myös keli. Esimerkiksi jäisellä asfaltilla kävely poikkeaa kesällä kävelystä. Jopa kenkä saattaa vaikuttaa tuloksiin. Lisäksi suurin osa ihmisen jokapäiväisestä liikunnasta on kävelyä, joten kävelyn tunnistamiseen tulee kiinnittää erityistä huomiota. Juoksutyylejä on yhtä paljon kuin kävelytyylejä ja tyyli riippuu samoista seikoista kuin kävely. Kaikissa aikaisemmissa tutkimuksissa juoksun tunnistaminen on kuitenkin toiminut erinomaisesti riippumatta koehenkilöiden tai koulutusdatan määrästä. Tämä johtuu siitä, että juoksu aiheuttaa kiihtyvyyteen todella selkeitä piirteitä. Juoksudatan kerääminen voidaan siis jättää pienemmälle huomiolle. Jokaiselta kävelijältä kannattaa silti ottaa samalla pieni juoksunäyte, koska se ei vaadi erityisjärjestelyitä. Pyöräilyä kerättäessä koehenkilöiden määrällä ei ole niin suurta merkitystä. Polkupyörän rakenne määrittää hyvin pitkälti henkilön raajojen liikeradan. Tärkeämpiä seikkoja ovat polkupyörien erilaisuus (paksu/ohut kumi, jousitus jne.), alusta, jolla poljetaan ja polkunopeus. Polkupyörällä poljettaessa dataa saa tallentaa vain silloin kun koehenkilö polkee. Ei ole järkevää yrittää tunnistaa polkupyöräilyksi satulan päällä paikallaan istu- 20 mista, joka alustasta riippuen näkyy datassa vain tärinän aiheuttamana kohinana. Kun polkujaksot luokitetaan oikein, voidaan tauot tarvittaessa luokittaa pyöräilyksi jälkikäsittelyssä. Luokittimen olisi lähes mahdoton erottaa polkupyörän päällä istumisen aiheuttamaa tärinää esimerkiksi autossa istumisen aiheuttamasta tärinästä. Passiivisuuden tunnistaminen on erityisen tärkeää, koska tässä työssä luotavan järjestelmän on tarkoitus toimia mobiililaitteissa ja luokittaa jatkuvasti käyttäjän liikkeitä. Aktiviteettien tunnistuksen kanssa yhtä tärkeää on se, että muut liikkeet eivät tunnistu virheellisesti joksikin aktiviteetiksi. Esimerkiksi puhelimen normaali käyttö aiheuttaa kiihtyvyyttä, mutta sen täytyy tunnistua passiivisuudeksi, jos käyttäjä on muuten paikallaan. Samoin autossa istuminen aiheuttaa välillä kovaakin tärinää, mutta käyttäjä on silti passiivinen. Monimutkaisempia tilanteita ovat esimerkiksi hermostunut jalan pomputtaminen, joka saattaa puhelimen ollessa taskussa tunnistua pyöräilyksi samankaltaisen liikkeen vuoksi. Vastaavia virhetilanteita on lukemattomia, ja niihin kaikkiin ei voi varautua etukäteen. Hyvä lähestymistapa onkin kerätä passiivisuusdataa yleisimmistä tilanteista, kuten autossa tai bussissa istumisesta ja puhelimen normaalista näpyttelystä. Erityistapaukset, kuten jalan pomputtelu, voidaan opettaa myöhemmin, jos ja kun niitä kokeissa havaitaan. 3.3 Keräysjärjestelmä Jotta koulutusdatan kerääminen olisi mahdollisimman nopeaa, täytyy keräysjärjestelmään kiinnittää huomiota. Koetilanteessa mikään ei ole koehenkilön (tai valvojan) kannalta turhauttavampaa kuin tekniset ongelmat. Tässä työssä suunniteltiin ja ohjelmoitiin järjestelmä, joka toimii android-mobiilikäyttöjärjestelmässä. Android valittiin alustaksi siksi, että se mahdollistaa aitojen taustaprosessien toteuttamisen. Erilaisia androidia käyttäviä mobiililaitteita on satoja. Tämä mahdollistaa sen, että datan keräämiseen voidaan valita laitteita, joilla on eri valmistajien kiihtyvyysantureita. Järjestelmä koostuu kahdesta ohjelmasta: ohjaimesta ja datan kerääjästä. Ohjain on yhteydessä kerääjiin langattomasti bluetoothin avulla. Teoriassa ohjain voi ohjata rajatonta määrää kerääjiä samanaikaisesti, mutta käytännössä vain kolme kerääjää saatiin vakaasti kommunikoimaan ohjaimen kanssa. Ohjaimen tarkoitus on lähettää kerääjille tieto nykyisestä aktiviteetista eli merkitä koulutusdataa. Lisäksi ohjain näyttää käyttäjälle kerääjien lähettämää tilannetietoa. Datan kerääjä on taustaprosessi, joka pyörii laitteessa huomaamattomasti taustalla ja tallentaa kiihtyvyyssensorin dataa tiedostoon. Tiedostoon merkitään myös jokaisen aktiviteetin alku- ja loppuhetket, kun ohjain lähettää niistä merkin. Lisäksi kerääjässä voidaan ajaa reaaliajassa työssä luotavia luokitusalgoritmeja ja luokitustulos voidaan lähettää ohjaimelle, joka näyttää tuloksen ohjaimen käyttäjälle. Tällä tavoin voidaan reaaliaikaisesti seurata millainen liike tunnistuu virheellisesti nykyisellä luokittimella ja keskit- 21 tyä sen keräämiseen. Luokittimen virheitä voidaan paikata keräämällä vain luokitusdataa, joka tuo lisäarvoa luokittimelle. Kuvassa 6 on kuvankaappaus ohjaimesta, kun siihen on liitetty kaksi kerääjää. Kuva 6. Datankeräysjärjestemän ohjain. Viimeiset kaksi tekstiriviä listaavat liitetyt kerääjät, niiden tunnistaman aktiviteetin ja yhteyden tilan. Isoilla napeilla lähetetään kerääjille tieto nykyisestä oikeasta aktiviteetista. 3.4 Keräysjärjestelyt Koulutusdataa kerättäessä koehenkilöllä oli mukanaan kaksi tai kolme Android-laitetta, joissa ajettiin datan kerääjäohjelmaa. Laitteet valittiin taulukossa 1 listatuista laitteista siten, että jokaista käytettiin mahdollisimman paljon. Laitteet sijoitettiin paikkoihin joissa ihmiset useimmiten kantavat matkapuhelintaan kyseisen liikunnan aikana. Taulukossa 2 on listattu laitteiden sijainnit kullekin aktiviteetille. 22 Taulukko 2. Mobiililaitteiden sijainnit koehenkilöiden vartalossa. Aktiviteetti Kävely Sijainnit miehillä housun etutasku takin rintatasku takin alatasku vyö Juoksu housun etutasku takin rintatasku takin alatasku vyö housun etutasku takin alatasku vyö Pyöräily Sijainnit naisilla käsilaukku kädessä käsilaukku olalla laukku selässä housun etutasku takin alatasku housun etutasku takin rintatasku takin alatasku vyö housun etutasku takin alatasku vyö Naisille ja miehille valittiin eri sijainnit, koska naiset kantavat matkapuhelintaan useimmiten käsilaukussa, joka taas voi olla sijoitettuna monella eri tavalla, joista kukin aiheuttaa erilaisen kiihtyvyyssignaalin. Harva kantaa käsilaukkua juostessaan, joten juoksua ei tallennettu laitteen ollessa käsilaukussa. Myöhemmin tässä työssä todetaan, että pyöräilyn robustiin tunnistamiseen tarvitaan jalan liikkeen aiheuttama kiihtyvyys. Tämä kävi selväksi jo datan keräämisen alkuvaiheessa ja sijainnit, joihin polkuliike ei vaikuta, jätettiin pois. Passiivisuudeksi tunnistettavissa tilanteissa laitteen sijainnilla ei ole merkitystä (autossa istuminen) tai laitteen sijainti on suoraan sidottu tilanteeseen (jalan pomputus, puhelimen käyttö). Näistä syistä passiivisuus on jätetty pois taulukosta 2. Koehenkilö sai valita itse ajan ja paikan, jossa keräys suoritettiin. Osa kävely- ja juoksureiteistä oli tasaista asfalttia ja osa hiekkatietä, jossa oli ylä- ja alamäkiä. Polkupyöräilyn tapauksessa alusta, jolla poljetaan, on oleellinen. Sora- ja hiekkatiellä poljettaessa kiihtyvyyssignaali sisältää huomattavasti enemmän kohinaa kuin tasaisella asfaltilla. Tästä syystä johtuen pidettiin huolta siitä, että keräystä suoritettiin erilaisilla alustoilla. Tämän työn kirjoittaja oli mukana valvojan roolissa jokaisessa keräyssessiossa. Session alussa koehenkilöä ohjeistettiin liikkumaan mahdollisimman luonnollisesti ja määräämään tahdin. Pyöräilyä kerättäessä koehenkilöä jouduttiin kuitenkin pyytämään välttämään polkemisen lopettamista yllättäen, jotta ohjaaja ehtisi merkitsemään polkemattomat jaksot. Koulutusdata kerättiin kahdessa vaiheessa, joista ensimmäisessä kerättiin jokaiselta koehenkilöltä kutakin liikuntatyyppiä noin viisitoista minuuttia. Luokitin koulutettiin tämän pohjadatan avulla, ja luokitin asennettiin datan kerääjiin. Tämän jälkeen siirryttiin toiseen vaiheeseen, jossa vältettiin keräämästä koulutusdataa, jonka luokitin jo luo- 23 kitti oikein. Luokitin koulutettiin uudelleen jokaisen session jälkeen, ja kerääjät päivitettiin. Samalla siirryttiin myös hieman epäluonnollisempaan keräysprosessiin. Jos esimerkiksi koehenkilön kävely tunnistui ilman ongelmia, häntä pyydettiin hidastamaan tai nopeuttamaan tahtia, kunnes kävely ei enää tunnistunut. Koska toisessa vaiheessa pyrittiin löytämään liikuntatyylejä, joita algoritmit eivät tunnista, koehenkilöiden luontaisilla erilaisuuksilla ei ollut enää niin suurta merkitystä. Tästä syystä ja käytännöllisistä syistä johtuen toisen vaiheen datasta suurin osa kerättiin tämän työn kirjoittajalta ja hänen tyttöystävältään. Myös passiivisuuden koulutusdata kerättiin työn kirjoittajalta ja hänen tyttöystävältään. Ensin kerättiin dataa muutamista yleisimmistä tilanteista, kuten erilaisissa ajoneuvoissa istumisesta (henkilöauto, juna, bussi) ja puhelimen normaalista käytöstä (tekstiviestin kirjoittaminen, soittaminen). Datajoukkoa laajennettiin sitä mukaa, kun virheellisiä tunnistuksia huomattiin jokapäiväisessä käytössä. Työn kirjoittaja ajoi datan kerääjää puhelimessaan jatkuvasti. Kun huomattiin, että järjestelmä tunnisti virheellisesti passiivisuudeksi luokiteltavan tilanteen, tilanteesta kerätty data lisättiin passiivisuuden koulutusdataan. Usein tarkkaa ajankohtaa oli vaikea rajata, joten tilanne pyrittiin uusimaan ja merkitsemään tarkasti. Seuraavissa kappaleissa on esitelty muutamia tällaisia tilanteita. Moni ihminen, työn kirjoittaja mukaan lukien, pomputtaa jalkaansa istuessaan. Pomputus on jaksollista liikettä, joka tunnistui aluksi pyöräilyksi. Tästä johtuen jalan pomputuksen aiheuttamaa dataa lisättiin passiivisuuden koulutusdataan. Keräyslaite oli pomputuksen aikana housujen taskussa tai vyöllä. Usein pakkasessa seisoessaan ihmiset lämmittelevät heiluttelemalla raajojaan, hyppimällä tai muuten paikallaan heilumalla. Myös tällaiset tilanteet tunnistettiin aluksi virheellisesti. Myös muissa tilanteissa ihmiset usein paikallaan seisoessaan liikehtivät jollain tavalla. Vaatteiden selaaminen vaatekaupassa ja käsilaukun heiluttaminen ovat esimerkkejä tällaisesta liikehtimisestä. Tästä johtuen kyseisistä tilanteista tallennettiin kattava joukko koulutusdataa passiivisuudelle. 3.5 Kerätty data Dataa kerättiin yhteensä kahdeksalta henkilöltä työn kirjoittaja mukaan lukien. Koehenkilöistä viisi oli naisia ja kolme oli miehiä. Koehenkilöt valittiin käytännön syistä työn kirjoittajan lähipiiristä. Koehenkilöt pyrittiin kuitenkin valitsemaan mahdollisimman monipuolisesti. Dataa kerättiin yhteensä viidellä eri laitteella, jotka on esitelty taulukossa 1. Myös laitteet valittiin mahdollisimman monipuolisesti saatavilla olevasta rajoitetusta joukosta. Taulukoissa 3, 4 ja 5 on listattu tilastoja kerätystä koulutusdatasta. Jokaiselle aktiviteettiluokalle paitsi passiivisuudelle on oma taulukkonsa. Ensimmäinen sarake ilmaisee 24 missä kohdassa koehenkilöä laite on ollut. Toinen sarake kertoo, kuinka paljon dataa kerättiin. Kolmas sarake kertoo, kuinka monelta koehenkilöltä dataa kerättiin. Viimeinen sarake kertoo, kuinka montaa eri laitetta keräykseen käytettiin. Taulukossa 6 on listattu koehenkilöiden sukupuolet, iät, painot ja kerätyt datamäärät. Taulukko 3. Kerätty kävelydata Sijainti Aika housun etutasku 04:56:01 takin rintatasku 01:41:52 takin alatasku 02:41:22 vyö 00:22:35 käsilaukku kädessä 02:39:35 käsilaukku olalla 01:30:03 laukku selässä 02:37:35 käsi 00:15:02 korva 00:13:19 Koehenkilöitä 8 3 6 3 4 2 4 1 1 Laitteita 2 2 3 1 3 2 2 1 1 Yhteensä 8 5 11:53:22 Taulukko 4. Kerätty juoksudata Sijainti housun etutasku takin rintatasku takin alatasku Vyö Käsi Aika 01:22:06 01:30:02 01:47:30 00:14:12 00:12:02 Koehenkilöitä 8 3 6 3 1 Laitteita 2 2 3 1 1 Yhteensä 03:05:52 8 5 Koehenkilöitä 8 6 3 8 Laitteita 2 3 1 5 Taulukko 5. Kerätty pyöräilydata Sijainti housun etutasku takin alatasku vyö Yhteensä Aika 02:19:49 00:23:31 01:57:40 04:38:60 Taulukko 6. Koehenkilöiden tiedot ja kerätyn datan määrä Koehenkilö Sukupuoli Ikä Paino Aika Henkilö 1 Henkilö 2 Henkilö 3 Henkilö 4 02:21:17 01:27:24 00:14:24 03:23:09 nainen nainen nainen nainen 55 v 50 v 24 v 28 v 85 kg 64 kg 67 kg 76 kg 25 Henkilö 5 Henkilö 6 Henkilö 7 Sami Koskimäki nainen mies mies mies Yhteensä 5 naista, 3 miestä 29 v 58 v 29 v 26 v 73 kg 65 kg 100 kg 75 kg 02:28:09 02:10:34 01:12:40 07:30:23 20:46:59 26 4 TOTEUTETTU JÄRJESTELMÄ 4.1 Järjestelmän rakenne Toteutetun järjestelmän rakenne noudattaa luvussa 2.1 esiteltyä. Kuvassa 7 on esitelty toteutetun järjestelmän rakenne korkealla tasolla. Kiihtyvyysanturilta saatavat näytteet käsitellään viiden sekunnin mittaisissa ikkunoissa siten, että peräkkäiset ikkunat ovat puoliksi limittäin. Seuraavissa aliluvuissa on selitetty kuvan 7 vaiheiden toteutus. Kiihtyvyyssensori kiihtyvyysnäytteet Uudelleennäytteistys uudelleennäytteistetyt näytteet Orientaatioriippuvuuden poisto orientaatioriippumattomat näytteet Piirteenirrotus piirrevektori MLP-luokitin aktiviteetti Temporaalinen jälkikäsittely suodatettu aktiviteetti Kuva 7. Toteutetun aktiviteetintunnistusjärjestelmän rakenne 27 4.2 Esikäsittely Esikäsittelyssä kiihtyvyyssignaali muutetaan tasaväliseksi ja datan riippuvuus laitteen asennosta eli orientaatiosta poistetaan. Molempien operaatioiden teoria on esitelty luvuissa 2.3.1 ja 2.3.2. Seuraavissa aliluvuissa esitetään operaatioiden toteutuksessa tehdyt valinnat. 4.2.1 Uudelleennäytteistys Kiihtyvyyssignaali uudelleennäytteistetään mahdollisimman matalalle näytetaajuudelle kahdesta syystä: matala näytetaajuus pienentää järjestelmän laskentavaatimuksia ja laajentaa laitejoukkoa, jolla järjestelmää voidaan käyttää. Näytetaajuuden valinta tehtiin vasta viimeisenä laskemalla näytetaajuutta, kunnes tulokset alkoivat heikentyä. Tämä voitiin tehdä, koska koulutusdata tallennettiin suurimmalla mahdollisella näytetaajuudella ja järjestelmä suunniteltiin niin, että näytetaajuutta voitiin vaihtaa yhtä vakioarvoa muuttamalla. Näytetaajuudeksi valikoitui tällä menetelmällä 15 Hz. Kuten luvussa 2.3.1 kerrottiin, epätasavälinen kiihtyvyyssignaali muutetaan uudelleennäytteistysprosessin alussa tasaväliseksi lineaarisella interpolaatiolla. Interpoloinnin tuottama välinäytetaajuus täytyy olla ulostulonäytetaajuuden (15 Hz) monikerta ja tarpeeksi korkea, että epätasavälisessä signaalissa olevat taajuudet eivät laskostu. Välinäytetaajuudeksi valittiin 30 Hz. Valinta tehtiin tarkastelemalla koko koulutusdatajoukon spektriä. Spektrissä on hyvin vähän komponentteja yli 15 Hz taajuuksilla, kuten kuvasta 8 nähdään. Kuva 8. Koko koulutusdatasta lasketun spektrin magnitudi 28 Valittu näytetaajuus on tarpeeksi matala, että useimmat mobiililaitteet pystyvät tuottamaan kiihtyvyyssignaalia tällä taajuudella. Työn kirjoituksen aikana onnistuttiin löytämään ainoastaan yksi laite (ZTE Blade) joka ei pystynyt tuottamaan tarvittavaa näytetaajuutta. Näin matalalla näytetaajuudella tehtävät signaalinkäsittelyoperaatiot eivät vaadi laitteistolta paljoa. Kaikki mobiililaitteet pystyvät esimerkiksi helposti ja resursseja kuluttamatta taajuuskorjaamaan äänisignaalia, jonka näytetaajuus on yleensä yli 40 kHz. 4.2.2 Orientaatioriippuvuuden poisto Luvussa 2.3.2 esitetyissä kaavoissa valittavaksi jää ainoastaan muuttuja N eli keskiarvoikkunan pituus. Tämä pituus valittiin samalla menetelmällä kuin näytetaajuus, eli tiputtamalla ikkunan pituutta, kunnes luokitustulos alkoi heikentyä. Parhaat tulokset saatiin ikkunanpituudella 3 sekuntia. 4.3 Piirteiden valinta Alustava piirrejoukko valittiin kirjallisuuden perusteella. Tähän joukkoon kuului keskiarvo, varianssi, spektrin piikkitaajuus ja spektrin entropia. Tällä joukolla päästiin erinomaisiin tuloksiin alkuvaiheiden koulutusdatalla. Kun koulutusdata lisääntyi, alkoi luokittimen suorituskyky heikentyä. Piirrejoukkoa täydennettiin piirteillä, jotka auttoivat tunnistamaan laajentuneen näytejoukon. Varsinkin passiivisuuden monimutkainen koulutusdata vaati uusien piirteiden lisäämistä ja piirrejoukon optimointia. Piirrejoukkoa ei missään vaiheessa pyritty minimoimaan, vaan pyrittiin löytämään joukko, jolla tunnistus oli mahdollisimman tarkka. Vasta kun tällainen joukko löytyi, tarkistettiin piirteiden laskentavaatimuksien vaikutus järjestelmän resurssivaatimuksiin. Kuten myöhemmin työssä todetaan, piirteiden laskenta ei ole merkittävä tekijä järjestelmän virrankulutuksen kannalta ja siksi piirrejoukko jätettiin melko suureksi. Seuraavissa kappaleissa esitellään valitut piirteet ja perustellaan niiden valinta. Kaikki piirteet laskettiin sekä pysty- että vaakasuuntaiselle kiihtyvyyskomponentille, paitsi persentiilit, jotka laskettiin vain pystysuuntaiselle kiihtyvyyskomponentille. Keskiarvo on valituista piirteistä yksinkertaisin. Se kuvaa yhdessä varianssin kanssa näyteikkunan histogrammin sijainnin ja leveyden. Juoksua lukuun ottamatta kaikkien aktiviteettien pystysuuntaisen komponentin keskiarvo on lähellä maan putoamiskiihtyvyyttä 9,8 m/s2. Pystysuuntainen keskiarvo onkin hyvä piirre erottamaan juoksun muista aktiviteeteista. Kuvaajasta 9 on esitetty koulutusnäytteiden pystysuuntaiset varianssit ja keskiarvot. Kuvaajasta nähdään, miten juoksun keskiarvo on muita luokkia pienempi. 29 Kuva 9. Koulutusdatan aktiviteettien jakauma pystysuuntaisen varianssin ja pystysuuntaisen keskiarvon funktiona Varianssi on erinomainen piirre kuvaamaan aktiviteetin intensiivisyyttä ja erottaakin parhaiten juoksun muista aktiviteeteista. Kuten kuvasta 9 nähdään, pelkästään varianssin avulla voitaisiin erottaa juoksu muista aktiviteeteista suhteellisen suurella todennäköisyydellä. Spektrin energiat laskettiin neljälle eri kaistalle, jotka ovat 0 Hz–1,2 Hz; 1,2 Hz–2 Hz; 2 Hz–3Hz ja 3 Hz–7.5Hz. Kaistat valittiin siten, että aktiviteetit jakautuivat mahdollisimman hyvin eri kaistoille. Pyöräilyn aiheuttamat taajuudet sijoittuvat pääasiassa alimmalle 0 Hz–1,2 Hz kaistalle. Kävely aiheuttaa taajuuksia, jotka osuvat pääasiassa 1,2 Hz–2 Hz kaistalle. Juoksu puolestaan aiheuttaa piikkejä kaistalle 2 Hz–3 Hz. Ihmisen liikkeistä aiheutuvat taajuudet sijoittuvat pääasiassa alle 4 Hz taajuuksille. Esimerkiksi ajoneuvossa istuminen (tärinä) aiheuttaa korkeataajuista kiihtyvyyttä. Ylin kaista onkin hyvä piirre erottamaan tiettyjä passiivisuuden alalajeja muista aktiviteeteista. Kuvasta 10 nähdään, miten pyöräily ja kävely painottuvat alimmalle kahdelle taajuuskaistalle. Kuvasta 11 taas nähdään miten osa passiivisuudesta on painottunut ylimmälle taajuuskaistalle. Taajuuskaistojen energiat skaalattiin energioiden summalla, joka selittää kuvien 10 ja 11 arvot. Spektrin energiat lasketaan summaamalla näyteikkunan Fouriermuunnoksen itseisarvon neliöitä halutulta taajuuskaistalta. 30 Kuva 10. Kävelyn ja pyöräilyn jakauma spektrin alimpien energiakaistojen funktiona Kuva 11. Koulutusdatan aktiviteettien jakauma pystysuuntaisen varianssin ja spektrin ylimmän energiakaistan funktiona. Spektrin energia on esitetty logaritmisella asteikolla. 31 Persentiilien avulla voidaan kuvata näyteikkunan histogrammin muoto halutulla tarkkuudella. Tässä työssä piirteiksi valittiin 5, 25, 75 ja 95 persentiilit. Persentiilit laskettiin siten, että näyteikkunan arvot skaalattiin ensin välille [0, 1]. Tällöin persentiilit kuvaavat ainoastaan histogrammin muodon, ei sen sijaintia eikä leveyttä. Histogrammin sijainti ja leveys saadaan jo keskiarvosta ja varianssista. Persentiilien avulla voidaan helposti erottaa pienet lyhytkestoiset liikkeet koko analysointi-ikkunan mittaisista jatkuvista liikkeistä. Tällaisia liikkeitä syntyy paljon mobiililaitteen normaalikäytössä. Kuvat 12 ja 13 havainnollistavat tällaista erottelua. Kaikki tässä työssä tunnistettavat aktiviteetit ovat luonteeltaan jaksollisia ja kestävät vähintään yhden analysointi-ikkunan pituuden. Persentiilit auttavat erottamaan passiivisuutta muista aktiviteeteista. Kuvassa 14 on havainnollistettu lyhyiden epäjatkuvien liikkeiden erottumista koulutusdatasta 5. persentiilin avulla. Kuva 12. Tyypillisen juoksunäyteikkunan pystysuuntainen komponentti ja sen histogrammi, jonka päälle piirretty työssä piirteinä käytetyt persentiilit Kuva 13. Lyhyen epäjatkuvan liikkeen aiheuttaman näyteikkunan pystysuuntainen komponentti ja sen histogrammi, jonka päälle piirretty työssä piirteinä käytetyt persentiilit 32 Kuva 14. Lyhyet epäjatkuvat liikkeet koulutusdatassa 5. pystysuuntaisen persentiilin ja pystysuuntaisen varianssin funktiona Spektrin piikkitaajuus auttaa erottamaan kävelyn ja pyöräilyn rajatapauksia, joita ei voida erottaa varianssin avulla. Lisäksi spektrin piikkitaajuus auttaa erottamaan pyöräilyä kävelystä tilanteissa, joissa pyöräily aiheuttaa lähes samat energiat kahdelle alimmalle kaistalle. Piikkitaajuus ei juuri tuo lisäinformaatiota taajuuskaistojen energioiden lisäksi, mutta parantaa silti luokitustulosta, ja siksi se jätettiin mukaan näytevektoriin. Lisäksi piikkitaajuuden laskenta ei suurenna järjestelmän laskentavaatimuksia, koska piikkitaajuuden laskentaan tarvittava Fourier-muunnos lasketaan jo taajuuskaistojen energioita varten. Kuvasta 15 nähdään, että muutamaa poikkeusta lukuun ottamatta kaikki juoksunäytteet saadaan erotettua kävelynäytteistä pystysuuntaisen varianssin ja piikkitaajuuden avulla. 33 Kuva 15. Kävely ja juoksu pystysuuntaisen varianssin ja spektrin piikkitaajuuden funktiona Spektrin entropia ei osoittautunut niin hyödylliseksi kuin aikaisemmat tutkimukset antoivat ymmärtää. Aikaisemmat tutkimukset antoivat viitteitä, että spektrin entropia olisi erityisen pieni pyöräilyn tapauksessa, koska se aiheuttaa selkeän siniaallon kiihtyvyyssignaaliin. Tässä työssä tällaista ei huomattu. Tämä johtuu luultavasti siitä, että tässä työssä kiihtyvyysanturi (matkapuhelin) oli sijoitettu pyöräilyn aikana taskuun tai vyölle, jossa jalan aiheuttama liike ei ole niin säännöllistä, kuin esimerkiksi nilkassa. Vaikka liike välillä oli säännöllistä, sen amplitudi oli niin pieni, että matkapuhelimen kiihtyvyysanturin kohina alkoi olla merkittävää ja nosti huomattavasti pyöräilyn spektrin entropiaa. Spektrin entropia jätettiin pois piirrejoukosta. Kuvasta 16 nähdään koulutusdatan luokat pysty- ja vaakasuuntaisten spektrien entropioiden funktiona. 34 Kuva 16. Koulutusdatan luokat pysty- ja vaakasuuntaisten spektrien entropian funktiona 4.4 Luokitus Luokittimen valintaa varten testattiin kaikkia kolmea teoriaosuudessa esiteltyä luokitinta. Seuraavissa aliluvuissa esitellään lyhyesti kullakin luokittimella saavutettu luokitustarkkuus sekaannusmatriisien avulla. Luokittimien koulutukseen valittiin satunnaisesti 90 prosenttia koulutusdatasta ja suorituskyky testattiin jäljelle jääneellä 10 prosentilla. Jokaisen luokittimen testinäytteiden luokittamiseen käyttämä aika mitattiin, ja ajat on esitetty sekunteina. Jokainen luokitin on toteutettu Java-kielellä, ja laskenta-ajan mittaus tehtiin samalla tietokoneella vertailukelpoisuuden saavuttamiseksi. Viimeisessä aliluvussa vertaillaan luokittimia ja tehdään valinta. 4.4.1 Tukivektorikone Työssä käytettiin LIBSVM–kirjaston Java-versiota. LIBSVM on tehokas avoimen lähdekoodin tukivektorikonekirjasto. Kuvaus korkeampiulotteiseen avaruuteen tehtiin Radial Basis Function -kantafunktion (RBF) avulla. Kaikki käytetyt parametrit on esitetty listauksessa 1. Listaus 1. LIBSVM-kirjaston parametrit. param.svm_type = svm_parameter.C_SVC; param.kernel_type = svm_parameter.RBF; 35 param.degree = 3; param.gamma = 0.2; param.coef0 = 0; param.nu = 0.5; param.cache_size = 100; param.C = 2e4; param.eps = 1e-3; param.p = 0.1; param.shrinking = 1; param.probability = 0; param.nr_weight = 0; param.weight_label = new int[0]; param.weight = new double[0]; Kuten sekaannusmatriisista 17 nähdään, tukivektorikoneen luokitustarkkuus on erinomainen tämän työn datajoukolla. Luokittimesta muodostui kuitenkin parametreista riippumatta liian monimutkainen. Koulutettu tukivektorikone koostui 801 tukivektorista. Muuttamalla gamma-arvoa, joka määrää kantafunktioiden koon, ei saavutettu pienempää tukivektorimäärää. Testijoukon luokittamiseen kulunut aika oli 0,44 sekuntia. Tällaisenaan tukivektorikone vaatii liian paljon laskenta-aikaa, ja ei siten ole paras vaihtoehto järjestelmän luokittimeksi. Kuva 17. Tukivektorikoneen sekaannusmatriisi 36 4.4.2 MLP-neuroverkko MLP-neuroverkon koulutus suoritettiin MATLAB-ohjelmiston funktiolla patternnet.train, mutta itse luokitus tehtiin työn kirjoittajan itse ohjelmoimalla Javatoteutuksella. MATLAB-ohjelmistolla koulutetun luokittimen parametrit kirjoitettiin Java-tiedostoon, jota käytettiin luokittimien toteutuksessa. Koulutetulla neuroverkolla oli yksi piiloneuronikerros. Parhaaksi neuronimääräksi valikoitiin 15 neuronia laskemalla neuronien määrää kunnes suorituskyky alkoi heikentyä oleellisesti. Kuten kuvan 18 sekaannusmatriisista nähdään, myös MLP-neuroverkon suorituskyky oli työn datajoukolla erinomainen. Luokitukseen kulunut aika oli 0,022 sekuntia, joka on huomattavasti vähemmän kuin tukivektorikoneella. Kuva 18. MLP-neuroverkon sekaannusmatriisi 4.4.3 Binääripäätöspuu Myös binääripäätöspuun koulutukseen käytettiin MATLAB-ohjelmistoa, ja itse luokitus toteutettiin itse kirjoitetulla Java-koodilla. Kuvassa 19 on binääripäätöspuun sekaannusmatriisi, josta nähdään, että sillä saavutetaan tukivektorikoneeseen ja MLPneuroverkkoon verrattava tunnistustarkuus. Binääripäätöspuun evaluointi on todella tehokasta, luokitus vaatii ainoastaan yhden vertailuoperaation per taso. Jos puussa on 10 tasoa (todella iso päätöspuu), vaatii yhden näytteen luokittaminen silti vain 10 vertailuoperaatiota. Tästä johtuen binääripäätöspuun luokitukseen käyttämä aika on testatuista luokittimista pienin, 0,003 sekuntia. 37 Kuva 19. Binääripäätöspuun sekaannusmatriisi 4.4.4 Luokittimen valinta Kaikkien kolmen luokittimen luokitustarkkuus on lähellä sataa prosenttia. Luokitustarkkuuden osalta on yhdentekevää, mikä kolmesta testatusta luokittimesta valitaan. Tukivektorikone voidaan sulkea pois sen laskentavaatimusten vuoksi. MLP-neuroverkon ja binääripäätöspuun luokitukseen käyttämät ajat ovat molemmat tarpeeksi pieniä, kun niitä verrataan piirteiden irrottamiseen kuluvaan aikaan, joka oli testiympäristössä noin 0,45 sekuntia. Binääripäätöspuu vaikutti hieman ylioppineelta. Ylioppiminen ilmeni esimerkiksi vaikeutena tunnistaa mobiililaitteen peruskäyttöä passiivisuudeksi. Myös koulutusdata on vajavaista tältä osin. Kuvasta 14 nähdään, että lyhyitä epäjatkuvia liikkeitä, joista puhelimen peruskäyttö pääosin koostuu, on koulutusdatassa todella vähän. Tämä vaikuttaa osaltaan siihen, että päätöspuu ei luokita niitä onnistuneesti. MLPneuroverkko kuitenkin vajavaisesta koulutusdatasta riippumatta luokitti vastaavat tilanteet oikein. Luokittimeksi valittiin MLP-neuroverkko. 4.5 Temporaalinen jälkikäsittely Tässä työssä jälkikäsittelyn on tarkoitus hoitaa kaksi tehtävää: 1. Suodattaa luokittimen tekemiä lyhytaikaisia virheitä 2. Tunnistaa viides luokka, eli muu liikunta 38 Jälkikäsittelijä ylläpitää histogrammia viimeisen minuutin aikana saaduista luokittimen antamista ”raaoista” luokitustuloksista. Jos jotain aktiviteettia on yli 50 prosenttia, valitaan se ulostuloksi. Jos yhtään aktiviteettia ei ole yli 50 prosenttia, valitaan ulostuloksi viides luokka eli muu liikunta. Tällainen määritelmä luokalle muu liikunta sopii hyvin aktiviteeteille, jotka koostuvat suurimmaksi osaksi alle puolen minuutin mittaisista pätkistä kävelyä, juoksua ja passiivisuutta. Tällaisia aktiviteetteja ovat esimerkiksi jalkapallo, salibandy, jääkiekko, tennis, sulkapallo ja squash. Määritelmä ei sovi jaksollisille aktiviteeteille, kuten hiihto ja matkaluistelu. Tällaisen jälkikäsittelijän huono puoli on se, että tarkkuus aikatasossa heikkenee suhteessa histogrammi-ikkunan pituuteen. Minuutin mittaisella ikkunalla kaikki alle 30 sekunnin (60 s x 50 %) mittaiset liikuntasuoritukset jäävät helposti tunnistamatta, tai tunnistuvat luokkaan muu liikunta. Lisäksi siirryttäessä lajista toiseen, esimerkiksi kävelystä juoksuun, syntyy helposti yksi tunnistus luokkaa muu liikunta. Siirtymä on täydellinen ainoastaan siinä tapauksessa, että histogrammissa ei ole ainuttakaan näytettä muita luokkia kuin juoksu ja kävely. Kuvassa 20 esitetään jälkikäsittelijän toimintaa. Sininen viiva on luokittelijan ulostulo ja punainen viiva jälkikäsittelijän antama suodatettu luokka. Kuvasta on havaittavissa myös jälkikäsittelijän tunnistukseen aiheuttama viive. Kuva 20. Esimerkki jälkikäsittelijän toiminnasta 39 4.6 Resurssien hallinta Yksi tämän työn päätavoitteista oli luoda järjestelmä, jota voidaan ajaa taustalla jatkuvasti ilman, että se vaikuttaa matkapuhelimen käyttökokemukseen tai akun kestoon. Kaikki modernit älypuhelinkäyttöjärjestelmät pyrkivät säästämään akkua siirtymällä virransäästötilaan, kun yksikään käynnissä oleva ohjelma ei vaadi aktiivisesti laskentaaikaa. Virransäästötilassa myös sensorit, kuten kiihtyvyyssensori sammutetaan, eikä aktiviteetin tunnistus ole mahdollista. Virransäästötila on pääosin vastuussa älypuhelinten akun kestosta. Esimerkiksi testilaitteen HTC Desire Z akku kestää useita vuorokausia, kun laitteen antaa olla käyttämättömänä pöydällä. Kun laitteen virransäästötilan ottaa pois päältä, akku kestää alle 12 tuntia käyttämättömänäkin. Kävikin nopeasti ilmi, että resurssien hallinnan kannalta ylivoimaisesti oleellisin asia on virransäästötilan salliminen silloin, kun käyttäjä ei liiku. Itse kiihtyvyysdatan analysointi vaatii mitättömän määrän suoritinaikaa, eikä vaikuta akun kulutukseen oleellisesti. Esimerkiksi suorittimeltaan vaatimattomimmalla, nykystandardeilla vanhanaikaisella testilaitteella ZTE Blade työssä toteutettu hahmontunnistusjärjestelmä vaatii alle prosentin suoritinaikaa. Toteutettu järjestelmä antaa mobiililaitteen vaipua virransäästötilaan, jos kymmeneen minuuttiin ei ole tunnistettu muuta kuin passiivisuutta. Järjestelmä herää virransäästötilasta kerran minuutissa viideksi sekunniksi (yksi tunnistusikkuna). Jos tänä aikana tunnistetaan aktiivisuutta, palataan aktiiviseen tilaan. Toteutettu järjestelmä kuluttaa sitä enemmän akkua, mitä aktiivisempi käyttäjä on. Tavallisena arkipäivänä keskiverto ihminen kuitenkin liikkuu ajallisesti melko pienen osan päivästä. Esimerkiksi kotona ollessaan suurin osa ihmisistä säilyttää älypuhelintaan pöydällä, joten sohvalta jääkaapille kävely ei herätä laitetta virransäästötilasta. 40 5 TULOKSET JA NIIDEN TARKASTELU Tässä luvussa tarkastellaan toteutetun järjestelmän suorituskykyä arkipäiväisen liikunnan tunnistamisessa, joka oli työn tavoite. Toinen päätavoite oli järjestelmän huomaamattomuus, jota testataan mittaamalla järjestelmän vaikutus laitteen akun kulutukseen. Muilla tavoin järjestelmä on täysin huomaamaton, koska sitä ajetaan mobiililaitteessa taustaprosessina, joka ei näy käyttäjälle muuten kuin mahdollisesti lyhentyneenä akun kestona. 5.1 Tarkkuus arkipäiväisessä käytössä Luokituksen tarkkuutta testattiin siten, että koehenkilöt pitivät järjestelmää käynnissä omissa matkapuhelimissaan yhden tavallisen arkipäivän. Koehenkilöitä pyydettiin merkitsemään päivän aikana suorittamansa liikunta noin minuutin tarkkuudella. Koehenkilöitä oli kaksi, joista kumpikaan ei ollut mukana koulutusdatan keräämisessä. 5.1.1 Ensimmäisen koehenkilön tulokset ja analyysi Kuvassa 21 on esitetty ensimmäisen koehenkilön aktiviteetit päivän ajalta kellonajan funktiona. Kuvaajaan on merkitty punaisilla laatikoilla kiinnostavat aktiivisuusjaksot eli osiot. Seuraavissa kappaleissa jokainen osio analysoidaan erikseen tarkemmin. Kuva 21. Ensimmäisen koehenkilön aktiviteetit kellonajan funktiona 41 Osio 1 on esitetty tarkemmin kuvassa 22. Koehenkilö lähti ja saapui töihin bussilla. Koehenkilö käveli kotoaan bussille ja tältä ajalta onkin tallentunut pelkkää kävelyä. Bussin saavuttua koehenkilön työpaikalle koehenkilö käveli työpisteelleen. Tämän kävelyjakson aikana järjestelmä tunnisti muutaman sekunnin kävelyn luokkaan muu liikunta. Tämä johtui luultavasti siitä, että koehenkilö nousi virheen tapahduttua portaita pitkin. Kestollisesti molemmat aktiivisuusjaksot vastaavat koehenkilön arvioita. Kuva 22. Ensimmäisen koehenkilön ensimmäisen osion aktiviteetit kellonajan funktiona Osio 2 on esitetty tarkemmin kuvassa 23. Tässä osiossa koehenkilö nousi työpisteeltään ja lähti lounaalle läheiseen ruokalaan. Kävelymatkat ruokalaan ja takaisin ovat rekisteröityneet ajallisesti ja kestollisesti oikein. Noin kello 12.01 järjestelmä on hetkellisesti luokitellut liikunnan luokkaan muu liikunta. Samoihin aikoihin tunnistus on myös käynyt muutaman kerran luokassa passiivisuus. Koehenkilö oli tuolloin ruokalan linjastolla ja kävely oli hidasta ja jaksottaista. Järjestelmä on luultavasti tunnistanut lyhyet passiivisuudet oikein, mutta on jossain vaiheessa tunnistanut yhden tai useamman näyteikkunan luokkaan pyöräily kävelyn hitaudesta johtuen. Nämä virhetunnistukset ovat saaneet jälkikäsittelijän antamaan hetkellisesti tunnistuksen luokkaan muu liikunta. Kuva 23. Ensimmäisen koehenkilön toisen osion aktiviteetit kellonajan funktiona Osio 3 on esitetty tarkemmin kuvassa 24. Koehenkilö lähti töistä bussilla, kävi ruokakaupassa ja saapui kotiinsa. Kävelymatka bussille on rekisteröitynyt oikein välillä 42 17.00–17.05. Koehenkilö nousi bussista noin kello 17.25 ja käveli läheiseen ruokakauppaan, jossa hän teki ostoksia noin kello 17.37 asti. Ostosten ajalta on rekisteröitynyt useita kävely- ja passiivisuusjaksoja. Kaupassa ollessaan koehenkilö kertoi pysähtyneensä useita kertoja miettimään ja asioimaan mm. lihatiskillä, joka selittää passiiviset jaksot. Pisin passiivisuusjakso välillä 17:35–17:37 on luultavasti aiheutunut kassalle jonottamisesta. Pisin kävelyjakso välillä 17:37–17:43 tallentui koehenkilön kävellessä kaupasta kotiin. Kuva 24. Ensimmäisen koehenkilön kolmannen osion aktiviteetit kellonajan funktiona Osio 4 on esitetty tarkemmin kuvassa 25. Tässä osiossa koehenkilö kävi lenkillä. Lyhyen kävelyjakson jälkeen koehenkilö juoksi noin 15 minuuttia. Tämä täsmää ajallisesti ja kestollisesti tarkasti koehenkilön kertomuksiin. Juoksujakson alussa ja lopussa tunnistus on käynyt luokassa muu liikunta. Tämä selittyy luvussa 4.5 esitellyllä jälkikäsittelijän heikkoudella. Juoksujakson jälkeen koehenkilö oli kävellyt pysähtymättä takaisin kotiinsa. Järjestelmä on kuitenkin tunnistanut virheellisesti useita passiivisia hetkiä kävelymatkalta. Voidaan spekuloida, että käyttäjä oli juoksujakson jälkeen väsynyt ja käveli hitaasti, nostamatta jalkoja tavallisen kävelyn tapaan. Joka tapauksessa tämä on selkeä virhe tunnistusjärjestelmältä. Virheen korjaamiseksi saattaisi riittää kävelyjakson lisääminen koulutusdataan. Kuva 25. Ensimmäisen koehenkilön neljännen osion aktiviteetit kellonajan funktiona 43 Taulukossa 7 on koehenkilön arviot päivän aktiviteettien kokonaiskestosta sekä järjestelmän tunnistamat arvot. Taulukko 7. Ensimmäisen koehenkilön arviot ja tunnistetut aktiviteettien kestot Aktiviteetti Koehenkilön arvio Tunnistettu kesto Kävely 28 min 30 min Juoksu 15 min 14 min Pyöräily 0 min 0 min Muu liikunta Ei kysytty 1 min Koehenkilö kertoi käyneensä työpäivän aikana useamman kerran hakemassa kahvia läheisestä keittiöstä. Koehenkilö oli lisäksi vieraillut työkaverin työpisteellä. Ainoa järjestelmän tunnistama tapahtuma tältä ajalta on noin 14.30 tunnistettu muutaman sekunnin muu liikunta -jakso. Virransäästöominaisuuksista ja jälkikäsittelystä johtuen järjestelmä tunnistaa heikosti lyhyitä, alle minuutin mittaisia aktiviteettijaksoja. Yhteenvetona ensimmäisen koehenkilön tuloksista voidaan sanoa, että tunnistustarkkuus on ollut melko hyvä. Erityisesti passiivisuuden tunnistaminen aktiivisuusjaksojen väleissä on ollut erinomaista. Koehenkilö käytti matkapuhelintaan normaalisti koko päivän ajan eikä normaali käyttö ole aiheuttanut aktiivisten jaksojen välissä ainuttakaan virheellistä tunnistusta. 5.1.2 Toisen koehenkilön tulokset ja analyysi Kuvassa 26 on esitetty toisen koehenkilön aktiviteetit päivän ajalta kellonajan funktiona. Kuvaajaan on merkitty punaisilla laatikoilla kiinnostavat aktiivisuusjaksot eli osiot. Seuraavissa kappaleissa jokainen osio analysoidaan erikseen tarkemmin. 44 Kuva 26. Toisen koehenkilön aktiviteetit kellonajan funktiona Osio 1 on esitetty tarkemmin kuvassa 27. Osiossa 1 koehenkilö pyöräili kodistaan työpaikalleen. Koehenkilö käveli ensin vajaan minuutin pyörävarastoon asunnostaan, jonka jälkeen koko jakso oli käyttäjän mukaan pyöräilyä. Lopussa koehenkilö käveli työpisteelleen. Järjestelmällä on ollut selvästi vaikeuksia tunnistaa pyöräily oikein. Varsinkin alkumatka on pääosin tunnistunut luokkiin muu liikunta ja passiivisuus. Alkumatkan pisin passiivisuusjakso välillä klo 8.44–8.45 selittyy liikennevaloissa odottelulla. Muut virheet johtuvat järjestelmän heikkoudesta tunnistaa lyhyitä pyöräilyjaksoja oikein. Loppumatka klo 8.45 eteenpäin oli pyörätietä ilman liikennevaloja tai muita esteitä. Tunnistus onkin toiminut loppumatkasta huomattavasti paremmin. Myös loppumatkan aikana on kuitenkin useampi jakso luokkia muu liikunta ja passiivisuus. Nämä saattavat johtua alamäistä, joissa koehenkilö ei ole polkenut ollenkaan tai on polkenut tavallista rauhallisemmin. Kuva 27. Toisen koehenkilön ensimmäisen osion aktiviteetit kellonajan funktiona Osio 2 on esitetty tarkemmin kuvassa 28. Toinen osio muodostuu koehenkilön kävelystä lounaalle läheiseen ruokalaan ja takaisin työpisteelleen. Osio 2 on lähes identtinen ensimmäisen koehenkilön toisen osion kanssa ja sama analyysi pätee. Kuva 28. Toisen koehenkilön toisen osion aktiviteetit kellonajan funktiona 45 Osio 3 on esitetty tarkemmin kuvassa 29. Kolmannessa osiossa koehenkilö pyöräili takaisin kotiinsa työpaikaltaan. Analyysi on pääosin sama kuin ensimmäisessä osiossa, mutta ajallisesti takaperin. Loppumatka (ensimmäisen osion alkumatka) on tällä kertaa tunnistunut kävelyksi, passiivisuus ja muu liikunta -luokkien sijaan. Kuva 29. Toisen koehenkilön kolmannen osion aktiviteetit kellonajan funktiona Osio 4 on esitetty tarkemmin kuvassa 30. Viimeisessä aktiviteettiosiossa koehenkilö käveli kaupungilla ja vieraili useissa liikkeissä. Koehenkilö kertoi olleensa koko ajan kävellen liikkeessä, muutamaa vaatteiden sovitusta lukuun ottamatta. Koehenkilö kertoi myös säilyttäneensä matkapuhelintaan käsilaukussa. Tunnistuksessa on selvästi liian pitkiä passiivisuusjaksoja verrattuna koehenkilön kertomuksiin. Liikkeiden sisällä kävely on luultavasti ollut liian hidasta, jotta järjestelmä olisi tunnistanut sen järjestelmällisesti kävelyksi. Myös se, että matkapuhelinta säilytettiin käsilaukussa, on saattanut vaikuttaa tunnistukseen. Koehenkilö kuitenkin mieltää lähes koko osion kävelyksi, koska hän ei pysähtynyt istumaan missään vaiheessa. Kuva 30. Toisen koehenkilön neljännen osion aktiviteetit kellonajan funktiona 46 Taulukossa 8 on koehenkilön arviot päivän aktiviteettien kokonaiskestosta sekä järjestelmän tunnistamat arvot. Taulukko 8. Toisen koehenkilön arviot ja tunnistetut aktiviteettien kestot Aktiviteetti Koehenkilön arvio Tunnistettu kesto Kävely 40 min 36 min Juoksu 0 min 0 min Pyöräily 40 min 24 min Muu liikunta Ei kysytty 5 min Myös toisen koehenkilön tuloksista nähdään, että matkapuhelimen normaali käyttö, kuten puhelut, internetin käyttö tai sähköpostien kirjoittaminen ei ole aiheuttanut tunnistuksia. Tuloksista kuitenkin nähdään myös, että passiivisuuden tunnistus on ehkä liiankin herkkä. Tuloksissa on paljon passiivisuutta paikoissa, missä koehenkilö kertomansa mukaan oli liikkeessä. Virheitä osittain selittää myös se, että koehenkilö mieltää kävelyksi myös kaupan sisällä suoritetun epäjatkuvan ja hitaan kävelyn. Työssä kävelyksi määriteltiin jatkuva tasainen kävely. Ihmiset myös luonnollisesti mieltävät pyöräilyksi koko sen ajan, jonka he ovat polkupyörän satulan päällä, kun taas järjestelmä tunnistaa vain jaksot, joissa käyttäjä polkee yhtäjaksoisesti yli 30 sekuntia. 5.2 Akun kulutus arkipäiväisessä käytössä Järjestelmän tarkan akunkulutuksen mittaaminen osoittautui haastavaksi, koska itse järjestelmä ei suoranaisesti kuluta akkua. Akkua kuluttaa mikä tahansa raskaampi operaatio, joka sattuu suorittumaan silloin, kun tunnistusjärjestelmä herättää mobiililaitteen unitilasta kerätäkseen kiihtyvyysdataa. Mobiililaitteiden käyttöjärjestelmät suorittavat hereillä ollessaan monenlaisia ylläpito- ja muita toimenpiteitä, joita kaikkia ei voi hallita. Käyttöjärjestelmä saattaa esimerkiksi tarkastaa verkon yli, onko saapunut uusia sähköposteja, ladata päivityksiä, synkronoida kelloa tai synkronoida uusimmat kuvat ja videot mediagalleriaan tai jopa verkon yli pilvipalveluun. Akun kulutusta yritettiin mitata poistamalla mobiililaitteesta kaikki ohjelmistot, joiden synkronointiasetuksia ei voitu hallita (ja jotka pystyi poistamaan) ja toistamalla tismalleen saman käyttösekvenssin siten, että tunnistusjärjestelmä oli ajossa ja siten, että se ei ollut. Sekvenssin oli tarkoitus matkia tavanomaista arkipäiväistä käyttöä. Siihen kuului sähköpostin tarkastamista ja kirjoittamista, internetin selailua ja muutama puhelu. Tarkasti toistetusta sekvenssistä huolimatta akkukestossa oli huomattavissa usean tunnin eroja. Jos yli päivän kestävän sekvenssin olisi toistanut useita kertoja tunnistuksen kanssa ja ilman, oltaisiin ehkä saatu jonkinlainen arvio vertaamalla keskiarvoja, mutta tämä olisi kestänyt viikkoja tai jopa kuukausia riippuen laitteiden määrästä. 47 Hyvän mobiililaitteen akku kestää noin yhden päivän normaalia aktiivista käyttöä. Vaikka joidenkin laitteiden akku kestää melkein kaksi päivää, täytyy laite kuitenkin ladata joka yö, ettei se lopu kesken päivän. Tästä johtuen mobiililaitteiden käyttäjiä ei usein kiinnosta laitteen tarkka akkukesto vaan se, kestääkö akku varmasti yhden päivän vai ei. Järjestelmän vaikutusta akkukestoon päädyttiinkin mittaamaan binääriasteikolla kestää päivän – ei kestä päivää. Kulutusta testattiin jokaisella työssä käytetyllä testilaitteella paitsi Galaxy Tab -tabletilla, jota oli hieman vaikea käyttää normaalisti puhelimena. Käyttäjinä kokeessa toimivat työn kirjoittaja, hänen tyttöystävänsä ja työkaverinsa. Laitetta käytettiin ensin kolme latauskertaa ilman tunnistusjärjestelmää ja kolme latauskertaa tunnistusjärjestelmän kanssa. Jokainen koehenkilö käytti laitetta oman puhelimensa sijasta normaalisti. Koska käyttäjän aktiivisuus vaikuttaa tunnistusjärjestelmän toimintaan, työn kirjoittaja lisäsi normaaliin päiväänsä testin ajaksi puolen tunnin mittaisen juoksulenkin. Odotetusti jokaisen testilaitteen akku kesti ilman tunnistusjärjestelmää yhden päivän verran, mutta ei kahta, joten laitteet ladattiin joka yö. Laite pysyi toimintakunnossa yhden kokonaisen päivän myös tunnistusjärjestelmän ollessa käytössä. Käyttäjien silmämääräisten arvioiden mukaan akkua oli kulunut hieman enemmän päivän aikana järjestelmän ollessa käytössä. Ainakin tämän yksinkertaisen mittarin perusteella järjestelmän akunkulutus ei ole nykystandardeilla ja Android-käyttöjärjestelmällä merkittävää. Tulosta tukevat myös muut työn aikana saadut käyttökokemukset. 48 6 YHTEENVETO Työn tavoitteena oli luoda järjestelmä, joka tunnistaa älypuhelimen käyttäjän jokapäiväisen arkiliikunnan huomaamattomasti vaikuttamatta älypuhelimen normaaliin käyttöön. Tämä tavoite saavutettiin hyvin. Parantamisen varaa jäi kuitenkin monella osaalueella ja jatkokehitysmahdollisuuksia on useita. Toteutettu järjestelmä asettaa kiihtyvyyssensorille erittäin vähän vaatimuksia. Järjestelmän vaatima 15 Hz:n näytteenottotaajuus on saatavilla lähes jokaisesta markkinoilla olevassa kiihtyvyysanturissa. Myös vaadittu ±2 g arvoalue on tarpeeksi pieni useimmille kiihtyvyysantureille. Aikaisemmissa tutkimuksissa laitevaatimuksiin ei ole kiinnitetty huomiota, ja niissä toteutetut järjestelmät on yleensä suunniteltu toimimaan vain tietyn sensorin kanssa. Toteutettu järjestelmä asettaa erittäin vähän vaatimuksia sensorin asennolle ja sijainnille käyttäjän vartalossa. Sensorin voi sijoittaa jopa reppuun tai käsilaukkuun, joka tekee järjestelmästä käyttökelpoisen myös naisille. Useimmissa aikaisemmissa tutkimuksissa sensorin asento ja paikka oli tarkoin määritelty eikä sen vaihtamista sallittu. Toteutettu järjestelmä suunniteltiin alusta alkaen siten, että sen ajaminen mobiililaitteessa olisi mahdollisimman näkymätöntä käyttäjälle. Järjestelmän vaikutus akun kulutukseen on pieni. Lisäksi järjestelmä toteutettiin taustaprosessina, joka ei häiritse laitteen normaalia käyttöä millään tavalla. Tämä on oleellinen vaatimus, jotta tunnistusjärjestelmä olisi oikeasti käytettävä. Tämäkin on asia, johon aikaisemmat tutkimukset eivät juuri ota kantaa. Myös koulutusdatan keräämiseen ja datan merkitsemiseen kiinnitettiin aikaisempia tutkimuksia enemmän huomiota, joka osoittautui erittäin tärkeäksi. Koulutusdatan laatu heijastui aikaisempia tutkimuksia korkeampana tunnistustarkkuutena siitä huolimatta, että käytetyt piirteet ja luokitin olivat pääosin samoja. Yksi työn suurimmista saavutuksista oli koulutusdatan laatu ja tarkkuus ja siitä johtuva erittäin korkea tunnistustarkkuus koulutusdatalla. Koulutusdataa voisi kuitenkin olla huomattavasti enemmän, ja se voisi edustaa laajempaa kirjoa erilaisia ihmisiä. Esimerkiksi vanhuksilla ja lapsilla on usein hyvin persoonallinen kävely- ja juoksutyyli, jota järjestelmä ei välttämättä nykyisellään tunnista. Myös datan merkitsemisen eli annotoinnin olisi voinut tehdä vieläkin tarkemmin. Jos järjestelmää haluttaisiin laajentaa 49 erottamaan erimerkiksi portaiden nousu ja lasku tavallisesta kävelystä, olisi se luultavasti mahdotonta, koska portaita pitkin kävely on merkitty tavalliseksi kävelyksi. Työssä otettiin hyvin pragmaattinen lähestymistapa piirteiden valintaan, joka johti suureen piirrejoukkoon. Joukkoa saisi luultavasti pienennettyä analysoimalla piirteiden tarpeellisuutta. Piirrejoukon pienentäminen ei toisi työn tavoitteiden valossa lisäarvoa, mutta saattaisi mahdollista järjestelmän käyttämisen muillakin alustoilla, kuten erittäin tehorajoittuneilla mikrokontrollereilla. Pyöräilyn tunnistaminen jätti tunnistettavista aktiviteeteista eniten toivomisen varaa. Tunnistus perustuu täysin jalan pyörivään liikkeeseen. Tunnistus on luotettava vain jos älypuhelin on käyttäjän housujen taskussa tai muuten liitettynä jalkaan. Arkipäiväinen pyöräily on erittäin epäjatkuvaa. Usein pyöräily koostuu muutaman kymmenen sekunnin mittaisista polkujaksoista ja niitä seuraavista lepojaksoista (alamäet, liikaa vauhtia jne.). Kun käyttäjä ei polje, kiihtyvyysdatassa ei ole mitään, mistä liikkeen voisi tunnistaa pyöräilyksi. Pyöräilyn tunnistusta voisi kuitenkin luultavasti parantaa huomattavasti nokkelalla jälkikäsittelyllä. Tässä työssä toteutettu jälkikäsittelijä ei sovellu tähän tehtävään kovinkaan hyvin. Pyöräilyn tunnistusta voisi myös parantaa lisäämällä järjestelmään GPS-sensoriin perustuvan paikka- ja nopeustiedon. GPS kuitenkin jätettiin tietoisesti pois, koska sen käyttäminen kuluttaa liikaa älypuhelimen akkua. Järjestelmää voisi helposti jatkokehittää tunnistamaan muitakin jatkuvia, jaksollisia liikuntamuotoja, kuten hiihto ja rullaluistelu. Työn ohessa kehitetty datankeräysjärjestelmä ja luokittimen koulutukseen sekä tulosten analysointiin kirjoitetut MATLAB-skriptit tekevät jatkokehityksestä helppoa. 50 LÄHTEET [1] J. Baek, G. Lee, W. Park & B. Yun, Accelerometer signal processing for user activity detection. Teoksessa Negoita et al. (toim.) KES 2004, LNAI 3215, Berlin, s. 610–617, 2004. [2] J. Pärkkä, M. Ermes, P. Korpipää, J. Mäntyjärvi, J. Peltola & I. Korhonen, Activity classification using realistic data from wearable sensors. IEEE transactions on information technology in biomedicine, vol. 10, no. 1, 2006. [3] N. Ravi, N. Dandekar, P. Mysore, J. & M. Littman, Activity recognition from accelerometer data. IAAI’05 Proceedings of the 17th conference on Innovative applications of artificial intelligence, vol. 3, s. 1541–1546, 2005. [4] L. Bao & S. Intille, Activity recognition from user-annotated acceleration data. Teoksessa A. Ferscha & F. Matten (toim.) PERVASIVE 2004, LNCS 3001, s. 1–17, 2004. [5] J. Mäntyjärvi, J. Himberg & T. Seppänen, Recognizing human motion with multiple acceleration sensors. Systems, Man, and Cybernetics, 2001, IEEE international conference, vol. 2, s. 747–752, 2001. [6] J. Lester, T. Choundhury, N. Kern, G. Borriello & B. Hannaford, A hybrid discriminative/generative approach for modeling human activities. IJCAI’05 Proceedings of the 19th international joint conference on artificial intelligence, p. 766–772, 2005. [7] U. Maurer, A. Smailagic, D. Siewiorek & M. Deisher, Activity recognition and monitoring using multiple sensors on different body positions. BSN’06 Proceedings of the international workshop on wearable and implantable body sensor network. p. 112–116, 2006. [8] M. Ermes & J. Pärkkä, Advancing from offline to online activity recognition with wearable sensors. EMBS 2008 30th annual international conference of the IEEE, Vancouver, 2008, s. 4451–4454, 2008. 51 [9] M. Ermes & J. Pärkkä, Detection of daily activities and sports with wearable sensors in controlled and uncontrolled conditions. IEEE transactions on information technology in biomedicine, vol. 12, no. 1, s. 20–26, 2008. [10] J. Yang, Toward physical activity diary: motion recognition using simple acceleration features with mobile phones. IMCE’09 Proceedings of the 1st international workshop on interactive multimedia for consumer electronics, s. 1–10, 2009. [11] J. Yang, H. Lu, Z. Liu & P. Boda, Physical activity recognition with mobile phones: Challenges, Methods and applications. Multimedia interactions and intelligent user interfaces Advances in pattern recognition 2010, s. 185–213, 2010. [12] J. Kwapisz, G. Weiss & S. Moore, Activity recognition using cell phone Accelerometers, ACM SIGKDD Explorations newsletter, vol. 12, no. 2, s. 74–82, 2010. [13] Y. Kawahara, H. Kurasawa & H. Morikawa, Recognizing user context using mobile handsets with acceleration sensors, PORTABLE07 IEEE international conference on portable information devices, s. 1–5, 2007. [14] D. Mizell, Using gravity to estimate accelerometer orientation, Proceedings of the 7th IEEE symposium on wearable computers, s. 252– 253, 2005.
© Copyright 2024