• Rezultati Niso Bili Najdeni

Klasifikacija delovnih operacij na osnovi posnetkov gibanja dlani

N/A
N/A
Protected

Academic year: 2022

Share "Klasifikacija delovnih operacij na osnovi posnetkov gibanja dlani"

Copied!
45
0
0

Celotno besedilo

(1)

UNIVERZA V LJUBLJANI Fakulteta za strojništvo

Klasifikacija delovnih operacij na osnovi posnetkov gibanja dlani

Anej Zupanc

Ljubljana, september 2021

Zaključna naloga Univerzitetnega študijskega programa I. stopnje

Strojništvo - Razvojno raziskovalni program

(2)
(3)

UNIVERZA V LJUBLJANI Fakulteta za strojništvo

Klasifikacija delovnih operacij na osnovi posnetkov gibanja dlani

Zaključna naloga Univerzitetnega študijskega programa I. stopnje Strojništvo - Razvojno raziskovalni program

Anej Zupanc

Mentor: doc. dr. Rok Vrabič, univ. dipl. inž.

Ljubljana, september 2021

(4)
(5)

Zahvala

Za korekten, prijazen in podporen odnos, ter pomoč pri diplomski nalogi, bi se rad zahvalil svojemu mentorju Roku Vrabiču. Vaš pristop do mene je bil občudovanja vreden in je lahko vzgled vsem, ki so zaposleni v izobraževalnem sektorju. Prav tako pa bi se rad zahvalil svojim staršem, ki so mi v času študija nudili finančno in veliko psihološko podporo.

(6)

vi

(7)

Izvleček

UDK 004.85:005.935(043.2) Tek. štev.: UN I/1533

Klasifikacija delovnih operacij na osnovi posnetkov gibanja dlani

Anej Zupanc

Ključne besede: Klasifikacija delovnih operacij Posnetki gibanja dlani

MediaPipe Strojno učenje

Dolgoročni kratkoročni spomin Keras

V diplomski nalogi predstavimo grajenje modela za strojno učenje, ki bo služil za klasifikacijo delovnih operacij na podlagi posnetkov gibanja dlani. Pri tem uporabljamo knjižnico MediaPipe za zbiranje podatkov in knjižnico TensorFlow, Keras za strojno učenje.

Slednje je izvedeno z uporabo ponavljajočih se nevronskih mrež, specifično dolgoročnega kratkoročnega spomina. Celoten model je zgrajen v programskem okolju Python. Na koncu predstavimo statistične rezultate zgrajenega modela, ki kaže 91,25% uspešnost.

(8)

viii

Abstract

UDC 004.85:005.935(043.2) No.: UN I/1533

Classification of work operations based on an analysis of hand movements

Anej Zupanc

Key words: Classification of work operations Videos of hand movements MediaPipe

Machine learning

Long Short Term Memory Keras

In this bachelor's degree we present building of a machine learning model, capable of classification of work operations based on an analysis of hand movements. In doing so, we use MediaPipe library for keypoint and data collection and TensorFlow, Keras library for machine learning. The latter is done using recurrent neural networks, specifically long short term memory. The whole model in build in a Python software environment. At the end we present statistical data, showing 91,25% classification performance.

(9)

Kazalo

Kazalo slik ... xi

Kazalo preglednic ... xii

Seznam uporabljenih simbolov ... xiii

Seznam uporabljenih okrajšav ... xiv

1 Uvod ... 1

1.1 Ozadje problema ... 1

1.2 Cilji ... 2

2 Teoretične osnove in pregled literature ... 3

2.1 Programski jezik Python ... 3

2.1.1 Okolje Jupyter Notebook ... 3

2.2 Knjižnica MediaPipe ... 4

2.2.1 MediaPipe Hands knjižnica ... 5

2.3 Globoko učenje ... 7

2.3.1 Ponavljajoče se nevronske mreže ... 7

2.3.2 Dolgoročni kratkoročni spomin ... 9

2.3.3 Knjižnica TensorFlow ... 11

2.3.4 Programski vmesnik Keras ... 12

2.4 Uravnavanje ... 14

3 Metodologija raziskave ... 15

3.1 Preizkuševališče in pripomočki ... 15

3.2 Izbira delovnih operacij ... 16

3.3 Podatkovna obravnava ... 18

3.4 Zbiranje podatkov za učenje ... 20

3.5 Strojno učenje ... 21

3.6 Testiranje modela ... 23

4 Rezultati ... 24

(10)

x

5 Diskusija ... 26

6 Zaključki ... 27

Literatura ... 29

(11)

Kazalo slik

Slika 2.1: Prikaz spletne aplikacije Jupyter Notebook ... 3

Slika 2.2: Struktura MediaPipe grafa [3] ... 4

Slika 2.3: Razporeditev zaznavnih točk po dlaneh [8] ... 6

Slika 2.4: Primeri iz nabora modelov knjižnice MediaPipe Hands [8] ... 6

Slika 2.5: Ponavljajoča se nevronska mreža [11] ... 8

Slika 2.6: Prikaz izginjajočega in eksplozivnega gradienta, povzet po [12] ... 8

Slika 2.7: Arhitektura konvencionalne LSTM [12] ... 9

Slika 2.8: Poenostavljeno delovanje LSTM ... 10

Slika 2.9: Prikaz različnih rangov tenzorjev ... 11

Slika 2.10: Primer vizualizacije na plošči TensorBoard [16] ... 12

Slika 2.11: Poenostavljen primer modela pri knjižnici Keras ... 13

Slika 2.12: Sodelovanje komponent sistema za strojno učenje v knjižnici Keras ... 14

Slika 2.13: Primer izpusta polno povezanih nevronov iz [12] ... 14

Slika 3.1: Preizkuševališče in pripomočki ... 15

Slika 3.2: Delovna operacija sestavljanja ... 16

Slika 3.3: Delovna operacija privijanja ... 17

Slika 3.4 Delovna operacija zabijanja ... 17

Slika 3.5: Delovna operacija loščenja ... 18

Slika 3.6: Izris točk po dlaneh na preizkuševališču ... 18

Slika 3.7: Prikaz izbrisanih in obdržanih točk ... 19

Slika 3.8: Zbiranje podatkov za strojno učenje ... 20

Slika 3.9: Model z velikim številom povezav (L) in model z izpustnimi sloji (D) ... 21

Slika 3.10: Kategorična natančnost skozi iteracije in njena polinomska aproksimacija pri prvem modelu ... 22

Slika 3.11: Kategorična natančnost skozi iteracije in njena polinomska aproksimacija pri drugem modelu ... 22

Slika 3.12: Prikaz napovedi modela ... 23

Slika 4.1: Uspešnost klasifikacije posamezne delovne operacije za oba modela ... 24

Slika 4.2: Število vseh uspešnih klasifikacij obeh modelov ... 25

(12)

xii

Kazalo preglednic

Preglednica 2.1: Rezultati modela, naučenega iz drugačnih podatkovnih naborov [8] ... 6 Preglednica 2.2: Primerjava konvolucijskih sistemov za strojno učenje na eni napravi [15] ... 11

(13)

Seznam uporabljenih simbolov

Oznaka Enota Pomen

c stanje celice

h izhodno stanje

i vhodna vrata

o izhodna vrata

s stanje sistema ponavljajoče se nevronske mreže

U, V, W uteži nevronskih mrež

x vnos informacij

y izhod informacij

x, y, z koordinate kartezičnega koordinatnega sistema

𝜎 utež pri transformaciji vrat

mm dolžina

Indeksi

c v stanju

i ob vhodu

o ob izhodu

t trenutno

t-1 prejšnje

(14)

xiv

Seznam uporabljenih okrajšav

Okrajšava Pomen

AR/VR umetna realnost/virtualna realnost

FPS število sličic, ki ga video pretoči v sekundi LSTM dolgoročni kratkoročni spomin

MP knjižnica MediaPipe

MSE srednja kvadratna napaka

RGB barvni model rdeče, zelene in modre RNN ponavljajoča se nevronska mreža

SM sistemi z enim strojem

TF knjižnica TensorFlow

2.5D dva in pol dimenzijski. Površina, ki daje občutek prostora

(15)

1 Uvod

1.1 Ozadje problema

V 20. letih 21. stoletja proizvodnemu sektorju vlada avtomatizacija. Roboti številnih vrst in oblik predstavljajo nepogrešljiv mehanizem, ki brez počitka opravlja svojo določeno vlogo.

Takšni sistemi so ustvarjeni za izdelavo ogromnih serij izdelkov, ki ne le po natančnosti, ampak tudi po kvantiteti popolnoma prekosijo človeške zmogljivosti.

Poleg proizvodnega sektorja se roboti zaradi svoje natančnosti in zanesljivosti uporabljajo še na veliko drugih področjih. Tako v medicini, farmaciji, elektrotehniki, strojništvu in mnogih ostalih področjih opravljajo naloge, ki bi bile za človeka prezahtevne.

Kljub temu pa je človek še vedno pomemben in nepogrešljiv faktor večine področij.

Sposobnost uporabe razuma in prilagodljivega logičnega razmišljanja, mu nudi nepredstavljivo prednost pred robotom. Zlasti v okoliščinah, kjer aplikacija robota ni ponavljajoča in monotona izdelava serij istega izdelka, prisotnost človeka ostaja nezamenljiva.

Tako človeški kot robotski prispevek k številnih znanstvenim procesom sta torej ključna in med seboj neprimerljiva. Zaradi tega se dandanes ustvarjajo sistemi, v katerih robot in človek delujeta v interakciji drug z drugim. Sistem takšne vrste nudi uporabo robotske natančnosti s kombinacijo človeškega razuma in je perspektiven ali že sedaj aplikativen na področjih medicine, kemije, fizike idr.

Vsi smo že zagotovo slišali za robotske medicinske operacije, ki so najbolj prepoznavna tema tega področja. Anthony R. Lanfranco s svojimi sodelavci v članku z naslovom Robotic Surgery, A Current Perspective [1] že leta 2004 navaja prednosti kirurškega laparoskopskega posega z robotsko pomočjo. Med navedenimi so povečanje spretnosti, izboljšana vizualizacija in mnoge druge, ki naredijo operacije, do takrat tehnično prezahtevne ali neizvedljive, mogoče.

Prav perspektivnost interakcije med robotom in človekom je ozadje te diplomske naloge. V njej se posvetimo oblikovanju preprostega računalniškega programa, ki z uporabo pretoka preko kamere analizira in prepozna v naprej določene, z rokami izvedene operacije. Za

(16)

Uvod

2 pisanje programa se uporablja programski jezik Python, za analizo pa knjižnici Mediapipe in Tensorflow.

1.2 Cilji

Cilj naloge je izdelati preprost in hitro izvedljiv računalniški program, ki s pomočjo Googlove knjižnice Mediapipe (MP) in pretoka kamere zazna obe roki v objektivu in ju za vsako sličico popiše s točkami. Te točke nameravamo nato uporabiti za strojno učenje preko vmesnika Tensorflow (TF). Program bomo napisali v jeziku Python.

Naš cilj je program naučiti prepoznati različne preproste delovne operacije, ki jih izvajamo ali z eno roko ali z obema. Z uspešno naučenim programom bi tako omogočili aplikacijo le- tega v prihodnosti, v korist nadaljnjim raziskavam in eksperimentom.

Naš načrt za izvedbo te naloge lahko razdelimo na več točk:

1. Raziskati in preučiti literaturo, povezano s prej določenimi željami.

2. Izbrati vse potrebne knjižnice, ki jih bomo uporabili v programu.

3. Napisati program in ga preizkusiti 4. Narediti statistično analizo rezultatov.

Od naloge pričakujemo statistične rezultate, ki bodo potrdili vsaj 90% uspešnost klasifikacij zastavljenih delovnih operacij. Potrebno pa je izpostaviti, da bomo v tej končni oceni zanemarili vso analizo, ki bo izvedena z nasprotnima rokama, kot bo program naučen. Pri ciljih, ki smo si jih zastavili, pa se zavedamo tudi nevarnosti in tveganj, ki nam lahko prekrižajo pot pri njihovem doseganju. Slaba točkovna detekcija, prisoten šum in nizki FPS- kamere bi lahko otežili natančen popis točk. V primeru uspešnega beleženja pa bi potencialno nevarnost lahko predstavljala premajhna količina informacij, namenjena strojnemu učenju. Zavedamo se, da bi več podatkov pomenilo uspešnejše učenje, vendar bi to nasprotovalo našemu cilju.

(17)

2 Teoretične osnove in pregled literature

2.1 Programski jezik Python

Python, prvič objavljen za množično uporabo leta 1991, je medoperacijski, interpretiran, objektno naravnan programski jezik visoke ravni z dinamično semantiko.

Je izjemno učinkovit, prijazen do uporabnika in nenaključno najpogosteje uporabljen jezik za akademske namene. V primerjavi z drugimi jeziki lahko v Pythonu v istem številu linij naredimo veliko več. Poleg tega nam pomaga pisati ''čisto'' kodo, kar pomeni, da je ta preprosta za branje in odpravljanje napak. Najpomembnejše pa je, da Python nudi veliko opcij in knjižnic, namenjenih strojnemu učenju. Dandanes sta uporabnikom na voljo dve verziji tega programskega jezika, Python 2 in Python 3. V diplomski nalogi uporabljamo slednjega.

2.1.1 Okolje Jupyter Notebook

Za pisanje in izvedbo kode v programskem jeziku Python bomo uporabljali Jupyter Notebook. To je odprtokodna spletna aplikacija za pisanje in dokumentacijo programske kode. Omogoča generacijo posebne beležke znotraj spletnega brskalnika, ki ponuja uporabniku prijazno okolje za urejanje kode in sprotnega komentarja. Njena izstopajoča lastnosti je razčlenitev kode na manjše odseke, kar omogoča izvajanja te v sklopih. Zaradi tega je široko uporabljena na področjih strojnega učenja in podatkovnih znanosti [2].

Slika 2.1: Prikaz spletne aplikacije Jupyter Notebook

(18)

Teoretične osnove in pregled literature

4

2.2 Knjižnica MediaPipe

Mediapipe je okvirna aplikacija za izgradnjo povezav, ki izvajajo sklepanja o senzoričnih podatkih, predvsem vizualnih [3]. Ustvarila jo je Googlova raziskovalna ekipa in jo kot odprto kodo v eksperimentalni izgradnji javnosti izdala leta 2019. Ponuja več vrst podknjižnic, ki temeljijo na fotografski ali časovno-realni videoanalizi. Ena izmed teh je MediaPipe Hands, s pomočjo katere izdelujemo to nalogo.

Razvijalci lahko z uporabo MP sočasno gradijo in analizirajo sisteme z uporabo grafov, ki v knjižnici igrajo vlogo logične procesne enote. Osrčje in osnova knjižnice je nabor več tisoč modelov delov človeških teles – tako realnih kot sintetičnih [3]. Ti preko strojnega učenja knjižnici omogočajo natančno zaznavo.

Knjižnica je bila ustvarjena za strojno učenje in hitro izdelavo prototipov aplikacij.

Namenjena pa je tako razvijalcem programske opreme kot raziskovalcem in tudi študentom [3].

Sestavljena je iz treh delov:

‐ Programa za sklepanje z uporabo senzoričnih podatkov.

‐ Orodij za analizo in odpravo napak pri izvedbi.

‐ Kolekcijo procesnih enot, kalkulatorjev.

V njej se vse operacije izvajajo znotraj grafov. Vsak graf je sestavljen iz informacijskih pretokov in vozlišč, drugače imenovanih tudi kalkulatorjev. Glavnina vseh logičnih operacij se izvaja znotraj njih [3].

Slika 2.2: Struktura MediaPipe grafa [3]

(19)

Teoretične osnove in pregled literature

Na sliki je prikazan primer grafa, ki izvira iz Googlovega predstavitvenega članka knjižnice MediaPipe [3]. Na njem nepolni okvirji predstavljajo kalkulatorje, ki so povezani s tokovi informacij. Polna okvirja na vrhu in dnu grafa, pa predstavljata vhod in izhod informacij v graf.

2.2.1 MediaPipe Hands knjižnica

V današnjem času obstaja veliko število aplikacij, ki nudijo sledenje dlanem in prstom.

Številne raziskovalne ekipe se posvečajo predvsem problemu zaznave dlani in skoraj vsaka ubere svoj edinstveno kombiniran pristop. Najbolj priljubljeni sta uporaba globinskih senzorjev ali tovrstnih kamer v rabi z drugimi komponentami [4] in izvedba s posebnimi objekti ali kosi oblačil, ki roke vizualno ločijo od okolice [7].

Velika večina dosedanjih pristopov je odvisna od dodatne strojne opreme, predvsem globinskih kamer. MediaPipe Hands je aplikacija za zaznavo in sledenje poljubnemu številu dlani v realnem času, ki pa ne potrebuje nikakršne dodatne opreme in je sposobna tekoče delovati tudi na mobilnih napravah. Njena uporaba sloni le na izkoriščanju ene RGB- kamere, s katero je sposobna napovedi 2.5D pozicij rok. Poleg tega je preprosta za uporabo in na voljo na številnih operacijskih sistemih [8].

Deluje na podlagi dveh modelov, ki sta v konstantnem sodelovanju drug z drugim. Ko roko premaknemo v položaj pred kamero, se najprej vklopi detektor dlani. Ker je celotno dlan veliko lažje ločiti od okolice kot posamezen prst, se s tovrstno primarno detekcijo izognemo lažni zaznavi prstov. Detektor z uporabo velikega nabora modelov prepozna dlan in okoli nje izbere omejevalni okvir. Ko je ta enkrat določen, se ponovna zaznava tega izvede le, če dlan umaknemo izpred kamere ali če gotovost zaznave pade pod prej izbran prag. S tako osnovano detekcijo se program izogne ponovni izvedbi prepoznave dlani v vsaki sličici videa in lahko posledično več računske moči nameni drugemu modelu, ki se vklopi, ko prvi model zaključi določitev [8].

Naloga drugega modela je popis zaznane dlani z 21 ključnimi točkami. Vsaka izmed točk vsebuje tri koordinate:

‐ X, ki označuje širino.

‐ Y, ki označuje višino.

‐ Z, ki označuje relativno globino.

Vsaka točka zajema vrednost med 1 in -1. Vsako sličico videopretoka te shrani znotraj matrike vrednosti, do katere lahko uporabnik dostopa.

(20)

Teoretične osnove in pregled literature

6 Slika 2.3: Razporeditev zaznavnih točk po dlaneh [8]

Poleg 63 koordinat, ki jih program pripiše posamezni dlani, vsaki določi tudi ročnost.

Za učinkovito delovanje in detekcijo knjižnice MP Hands je zaslužen velik nabor modelov.

Ta vključuje tri različne tipe [8]:

‐ In-the-wild podatkovni nabor, ki vsebuje 6.000 slik geografske raznovrstnosti.

‐ In-house podatkovni nabor, ki vsebuje 10.000 slik vseh fiziološko mogočih položajev dlani.

‐ Sintetični podatkovni nabor, ki vsebuje računalniško upodobljene sintetične modele dlani.

Kombinacija treh naborov podatkovnih modelov omogoča nižjo srednjo kvadratno napako (MSE) detekcije, kar Googlova ekipa statistično dokaže [8].

Preglednica 2.1: Rezultati modela, naučenega iz drugačnih podatkovnih naborov [8]

Podatkovni nabor MSE, normaliziran glede na velikost dlani

Samo realne slike 16,1%

Samo sintetične slike 25,7%

Kombiniran nabor 13,4%

Naslednja slika prikazuje primere iz nabora modelov knjižnice MediaPipe Hands.

Slika 2.4: Primeri iz nabora modelov knjižnice MediaPipe Hands [8]

(21)

Teoretične osnove in pregled literature

MP Hands se uporablja v številnih AR/VR-aplikacijah, predvsem za zaznavo in prepoznavo statičnih gest [9].

2.3 Globoko učenje

Tehnologija strojnega učenja je od svojega začetka znanstvenikom in raziskovalcem omogočila doseganje novih znanstvenih razsežnosti. Sistemi, osnovani na njej, so skoraj nepogrešljivi v vsakdanjem življenju. Vendar pa so konvencionalni načini te tehnologije pomanjkljivi, saj je z njihovimi tehnikami zelo težko obdelati podatke v njihovi surovi obliki.

Prihod metod za globoko učenje pa je to področje močno spremenil.

Pri strojnem učenju je za naloge prepoznavanja uporabljena metoda plasti. Z njeno uporabo program detekcijo razdeli v več sklopov, ki jih nato izvaja v predpisanem vrstnem redu. Pri konvencionalnih metodah je bilo sklope potrebno predhodno človeško definirati, kar je pri nekaterih aplikacijah zelo težko, če ne celo nemogoče. Tukaj nastopi metoda globokega učenja, katere ključ je prav v definiranju sklopov – ti so specificirani z uporabo posebnih algoritmov, ki jih program izvede sam [11].

2.3.1 Ponavljajoče se nevronske mreže

Poznamo več vrst metod globokega učenja. Za našo diplomsko nalogo je najbolj primerna metoda ponavljajočih se nevronskih mrež (RNN). Ta prevladuje pri sistemih, kjer imamo za strojno učenje več zaporednih vnosov podatkov. RNN obdeluje vsak vnos posamično, vendar v matriko stanja ves čas shranjuje podatke o prejšnjih vnosih. Zaradi tega je posamično stanje vedno odvisno tudi od prejšnjih [11].

Značilno RNN-sestavo so podrobno opisali Vasilev in njegovi sodelavci v [12].

Ponavljajočo se nevronsko mrežo so definirali z naslednjo enačbo:

𝑠𝑡 = 𝑓(𝑠𝑡−1, 𝑥𝑡) (2.1)

Ta nam pove, da je stanje sistema (s) v časovnem koraku (t) funkcijsko odvisno od stanja sistema v prejšnjem časovnem koraku (t-1) in od podatkovnega vnosa (x) trenutnega časovnega koraka (t). Zaradi tako strukturirane funkcije lahko rečemo, da stanje 𝑠𝑡−1 predstavlja povzetek vseh prejšnjih vnosov v sistem.

Prejšnjo enačbo so nato izboljšali z uveljavitvijo uteži. Te aplicirajo linearno transformacijo na komponente enačbe. Dobili so sledeča izraza, ki definirata notranje in izhodno stanje sistema:

𝑠𝑡 = 𝑓(𝑠𝑡−1∗ 𝑊 + 𝑥𝑡∗ 𝑈) (2.2)

𝑦𝑡 = 𝑠𝑡∗ 𝑉 (2.3)

(22)

Teoretične osnove in pregled literature

8 Slika 2.5: Ponavljajoča se nevronska mreža [11]

Zapisali so, da umetni nevroni dobijo svoje vnose od drugih nevronov v prejšnjih časovnih korakih. Vsaka utež pridobi novo vrednosti, ki je proporcionalna parcialnemu odvodu napake funkcije z upoštevanjem trenutne uteži v vsakem koraku iteracije treninga. To vpelje v enačbo gradient, ki se spreminja skozi celoten potek nevronske mreže. V primerih treningov z daljšimi sekvencami lahko sprememba tega skozi učenje privede do dveh napak, značilnih za RNN.

Gradient lahko pri treningih večjih obsegov eksponentno izginja vse do točke, kjer postane ekstremno majhen v začetnih stanjih. Posledično večji gradienti iz kasnejših stanj te popolnoma zasenčijo. Rezultat tega je izguba lastnosti sistema, da ohranja uteži začetnih stanj. Druga napaka se pojavi, ko se uteži med treningom približujejo svojim optimumom, hkrati pa izguba vse bolj pada. Če takrat mreža naleti na skok v ceni, se zaradi ogromnega gradienta vrednosti uteži tako povečajo, da postanejo nedefinirane (narastejo v neskončnost).

Slika 2.6: Prikaz izginjajočega in eksplozivnega gradienta, povzet po [12]

(23)

Teoretične osnove in pregled literature

2.3.2 Dolgoročni kratkoročni spomin

Hochreiter in Schmidhuber sta za namen odprave napak RNN leta 1997 predstavila novo arhitekturo tovrstne mreže, imenovano Dolgoročni kratkoročni spomin (ang. ''Long Short Term Memory'', LSTM) [13]. Oblikovana je bila za obravnavo dolgoročnih odvisnosti.

Vsebuje povezave za povratne informacije, ki omogočajo obdelavo celotnih sekvenc podatkov.

V [12] je predstavljena arhitektura konvencionalne LSTM. Ta sestoji iz spominske celice, ki ohranja svoje stanje skozi časovni potek, in različnih vrst vrat, ki regulirajo pretok informacij v celico ali iz nje celice.

Slika 2.7: Arhitektura konvencionalne LSTM [12]

Zgradba posamezne spominske LSTM-celice vsebuje tri tipe vrat:

Vhodna vrata (𝑖𝑡) nadzirajo pretok informacij v notranjost celice. Na podlagi prejšnjega izhoda (ℎ𝑡−1) in trenutnega vhoda (𝑥𝑡) odločijo, ali bodo nove informacije sprejete v celico in zapiše število 0 ali 1 skozi logistično funkcijo za vsak celični blok. Sprejet vhod je definiran s številom 1, zavrnjen pa z 0.

𝑖𝑡= 𝜎(𝑊𝑖𝑥𝑡+ 𝑈𝑖𝑡−1) (2.4)

Sprejet vhod je nato transformiran preko tanh funkcije:

𝑐𝑡 = tanh(𝑊𝑐𝑥𝑡+ 𝑈𝑐𝑡−1) (2.5)

Kovna vrata odločajo, ali se bo v novem koraku stanje celice ohranilo ali izbrisalo. Svojo odločitev napravijo na podlagi prejšnjega izhoda in trenutnega vhoda ter svojo odločitev izrazijo z zapisom števila 0 ali 1 skozi logistično funkcijo. Število 0 izbriše prejšnjo stanje

(24)

Teoretične osnove in pregled literature

10 Skupaj z vhodnimi vrati nato določijo, katere dele prejšnjega in novega stanja bodo upoštevala pri formiranju novega stanja celice:

𝑐𝑡 = 𝑓𝑓∗ 𝑐𝑡−1⊕ 𝑖𝑡∗ 𝑐𝑡 (2.6)

Izhodna vrata odločajo, kaj bo celoten izhod celice. Pri tem upoštevajo prejšnji izhod in trenutni vhod. Ta vrata prav tako svojo odločitev izrazijo z številoma 1 ali 0. Slednje pomeni, da trenutna celica ne bo izdala nobenega izhoda, medtem ko število 1 le-tega omogoči.

Definirana so z naslednjo enačbo:

𝑜𝑡 = 𝜎(𝑊𝑜𝑥𝑡+ 𝑈𝑜𝑡−1) (2.7)

LSTM celica je na koncu transformirana preko tanh funkcije:

𝑡= 𝑜𝑡∗ tanh(𝑐𝑡) (2.7)

Pri LSTM so kovna vrata edini element, ki lahko popolnoma izbriše spomin mreže. Ta lastnost je ključna, saj sistem ščiti pred napako izginjajočih gradientov. Implementacija transformacij preko tanh funkcije pa omogoča stabilnost spomina in varuje pred eksplozivnim gradientom.

Slika 2.8: Poenostavljeno delovanje LSTM

Na prejšnji sliki je prikazano poenostavljeno delovanje LSTM. Vrednost vhodnih in izhodnih vrat prve celice je enako 1, kar pomeni, da imajo informacije (x) odobren vstop v spomin celice, vse informacije znotraj spomina pa odobren izstop iz celice. Vrednost kovnih vrat pri prvem prenosu informacij med celicami je enako 1. To omogoča prost prepis le-teh iz spomina prve celice v spomin druge. Druga celica ima vrednost vhodnih in izhodnih vrat 0, kar pomeni, da nobene nove informacije (y) nimajo dovoljena za vstop ali izstop iz celice.

Prav tako je vrednost kovnih vrat pri drugem prenosu enaka 0. To prepreči prepis informacij iz druge celice v tretjo. V tretji celici sta vrednosti vhoda in izhoda spet enaki ena, kar omogoči branje in pisanje novih informacij (z).

(25)

Teoretične osnove in pregled literature

2.3.3 Knjižnica TensorFlow

Za implementacijo globokega RNN-učenja bomo uporabili na Pythonu osnovano knjižnico TensorFlow (TF), ki jo je izdelal Google leta 2015. Je ena izmed najbolj priljubljenih knjižnic za globoko strojno učenje in ima veliko perspektivo za aplikacije v vsakdanjem življenju, kot prikazuje [14].

Namenjena je velikim projektom in zato omogoča povezavo večjega števila individualnih sistemov v en, heterogen sistem, ki nato deluje kot celota pri učenju. Vendar to ne pomeni počasne izvedbe na sistemih z eno komponento (SM). Naslednja tabela prikazuje rezultate treninga konvolucijskih modelov treh SM-sistemov v primerjavi s TensorFlow [15]

Preglednica 2.2: Primerjava konvolucijskih sistemov za strojno učenje na eni napravi [15]

Knjižnica [ms] AlexNet Overfeat OxfordNet GoogleNet

Caffe 324 823 1068 1935

Neon 87 211 320 270

Torch 81 268 529 470

TensorFlow 81 279 540 445

Vsi testi so bili opravljeni s treningom 32-bitnih števil s plavajočo vejico. Kot lahko vidimo TF ne odstopa od izvedb drugih modelov.

Za svoje delovanje uporablja en sam grafikon pretoka podatkov, ki vsebuje tudi vse matematične operacije, parametre in pravila posodobitev [15]. V njem so podatki shranjeni v obliki tenzorjev. Te lahko štejemo kot večdimenzionalne matrike numeričnih podatkov.

Sestavlja jih več komponent [12]:

‐ Splošni podatki tenzorskih elementov, ki so po navadi 16, 32 in 64 bitna števila z ali brez plavajoče vejice.

‐ Rang, ki podaja informacijo o številu osi.

‐ Obliko, ki je reprezentacija ranga matrike

(26)

Teoretične osnove in pregled literature

12 V tej diplomski nalogi bomo uporabljali tenzorje prvega ranga, drugače imenovanih tudi vektorji.

TensorFlow uporabnikom ponuja tudi nadzorno ploščo za vizualizacijo, imenovano TensorBoard, ki nudi boljše razumevanje struktur računskih grafov in omogoča sprotno sledenje napredku treninga. Veliko računskih grafov za globoke nevronske mreže je zelo kompleksnih in vsebuje več tisoč vozlišč. TensorBoard te, glede na identične strukture, združi v skoncentrirane bloke, kar pripomore k vizualizaciji in razumevanju celotnega grafa [16].

Slika 2.10: Primer vizualizacije na plošči TensorBoard [16]

2.3.4 Programski vmesnik Keras

Keras je odprtokodni aplikacijski programski vmesnik, zgrajen na osnovi knjižice za strojno učenje TensorFlow. Njegov poudarek je v omogočanju hitrega eksperimentiranja pri raziskavah.

Njegove najbolj izstopajoče značilnosti so [17]:

‐ Preprostost – porabniku omogoča usmeritev njegove celotne osredotočenosti na problem namesto na snovanje sistema.

‐ Fleksibilnost – deluje po načelu postopnega razkrivanja zapletenosti. Preprosti delovni tokovi morajo biti hitri in enostavni, medtem ko bi morali biti poljubno napredni tokovi mogoči po jasni poti, ki temelji na tem, kar je že naučeno.

‐ Moč – Keras nudi aplikacijsko uporabo tako posameznim uporabnikom kot tudi največjim organizacijam in podjetjem.

Znan je po tem, da daje prednost uporabniškim izkušnjam. Ponuja dosledne in preproste poteke dela, minimizira število akcij, potrebnih za splošno uporabo, ter prispeva jasne povratne informacije o uporabnikovih napakah. Zaradi tega je Keras enostaven za učenje začetnikov in visoko produktiven za uporabo strokovnjakov [2].

(27)

Teoretične osnove in pregled literature

Njegov sistem za učenje sestavlja več komponent [2]:

Plasti, ki se kombinirajo v modele.

Funkcija izgube, ki opredeljuje povratni signal za učenje.

Razvrščevalnik, ki nadzira proceduro učenja.

Meritve, ki ovrednotijo uspešnost sistema.

Vadbena zanka, ki opravlja miniserijski stohastični spust gradienta.

Plasti so temeljne strukture za obdelavo podatkov, ki si jih lahko zamislimo tudi kot nekakšne pametne filtre. Te prejmejo informacije in v omrežje oddajo svojo razlago le-teh.

V večini primerov globokega učenja se plasti združujejo v daljšo verigo, ki ji pravimo model.

Ta deluje kot sito za obdelavo podatkov, zgrajeno iz večjega števila manjših filtrov, ki izpopolnjuje svojo razlago informacij skozi celoten proces učenja. Obstaja več različnih tipov plasti, vsak primeren za določeno vrsto podatkov.

Slika 2.11: Poenostavljen primer modela pri knjižnici Keras

Funkcija izgube tekom treninga opravlja izračune količin, ki jih mora model med treningom čim bolj zmanjšati, in zato predstavlja merilo uspešnosti za predpisano nalogo.

Meritve so funkcije izgub, katerih preračunani rezultati niso uporabljeni za nadaljnjo učenje modela. Namesto tega so prikazane uporabniku v obliki grafikona in omogočajo oceno uspešnosti modela.

Razvrščevalnik odloča, kako se bo sistem posodabljal glede na funkcijo izgube.

Naslednja slika prikazuje poenostavljeno delovanje modela za učenje. Prihajajoči podatki so obdelani v posamezni plasti. Plast nato opravi napoved, ki jo funkcija izgube oceni. Na podlagi te ocene razvrščevalnik prilagodi uteži, ki so uporabljene za obdelavo podatkov v plasti.

(28)

Teoretične osnove in pregled literature

14 Slika 2.12: Sodelovanje komponent sistema za strojno učenje v knjižnici Keras

2.4 Uravnavanje

Modeli strojnega učenja se pogostokrat ponesrečijo zaradi preveč popolnega prileganja. To se pojavi, ko imamo v modelu veliko število nevronskih povezav ali ga treniramo predolgo.

Takrat se model začne učiti že na samem šumu, kar povzroči neprimerno prileganje napovedi ob vsaki motnji. V [12] primerjajo preveč popolno prileganje z opazovanjem posameznih dreves, medtem ko bi ob tem povsem pozabili na celoten gozd.

V namenom, da bi rešili ta problem, je bila razvita metoda reguliranja, imenovana izpust.

Pri njej se problem preveč popolnega prileganja rešuje z implementacijo izpustnega sloja.

Ta naključno in periodično odstrani nekatere nevrone ter njihove povezave iz omrežja.

Slika 2.13: Primer izpusta polno povezanih nevronov iz [12]

(29)

3 Metodologija raziskave

3.1 Preizkuševališče in pripomočki

Predem smo se lotili pisanja kode programa smo določili preizkuševališče.

Slika 3.1: Preizkuševališče in pripomočki

To je vsebovalo računalniško kamero tipa Jelly Comb, namizno svetilko z nastavljivo svetilnostjo in računalnik z ekranom. Vse delovne operacije so se izvajale 580 mim nad

(30)

Metodologija raziskave

16

3.2 Izbira delovnih operacij

Po določitvi preizkuševališča in pripomočkov na njem smo se lotili izbire delovnih operacij, ki jih bomo prepoznavali. Pri tej izbiri smo se poskušali osredotočiti na zajemanje vseh možnih scenarijev klasifikacij. V sklopu tega smo sklenili, da enkratna ponovitev posamezne operacije časovno ne bo presegla 5 sekund.

Izbrali smo naslednje štiri delovne operacije:

Sestavljanje – pri tej operaciji osebek z levo roko drži heksagonalni vijak velikosti M8, z desno pa nanj namesti podložko in krajšo cev. Izbrali smo jo, ker smo menili, da lahko služi kot osnoven preizkus klasifikacije, ki sloni le na gibih v koordinatah x in y.

Slika 3.2: Delovna operacija sestavljanja

(31)

Metodologija raziskave

Privijanje – pri tej operaciji osebek z levo roko prav tako drži heksagonalni vijak velikosti M8, z desno roko pa medtem privija matico. Ker ta operacija vključuje samo rotacijo, se nam je zdela idealna za preizkus tega giba pri klasifikacijah.

Slika 3.3: Delovna operacija privijanja

Zabijanje – pri tej operaciji osebek z desno roko drži kladivo in zabija namišljen žebelj, katerega držanje simulira z levo roko. Ta operacija služi testiranju prepoznave premika v z- smeri (globino). Predpostavili smo, da bo imel program največ problemov pri klasifikaciji tega giba. Tako smo se odločili, ker sklepamo, da ima program več problemov z določevanjem z-koordinate, kot jih ima z določevanjem drugih dveh prostorskih koordinat.

Slika 3.4 Delovna operacija zabijanja

(32)

Metodologija raziskave

18 Loščenje – pri tej operaciji osebek z desno roko pritiska kuhinjsko krpo ob mizo in simulira gib loščenja. Leva roka počiva na mizi. To operacijo smo si izbrali, da testiramo klasifikacijo giba, ki se odvija le v eni koordinatni smeri. Ker je ta gib najbolj preprost, smo sklepali da bo klasifikacija tega najuspešnejša.

Slika 3.5: Delovna operacija loščenja

3.3 Podatkovna obravnava

Da smo lahko začeli zbirati podatke za strojno učenje, smo morali najprej ugotoviti, kako knjižnica MediaPipe podaja podatke o 21 točkah, ki se nam vsako sličico izrišejo po dlaneh.

Slika 3.6: Izris točk po dlaneh na preizkuševališču

(33)

Metodologija raziskave

S testiranjem kode smo ugotovili, da so točke vsako sličico podane v obliki seznama in da program iste točke vedno uvrsti na iste položaje seznama. Koordinate konice palca bodo tako vedno na petem, šestem in sedmem mestu v sezamu, medtem ko bodo položajne točke sredine dlani na prvem, drugem in tretjem. Program prav tako za vsako sličico v posebnem seznamu z določeno mero gotovosti predvidi, ali je določena roka v objektivu desna ali leva.

Z namenom sprotnega shranjevanja točk v skupno matriko smo definirali funkcijo, ki deluje po naslednjih načelih:

‐ Preveri, ali je roka, ki jo trenutno popisuješ s točkami, desna ali leva. Če je desna, shrani vse njene koordinate na prvih 63 mest 126-mestne matrike. 63 zaradi tega, ker ima vsaka izmed 21 točk 3 koordinate. V primeru, da je roka, ki jo popisuješ leva, shrani njene koordinate na zadnjih 63 mest iste matrike. Če katere izmed rok ne zaznaš v objektivu, popiši za njo rezervirane točke z ničlami. S takšnim popisom bo program vedno vedel, katera roka počne kateri gib.

‐ Iz sedaj popisane matrike za vsako roko izbriši točke z naslednjimi oznakami: 2, 3, 6, 7, 10, 11, 14, 15, 18 in 19. Razlog za izbris teh 60 koordinat leži v optimizaciji, saj smo sklepali, da bo program za strojno učenje tako prejel manj šuma za obdelavo podatkov.

Rezultat tega bo tako lažje učenje, kot tudi poznejša klasifikacija.

Slika 3.7: Prikaz izbrisanih in obdržanih točk

‐ Iz matrike preberi vse tri pozicijske točke zapestja za obe roki. Če so te za posamezno dlan različne od nič, jim odštej število 0.05 in rezultat za vsako posamezno prostorsko koordinato odštej vsem točkam tiste roke v matriki. Tako smo odpravili pomembnost natančnega položaja dlani v objektivu za vsako akcijo, saj bodo sedaj v zapestjih, neglede na pozicijo, ob enakih premikih izpisane enake točke.

‐ Na zadnjih 9 mest matrike dodaj originalne koordinate zapestij obeh rok in njune razdalje.

(34)

Metodologija raziskave

20 Po zaključeni funkciji je izgledala matrika tako (L in D so koordinate leve in desne roke):

[

𝟎. 𝟎𝟓 𝟎. 𝟎𝟓 𝟎. 𝟎𝟓 𝑫 𝑫 𝑫

𝑫 𝑫 𝑫 𝑫 𝑫 𝑫

𝑫 𝑫 𝑫 𝑫 𝑫 𝑫

𝑫 𝑫 𝑫 𝑫 𝑫 𝑫

𝑫 𝑫 𝑫 𝑫 𝑫 𝑫

𝑫 𝑫 𝑫 𝟎. 𝟎𝟓 𝟎. 𝟎𝟓 𝟎. 𝟎𝟓

𝑳 𝑳 𝑳 𝑳 𝑳 𝑳

𝑳 𝑳 𝑳 𝑳 𝑳 𝑳

𝑳 𝑳 𝑳 𝑳 𝑳 𝑳

𝑳 𝑳 𝑳 𝑳 𝑳 𝑳

𝑳 𝑳 𝑳 𝑳 𝑳 𝑳

𝑿_𝑫 𝑿_𝑳 𝑹_𝑿 𝒀_𝑫 𝒀_𝑳 𝑹_𝒀

𝒁_𝑫 𝒁_𝑳 𝑹_𝒁 ]

(2.8)

3.4 Zbiranje podatkov za učenje

Da smo lahko začeli zbirati podatke, je bilo potrebno ustvariti mesto za njihovo shranjevanje.

V novo ustvarjeni mapi ''Podatki'' smo ustvarili štiri podmape in jih poimenovali po različnih akcijah. Vsaka od teh podmap je vsebovala še 50 svojih podmap, oštevilčenih od 0 do 49. V taki posamezni mapi je program pri beleženju ustvaril 60 datotek tipa NumPy, za vsako sličico videa eno.

Ker je bil naš cilj ustvariti preprost in lahko izvedljiv način uporabe tega programa, smo se odločili vse podatke zbrati v enem zagonu zbiralnika. Za vsako delovno operacijo smo zbrali 50 naborov podatkov, vsak je bil sestavljen iz 60 matrik. Zbiranje ene izmed sekvenc bi tako s predpostavko, da računalniška kamera deluje optimalno pri 30 FPS, trajalo 2 sekundi. Med zbiranjem sekvenc so bile 3 sekunde premora, na katere nas je program tudi opozoril.

Slika 3.8: Zbiranje podatkov za strojno učenje

(35)

Metodologija raziskave

3.5 Strojno učenje

Sestavljanje modela za strojno učenje z uporabo aplikacijskega vmesnika Keras je zelo enostavno. Zaradi tega smo se odločili sestaviti dva modela in ju kasneje primerjati. Za prvi model smo določili večje število nevronskih povezav, brez regulacijskega izpustnega sloja.

Drugi model pa je slednje sloje vseboval, a je imel manj nevronskih povezav. Parametre obeh modelov smo določili eksperimentalno.

Za oba modela smo izbrali sekvenčni tip. Tako smo se odločili, ker je ta najenostavnejši za grajenje. Sestavlja ga navaden kup plasti, ki so linearno naložene ena na drugo.

Te in njihovo zaporedje v prvem modelu, smo si izbrali sledeče:

‐ LSTM sloj, ki vsebuje 32 nevronskih enot z aktivacijo 'relu'

‐ LSTM sloj, ki vsebuje 16 nevronskih enot z aktivacijo 'relu'

‐ LSTM sloj, ki vsebuje 16 nevronskih enot z aktivacijo 'relu'

‐ Gost sloj, ki vsebuje 32 polno povezanih omrežnih nevronov z aktivacijo 'relu'

‐ Gost sloj, ki vsebuje 32 polno povezanih omrežnih nevronov z aktivacijo 'relu'

‐ Gost sloj, ki vsebuje 4 polno povezane omrežne nevrone z aktivacijo 'softmax' V drugem modelu pa sledeče:

‐ LSTM sloj, ki vsebuje 16 nevronskih enot z aktivacijo 'relu'

‐ Izpustni sloj, ki izpusti 40% povezav

‐ LSTM sloj, ki vsebuje 8 nevronskih enot z aktivacijo 'relu'

‐ Izpustni sloj, ki izpusti 20% povezav

‐ Gost sloj, ki vsebuje 16 polno povezanih omrežnih nevronov z aktivacijo 'relu'

‐ Izpustni sloj, ki izpusti 20% povezav

‐ Gost sloj, ki vsebuje 4 polno povezane omrežne nevrone z aktivacijo 'softmax'

Slika 3.9: Model z velikim številom povezav (L) in model z izpustnimi sloji (D)

‐ Gosto povezani sloji so primerni za obdelavo podatkov, ki jih prejmemo v obliki vektorjev.

‐ LSTM-plasti za podatke, ki jih prejemamo v sekvencah.

‐ Aktivacija 'relu' vrne tenzor, ki predstavlja vhodnega, a je preoblikovan s funkcijo vklopa 'relu'.

(36)

Metodologija raziskave

22

‐ Aktivacija 'softmax' vrne tenzor, ki vsebuje verjetnosti v rangu od 0 do 1. Ta aktivator nam omogoča klasifikacijo.

Sestavljanje modela smo zaključili z izbiro razvrščevalnika (Adam), funkcije izgube (kategorična navzkrižna entropija) in meritev (kategorična natančnost). Razvrščevalnik Adam smo si izbrali, ker je po navedbah Diederik P. Kingma v [18] računsko učinkovit, hiter in spominsko nezahteven.

Pri učenju modela si lahko izberemo število iteracij treninga. To je lahko tudi preveliko, kar povzroči prekomerno treniranje. Zato je priporočljivo, da se ta ročno zaustavi, ko dosežemo željeno vrednost natančnosti. Trening prvega modela smo zaustavili po 317 iteracijah, trening drugega pa po 244.

Trening smo spremljali preko vizualizacijske nadzorne plošče TensorBoard, kjer smo dobili podatke o poteku kategorične natančnosti in izgube obeh modelov.

Slika 3.10: Kategorična natančnost skozi iteracije in njena polinomska aproksimacija pri prvem modelu

Slika 3.11: Kategorična natančnost skozi iteracije in njena polinomska aproksimacija pri drugem modelu

0 0.2 0.4 0.6 0.8 1 1.2

0 50 100 150 200 250 300 350

Kategorična natančnost

Število iteracij

1. Model

0 0.2 0.4 0.6 0.8 1

0 50 100 150 200 250 300

Kategorična natančnost

Število iteracij

2. Model

(37)

Metodologija raziskave

3.6 Testiranje modela

Testiranje modela je potekalo v dveh korakih. V prvem smo model testirali s kodo. To smo storili z uporabo ukaza 'accuracy score', kamor smo kot argumenta vnesli matriki napovedi modela in dejanskih vrednosti. S to metodo smo pri prvem modelu izmerili 95% natančnost, pri drugem pa 97%.

Drugi del testiranja je vključeval proces klasifikacije. Napisali smo kodo, ki v vsakem trenutku poskuša napovedati, katera delovna operacija se izvaja. Če je za katero izmed štirih gotovost pravilne napovedi večja od 95%, se nam ime te operacije izpiše v zgornjem delu okna.

Slika 3.12: Prikaz napovedi modela

Za vsak model smo opravili 20 meritev posamezne klasifikacije delovne operacije. Te smo izvajali z vrstnim redom dlani, kot smo model učili. Npr. desna dlan bo vedno privijala, medtem ko bo leva vijak držala.

Vse meritve smo opravili v istih svetlobnih pogojih, kar je pomembno, saj ti vplivajo na kakovost videopretoka. Delovne operacije smo izvajali v naključnem vrstnem redu. Ko je model določil delovno operacijo, jo je moral potrjevati vsaj dve sekundi, da smo jo šteli kot pravilno ali nepravilno. Če model ni prepoznal nobene akcije, smo to ignorirali in poskusili še enkrat. Po treh neznanih poskusih smo akcijo označili kot napačno klasificirano.

(38)

24

4 Rezultati

Po 80 preizkusih klasifikacij so bili rezultati sledeči:

‐ Model 1 je preizkus opravil z 70,00 % uspešnostjo. Pravilno je klasificiral je 56 delovnih operacij.

‐ Model 2 je preizkus opravil z 91,25% uspešnostjo. Pravilno je klasificiral 73 delovnih operacij.

Uspešnost klasifikacij posamezne delovne operacije za oba modela prikazuje naslednji grafikon:

Slika 4.1: Uspešnost klasifikacije posamezne delovne operacije za oba modela

8

13

15

20

17 18

20

18

0 5 10 15 20 25

Sestavljanje Privijanje Zabijanje Loščenje

Število uspešnih klasifikacij za oba modela

Model 1 Model 2

(39)

Rezultati

Pri prvem modelu je bil odražen veliko večji šum kot pri drugem. Za klasifikacijo je potreboval dalj časa in je bil o njej tudi manj prepričan. Glavni problem mu je predstavljala klasifikacija operacije sestavljanja, kjer je v primeru nenatančno nameščenih rok pred objektivom to zamenjeval z zabijanjem. V podobnem scenariju je privijanje zamenjeval s sestavljanjem. Za določevanje operacije zabijanja je velikokrat potreboval več kot en poskus, saj je svojo prepričanost v to velikokrat delil z operacijo loščenja.

Prvi model je bil najuspešnejši pri klasifikaciji operacije loščenja, kjer je 100% pravilno določil vse tovrstne operacije v poskusu.

Pri drugem modelu je bil najpogostejši šum v začetku klasifikacije zabijanja. Čeprav je to operacija, ki jo je najuspešnejše klasificiral (100%) , je v prvih sekundah demonstracije to zamenjeval z sestavljanjem, a si vedno je pravočasno premislil. Najslabše klasificirana operacija pri tem modelu je bila sestavljanje, saj je to pogostokrat zamenjal s privijanjem.

Opazili smo tudi, da je za operacijo privijanja model skoraj vedno negotov. Pri drugih operacijah se klasifikacija odrazi v sunkovitem skoku samozavesti v napoved, medtem ko pri tej ta počasi narašča.

Drugi model je pravilno klasificiral 17 operacij več kot prvi, kar predstavlja 21,25% operacij celotnega preizkusa posameznega modela.

Slika 4.2: Število vseh uspešnih klasifikacij obeh modelov

0 10 20 30 40 50 60 70 80

Model 1 Model 2

Število uspešnih klasifikacij

(40)

26

5 Diskusija

Opazili smo da je popis točk z uporabo MediaPipe knjižnice zelo natančen, zato menimo da lahko večino napak pri zaznavah pripišemo ostalim pogojem. Grajenje modelov z uporabo knjižnice Keras je enostavno, a pri neizkušenih uporabnikih zahteva veliko poskušanja, preden se lahko ustvari kakovosten model.

Pri določitvi delovnih operacij smo za oba modela predvidevali najuspešnejšo klasifikacijo pri procesu loščenja, vendar se ni izkazalo tako. Drugi model je najbolje klasificiral zabijanje, operacijo, ki smo jo označili kot najzahtevnejšo za prepoznavo. Težko je sklepati zakaj je tako, a menimo da odgovor leži v z-koordinati. Morda je ta res najzahtevnejša za določitev, a drastične spremembe v njeni smeri smo izvajali le pri tej operaciji. Sklepamo, da je to razlog za njeno uspešnost. Pri prvem modelu je bila najbolje klasificirana operacija loščenja, kar smo tudi predvidevali, saj je ta najmanj zapletena. Sklepali smo, da jo bodo koordinate prstov, ki so zaradi funkcije statične glede na dlani, naredile prepoznavno že v samem začetku izvajanja. To se je izkazalo za resnično pri obeh modelih, saj sta oba to operacijo med vsemi ostalimi najhitreje klasificirala. Loščenje je bila najuspešnejša klasifikacija celotnega učenja s kar 95% korektnostjo zaznave.

Oba modela sta imela najslabšo izvedbo pri procesu sestavljanja, kar je bilo presenečenje.

Sklepamo, da je razlog za to šum, ki se pojavi, ko zapestji približamo drugo k drugemu. Ker se ob določenih časih točke po dlaneh začnejo prikrivati, se zaznava teh poslabša. Posledično imamo ob vsaki ponovitvi giba prisoten šum, ki lahko tako hitro naučeno mrežo zmede.

Privijanje pa je bil proces, pri katerem smo opazili najmanjšo samozavest napovedi. To se je odražalo v počasnem naraščanju verjetnosti, medtem ko je ta pri drugih operacijah vedno sunkovito narasla. Sklepamo, da je razlog za to rotacijski gib, ki ga lahko model zaradi šuma zamenjuje z operacijo sestavljanja vendar je zaradi statičnih koordinat v zapestjih zmeden in nesiguren v svojo napoved.

Drugi model je deloval precej bolje od prvega. To je razvidno že iz statističnih rezultatov.

Opazili smo tudi, da je napoved prvega modela večje nestanovitnosti. Ta bo pred končno klasifikacijo operacije burno preskakoval v verjetnosti med ostalimi. Drugi model pa daje bolj umirjen in samozavesten vtis. Redkokdaj je burno preskakoval, temveč je vedno ostal samozavesten pri svoji prvi ali drugi izbiri. Menimo, da razlog za to tiči v izpustnih slojih, ki smo jih uporabili le pri drugem modelu.

Ker je drugi model pravilno klasificiral več kot 90% delovnih operacij, je izpolnil naš cilj.

(41)

6 Zaključki

Z uporabo knjižnice MediaPipe in strojnega učenja smo oblikovali zelo uspešen, a enostaven model za klasificiranje delovnih operacij. V sklopu zaključne naloge smo:

1. Pokazali uporabnost knjižnice MediaPipe Hands, ki dlani s pomočjo pretoka kamere popiše z enaindvajsetimi točkami. Vsaka točka vsebuje 3 pozicijske koordinate, kar pomeni, da je vseh popisanih točk 63. Detekcija teh treh koordinat je zelo natančna in odvisna od sposobnosti pretakanja videa. Pri tem igrajo vlogo svetloba, računalniška sposobnost in tip kamere.

2. Pregledali teoretične osnove strojnega učenja, kjer smo poenostavljeno pojasnili pomanjkljivosti, rešitve in način delovanja ponavljajočih se nevronskih mrež in dolgoročnega kratkoročnega spomina. Obrazložili smo knjižnico za strojno učenje TensorFlow in njen programerski vmesnik Keras. Pri tem smo se podrobno spustili v sestavo in uravnavanje, ki sta bila za nas ključnega pomena.

3. Določili 4 delovne operacije za klasifikacijo in s tem namenom oblikovali dva modela strojnega učenja, ki slonita na podlagi matrike točk. To smo tekom pretoka s pomočjo knjižnice MediaPipe Hands vnašali kot vhod v nevronsko mrežo. Modela se razlikujeta po zgradbi. Prvi vsebuje večje število nevronskih povezav, drugi pa izpustne sloje. Natančno zgradbo vsakega modela smo določili eksperimentalno. To smo storili s poskušanjem spreminjanja parametrov in števila slojev, dokler model ni izrisal nam zadovoljive krivulje učenja Prvi je bil sestavljen iz treh LSTM in treh gostih slojev ter obsegal kar 19652 nevronov.

Drugi pa je bil sestavljen iz dveh LSTM, dveh gostih in dveh izpustnih slojev ter je vseboval 6900 nevronov. Vsak model smo trenirali posamično. Trening smo ves čas spremljali in ga ob željeni natančnosti ročno prekinili, da bi se izognili prekomernemu treniranju. Prvi model smo zaustavili po 317 iteracijah, drugega pa po 244.

4. Izvedli testiranje in statistiko obeh modelov, ki je pokazala 70% uspešnost prvega in 91,25% uspešnost drugega modela. Drugi model je imel 21,25% višjo uspešnost kot prvi.

5. Preučili vzroke za določene napake klasifikacij modelov in navedli možnosti za izboljšave ter nadaljnja dela.

(42)

Zaključki

28 Diplomsko delo predstavi uspešen model klasifikacije delovnih operacij na podlagi posnetkov gibanja dlani, ki ga lahko replicira vsak posameznik z osnovnim znanjem programiranja v Pythonu. Model je preprost in uporaben v vsakdanjem življenju, tudi za aplikacije zunaj strojniškega kadra.

Predlogi za nadaljnje delo

Nadaljnje delo se lahko osredotoči na izboljšanje kakovosti določitve. Algoritem, ki bi uspel iz vhodnih podatkov odstraniti šum in jih izpopolniti z dodatnimi vrednostmi, bi zelo pripomogel k temu. Enostaven primer je recimo funkcija, ki bi v posebni matriki beležila vektorske razdalje pomembnih točk in jih poleg osnovnih uporabila pri strojnem učenju.

Primer, zahtevnejši od tega, bi bil implementacija funkcij premika po času, ki bi za operacije, kot je privijanje, v določeni meri odstopanja premikanje točk prilegala elipsi ali krožnici. V primeru izboljšanja vhodnih podatkov, bi se lahko model učil klasifikacij motorično zahtevnejših operacij. Možnosti nadaljnjega dela so tudi pri ustvarjanju interakcije med človekom in robotom. V takšnem scenariju bi lahko človek pod kamero izvajal operacije, ki bi jih robot ob uspešni klasifikaciji ponovil po svojih parametrih. Še en predlog za nadaljnje delo je beleženje produktivnosti delavca za tekočim trakom z uporabo klasifikacij njegovih gibov.

(43)

Literatura

[1] A. R. Lanfranco, A. E. Castellanos, J. P. Desai, W. C. Mayers: Robotic surgery: a current perspective, Annals of surgery (239), 2004, str. 14–21.

[2] F. Chollet: Deep Learning With Python, second edition. Manning publications, 2020.

[3] C. Lugaresi, J. Tang, H. Nash, C, McClanahan, E. Uboweja, M. Hays, F. Zhang, C.

Chang, M. Guang Yong, J. Lee, W. Chang, W. Hua, M. Georg, M. Grundmann:

MediaPipe: A Framework for Building Perception Pipelines. Distributed, Parallel, and Cluster Computing. Google Research, Cornell University, 2019.

[4] I. Oikonomidis, N. Kyriazis, A. A. Argyros: Efficient Model-based 3D Tracking of Hand Articulations using Kinect. British Machine Vision Conference (2010), Computational Vision and Robotics lab., Institute of Computer Science, FORTH, Computer Science Deptartment, University of Crete, Greece.

[5] C. Qian, X. Sun, Y. Wei, X. Tang, J. Sun: Realtime and Robust Hand Tracking from Depth. Microsoft Research, Chinese University of Hong Kong, IEEE Conference on Computer Vision and Pattern Recognition, 2014.

[6] T. Sharp, C. Keskin, D. Robertson, J. Taylor, J. Shotton, D. Kim, C. Rhemann, I.

Leichter, A. Vinnikov, Y. Wei, D. Freedman, P. Kohli, E. Krupka, A. Fitzgibbon, S.

Izadi: Accurate, Robust, and Flexible Real-Time Hand Tracking. Microsoft Research, Crossings, Seoul, Korea, 2015.

[7] R. Y. Wang, J. Popović: Real-Time Hand-Tracking with a Color Glove.

Massachusets Institute of Technology, University of Washington, ACM Transactions on Graphics, 28(8), 2009.

[8] F. Zhang, V. Bazarevsky, A. Vukunov, A. Tkachenka, G. Sung, C. chang, M.

Grundmann: MediaPipe Hands: On-device Real-time Hand Tracking. Google Research, Computer Vision and Pattern Recognition, 2020.

[9] A. Domenech L.: Sign language recognition, ASL Recognition with MediaPipe and Recurrent Neural Networks: Bacherlor-Thesis. University of applied sciences, 2020.

[10] B. Bagby, D. Gray, R. Hughes, Z. Langford, R. Stonner: Simplifying Sign Language Detection for Smart Home Devices using Google MediaPipe. 2021.

[11] Y. LeCun, Y. Bengio, G. Hinton: Deep Learning. Nature, 2015.

(44)

Literatura

30 [12] I. Vasilev, V. Zocca, G. Spacagna, D. Slater, P. Roelants: Python Deep Learning,

Second Edition. Packs Publishing, 2019.

[13] S. Hochreiter, J. Schmidhuber: Long short-term memory. Neural Computation 9(8), 1997, str 1735–1780.

[14] A. Das, M. W. Ansari, R. Basak: Covid-19 Face Mask Detection Using TensorFlow, Keras and OpenCV. IEEE India Conference, 2020.

[15] M. Adabi, P. Barham, J. Chen, Z. Chen, A. David, J. Dean, M. Devin, S. Ghemawat, G. Irving, M. Isard, M. Kudlur, J. Levenberg, R. Monga, S. Moore, D. G. Murray, B.

Steiner, P. Tucker, V. Vasudevan, P. Warden, M. Wicke, Y. Yu, X Zheng:

TensorFlow: A System for Large-Scale Machine Learning. Proceedings of the 12th USENIX Symposium on Operating Systems Design and Implementation (OSDI

’16), Savannah, USA, 2016.

[16] M. Abadi in drugi: Large-Scale Machine Learning on Heterogeneous Distributed Systems, arXiv:1603.04467, 2016.

[17] About Keras, https://keras.io/about/, čas dostopa: 30.8.2021.

[18] D. P. Kingma, J. L. Ba: Adam: A Method for Stochastic Optimization. International Conference on Learning Representations (2015), San Diego, USA.

(45)

Reference

POVEZANI DOKUMENTI

 Rešujejo probleme iz domačega in delovnega okolja, ki zahtevajo uporabo osnovnih računskih operacij z naravnimi in decimalnimi števili vključno s procentnim računom.. ODNOSI

Program je enostaven za uporabo, vendar od uporabnika potrebuje vhodne podatke (velikost in umeščenost platna v prostoru). 2) Pokazali smo, da je možno

Kljub zelo visoki razširjenosti programskega jezika JavaScript, na moje presenečenje nisem našel enotne in pregledne knjižnice za reševanje metode končnih elementov..

1) Zasnovali smo obliko proizvodnega sistema z uporabo diagrama poteka, s katerim smo določili vrste potrebnih tehnoloških operacij, jih razporedili v pravilno zaporedje za

Z desnim klikom na operacijo »Rest Machining«, ki je izpisana v dreve- su operacij, se nam odpre možnost »Add Milling Operation«, izbrali smo »3D HSM«.. Najprej

Število izposojenih enot gradiva glede na aktivnega uporabnika knjižnice z visokošolskega zavoda 8,79 Število izposojenih enot gradiva na dom glede na aktivnega uporabnika knjižnice

Delež (odstotek) strokovnih delavcev knjižnice glede na število vseh EPZ knjižničnih delavcev 100,00 Število aktivnih uporabnikov knjižnice glede na EPZ strokovnega delavca

V drugem eksperimentu smo našo nevronsko mrežo učili ločeno za posnetke moških in žensk na bazi podatkov IMDB-WIKI, pri čemer smo za učenje uporabili 45.413