Gépi tanulási módszerek alkalmazása felhasználói felületek használhatóságának növelésére

OData támogatás
Konzulens:
Dr. Csorba Kristóf
Automatizálási és Alkalmazott Informatikai Tanszék

A dolgozatban bemutatásra került a CV4Sensorhub általános képfeldolgozó keretrendszer architektúrális és alkalmazási szempontból. Kiválasztásra került két eszköz, amelyekre lehetséges gépi tanulás alkalmazása. Az első eszköz egy Monte Carlo alapú szegmentáló algoritmus (RJMCMC - Reversible Jump Markov Chain Monte Carlo), ami márvány vékonycsiszolati képeken megkeresi a szemcsehatárokat eredet azonosítás céljából. Ezt az algoritmust megvalósítottam és teszteltem valódi márvány képeken és kisebb módosítás után pala képeken is. A pala képeken kielégítő eredményeket értem el, a márvány képeken, amik ikerkristályokat is tartalmaztak, további változtatásokra volna szükség. Az egyik lehetőség, hogy a paraméterek (16 darab van belőlük) hangolását egy tanuló algoritmussal végeznénk el. A másik lehetőség, hogy az egész szegmentálást egy neurális háló segítségével végezzük el. A második eszköz a live-polyline, ami egy intelligens rajz eszköz. Alapvetően ez is szegmentációs célokat segít, de sokkal általánosabban, mint az RJMCMC. Az általánossága azt jelenti, hogy több fajta képen (márvány, fehérvérsejtek, beton képeken), eltérő kontraszt viszonyok mellett is működnie kell. A dolgozat részletezi a jelenlegi megközelítés működését, ami nem tartalmaz gépi tanulást. Valamint két másikat, ami gépi tanuláson alapul.

A gépi tanulás alkalmazásához szükség van egy keretrendszerre, amivel a tanítás a CV4Sensorhub számára megvalósthatóvá válik. A megerősítéses tanulás általánossága miatt a keretrendszert ezen algoritmusokra készítettem fel. A keretrendszer megvalósításánál figyelembe vettem a jelenleg elérhető technológiákat (PyTorch, Tensorflow stb.) és ezek Windows-os .NET környezetben való alkalmazásainak lehetőségeit. A keretrendszer alapelve, hogy a tanítást Python nyelven és Linux-on kell végezni egy GPU szerveren, míg a használathoz a C\# oldalon egy saját osztálykönyvtárat is létrehoztam, amit később NNSharp néven egy NuGet csomag formájában publikáltam. A kettő közötti kommunikációhoz a háló tanításának eredményét (a beállított súlyokat) egy json fájlba menti.

A live-polyline gépi tanulással támogatott megoldása közül az egyik felügyelt tanulás alapú, míg a másik megerősítéses tanulást használ. A megerősítéses tanulás területét feltérképeztem, hogy megkeressem a legígéretesebb algoritmusokat a megoldáshoz. Ennek során számos cikket, tutorált és könyvet néztem át, végül az elmélet megismerése után a DQN algoritmust választottam a kezdeti próbálkozásokhoz. A DQN-t a Breakout játékon teszteltem az OpenAI gym-ben. Ennek megvalósítása a várakozásaimmal ellentétben sokkal tovább tartott. A live-polyline-ra kitalált sémákat implementáltam és szoftverfejlesztési értelemben teszteltem.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.