Professional Documents
Culture Documents
2
Abstract
This paper describes the process of classification of rock-paper-scissors images. Rock-paper-scissors is
a well known hand game in which the player forms one of three shapes with an outstretched hand and
then depending on the opponent’s shape and the rules, wins or loses. The goal of this research is image
recognition and classification of the shapes in the mentioned game using computer vision and dataset
from kaggle.com. The introduction of this paper describes the concept of the game, as well as the
concept of image classification and its purpose, just like parts that are used in the process, methods of
classification, that is the libraries using the Python programming language.
3
Sadržaj
1 Uvod ……………………………………………………………………………………………………………………………………………….6
1.1 Kamen-papir-makaze …………………………………………………………………………………………………………………..6
1.2 Klasifikacija slika ………………………………………………………………………………………………………………………….7
2 Dataset …………………………………………………………………………………………………………………………………………..9
2.1 Opis dataseta … ……………………………………………………………………………………………………………………………..9
2.2 Sadržaj dataseta … ………………………………………………………………………………………………………………………..9
2.3 Format dataseta … ………………………………………………………………………………………………………………………...9
2.4 Korištene metode i biblioteke …………………………………………………………………………………………………….9
3 Principal Component Analysis Visualization ……………………………………………………………………………10
3.1 Uvod u PCA …………………………………………………………………………………………………………………………………..10
3.2 Setup …………………………………………………………………………………………………………………………………………….10
3.3 Istraživanje dataseta …………………………………………………………………………………………………………………..11
3.4 PCA metoda ………………………………………………………………………………………………………………………………….13
3.5 Principal component vectors ……………………………………………………………………………………………………..14
3.6 Reprezentacija slika preko svojih vektora principalnih komponenata ………………………………….18
4 Zaključak ……………………………………………………………………………………………………………………………………….28
5 Literatura ……………………………………………………………………………………………………………………………………...29
4
Popis slika
Slika 1.
Prikaz međusobnog nadjačavanja oblika ………………………………………………………………………………………...6
Slika 2. Pipeline klasifikacije slika ………………………………………………………………………………………………………………...7
Slika 3. Različiti izgledi istih objekata usljed drugačijih uslova ……………………………………………………………....8
Slika 4. Dijelovi slika iz korištenog dataseta………………………………………………………………………………………………..9
Slika 5. Importovanje biblioteka …………………………………………………………………………………………………………………..10
Slika 6. Instaliranje rpscvpaketa ………………………………………………………………………………………………………………...11
Slika 7. Kreiranje simboličkog linka ……………………………………………………………………………………………………………..11
Slika 8. Importovanje modula imgproc … ……………………………………………………………………………………………………..11
Slika 9. Predprocesiranje slika ……………………………………………………………………………………………………………………..12
Slika 10. Rezultati predprocesiranja …………………………………………………………………………………………………………….12
Slika 11. Preoblikovanje i prikazivanje slike ………………………………………………………………………………………………...12
Slika 12. Sadržaj niza y …………………………………………………………………………………………………………………………………...13
Slika 13. Tekstualne oznake slika …………………………………………………………………………………………………………………..13
Slika 14. Podešavanje transformera PCA ……………………………………………………………………………………………………...13
Slika 15. Prikaz odstupanja komponenata …………………………………………………………………………………………………….14
Slika 16. PCA komponente ………………………………………………………………………………………………………………………………15
Slika 17. Preoblikovanje principalne komponente ………………………………………………………………………………………..15
Slika 18. Niz srednjih vrijednosti ulaznih slika ……………………………………………………………………………………………..15
Slika 19. Vizualiziranje srednje vrijednosti ulazne slike ……………………………………………………………………………...16
Slika 20. Kod za iscrtavanje komponenata …………………………………………………………………………………………………...16
Slika 21. Prvih 20 komponenata ……………………………………………………………………………………………………………………..17
Slika 22. Sljedećih 20 komponenata ……………………………………………………………………………………………………………...18
Slika 23. Transformacija originalne slike ……………………………………………………………………………………………………….18
Slika 24. Rekonstrukcija originalne slike iz princ.komponenata ………………………………………………………………...19
Slika 25. Funkcija za iscrtavanje slika …………………………………………………………………………………………………………….20
Slika 26. Rezultati iscrtavanja sve tri slike ……………………………………………………………………………………………………21
Slika 27. Funkcija za iscrtavanje pojedinačne faze rekonstrukcije ……………………………………………………………..22
Slika 28. Dijelovi rezultata za oblik ‘paper’ …………………………………………………………………………………………………...24
Slika 29. Dijelovi rezultata za oblik ‘rock’ ……………………………………………………………………………………………………...25
Slika 30. Dijelovi rezultata za oblik ‘scissors’ ………………………………………………………………………………………………..27
5
1. Uvod
1.1 Kamen-makaze-papir
Kamen-makaze-papir je igra u kojoj dva igrača koriste isključivo ruke. Igrači u isto vrijeme
pokazuju jedan od tri oblika: kamen, makaze ili papir. Kamen pobjeđuje makaze, makaze pobjeđuju
papir, papir pobjeđuje kamen. U slučaju da oba igrača bace isti znak ostaje neriješeno. Izgovaranje
fraze: "kamen-makaze-papir", za vrijeme koje se stisnutom šakom maše, slijedi pokazivanju odabranog
znaka. Igra se igra ili iz prve pobijeđene ili do određenog broja pobjeda (najčešće tri). Ova metoda se
često koristi kao metoda biranja slična bacanju novčića ili kocke. Za razliku od tih nasumičnih metoda
kod kamen-makaze-papir se može uz određenu vještinu i uzastopno pobjeđivati. Te vještine bi bile
prepoznavanje nesvjesnog ponašanja i iskorištavanje istog (igrač konstantno baca iste obrasce itd.).
Slika 1. Prikaz međusobnog nadjačavanja oblika
6
1.2 Klasifikacija slika
Klasifikacija slika predstavlja proces kompjuterske vizije u kojoj se slika može klasifikovati
prema njenom vizualnom sadržaju. Npr., algoritam klasifikacije može reći da li se na određenoj slici
nalazi neki konkretan objekt. Dok je detekcija objekata na slikama za čovjeka trivijalna stvar, precizna i
pouzdana klasifikacija slika još uvijek predstavlja izazov u aplikacijama koje koriste kompjutersku viziju.
Zadaća problema klasifikacije slika je određivanje ispravne klase iz fiksnog skupa kategorija za svaku
sliku iz ulaznog skupa podataka. Problem klasifikacije jedan je od glavnih problema u području
računalnog vida, te se njegovim rješavanjem otvara širok spektar praktičnih primjena. Mnogi problemi
računalnog vida (prepoznavanje objekata, segmentacija) mogu se svesti na problem klasifikacije slika.
Slika 2. Pipeline klasifikacije slika
Klasifikacija slika je nadgledani proces učenja koji se sastoji iz sljedećih koraka: definiši set ciljnih
klasa (objekata koji se identifikuju na slikama) i treniraj model da ih prepozna koristeći označene testne
slike kao ulaz. Rana kompjuterska vizija se oslanjala na sirove podatke iz piksela kao ulaz u model.
Međutim, sami sirovi podaci iz piksela ne proizvode dovoljno stabilnu reprezentaciju koja bi obuhvatila
sve moguće varijacije objekta koji se može naći na slici. Pozicija objekta, pozadina iza objekta,
pozadinsko osvjetljenje, ugao kamere i fokus kamere, svi oni mogu proizvesti fluktuacije u sirovim
podacima iz piksela; ove razlike su dovoljno značajne da ne mogu biti prepravljene čak ni uzimajući u
obzir prosjek RGB vrijednosti pojedinačnog piksela.
Da bi se objekti modelovali fleksibilnije, klasični modeli kompjuterske vizije su dodali nove mogućnosti
izvedene iz podataka iz piksela, kao što su histogrami boja, teksture i oblici. Loša strana ovog pristupa
jeste to što je inženjerstvo sa ove strane u kojoj se moraju predvidjeti i jasno definirati mnogi mogući
dijelovi objekata, te izdvajanje onih koji su krucijalni, jako teško, naporno i zahtijeva mnogo vremena i
truda. Upravo zbog toga što su određeni dijelovi objekata morali biti definirani veoma precizno,
izgradnja modela koje će vršiti klasifikaciju i njegova tačnost uveliko zavisi od broja, te količine detalja
objekata koji su predmet klasifikacije.
7
Slika 3. Različiti izgledi istih objekata usljed drugačijih uslova
8
2. Dataset
2.1 Opis dataseta
Dataset sadrži ukupno 2188 slika i to: “Rock” (726 slika), “”Paper” (710 slika) i “Scissors”
(752 slike), koje odgovaraju oblicima korištenim u istoimenoj igri. Sve slike su slikane na zelenoj
pozadini sa relativno konzistentnim osvjetljenjem i balansom bijele svjetlosti.
2.3 Format dataseta
Sve slike su RGB slike širine 300 piksela i visine 200 piksela u visokoj rezoluciji u png formatu.
Slike su razdvojene u tri poddirektorija imenovana ‘rock’, ‘paper’ i ‘scissors’, u skladu sa njihovim
respektivnim klasama.
Slika 4. Dijelovi slika iz korištenog dataseta
9
Slika 5. Importovanje biblioteka
Zatim se klonira i instalira rpscv paket iz projekta Rock-Paper-Scissors sa repozitorija na GitHub-u
DrGFreeman/rps-cv). Ovaj paket sadrži imgproc modul sa funkcijama za predprocesiranje slika.
(
10
Slika 6. Instaliranje rpscvpaketa
Nakon toga, kreira se simbolički link img u trenutnom direktoriju koji pokazuje na direktorij koji sadrži
dataset slike. Prethodno instalirani modul zahtijeva da slike budu dostupne na ovoj lokaciji. Zatim,
importujemo modul imgproc iz rpscvpaketa.
Slika 7. Kreiranje simboličkog linka
Slika 8. Importovanje modula imgproc
3.3 Istraživanje dataseta
Koristimo generateGrayFeatures funkciju iz imgproc modula kako bi učitali sliku X i oznake y.
Ova funkcija predprocesira slike tako što ukloni zelenu pozadinu i vrati niz grayscale slika zajedno sa
vektorom oznaka slika.
11
Slika 9. Predprocesiranje slika
Analizirajući rezultat, odnosno vektore slika i oznaka, vidimo sljedeće:
Slika 10. Rezultati predprocesiranja
U datasetu se nalazi 2188 slika. Niz X sadrži sve slike, koje su predstavljene kao vektor od 60000
piksela. Oni odgovaraju 200 x 300 pikselima originalnih slika u poravnatoj formi. Možemo uzeti bilo
koju sliku iz X niza, preoblikovati je u njene originalne dimenzije i prikazati koristeći pyplot imshow
funkciju.
12
Niz y sadrži oznake koje su povezane sa slikama i enkodirane su kao cijeli brojevi.
Slika 12. Sadržaj niza y
Tekstualne oznake koje korespondiraju cjelobrojnim oznaka iz niza y sadržane su u
improc.utils.gesturesTxt rječniku.
Slika 13. Tekstualne oznake slika
3.4 PCA metoda
Da bi se izvela PCA, koristimo PCA transformer iz Scikit-Learn decomposition m
odula. Za ovu
demostraciju, uzet ćemo da ekstraktujemo prvih 40 principalnih komponenata. Pri korištenju PCA kao
reduktora dimenzija u pipelineu mašinskog učenja, broj principalnih komponenata za ekstraktovanje je
parametar koji se može podesiti zajedno sa ostalim modelnim hiperparametrima. Nakon definisanja PCA
transformera, podešavamo ga da odgovara nizu vektora slika X.
13
očekivanog odstupanja (očekivano_odstupanje/totalno odstupanje) svake komponente se može pristupiti
preko explained_variance_ratio atributa PCA objekta.
Proračunate principalne komponente su dostupne preko atributa components_ podešenog PCA
objekta.
14
Slika 16. PCA komponente
Kao što smo definisali, niz sadrži 40 komponenata gdje je svaka predstavljena kao vektor dimenzije
60000. Niz principalnih komponenata uvijek sadrži isti broj komponenata kao broj slika u nizu slika.
To znači da možemo vizualizirati komponente na isti način na koji vizualiziramo ulazne slike. Pogledajmo
prvu principalnu komponentu koja je preoblikovana na dimenzije 200 x 300.
Slika 18. Niz srednjih vrijednosti ulaznih slika
Kao što je i očekivano, niz ima istu veličinu kao i niz ulaznih slika, te niz ulaznih komponenata. Samim
time, možemo vizualizirati srednju vrijednost nakon preoblikovanja na dimenzije originalne slike.
15
Slika 19. Vizualiziranje srednje vrijednosti ulazne slike
Sada, iscrtat ćemo svih 40 vektora principalnih komponenata kao slike.
Slika 20. Kod za iscrtavanje komponenata
16
Slika 21. Prvih 20 komponenata
17
Slika 22. Sljedećih 20 komponenata
Iscrtavanje komponenata pokazuje da prve komponente rezultiraju relativno jednostavnim oblicima.
Kako se broj komponenata povećava, oblici nastali iz njih postaju sve više i više kompleksni.
Pri korištenju PCA kao sredstva za redukciju dimenzija, želimo da enkodiramo svaku sliku kao
vektor manjih dimenzija od originala. Ovaj vektor korespondira faktorima kojima množimo pojedinačnu
principalnu komponentu da bi predstavili originalnu sliku. Prvo, koristimo metod transform PCA objekta
da bi transformisali vektor originalne slike u korespondirajuću reprezentaciju principalne komponente.
18
Naš transformisano niz X_pca sad predstvalja svaku sliku kao vektor dimenzija 40. Samim tim, smanjili
smo dimenzija oblika sa 60000 na 40, što predstvalja redukcioni faktor od čak 1500x. Možemo uzeti 40
koeficijenta iz ovog vektora kako bi množili 40 principalnih komponenata. Ovo korespondira produktu
transformisanog ulaznog vektora slika sa vektorom principalnih komponenata. Sad možemo dodati i
PCA vektor srednjih vrijednosti i dobiti sliku rekonstruisanu iz principalnih komponenata.
19
Slika 25. Funkcija za iscrtavanje slika
20
Slika 26. Rezultati iscrtavanja sve tri slike
Sada kreiramo funkciju koja će iscrtati svaku pojedinačnu fazu principalne komponente u progresivnoj
rekonstrukciji slika. Ova funkcija uzima kao argument indeks slike u nizu koja se treba iscrtati.
21
Slika 27. Funkcija za iscrtavanje pojedinačne faze rekonstrukcije
22
Sada primijenimo funkciju na svaku sliku za svaku klasu pojedinačno i pogledamo rezultate.
23
Slika 28. Dijelovi rezultata za oblik ‘paper’
24
Slika 29. Dijelovi rezultata za oblik ‘rock’
25
26
Slika 30. Dijelovi rezultata za oblik ‘scissors’
27
4. Zaključak
Vidjeli smo kako Principal Component Analysis ekstraktuje set ortogonalnih vektora
principalnih komponenata iz niza ulaznih slika. Ovi vektori imaju isti oblik kao i originalne slike i samim
time, mogu biti vizualizirani na isti način kao ulazne slike. Prvi vektori principalnih komponenata
predstavljaju relativno jednostavne uzorke i objašnjavaju većinu odstupanja u datasetu , za razliku od
kasnijih vektora principalnih komponenata koji predstavljaju uzorke povećane kompleksnosti i manjeg
dijela odstupanja u cijelom datasetu.
Vidjeli smo da visokodimenzionalni vektori ulaznih slika mogu biti transformisani u manje vektore iste
dužine kao vektori principalnih komponenata. Ovi vektori predstavljaju koliko je udio principalne
komponente zastupljen u slici. Ovi vektori smanjenih dimenzija mogu biti korišteni kao vektori oblika
koji predstavljaju originalne slike u nadziranom ili nenadziranom modelu mašinskog učenja.
Na kraju, vidjeli smo kako možemo koristiti srednju vrijednost slika, zajedno sa linearnom
superpozicijom vektora principalnih komponenata da bi nadoknadili aproksimacije originalnih slika. Da
bi to dobili, koeficijenti iz vektora smanjenih dimenzija su korišteni da bi množili svaku pojedinačnu
principalnu komponentu, te suma njih se dodaje na srednju vrijednost. Izvršavanje ove linearnu
superpozicije omogućilo nam je da progresivno razvijemo intuiciju o značenju koeficijenata
transformiranog vektora ulaznih oblika.
28
5. Literatura
1. https://en.wikipedia.org/wiki/Rock_paper_scissors
2. https://www.kaggle.com/drgfreeman/principal-component-analysis-visualization
3. https://www.kaggle.com/drgfreeman/rockpaperscissors
4. https://en.wikipedia.org/wiki/Principal_component_analysis
29