NIKO VUORINEN POLKUPYÖRIEN ETSIMINEN VALOKUVISTA KÄYTTÄEN LATENT SVM -MENETELMÄÄ. Kandidaatintyö

Samankaltaiset tiedostot
Kaksiluokkainen tapaus, lineaarinen päätöspinta, lineaarisesti erottuvat luokat

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS

TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

Inversio-ongelmien laskennallinen peruskurssi Luento 4

Matematiikan tukikurssi

Tässä luvussa käsitellään optimaalisten piirteiden valintaa, luokittelijan optimointia ja luokittelijan suorituskyvyn arviointia.

Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun

8 KANNAT JA ORTOGONAALISUUS. 8.1 Lineaarinen riippumattomuus. Vaasan yliopiston julkaisuja 151

EETU KUUSISTO PÄÄN ASENNON TUNNISTUS KUVASTA. Kandidaatintyö

Mitä on konvoluutio? Tutustu kuvankäsittelyyn

Ratkaisuehdotukset LH 7 / vko 47

Seuraavassa taulukossa on annettu mittojen määritelmät ja sijoitettu luvut. = 40% = 67% 6 = 0.06% = 99.92% 6+2 = 0.

1 Rajoittamaton optimointi

Luku 8. Aluekyselyt. 8.1 Summataulukko

IIKKA TEIVAS JALANKULKIJAN HAVAITSEMINEN KUVASTA

Tietotekniikan valintakoe

SGN-1251 Signaalinkäsittelyn sovellukset Välikoe Heikki Huttunen

Algoritmit 2. Luento 13 Ti Timo Männikkö

A = a b B = c d. d e f. g h i determinantti on det(c) = a(ei fh) b(di fg) + c(dh eg). Matriisin determinanttia voi merkitä myös pystyviivojen avulla:

Valokuvien matematiikkaa

MS-C1340 Lineaarialgebra ja

JUJUPRIX Kalle Tuominen & Timo Mäkeläinen Markkinointiviestinnän suunnittelutoimisto Mainio Oy. kalle@mainiota.fi timo.makelainen@mainiota.

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa

SGN Signaalinkäsittelyn perusteet Välikoe Heikki Huttunen

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

Digitaalinen signaalinkäsittely Kuvankäsittely

Jatkuvat satunnaismuuttujat

Johdatus tekoälyn taustalla olevaan matematiikkaan

S09 04 Kohteiden tunnistaminen 3D datasta

Efficiency change over time

MATEMATIIKAN KOE, LYHYT OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ

Johdatus tekoälyn taustalla olevaan matematiikkaan

T DATASTA TIETOON

Tekoäly ja alustatalous. Miten voit hyödyntää niitä omassa liiketoiminnassasi

ImageRecognition toteutus

S Laskennallinen Neurotiede

Lineaarialgebra ja matriisilaskenta II Syksy 2009 Laskuharjoitus 1 ( ) Ratkaisuehdotuksia Vesa Ala-Mattila

Kompleksiluvut signaalin taajuusjakauman arvioinnissa

Latinalaiset neliöt ja taikaneliöt

Algebralliset menetelmät virheenkorjauskoodin tunnistamisessa

Käytettävyys ja käyttäjätutkimus. Yhteisöt ja kommunikaatiosuunnittelu 2012 / Tero Köpsi

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Matematiikan peruskurssi 2

1 Kannat ja kannanvaihto

Lineaarinen yhtälöryhmä

Harjoitus 7: NCSS - Tilastollinen analyysi

Matriisi-vektori-kertolasku, lineaariset yhtälöryhmät

Matematiikan kotitehtävä 2, MAA 10 Todennäköisyys ja tilastot

Tasainen seinämänpaksuus 1

Introduction to Machine Learning

MS-A0207 Differentiaali- ja integraalilaskenta 2 (Chem) Yhteenveto, osa I

Tarvitseeko informaatioteknologia matematiikkaa?

Oppimistavoitematriisi

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

How to Support Decision Analysis with Software Case Förbifart Stockholm

2.3 Voiman jakaminen komponentteihin

Matematiikan kotitehtävä 2, MAA 10 Todennäköisyys ja tilastot

Johdatus tekoälyyn. Luento : Koneoppiminen. Patrik Hoyer. [ Kysykää ja kommentoikaa luennon aikana! ]

4. Funktion arvioimisesta eli approksimoimisesta

Ei välttämättä, se voi olla esimerkiksi Reuleaux n kolmio:

Kimppu-suodatus-menetelmä

Matriisilaskenta (TFM) MS-A0001 Hakula/Vuojamo Ratkaisut, Viikko 47, 2017

Matriisit, kertausta. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

Numeeriset menetelmät TIEA381. Luento 8. Kirsi Valjus. Jyväskylän yliopisto. Luento 8 () Numeeriset menetelmät / 35

4 Yleinen potenssifunktio ja polynomifunktio

Numeeriset menetelmät

Laskuharjoitus 9, tehtävä 6

Johdatus tekoälyn taustalla olevaan matematiikkaan

Tehtäväsarja I Kertaa tarvittaessa materiaalin lukuja 1 3 ja 9. Tarvitset myös luvusta 4 määritelmän 4.1.

Oppimistavoitematriisi

Eräs tyypillinen virhe monitavoitteisessa portfoliopäätösanalyysissa + esimerkkitapaus

Johdantoa. Jokaisen matemaatikon olisi syytä osata edes alkeet jostakin perusohjelmistosta, Java MAPLE. Pascal MathCad

3 Raja-arvo ja jatkuvuus

Seuratiedote 2/09 LIITE 4

Logistinen regressio, separoivat hypertasot

Algoritmit 1. Luento 3 Ti Timo Männikkö

Numeeriset menetelmät TIEA381. Luento 6. Kirsi Valjus. Jyväskylän yliopisto. Luento 6 () Numeeriset menetelmät / 33

Inversio-ongelmien laskennallinen peruskurssi Luento 7 8

Dierentiaaliyhtälöistä

Johdatus verkkoteoriaan 4. luento

Capacity Utilization

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

802320A LINEAARIALGEBRA OSA III

Additions, deletions and changes to courses for the academic year Mitä vanhoja kursseja uusi korvaa / kommentit

Määritelmä 1. Olkoot V ja W lineaariavaruuksia kunnan K yli. Kuvaus L : V. Termejä: Lineaarikuvaus, Lineaarinen kuvaus.

5. Numeerisesta derivoinnista

Joukot. Georg Cantor ( )

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

5.3 Suoran ja toisen asteen käyrän yhteiset pisteet

Matematiikan didaktiikka, osa II Algebra

Transkriptio:

NIKO VUORINEN POLKUPYÖRIEN ETSIMINEN VALOKUVISTA KÄYTTÄEN LATENT SVM -MENETELMÄÄ Kandidaatintyö Tarkastaja: Heikki Huttunen 12.12.2014

I TIIVISTELMÄ TAMPEREEN TEKNILLINEN YLIOPISTO Signaalinkäsittelyn ja tietoliikennetekniikan koulutusohjelma NIKO VUORINEN: Polkupyörien etsiminen valokuvista käyttäen Latent SVM -menetelmää Kandidaatintyö, 15 sivua Joulukuu 2014 Pääaine: Signaalinkäsittely ja multimedia Tarkastajat: yliopistonlehtori Heikki Huttunen Avainsanat: Tukivektorikone, Histogram of Oriented Gradients Tässä kandidaatintyössä tutustutaan polkupyörien tunnistamiseen käyttäen tukivektorikonetta (Latent SVM). Menetelmä on kehitetty eteenpäin menetelmästä Histogram of Oriented Gradients (HOG), joka on kehitetty alunperin ihmisten tunnistamiseen. Latent SVM:ää on jatkokehitetty siten, että HOG käydään paloittain läpi ja tutkitaan kuinka lähekäin eri palat ovat. Tämä vähentää mahdollisuuksia, että vahingossa tunnistettaisiin esimerkiksi heijastuksia vedestä, jotka voivat saada gradientteina samankaltaisia piirteitä kuin oikeat objektit. Työssä saatiin tuloksiksi, että puolet polkupyöristä tunnistettiin ja suurin osa kuvista, joissa polkupyöriä ei ollut myöskään tunnistuksia ei löytynyt. Poikkeuksena oli kuvat, joissa oli moottoripyöriä, skoottereita tai vankkureita. Johtopäätöksenä saatiin, että menetelmä ei ole kovin hyvä reaaliaikaisissa sovelluksissa, koska jokainen tunnistus vie aikaa noin 4 sekuntia.

II ABSTRACT TAMPERE UNIVERSITY OF TECHNOLOGY Bachelor s Degree Programme in Signal Processing and telecommunication engineering NIKO VUORINEN : Finding bicycle s from photographs by using Latent SVM Bachelor of Science Thesis, 15 pages December 2014 Major: Signal Processing and Multimedia Examiner: University Lecturer Heikki Huttunen Keywords: Support Vector Machine, Histogram of Oriented Gradients This bachelor s thesis idea is to introduce reader to bicycle recognition using latent SVM. This method has been developed from method Histogram of Oriented Gradients (HOG) which idea has been to recognize humans. Latent SVM is advanced method which makes parts from objects and calculates how close they are. After this it is less likely to recognize reflections from water for instance which can have same kind patterns than real objects. Results in this work was that half of pictures which had bicycles were recognized and most of pictures which did not have there were no recognitions. Exception were pictures which had motorcycles, scooters or wagon. Conclusion we got idea that this method is not good for real-time applications because every recognition takes time about 4 seconds.

III ALKUSANAT Tämä kanditaatin työ on tehty Tampereen teknillisen yliopiston signaalinkäsittelyn laitokselle kesäkuun 2014 ja joulukuun 2014 välisenä aikana. Haluaisin kiittää työnohjaamisesta ja neuvoista Heikki Huttusta ja työntutkimuksessa apuna ollutta Juha Pajulaa. Haluaisin myös kiittää opiskelutovereita, jotka saivat kuunnella avutumisia ja toimivat muutenkin psykologeina. Tampereella, joulukuun 12. päivänä 2014 Niko Vuorinen

IV SISÄLLYS 1. Johdanto.................................... 1 2. Hahmontunnistus................................ 3 2.1 Tukivektorikone.............................. 3 2.2 Histogram of oriented gradients..................... 5 2.3 Latent SVM................................ 6 3. Tutkittu ohjelmisto............................... 8 4. Tulokset..................................... 10 5. Yhteenveto................................... 14 Lähteet....................................... 16

V TERMIT JA NIIDEN MÄÄRITELMÄT PASCAL VOC INRIA SVM HOG SIFT liukuikkuna Hahmontunnistuksen ja kuva-analyysin kansainvälinen työryhmä (tulee sanoista Pattern analysis, statistical modelling and computational learning) Kansainvälinen hahmontunnistuksen kilpailu (tulee sanoista Visual Object Classes) Ranskalainen kansallinen tutkimuslaitos (tulee sanoista Institut national de recherche en informatique et en automatique) Tukivektorikone (engl. Support vector machine) Histogram of Oriented Gradients Scale-invariant feature transform Tunnettu yleisesti nimellä Sliding Window sekaannusmatriisitunnettu yleisesti nimellä Confusion Matrix rajauslaatikko Tunnettu yleisesti nimellä Bounding Box

1 1. JOHDANTO Hahmontunnistus on yksi signaalinkäsittelyn keskeisimmistä tutkimuskohteista. Hahmontunnistus pyrkii erottamaan digitaalisesta datasta piirteitä toisistaan. Jokapäiväinen hahmonluokittelija on esimerkiksi sähköpostin roskapostisuodatin tai valokuvauksessa digitaalisen kameran kasvontunnistusalgoritmi. Hahmontunnistuksen sovelluksia yleensä ovat erilaiset kuvan- ja äänentunnistukset, joissa tunnistetaan kuvasta esimerkiksi rekisterikilpiä tai äänisignaalista paikka, missä signaali on nauhoitettu. Tunnistettava data ei välttämättä ole pelkästään kuvaa tai ääntä, vaan data voi hyvin olla käytännössä mitä tahansa. Tämä työ keskittyy polkupyörien tunnistukseen valokuvista. Työn tarkoituksena on tunnistaa pyörät ottamatta kantaa polkupyörän asentoon. Tarkoituksena on myös etsiä valokuvasta kohta, mistä polkupyörä esiintyy. Ongelmana ovat ääriasennot, eli jos pyörä on kuvattu täysin edestä päin tai takaapäin, toinen mahdollinen ongelma on jos polkupyörä ei ole kuvassa kokonaisuudessaan. Koska polkupyörä on objektina sellainen, joka sisältää kaksi rengasta, on mahdollista että kuvat joissa on paljon renkaita tunnistautuvat vahingossa polkupyöriksi. Työn tarkoituksena on perehtyä latent SVM:n käyttöön ja tutustua PASCAL Visual Object Classes Challengea (VOC) varten luotuun luokitusalgoritmiin. Tarkoituksena on opettaa luokitin tunnistamaan valokuvista polkupyörät, eli kertoa luokittimelle millaista objektia kuvasta etsitään. Luokittemelle olisi mahdollista opettaa 20 luokkaa, mutta tarkoitus on vain opettaa polkupyörä-luokka. Luokitin toimii siten, että sillä on mahdollista löytää ja tunnistaa kaikki valokuvan polkupyörät. Tulosten saantiin tarvitaan kaikista luokista mallit, joten mallit joudutaan kuitenkin laskemaan. Työssä selvitetään, kuinka hyvin luokitus toimii, ja millaisia parametreja luokituksessa on ja miten niiden vaihtaminen vaikuttaa lopputuloksiin. Menetelmä on jatkoa Histogram of oriented gradients -menetelmälle, joka on esitelty vuonna 2005. Kuitenkin on tilanteita jolloin menetelmä ei riitä. Latent SVM on kehitetty tällaisia hankalimpia tilanteita varten. Latent SVM ei ole kuitenkaan enää kehittynein menetelmä vaan tästäkin eteenpäin on kehitetty menetelmiä ImageNetchallengea varten, missä luokkia voi olla 10000 ja kuvia miljoonia. Erona kuitenkin on, että ImageNet-challengessa käytetään tukivektorikoneiden sijaan pääasiassa neuroverkkoja. Työssä perehdytään aluksi taustalla olevaan teoriaan, jossa käsitellään yleises-

1. Johdanto 2 ti hahmontunnistusta, tukivektorikoneita ja kuvan gradienteista laskettaviin histogrammipiirteisiin. Tämän jälkeen käydään latent SVM:n teoria läpi, mikä jälkeen perehdytään ohjelmistoon. Latent SVM:n matemaattinen tausta jätetään kuitenkin suurimmalta osalta käsittelemättä, koska se ei ole työn kannalta tarkoituksen mukaista. Kun ohjelmisto on käsitelty perehdytään tuloksiin ja lopuksi kerrataan työtä ja pohditaan menetelmälle mahdollisia sovelluksia. Työn toteutusosa suoritetaan käyttäen MATLAB:ia ja mahdollisuuksien mukaan OpenCV:tä. Laskenta suoritetaan joko kannettavalla tietokoneella tai vaihtoehtoisesti etäpalvelimella mahdollisuuksien mukaan. Suurimmaksi ongelmaksi todennäköisesti muodostuu laskenta-ajat, jotka eivät ole luokittimen opettamisessa yleensä ole lyhyitä.

3 2. HAHMONTUNNISTUS Signaalinkäsittelyn yksi osa-alueista on hahmontunnistus, (englanniksi pattern recognition) jossa tunnistetaan erilaisia piirteitä. Piirteet ovat arvojoukkoja, joista voidaan mitata huomattava muutos verrattuna muuhun mittausdataan. Tämäntapaisia piirteitä voisi olla esimerkiksi poikkeukset sydänkäyrässä tai valokuvasta löytyvät kasvot. Hahmontunnistuksessa yleensä opetetaan luokitin opetusdatan avulla. Opetusdata on tässä tapauksessa kuvia, joissa esiintyy polkupyöriä ja myös kuvia joissa ei polkupyöriä esiinny. Kuviin on merkitty, mitä sieltä pitäisi löytyä ja täten saadaan opetettua luokitinta paremmaksi, kun opetusdata on käyty läpi tarkastellaan luokitin vielä testidatalla. Testidata on samantyyppistä dataa kuin opetusdatakin, monesti opetusdatan ja testidatan ero on vain määrätty. Esimerkiksi datasta 3/4 osaa on opetusdataa ja 1/4 osa on testidataa. Erona lähinnä on se, että testidatalla testataan kuinka hyvin opetettu malli toimii. Tässä työssä hahmontunnistus tarkoittaa sitä, että etsitään valokuvadatasta piirrevektoreita, joiden avulla yritetään oppia luokka polkupyörä. Tämän jälkeen, kun ollaan käsitelty opetusdata, joita on noin 5800 kuvaa, käsitellään vielä testidata, joita on n. 11000 kuvaa. Kuvissa esiintyvät objektit riippuvat luokasta, mutta jokainen kuva käsitellään läpi, jotta saadaan malli mahdollisimman tarkaksi. Data käydään tarkemmin läpi kappaleessa 4. Hahmontunnistukseen on monia tekniikoita, joista nykyään kuvienkäsittelyssä yleisimmät ja eniten käytetyt ovat neuroverkot ja tukivektorikoneet. Neuroverkot perustuvat ajatukseen, että jokainen hermo tekee yksinkertaisia kertolaskuja, joiden perusteella lopulta saadaan käsitys siitä, mihin luokkaan näyte kuuluu. Neuroverkkojen opettaminen on tyypillisesti hidasta, mutta niillä tunnistaminen on nopeata. 2.1 Tukivektorikone Hahmontunnistuksen tärkein parametri on raja, milloin päätetään kuuluuko näyte luokkaan A vai luokkaan B. Lineaarinen tukivektorikone ratkaisee tämän luomalla suoran pinnan, joka ratkaisee luokan johon näyte kuuluu. Tätä pintaa kutsutaan yleisesti ratkaisupinnaksi. Tukivektorikone on ajatuksena hyvin yksinkertainen ja monissa hahmontunnistusongelmissa se onkin toimiva. Tukivektorikoneen opettaminen ei ole niin hidasta kuin neuroverkon, mutta negatiivisena puolena verrattuna neuroverkkoihin on että tunnistaminen ei ole yhtä nopeaa. Tukivektorikoneella tunnistetaan tässä työssä polkupyörät, käyttäen hyväksi kuvasta laskettuja histogram-

2. Hahmontunnistus 4 Kuva 2.1: 2-uloitteinen tukivektorikone meja. Tukivektorikoneiden tärkein ominaisuus, jonka takia niitä tutkitaan paljon on, että tukivektorikone käytännössä maksimoi luokituksen ratkaisupinnan. Vapnik esitteli artikkelissaan tukivektorikoneiden toiminta periaatteen [6]. Artikkeli on vuodelta 1963, joten kyseiseen aikaan menetelmä ei ollut vielä kovin käyttökelpoinen johtuen lähinnä laskennan raskaudesta. Cortes et. al esitteli tukivektorikoneiden käyttöä myöhemmin artikkelissaan [1]. Vaikka artikkelissa käytiinkin asiaa tukivektoriverkon kautta, on artikkeli silti ensimmäisiä artikkeleita, jossa tukivektorikoneille on kehitetty järkeviä sovelluksia. Tukivektorikoneen ratkaisupinta kaavamuodossa on w x b = 0 (2.1) Kaavassa 2.1 w on normaalivektori hypertason suhteen ja b on kompensaatio w suhteen. Kuvassa 2.1 näkyvä katkoviiva kuvastaa tukivektorikoneen optimaalista ratkaisupintaa, joka jakaa siniset ja punaiset ristit, eli x:n arvot suoralla noudattavat kaavaa 2.1. Todellisuudessa opettaminen on monimutkainen operaatio, johon liittyy muun muassa kernel trick iksi kutsuttu menetelmä, jolla kuvataan moniulotteista tukivektorikonetta ytimen eli kernel in avulla.

2. Hahmontunnistus 5 (a) Kuva polkupyörästä (b) Sama kuva gradientteina Kuva 2.2: Histogram of oriented gradients -esimerkkikuvat 2.2 Histogram of oriented gradients Histogram of oriented gradients on menetelmä, jossa tunnistetaan, mihin suuntaan kuvan gradientit osoittavat ja niistä tehdään histogrammi. Dalal et al. mukaan kuvasta on helppoa tunnistaa objekteja ja ulkonäköjä gradienttien perusteella, eli reunojen suuntiin [2]. Menetelmä alkaa sillä, että normalisoidaan kuvan gamma ja värit. Tämän jälkeen lasketaan gradientit ja jaetaan kuva osiin, eli lohkoihin. Kun tämä on tehty kontrasti, eli kuvan sävyt, normalisoidaan lohkojen suhteen ja kerätään HOG:it tunnistusikkunan suhteen. Menetelmä on kehitetty INRIA:ssa tunnistamaan ihmisiä kuvista. Nykyään menetelmää käytetään myös liikkuvasta kuvasta tunnistamiseen ja nykyään tunnistetaan myös eläimiä ja ajoneuvoja. Ihmisten tunnistamiseen käytetään ympyrän ensimmäistä puolikasta, mutta kun kyseessä on muita objekteja väliä voidaan laajentaa ympyrän loppuun asti. Menetelmää käytetään latent SVM:ssä esiprosessoimaan kuvia. Erona normaaliin toimintatapaan on, että yleensä HOG:ia käytetään lineaarisen SVM:n kanssa. Lowen artikkeli esittelee HOG:in takana olevan matemaattisen taustan [5]. Vaikka artikkeli esittelee uuden menetelmän, Scale-invariant feature transform (SIFT), sitä on silti pidetty varsinkin HOG:in matemaattisena edeltäjänä. Kuvissa 2.2 on esitetty eräs kuva siten kun ihminen sen näkee ja myös siten kuin HOG sen kuvan näkee. Kuvassa 2.2(a) on kuva polkupyörästä. Sama kuva on myös kuvassa 2.2(b), jossa kuva on esitetty gradientteina. Kuvista voidaan päätellä, että polkupyörä on suhteellisen yksinkertainen objekti tunnistaa HOG:sta, koska lähes jokaisen polkupyörän profiili on lähes samanlainen. Tosin tämä toimii vain niin kauan, kun kuvan ottaa kohtisuoraan pyörästä, kun kääntää pyörän esimerkiksi 90 astetta oikealle tai vasemmalle, tämän jälkeen HOG näyttää suhteellisen paljon erilaiselta. Tämän takia on latent SVM kehitetty.

2. Hahmontunnistus 6 Kuva 2.3: Polkupyörän opittu malli gradientteina 2.3 Latent SVM Latent SVM:ssä luokitellaan kuvista piilossa olevia piirteitä. Felzenszwalb et al. esittelivät käsitteen latent SVM artikkelissaan [3]. Latent SVM pitäisi olla parempi menetelmä kuin HOG johtuen siitä, että latent SVM huomioi ääritilanteet, joissa polkupyörä on kuvattu edestä tai takaa. Menetelmän ideana on, että tunnistettava piirre, esimerkiksi polkupyörä, jaetaan erilaisiin osiin. Osia voisivat polkupyörän tapauksessa olla muun muassa satula tai etupyörä. Matemaattisesti menetelmää voidaan esitään optimointiongelmana, jossa maksimoidaan lausetta score(model, x) = score(root, x) + p parts max[score(p, y) cost(p, x, y)], (2.2) y missä on score(root, x) tarkoittaa kantasuodattimen antamaa osumatarkkuutta, joka tarkoittaa kuinka hyvin kantasuodattimen gradientit korreloivat kuvassa esiintyviä gradientteja. Polkupyörän kantasuodin on esitetty vasemmassa sarakkeessa kuvassa 2.3. Toinen termi kaavassa 2.2 on score(p, y), joka kuvaa osasuodattimien gradienttien korrelaatiota kuvassa oleviin osiin nähden. Polkupyörää mallinnetaan kahdeksalla osasuotimella joiden kuvat ovat kuvassa 2.3 keskellä. Kohteen asennosta riippuen, osat eivät ole aina samassa kohdassa ja tätä pyritään kompensoida termillä cost(p, x, y), joka sallii osasuotimien siirtymän vektorin y mukaisesti. Toisin sanoen

2. Hahmontunnistus 7 jokaista osasuodinta yritetään siirtää vektorin y verran ja isoista siirtymistä annetaan miinuspisteitä sen mukaan kuinka suuri siirtymä on. Miinuspisteiden määrä näkyy oikealla kuvassa 2.3. Kuvassa mustat arvot näyttävät pieniä arvoja ja valkoiset suuria ja jokaisen laatikon keskellä arvo on nolla, mikä maksimoi osumatarkkuuden. Kaavan 2.2 mukaisia malleja opetetaan useita vastaamaan eri asentoja. Kuvan 2.3 jokainen rivi vastaa yhtä tällaista mallia, ylin rivi vastaa tilannetta, jossa polkupyörä on kuvattu sivusta ja ohjaustanko on oikealla. Vastaavasti alin kuva vastaa tilannetta, jossa pyörä on kuvattu täysin edestä. Todellisessa mallissa ovat myös tilanteet, joissa polkupyörän ohjaustanko on vasemmalla. Muuten kaavan 2.2 siirtymät y olisivat suuria ja objekti saisi paljon miinuspisteitä, joka johtaisi polkupyörän tunnistamattomuuteen. Opettamisessa mielenkiintoinen asia on, vaikka siinä etsitään positiivisia arvoja, keskitytään menetelmässä silti paljon enemmän negatiivisiin arvoihin. Eli oikeastaan malli lopulta tietää paljon paremmin, missä ei ainakaan haluttuja objekteja ole kuin sen, missä objekti on. Latent SVM hyödyntää myös niin sanottua liukuikkunaa. Tunnistusvaiheessa käydään koko kuva liukuikkunalla läpi ja tarkastellaan löytyisikö kuvasta haluttu malli ja missä se kuvassa sijaitsee. Käytännössä osasuotimien erilaisten siirtymien vuoksi laskentaa jouduttaisiin tekemään todella paljon, joten kaavan 2.2 jälkimmäistä summaa lasketaan vain jos kantasuodin sopii kohteeseen riittävän hyvin, eli jos kaavan 2.2 ensimmäinen termi score(root, x) on riittävän iso. Kustannusfunktio 2.2 voidaan esittää myös muodossa f β (x) = max β ψ(x s), (2.3) s S(x i ) missä β on mallin parametrivektori ja s esittää kohteen asentoa kuvassa. Tarkempi kuvaus kaavasta löytyy artikkelista [3]. Lopuksi itse tukivektorikone optimoidaan minimoimalla lauseke E lsvm (β) = 1 2 β 2 + C n max[0, 1 y i f β (x i )] (2.4) i=1 vektorin β suhteen. Lauseke koostuu kahdesta osasta, joista ensimmäinen on niin sanottu regularisointitermi, jonka tarkoituksena on parantaa luokittelijan yleistymistä uusille näytteille. Regularisoinnin voimakkuus parantuu kertoimen C mukaan. Toinen termi sovittaa kertoimet vektorissa β, niin että SVM ennustaa hyvin todellisia luokkia y i, jonka arvot on joko 1 tai 1. Jos ennuste f β (x i ) = y i, niin silloin y i f β (x i ) = 1 ja summattavasta termistä tulee 0.

8 3. TUTKITTU OHJELMISTO Ohjelmisto on toteutettu MATLAB:lla, jolla pystytään opettamaan tunnistamaan polkupyörät kuvista. Menetelmälle olisi myös OpenCV toteutus, mutta kyseiselle toteutukselle pitää olla olemassa valmiiksi opetettu luokitin. Käynnistäessä opetusfunktiota ensimmäistä kertaa täytyy kääntää C-ohjelmointikielellä luodut optimointitiedostot. MATLAB toteutuksen opetukselle voidaan antaa parametreina joku PASCAL:in luokista ja kuinka monen komponentin malli halutaan luoda. Komponenttien lukumäärän voi vaihdella kahden välein, johtuen siitä että malli pitää luoda siten, että se huomioi objektin olevan vertikaalisesti miten päin tahansa, esimerkiksi polkupyörän tanko on mallissa aina sekä oikealla että vasemmalla. Toinen muutettava parametri on kompensaatio, joka tarkoittaa sitä kuinka lähellä objektin pitää olla mallia, jotta se tunnistuu. Opetukseen kuluisi modernilla pöytäkoneella, vuonna 2014, noin viisi tuntia ja testaamiseen kolme tuntia. Kuitenkin tässä tässä työssä laskenta suoritetaan vanhemmalla kannettavalla tietokoneella, joten laskenta-ajat käytännössä melkein tuplaantuivat. Työssä oli mahdollista myös käyttää laskentaklusteria, mutta saatavissa oleva ympäristö ei tukenut rinnakkainlaskentaa etänä. Oli lopulta järkevämpää suorittaa laskenta kannettavalla tietokoneella. Algoritmi toimii niin, että aluksi etsitään kuvat joissa on haluttu objekti, tässä tapauksessa polkupyörä. Tämän jälkeen aloitetaan etsimään kuvat joissa ei ole haluttua objektia. Kun kuvat on eroteltu aletaan varsinaisesti opettamaan mallia. Aluksi muodostetaan positiivisten kuvien perusteella positiivista mallia ja tämän jälkeen muodostetaan negatiivista mallia. Kun negatiivista mallia on luotu tarpeeksi, että se ei muutu aletaan uudestaan tekemään positiivista mallia. Tällä tavalla iteroidaan kunnes haluttu määrä kierroksia käyty. Kierrosten määrä riippuu siitä kuinka monen komponentin malli halutaan luoda. Ohjelmistoon on tehty myös tunnistusalgoritmi, jonka toiminta perustuu siihen että ladataan ensin etsittävä malli, esimerkiksi polkupyörä. Tämän jälkeen etsitään kuvista haluttuja objekteja. Samalla pystytään tarkistamaan malli ja tarkastelemaan millaisena malli näyttää gradientteina. Parametrina tunnistukseen voidaan käyttää kompensaatiota, jolla voidaan määrätä kuinka hyvin objektin pitää vastata mallia. Kun tunnistus on suoritettu voidaan tarkistaa, missä tunnistettu objekti on, vaikka kuvasta tunnistettaisiin oikea objekti silti se ei takaa, että objekti olisi kuvassa

3. Tutkittu ohjelmisto 9 oikeassa paikassa. Tunnistustulos näytetään kuvassa punaisena laatikkona, joka on niin kutsuttu rajauslaatikko. Rajauslaatikko liittää objektiin yhteen liittyvät osat yhteen ja näyttää mitä jää osien sisäpuolelle. Kun kaikista luokista on tehty mallit voidaan sen jälkeen laskea keskimääräiset tarkkuudet luokille. Tämä antaa kuvaa siitä kuinka hyvin erilaiset luokat toimivat, kun tämä on tehty voidaan hyvin analysoida tuloksia ja tulkita mihin käyttötarkoituksiin luokitinta voidaan käyttää.

10 4. TULOKSET Luokittimen opettamiseen on käytetty aiemmin mainittua VOC-kilpailun dataa. Kyseinen data on valittu jo sen takia, että alunperin luokitin on kyseiseen kilpailuun luotu, joten implementointi oli todella helppoa. Data sisältää 20 luokkaa, jotka osa ovat jopa tahallaan samantapaisia ja osa ovat täysin erilaisia. Samoissa kuvissa voi olla myös monen eri luokan objekteja. Tunnistustarkkuutta pystytään lisäämään, muodostamalla mallin useammalla komponentilla ja muuttamalla tunnistuksessa käytettävää kompensaatiota, tällöin voidaan tosin saada enemmän false-positive arvoja, jotka tarkoittavat sitä että tunnistetaan objekti, joka ei oikeasti ole haluttu objekti. Luomalla useamman komponentin malli otetaan käytännössä vain enemmän malleja väliltä polkupyörä olisi kuvattu edestä ja polkupyörä olisi kuvattu sivulta. Tulosdataa on kuvailtu enemmän kuvaajassa 4.1. Kuvaajassa huomaa yhden selvästi suuremman palkin, joka on ihmisiä kuvaava luokka. 2. palkki kuvassa on polkupyörä-luokka, joka kertoo kuinka monessa opetuskuvassa on polkupyöriä. 2007 vuoden VOC-datalla on menetelmän kotisivun mukaan saatu ilman bounding boxeja keskimääräiseksi tarkkuudeksi 60,3% ja rajauslaatikoiden kanssa 62,2% [4]. Tulokset ovat hyvät, koska luokkia on 20 ja harvemmin päästään ihan yli 50% tarkkuuksiin tai edes yli 40% tarkkuuteen. Vuoden 2012 datalla ei työn puolesta ollut mahdollisuuksia laskea keskimääräisiä tarkkuuksia, koska laskentaa meni yhdellä luokalla aivan liikaa. Joten sen sijaan tarkastelimme, missä kuvista löytyi polkupyörä ottamatta kantaa siihen, löytyikö pyörä oikeasta kohdasta kuvaa. Taulukossa 4.1 löytyy sekaannusmatriisi, joka kertoo millä tavalla tunnistettiin kuvista polkupyöriä. Sekaannusmatriisissa ideana on, että matriisiin merkataan jokainen tunnistustapaus erikseen. Tällöin saadaan tietoa siitä, kuinka paljon on virheellisesti tapahtuneita tapauksia ja mihin virheelliset tapaukset keskimäärin menevät. Sekaannusmatriisissa kaikki halutut tapaukset löytyvät diagonaalilta ylävasemmalta alas oikealle. Yllättävää matriisissa on, että vain hieman yli puolet kuvista, joissa oli polkupyörä Tunnistettu Todellisuus Polkupyörä Ei polkupyörää Σ Polkupyörä 2,8% 0,2% 3,0% Ei polkupyörää 2,1% 94,9% 97,0% Σ 4,9% 95,1% 100% Taulukko 4.1: Sekaannusmatriisi polkupyöräluokan tunnistuksista

4. Tulokset 11 2000 1800 1600 1400 1200 1000 800 600 400 200 0 0 5 10 15 20 25 Kuva 4.1: Opetusdata palkkeina löydettiin polkupyörä. Tämän näkee kun katsoo taulukosta 4.1 todellisuus sarakkeen polkupyörä-kohtaa, siitä nähdään että 2, 8% polkupyöristä tunnistettiin ja 2, 1% jäi tunnistamatta. Tämä johtuu todennäköisesti algoritmin tavasta etsiä pikemminkin kohtia, joissa ei ole polkupyöriä, kuin että etsittäisiin polkupyöriä kuvista. Taulukon 4.1 tuloksia voidaan analysoida F1 scoren avulla, joka lasketaan kaavalla F 1 = 2 precision recall precision + recall. (4.1) Tässä kaavassa precision tarkoittaa sitä kuinka suuri osa tunnistetuista positiivisista arvoista on oikein. Tässä tapauksessa precision-arvo on 0, 93. recall puolestaan tarkoittaa sitä, kuinka hyvin todellisuuden oikeat arvot tunnistettiin positiiviseksi, näillä arvoilla arvoksi saatiin 0, 57. Kun näillä arvoilla lasketaan F1 score kaavalla 2.2 saadaan tulokseksi 0, 71. Koska arvot skaalautuvat välillä 0 ja 1, jossa 1 on paras arvo ja 0 huonoin. Tämän jälkeen voidaan päätellä, että tulokset ovat oikein hyvät. Kuvasta 4.2(a) löytyy polkupyörä, jota ei ole löydetty. Tämä johtuu siitä, että polkupyörä on suhteellisen kaukana kamerasta. Toisaalta oikein tunnistettujen kuvien joukosta löytyi myös tapauksia, jossa polkupyörä oli yhtä kaukana kuin kyseisessä

4. Tulokset 12 (a) Olisi pitänyt tunnistaa (b) Väärin tunnistettu Kuva 4.2: Esimerkit väärin tunnistetuista tapauksista (a) Helposti tunnistettava polkupyörä (b) Vaikeasti tunnistettava polkupyörä Kuva 4.3: Esimerkit oikein tunnistetuista tapauksista kuvassa. Toisessa kuvassa 4.2(b) löytyy kuva, jossa luokitin on löytänyt polkupyörän, mutta oikeasti kuvasta löytyykin vankkurit. Polkupyöräksi luultu alue on punaisen laatikon sisällä. Näistä kuvista 4.2 voisi päätellä, että suurin syy huonoihin tunnistustuloksiin on se, että kuvasta löytyy pyörä ja jotain pyörää muistuttavaa, tai että polkupyörä on liian kaukana kuvassa. Kuitenkin paljaalla ihmissilmällä näkee selvästi, että kyseessä ei ainakaan ole polkupyörä. Kuviin 4.3 on otettu kuvia polkupyöristä, jotka on tunnistettu oikein. Kuva 4.3(a) on kuva pyörästä, joka on isosti kuvassa ja näin pitäisi olla helppo tunnistaa. Tosin kuvasta selviää, että ihan kokonaisuudessaan ei luokittelija pyörää tunnista, koska osa etu- ja takapyörästä jää tunnistusalueen ulkopuolelle. Toisaalta kuva 4.3(b) on todella hyvin tunnistettu, vaikka ihmissilmällä joutuu vähän aikaa etsimään kohtaa, jossa polkupyörä on. Positiivisena erona HOG:iin voidaan todeta, että tunnistuksessa ei tule vääriä tunnistuksia juuri yhtään. Vondrik et al. artikkelissa käsitellään, kuinka maailma

4. Tulokset 13 HOG:in läpi eroaa maailmasta ihmissilmän läpi [7]. Jos käytetään perinteisiä tunnistusmenetelmiä suoraan, ilman latent SVM:ää, tunnistuksessa voidaan saada paljon enemmän vääriä tunnistuksia. Esimerkiksi heijastus vedestä voi aiheuttaa tunnistuksen, vaikka mitään oikeata objektia ei olisikaan näkyvissä. Latent SVM:ssä tämä ongelma on korjattu tunnistamalla objekti osina, toisaalta myös Latent SVM:ssä keskitytään enemmän tarkastelemaan, ettei mistään löydy haluttuja objekteja. Tuloksista voidaan päätellä, että varsinaisesti menetelmällä ei kovin hyvin pysty etsimään polkupyöriä kuvista. Toisaalta menetelmä on todella hyvä, jos tarkoituksena on varmistaa, että kuvissa ei ole haluttuja objekteja. Puolet polkupyöristä, jotka kuvissa olivat löytyivät kuitenkin hyvin. Ajan puutteen takia tuloksia ei pystytty tarkastelemaan kuin 6:lla mallilla. Akateemisen mielenkiinnon takia olisi ollut mielenkiintoista tietää, mitä tapahtuu kuin mallien määrää lisätään tai vähennetään.

14 5. YHTEENVETO Työn tarkoituksena oli tutkia, miten latent SVM -menetelmä toimii. Tarkemmin käsiteltiin, millä tavalla menetelmä toimii polkupyörän tunnistamisessa. Menetelmä perustuu HOG:iin, joka perustuu SIFT:iin. Erona on, että objekteja käsitellään osina ja tämän jälkeen ne laitetaan SVM:ään, kun taas normaalisti HOG:ssa laitetaan suoraan objektit SVM:ään. Latent SVM:stä on olemassa toteutus MATLAB:lle ja OpenCV:lle. OpenCV vaatisi valmiiksi opittua mallia, joten malli pitäisi ensin opettaa MATLAB:lla. Ongelmana kuitenkin on, että mallin laskenta vaatii todella paljon laskentaa. Koska eksplisiteettisiin tuloksiin vaaditaan kaikkien luokkien opettaminen, vie tuloksien laskeminen vähintään viikon laskentaa. OpenCV:lle tehtyyn toteutukseen ei kuitenkaan työssä perehdytty. Saadut tulokset olivat hyviä, josta voidaan päätellä että menetelmä on erittäin toimiva varsinkin polkupyörien tunnistukseen. Hyviä tuloksia voidaan perustella esimerkiksi polkupyörän tunnistettavilla osilla, jotka pysyvät samoissa paikoissa lähes jokaisessa polkupyörässä. Jokaisessa pyörässä on kuitenkin satula, kaksi pyörää ja ohjaustanko. Koska osien etäisyyksiä arvioidaan vektoreilla, ja jos etäisyydet eivät ole oikeita annetaan miinuspisteitä, polkupyörässä etäisyydet ovat suurin piirtein yhtä kaukana toisistaan riippumatta pyörästä. Uudemmissa menetelmissä on ollut jopa 200 luokkaa, joten voisi kuvitella, että jos luokkien opettamiseen menee verrannollinen aika verrattuna luokkien määrään tarkoittaisi tämä sitä, että yhden luokan opettamiseen menisi 150 tuntia. Todellisuudessa näin ei kuitenkaan ole, koska nämä menetelmät on ohjelmoitu tehokkaammin kuin latent SVM. ImageNetin Internet-sivujen mukaan 2013 kilpailun voittaja oli suunniteltu osakseen toimimaan iphonella. Tosin tämä ei kyllä kerro mitään vielä kauan opettamiseen menee aikaa, tosin latent SVM:n luokittaja käyttää noin viisi sekuntia jokaisen kuvan luokittamiseen, kun taas ImageNetissä käytetty iphoneluokittaja luokitti kuvan noin sekunnissa. Latent SVM on tarkkuudeltaan hyvä menetelmä objektien tunnistamiseen, kuitenkin menetelmä on suhteellisen raskas ja vaatii paljon laskentaa. Varsinaisesti kuvien tunnistaminen ei ole kovinkaan kevyt operaatio, eikä myöskään mallien luominen. Reaaliaikaisissa sovelluksissa ei menetelmä ole todennäköisesti kovin käyttökelpoinen, myöskin luokittajat joita käytettiin työssä eivät osanneet kertoa mikä

5. Yhteenveto 15 objekti on, vaan idea oli pikemminkin etsiä tiettyä objektia kuvasta. Tästä syystä mahdolliset sovellukset voisivat olla, jonkun tietyn kuvion etsimistä kuvista. Esimerkiksi polkupyöräilijöiden määrän approksimointi tietyssä paikassa voisi olla sovelluskohde, tosin tällöin pitäisi huomioida parkkeeratut polkupyörät. Menetelmälle hyvä sovelluskohde olisi varmistaa, että kuvassa ei ole haluttuja objekteja, tosin tämä vaatisi reaaliaikaista laskentaa, joka ei menetelmälle ole kovin käyttökelpoista. Toisaalta kuvion pitäisi olla helposti tunnistettava ja pitäisi pystyä jakamaan osiin, joten lopulta mahdolliset oikeat sovelluskohteita ei välttämättä kovinkaan paljoa löydy.

16 LÄHTEET [1] C. Cortes and V. Vapnik, Support-vector networks, Machine Learning, vol. 20, no. 3, pp. 273 297, Mar. 1995. [2] N. Dalal and B. Triggs, Histogram of oriented gradients for human detection, IEEE, vol. 1, no. 1, pp. 886 893, Jun. 2005. [3] P. F. Felzenszwalb, R. B. Girshick, D. McAllester, and D. Ramanan, Object detection with discriminatively trained part based models, IEEE, vol. 32, no. 9, pp. 1627 1645, Sep. 2010. [4] R. B. Girshick, P. F. Felzenszwalb, and D. McAllester, Discriminatively trained deformable part models, release 5, http://people.cs.uchicago.edu/ rbg/latentrelease5/. [5] D. G. Lowe, Distinctive image features from scale-invariant keypoints, International journal of computer vision, vol. 60, no. 2, pp. 91 110, 2004. [6] V. Vapnik, Pattern recognition using generalized portrait method, Automation and remote control, vol. 24, pp. 774 780, 1963. [7] C. Vondrick, A. Khosla, T. Malisiewicz, and A. Torralba, HOGgles: Visualizing Object Detection Features, ICCV, 2013.