Koiran tunnistaminen digitaalisesta kuvasta: Hahmontunnistussovellus KOIRAKO
Könönen, Marika (2012)
Könönen, Marika
Metropolia Ammattikorkeakoulu
2012
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2012060812318
https://urn.fi/URN:NBN:fi:amk-2012060812318
Tiivistelmä
Tämän insinöörityön tavoitteena oli määritellä, suunnitella ja toteuttaa hahmontunnistus-sovellus KOIRAKO, joka tunnistaa ja paikantaa koiran digitaalisesta kuvasta. Hahmontunnistusmenetelmää valittaessa haluttiin ensisijaisesti löytää toimiva sekä kohteen tunnistamiseen ja paikantamiseen kykenevä sovellus, joka soveltuu muunneltavaksi KOIRAKOn tarpeisiin. Lisäksi valintaa rajoittivat ohjelmointikieli, käyttöjärjestelmä ja kehitysympäristö.
Insinöörityöaiheen tutkiminen aloitettiin perehtymällä hahmontunnistuksen ja koneoppimisen käsitteisiin tavoitteena selvittää olemassa olevien menetelmien ja algoritmien käytettävyyttä KOIRAKOssa. Tutkimus jatkui selvittämällä luokitteluongelman vaiheita sekä syventymällä muun muassa opetusvaiheeseen sisältyvään piirteenirrotukseen, siihen liittyviin algoritmeihin sekä oppimisen mallintamiseen. Työhön liittyvän teorian opiskelun ohessa määriteltiin ja suunniteltiin KOIRAKO, joka sopivan menetelmän löydyttyä toteutettiin.
Koiraan tunnistamiseen ja paikantamiseen valittiin VOC-sovelluksen versio 3.1, jonka diskriminatiivinen opetusvaihe on toteutettu piilomuuttujia hyödyntävällä tukivektorikonealgoritmilla. Tunnistusvaiheessa käytetään yleistettyä etäisyysfunktiota ja dynaamista ohjelmointia. Koodikirjaa opetusvaiheessaan käyttävät menetelmät, kuten Implicit Shape Model ja Bag of Visual Words, olivat tutkimuksen kohteena ennen VOCiin päätymistä. Niistä ei kuitenkaan löytynyt KOIRAKOssa hyödynnettäväksi soveltuvaa toteutusta. Piirteenirrotuksen algoritmeja tutkittiin syvemmin: Toisena kokonaisuutena oli paikallisten avainpisteiden perusteella SIFT-algoritmilla muodostetut piirrekuvaajat, ja toisena VOCin tarkoitukseen muokattu HOG-algoritmilla muodostettu globaali VOC-piirrekuvaaja.
KOIRAKO toteutettiin MATLABissa toimivana työasemasovelluksena. Se ohjelmoitiin oliopohjaisesti MATLAB-kielellä ja sen graafinen käyttöliittymä rakennettiin Swing- ja AWT-kirjastojen komponenteista. VOC-sovellus sisältää koiran tunnistamiseen ja paikantamiseen liittyvät funktiot, joita KOIRAKO käyttää tunnistusprosessissa.
Insinöörityöaiheen tutkiminen aloitettiin perehtymällä hahmontunnistuksen ja koneoppimisen käsitteisiin tavoitteena selvittää olemassa olevien menetelmien ja algoritmien käytettävyyttä KOIRAKOssa. Tutkimus jatkui selvittämällä luokitteluongelman vaiheita sekä syventymällä muun muassa opetusvaiheeseen sisältyvään piirteenirrotukseen, siihen liittyviin algoritmeihin sekä oppimisen mallintamiseen. Työhön liittyvän teorian opiskelun ohessa määriteltiin ja suunniteltiin KOIRAKO, joka sopivan menetelmän löydyttyä toteutettiin.
Koiraan tunnistamiseen ja paikantamiseen valittiin VOC-sovelluksen versio 3.1, jonka diskriminatiivinen opetusvaihe on toteutettu piilomuuttujia hyödyntävällä tukivektorikonealgoritmilla. Tunnistusvaiheessa käytetään yleistettyä etäisyysfunktiota ja dynaamista ohjelmointia. Koodikirjaa opetusvaiheessaan käyttävät menetelmät, kuten Implicit Shape Model ja Bag of Visual Words, olivat tutkimuksen kohteena ennen VOCiin päätymistä. Niistä ei kuitenkaan löytynyt KOIRAKOssa hyödynnettäväksi soveltuvaa toteutusta. Piirteenirrotuksen algoritmeja tutkittiin syvemmin: Toisena kokonaisuutena oli paikallisten avainpisteiden perusteella SIFT-algoritmilla muodostetut piirrekuvaajat, ja toisena VOCin tarkoitukseen muokattu HOG-algoritmilla muodostettu globaali VOC-piirrekuvaaja.
KOIRAKO toteutettiin MATLABissa toimivana työasemasovelluksena. Se ohjelmoitiin oliopohjaisesti MATLAB-kielellä ja sen graafinen käyttöliittymä rakennettiin Swing- ja AWT-kirjastojen komponenteista. VOC-sovellus sisältää koiran tunnistamiseen ja paikantamiseen liittyvät funktiot, joita KOIRAKO käyttää tunnistusprosessissa.