Hahmontunnistuksen toteutus tekoälymobiilisovellukseen
Aalto, Jani (2020)
Aalto, Jani
2020
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2020081119703
https://urn.fi/URN:NBN:fi:amk-2020081119703
Tiivistelmä
Työn tavoitteena oli toteuttaa hahmontunnistus Android-pohjaiseen Alvin-tekoälysovellukseen. Työn tilaajana oli Alvinin kehittänyt tmi Tommi Olavi Mänttäri. Hahmontunnistuksen oli tarkoitus mahdollistaa samanaikaisesti kehitettävän koulujen opetuskäyttöön tarkoitetun robottikäden ohjaus Alvinilla. Hahmontunnistuksen tuli tunnistaa yleisiä, kouluista löytyviä esineitä joita robotti kykenisi nostamaan.
Työ toteutettiin Keras-rajapintaa käyttävällä TensorFlow-koneoppimiskirjastolla, Android Studiolla sekä Google Colab -palvelulla. Se suoritettiin itsenäisesti kotoa käsin. Teorian opiskelun jälkeen tutkittiin TensorFlow-esimerkkiohjelmia, ja valitun ohjelman pohjalta toteutettiin hahmontunnistusnäkymä Alviniin. Koska esimerkkiohjelman käyttämä neuroverkkomalli ei tunnistanut riittävän monta haluttua esineen luokkaa, uudelleenopetettiin toinen malli siirto-opetusta käyttäen tunnistamaan 13 muuta luokkaa. Koska opetus epäonnistui TensorFlow’n komentoriviversiolla, opetus tehtiin uudelleen Google Colabissa. Tuloksena oli toimiva malli, joka oli kuitenkin rakenteeltaan yksinkertaisempi kuin esimerkkiohjelman malli. Mallien yhteensovitus Android-koodissa onnistui kohtuullisen hyvin.
Tuloksena oli toimiva ja tosiaikainen, molempia malleja hyväksikäyttävä hahmontunnistustoiminnallisuus Alvin-sovelluksessa, joskin hahmontunnistuksen luotettavuus oli toivottua huonompi. Toteutettu hahmontunnistus toimii hyvänä perustana sovelluksen jatkokehitykselle.
Työ toteutettiin Keras-rajapintaa käyttävällä TensorFlow-koneoppimiskirjastolla, Android Studiolla sekä Google Colab -palvelulla. Se suoritettiin itsenäisesti kotoa käsin. Teorian opiskelun jälkeen tutkittiin TensorFlow-esimerkkiohjelmia, ja valitun ohjelman pohjalta toteutettiin hahmontunnistusnäkymä Alviniin. Koska esimerkkiohjelman käyttämä neuroverkkomalli ei tunnistanut riittävän monta haluttua esineen luokkaa, uudelleenopetettiin toinen malli siirto-opetusta käyttäen tunnistamaan 13 muuta luokkaa. Koska opetus epäonnistui TensorFlow’n komentoriviversiolla, opetus tehtiin uudelleen Google Colabissa. Tuloksena oli toimiva malli, joka oli kuitenkin rakenteeltaan yksinkertaisempi kuin esimerkkiohjelman malli. Mallien yhteensovitus Android-koodissa onnistui kohtuullisen hyvin.
Tuloksena oli toimiva ja tosiaikainen, molempia malleja hyväksikäyttävä hahmontunnistustoiminnallisuus Alvin-sovelluksessa, joskin hahmontunnistuksen luotettavuus oli toivottua huonompi. Toteutettu hahmontunnistus toimii hyvänä perustana sovelluksen jatkokehitykselle.