Image classification using deep learning with Java
Lehtomaa, Martin (2021)
Lehtomaa, Martin
2021
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-202104144765
https://urn.fi/URN:NBN:fi:amk-202104144765
Tiivistelmä
Nykyajan ongelmien, kuten esim. konenäön ja luonnollisen kielen käsittelyjärjestelmien, ratkaisuissa hyödynnetään yhä enemmän kone- ja syväoppimisen menetelmiä. Tämän opinnäytetyön tavoitteena on näyttää ja tutkia, miten Javaa voidaan hyödyntää syväoppimisen sovelluksissa. Modernit syväoppimiseen pohjautuvat ratkaisut toteutetaan pitkälti Python- ja R-ohjelmointikielillä. Vaikka Java ei ole suosittu ohjelmointikieli tekoälyn ohjelmoinnissa, siinä on kattavat raamityökalut ja kirjastot kone- sekä syväoppimisen sovellusten kehitykseen. Javan tunnettuja vahvuuksia ovat ohjelmiston skaalautuvuus, tietoturvallisuus ja hyvä suorituskyky. Javaa käytetään mm. suurten yritystoimintojen järjestelmien sekä palvelinpuolen ratkaisujen kehityksessä. Suuren kehittäjäyhteisön omaavana Javalla on myös paljon avoimen lähdekoodin raamityökaluja ja kirjastoja. Yksi merkittävä tekoälyn ohjelmointiin tarkoitettu raamityökalu on DeepLearnin4J (DL4J). Tässä opinnäytetyössä keskityttiin yksinomaan Javan sekä DL4J:n käyttämiseen syväoppimiseen pohjautuvan kuvantunnistusmallin luomiseen ja hyödyntämiseen.
Demo-osiossa toteutetaan syväoppimiseen pohjautuva ratkaisu konenäön ydinongelmaan eli kuvantunnistukseen. Työssä näytetään, miten malli luodaan ja koulutetaan käyttäen Javaa ja DL4J. Tämän lisäksi näytetään, miten koulutettua mallia voidaan hyödyntää käytännössä erillisessä Java-pohjaisessa sovelluksessa. Toteutettu malli on VGG16:een pohjautuva ja koulutetaan suoriutumaan mekaanisten työkalujen kuvantunnistuksessa. Koulutettua mallia käytetään demoa varten toteutetun SpringBoot-pohjaisen REST-www-sovelluspalvelun kautta. Menetelmiä, joita hyödynnetään DL4J-raamityökalulla, ovat mm. siirto-oppiminen, ETL (Extract, Transform, Load) operaatioita (sis. Datan kasvattamista) sekä mallin koulutus.
Koulutetun mallin ja toteutetun web-palvelun tuloksista näkee kuinka vaivattomasti Java-pohjaisella ratkaisulla saa hyvin suoriutuvan mallin kuvantunnistukseen. Malli saavutti noin 85% tarkkuuden vain noin 30min:n koulutuksella ja rajatulla tietoaineistolla. Lisäksi mallin käyttämistä web-palvelun kautta näytti todenmukaisen tilanteen mallin hyödyntämisestä.
Mallin toteutuksen ja hyödyntämisen yhteydessä tehdyistä havainnoista ja saaduista tuloksista voi todeta, että Java on varteenotettava ohjelmointikieli tekoälyn ohjelmoinnissa. Java ja DL4J-raamityökalu tekevät sovellusten kehitystyön syväoppimisesta suoraviivaista ja tehokasta, varsinkin Java-pohjaisissa projekteissa. Modern problems, like Computer Vision and Natural Language Processing (NLP) are nowadays tackled by leveraging Machine (ML) and Deep Learning (DL)-based solutions. This thesis strives to demonstrate the use of Java for the implementation of DL applications. While ML and DL solutions are heavily implemented with programming languages such as Python and R, there are other popular languages that provide comprehensive frameworks and libraries for these tasks. One of these languages is Java. Java provides application scalability, security and performance. Therefore it is used worldwide in enterprise grade systems and server-side applications. Java, having a huge developer community behind it, provides a bunch of open-source tools and frameworks, one of which is DeepLearning4J (DL4J) for DL applications. The work carried out in this thesis solely concentrates on the utilization of Java and DL4J for the creation and use of a DL-based image classification model.
The demonstration part includes the implementation of a solution for one of the core problems under the topic Computer Vision, which is Image Classification. The framework DL4J was leveraged in the implementation of a VGG16 -based model capable of mechanical tool image classification. The demonstration part also shows how the trained model can be utilized by an external Java-based application. The utilization of the model was implemented through a SpringBoot RESTful web service. Techniques applied with DLJ4 included Transfer Learning, ETL (Extract, Transform, Load) operations (inc. data augmentation) and model training.
The results and findings from the implementation of the DL model and web service verify how easy it is to become started and performant with a Java-based solution for Image Classification. The model reached ~85% accuracy in only ~30min of training on a limited dataset. In addition, a realistic use case scenario of the model was demonstrated by utilizing it from an external web service.
The trained model combined with the implemented web service form a complete DL and Java-based solution to tackle an Image Classification task specifically for mechanical tools. The solution demonstrates the potential Java indeed has in the field of DL. The conclusion confirms that the stack of Java and DL4J is a valid option for the development of DL based solutions. The DL4J framework makes the development process of a DL-based solution straight forward, especially for Java projects.
Demo-osiossa toteutetaan syväoppimiseen pohjautuva ratkaisu konenäön ydinongelmaan eli kuvantunnistukseen. Työssä näytetään, miten malli luodaan ja koulutetaan käyttäen Javaa ja DL4J. Tämän lisäksi näytetään, miten koulutettua mallia voidaan hyödyntää käytännössä erillisessä Java-pohjaisessa sovelluksessa. Toteutettu malli on VGG16:een pohjautuva ja koulutetaan suoriutumaan mekaanisten työkalujen kuvantunnistuksessa. Koulutettua mallia käytetään demoa varten toteutetun SpringBoot-pohjaisen REST-www-sovelluspalvelun kautta. Menetelmiä, joita hyödynnetään DL4J-raamityökalulla, ovat mm. siirto-oppiminen, ETL (Extract, Transform, Load) operaatioita (sis. Datan kasvattamista) sekä mallin koulutus.
Koulutetun mallin ja toteutetun web-palvelun tuloksista näkee kuinka vaivattomasti Java-pohjaisella ratkaisulla saa hyvin suoriutuvan mallin kuvantunnistukseen. Malli saavutti noin 85% tarkkuuden vain noin 30min:n koulutuksella ja rajatulla tietoaineistolla. Lisäksi mallin käyttämistä web-palvelun kautta näytti todenmukaisen tilanteen mallin hyödyntämisestä.
Mallin toteutuksen ja hyödyntämisen yhteydessä tehdyistä havainnoista ja saaduista tuloksista voi todeta, että Java on varteenotettava ohjelmointikieli tekoälyn ohjelmoinnissa. Java ja DL4J-raamityökalu tekevät sovellusten kehitystyön syväoppimisesta suoraviivaista ja tehokasta, varsinkin Java-pohjaisissa projekteissa.
The demonstration part includes the implementation of a solution for one of the core problems under the topic Computer Vision, which is Image Classification. The framework DL4J was leveraged in the implementation of a VGG16 -based model capable of mechanical tool image classification. The demonstration part also shows how the trained model can be utilized by an external Java-based application. The utilization of the model was implemented through a SpringBoot RESTful web service. Techniques applied with DLJ4 included Transfer Learning, ETL (Extract, Transform, Load) operations (inc. data augmentation) and model training.
The results and findings from the implementation of the DL model and web service verify how easy it is to become started and performant with a Java-based solution for Image Classification. The model reached ~85% accuracy in only ~30min of training on a limited dataset. In addition, a realistic use case scenario of the model was demonstrated by utilizing it from an external web service.
The trained model combined with the implemented web service form a complete DL and Java-based solution to tackle an Image Classification task specifically for mechanical tools. The solution demonstrates the potential Java indeed has in the field of DL. The conclusion confirms that the stack of Java and DL4J is a valid option for the development of DL based solutions. The DL4J framework makes the development process of a DL-based solution straight forward, especially for Java projects.