Utilising computer vision to solve arithmetics on Android
Mäki-Kihniä, Matti (2018)
Mäki-Kihniä, Matti
Metropolia Ammattikorkeakoulu
2018
Creative Commons Attribution-ShareAlike 1.0 Suomi
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-201804124514
https://urn.fi/URN:NBN:fi:amk-201804124514
Tiivistelmä
Insinöörityössä oli tavoitteena kehittää natiivi Android-sovellus, joka koneoppimista käyttäen kykenee ratkaisemaan käsinkirjoitettuja yhteenlaskuja mobiililaitteen kameralla otetuista kuvista. Sovelluksen käyttämä koneoppimismalli tuli kouluttaa vapaasti saatavilla olevalla tietoaineistolla, ja sen tuli kyetä johtamaan oikea luokittelu syötteestä ilman merkittävää viivettä.
Käytetyksi koneoppimismalliksi valikoitui MobileNets-koneoppimisperheen syvä konvolutionaalinen mobiili ensin -neuroverkko. Koneoppimismalli valittiin sen tarvitseman suhteellisen matalan laskentatehon takia, joka omalta osaltaan mahdollisti reaaliajassa tapahtuvan syötteen luokittelun. Neuroverkko koulutettiin tunnistamaan numerot 0–9 laajennetulla MNIST-tietoaineistolla ja yhteenlaskuoperaattori insinöörityötä varten käsitellyllä tietoaineistolla.
Jotta koneoppimismallin oli mahdollista luokitella kuva kameran syötteestä, tuli kuva ensin esiprosessoida ja siinä olevat merkit piti erotella muusta kuvasta. Sovellus esiprosessoi kameran syötteen reaaliajassa käyttäen samoja esiprosessointitekniikoita, joita on käytetty MNIST-tietoaineiston esikäsittelyssä.
Insinöörityön lopputuloksena valmistui vaatimuksien mukainen Android-sovellus, jolla käyttäjä pystyy ratkaisemaan laitteen kameralla kuvattuja käsin kirjoitettuja yhteenlaskuja reaaliajassa. Sovellusta testattiin käsin kirjoitetuilla merkeillä, ja sen todettiin toimivan kohtuullisella tarkkuudella.
Käytetyksi koneoppimismalliksi valikoitui MobileNets-koneoppimisperheen syvä konvolutionaalinen mobiili ensin -neuroverkko. Koneoppimismalli valittiin sen tarvitseman suhteellisen matalan laskentatehon takia, joka omalta osaltaan mahdollisti reaaliajassa tapahtuvan syötteen luokittelun. Neuroverkko koulutettiin tunnistamaan numerot 0–9 laajennetulla MNIST-tietoaineistolla ja yhteenlaskuoperaattori insinöörityötä varten käsitellyllä tietoaineistolla.
Jotta koneoppimismallin oli mahdollista luokitella kuva kameran syötteestä, tuli kuva ensin esiprosessoida ja siinä olevat merkit piti erotella muusta kuvasta. Sovellus esiprosessoi kameran syötteen reaaliajassa käyttäen samoja esiprosessointitekniikoita, joita on käytetty MNIST-tietoaineiston esikäsittelyssä.
Insinöörityön lopputuloksena valmistui vaatimuksien mukainen Android-sovellus, jolla käyttäjä pystyy ratkaisemaan laitteen kameralla kuvattuja käsin kirjoitettuja yhteenlaskuja reaaliajassa. Sovellusta testattiin käsin kirjoitetuilla merkeillä, ja sen todettiin toimivan kohtuullisella tarkkuudella.