• No results found

The Use of Random Forests for Recognising Objects in Images

N/A
N/A
Protected

Academic year: 2021

Share "The Use of Random Forests for Recognising Objects in Images"

Copied!
66
0
0

Loading.... (view fulltext now)

Full text

(1)

Fakulta elektrotechniky a informatiky

Katedra informatiky

Vyuˇzit´ı ”random forest ˚

u” pro

rozpozn ´av ´an´ı objekt ˚

u v obrazech

The Use of Random Forests for

Recognising Objects in Images

(2)
(3)
(4)
(5)

C´ılem t´eto diplomov´e pr´ace je popsat vyuˇzit´ı Random forestu a jeho schopnost roz-pozn´an´ı objekt ˚u v obrazech. Teoretick´a ˇc´ast se zab ´yv´a n´azvoslov´ım a postupy pˇri se-stavov´an´ı rozhodovac´ıho stromu a Random forestu. Praktick´a ˇc´ast m´a za ´ukol porovnat ´uspˇeˇsnost a rychlost vyhodnocov´an´ı obrazu pomoc´ı metody Random forestu a metody SVM. N´aslednˇe je vytvoˇren program pro detekci vozidel na kˇriˇzovatce.

Kl´ıˇcov ´a slova: Zpracov´an´ı obrazu, Rozhodovac´ı strom, N´ahodn ´y les, Random forest, SVM, HOG, OpenCV, C++

Abstract

The aim of this master’s thesis is to describe use of Random Forest and its ability to recognize objects in images. The theoretical part deals with terminology and process of assembling decision tree and Random forest. The practical part compares success rate and duration of image classification using Random forest and SVM methods. Thereafter a program for detecting vehicles at the junction is created.

(6)

N – pˇrirozen´a ˇc´ısla {1, 2, 3, ..., +∞}

Z – cel´a ˇc´ısla

Rn – n-rozmˇern ´y euklidovsk ´y re´aln ´y prostor

A−1 – inverzn´ı matice k matici A

AT transponovan´a matice k matici A

■ – konec d ˚ukazu, vˇety nebo pˇr´ıkladu

RF – Random forest (N´ahodn ´y les)

LBP – Lok´aln´ı bin´arn´ı vzor

HOG – Histogramy orientovan ´ych gradient ˚u

SVM – Support vector machine

ROI – Region Of Interest (Oblast z´ajmu)

px – Pixel

TP – True positive

TN – True negative

FP – False positive

FN – False negative

ACC – Accuracy, pˇresnost

TPR – True positive rate

FPR – False positive rate

PPV – Positive predictive value

NPV – Negative predictive value

(7)

Obsah

1 Uvod´ 6

2 Z´akladn´ı pojmy 8

2.1 Rozhodovac´ı strom . . . 8

2.2 N´ahodn ´y les . . . 9

2.3 Support Vector Machine . . . 10

2.4 Entropie . . . 14

2.5 Klasifikaˇcn´ı a regresn´ı probl´em . . . 14

2.6 Hodnocen´ı bin´arn´ıch klasifik´ator ˚u . . . 15

3 Popis vlastnost´ı obrazov´e funkce 17 3.1 Haarovy pˇr´ıznaky . . . 17

3.2 Lok´aln´ı bin´arn´ı vzor . . . 18

3.3 HOG . . . 19

4 Vhodn´e probl´emy pro ˇreˇsen´ı rozhodovac´ım stromem 21 5 Algoritmy vyuˇz´ıvan´e pˇri sestavov´an´ı rozhodovac´ıho stromu 22 5.1 Algoritmus TDIDT . . . 22

5.2 Algoritmus ID3 . . . 26

5.3 Algoritmus C4.5 a C5.0 . . . 26

6 Sestaven´ı Random forestu 28 6.1 Vytvoˇren´ı Random forestu . . . 28

7 Vytvoˇren´ı aplikace pro rozpozn´an´ı vozidel v OpenCV 38 7.1 Metoda HOG v OpenCv . . . 38

7.2 Random forest v OpenCV . . . 39

(8)

7.4 Vytvoˇren´ı programu . . . 42 7.5 Vyhled´av´an´ı objektu v re´aln´em obraze . . . 46

8 Porovn´an´ı metod Random forest a SVM 50

8.1 Optim´aln´ı nastaven´ı parametr ˚u . . . 50 8.2 Porovn´an´ı ´uspˇeˇsnosti klasifikace . . . 52 8.3 Porovn´an´ı ˇcasov´e n´aroˇcnosti . . . 55

9 Z´avˇer 59

(9)

Seznam tabulek

1 Tr´enovac´ı mnoˇzina k pˇr´ıkladu 5.1 . . . 23

2 Entropie pro jednotliv´e parametry pˇr´ıkladu 5.1 . . . 24

3 Hodnoty parametr ˚u pro jednotliv´e objekty . . . 33

4 V ´ysledn´a tabulka . . . 37

5 Nastaven´ı parametr ˚u Random forest . . . 50

6 Nastaven´ı parametr ˚u SVM RBF . . . 51

7 Nastaven´ı parametr ˚u SVM Linear . . . 52

8 V ´ysledky porovn´an´ı ´uspˇeˇsnosti klasifikace, statistick´a kamera . . . 52

9 V ´ysledky porovn´an´ı ´uspˇeˇsnosti klasifikace, pˇrehledov´a kamera . . . 54 10 Cas tr´enov´an´ı . . . .ˇ 56 11 Cas testov´an´ı . . . .ˇ 57

(10)

Seznam obr ´azk ˚

u

1 Pˇr´ıklad optim´aln´ıho rozdˇelen´ı bodu v 2D [3] . . . 11

2 Pˇr´ıklad optim´aln´ıho rozdˇelen´ı bodu v 3D [7] . . . 12

3 Srovn´an´ı SVM Linear a SVM RBF . . . 13

4 Z´akladn´ı metriky hodnocen´ı klasifik´ator ˚u [6] . . . 16

5 Haarovy pˇr´ıznaky . . . 18

6 Pˇr´ıklady okol´ı pro v ´ypoˇcet LBP . . . 18

7 Zn´azornˇen´ı v ´ypoˇctu pˇr´ınosu jednotliv ´ych gradien ˚u . . . 20

8 Rozdˇelen´ı mnoˇziny podle obsazenosti . . . 25

9 Rozdˇelen´ı mnoˇziny podle typu . . . 25

10 Moˇzn ´y tvar stromu . . . 25

11 Testovac´ı obr´azek . . . 30

12 Tr´enovac´ı obr´azek . . . 30

13 Zn´azornˇen´ı v ´yznamu elipticity . . . 32

14 V ´ypoˇcet giniho koeficientu . . . 34

15 Random forest . . . 35

16 Testovac´ı obr´azek . . . 35

17 Princip konstrukce HOG Deskriptoru [11] . . . 39

18 Tr´enovac´ı mnoˇzina positive . . . 43

19 Detekce objektu v re´aln´em obraze, statistick´a kamera . . . 48

20 Detekce objektu v re´aln´em obraze, pˇrehledov´a kamera . . . 49

21 Uk´azka klasifikace, statistick´a kamera . . . 53

22 Uk´azka klasifikace, pˇrehledov´a kamera . . . 55

23 Doba tr´enov´an´ı klasifikaˇcn´ıch metod . . . 56

24 Testov´an´ı RF x SVM Linear . . . 57

(11)

Seznam v ´ypis ˚

u zdrojov ´eho k ´

odu

1 Sestaven´ı rozhodovac´ıho stromu [2] . . . 9

2 Algoritmus ID3 [5] . . . 26

3 Metoda pro z´ısk´an´ı tr´enovac´ıch vektor ˚u . . . 43

4 Pˇr´ıprava tr´enovac´ı dat a sestaven´ı Random Forestu . . . 44

5 Sestaven´ı SVM . . . 45

(12)

1

Uvod

´

Z´akladn´ım, a pravdˇepodobnˇe i nejd ˚uleˇzitˇejˇs´ım smyslem pro ˇclovˇeka, je zrak. Pomoc´ı tohoto smyslu vn´ım´ame a pˇrij´ım´ame pˇribliˇznˇe 80% veˇsker ´ych informac´ı. Nen´ı proto ˇz´adn ´ym pˇrekvapen´ım, ˇze tuto schopnost se snaˇz´ıme pˇren´est do ostatn´ıch oblast´ı naˇseho ˇzivota.

T´eto schopnosti se st´ale ˇcastˇeji snaˇz´ıme nauˇcit nejr ˚uznˇejˇs´ı druhy informaˇcn´ıch technologi´ı. Rozpozn´av´an´ı objekt ˚u pomoc´ı technologie z´ısk´av´a st´ale vˇetˇs´ı oblibu a uplatnˇen´ı nejen v oborech, kter´e byly vˇzdy technologicky velmi vyspˇel´e, jako je obrana, medic´ına a letectv´ı, ale i v bˇeˇzn´em ˇzivotˇe kaˇzd´eho z n´as. Tento n´astroj n´as kaˇzdodennˇe doprov´az´ı na cestˇe do pr´ace v podobˇe ˇr´ızen ´ych kˇriˇzovatek, automatick´eho zaostˇren´ı fotoapar´atu v mobiln´ım telefonu nebo zat´ım jako hudba budoucnosti v podobˇe automatem ˇr´ızen ´ych vozidel. Je jist´e, ˇze uplatnˇen´ı tohoto smyslu v IT m´a ˇsirˇs´ı vyuˇzit´ı a napom´ah´a ke zjednoduˇsen´ı, zefektivnˇen´ı a zrychlen´ı pr´ace, vyˇsˇs´ı automatizaci proces ˚u a t´ım druhoˇradˇe i ´uspoˇre n´aklad ˚u a firm´am ke zv ´yˇsen´ı jej´ıch zisk ˚u.

Vn´ım´an´ı, pˇrij´ıman´ı a zpracov´an´ı obrazu se pro ˇclovˇeka jev´ı snadnou ´ulohou, z´ıskanou na z´akladˇe zkuˇsenost´ı. Z pohledu kusu informaˇcn´ı technologie se jedn´a o podobn ´y probl´em. Podobnˇe jako u lid´ı je potˇreba program nejdˇr´ıve objekty nauˇcit rozliˇsovat. Na tr´enovac´ı mnoˇzinˇe se program nauˇc´ı, jak dan´a skupina pˇr´ıznak ˚u identifikuje dan ´y objekt. Pokud ale pˇr´ıznaky vypadaj´ı jinak, m ˚uˇze se jednat o objekt jin ´y. O tom, jak program nauˇcit rozpozn´avat objekty, pojedn´av´a do jist´e m´ıry pr´avˇe tato diplomov´a pr´ace.

Popisuje zp ˚usob a pˇr´ıklady zpracov´an´ı objekt ˚u v obrazech vyuˇzit´ım metody Random forestu. Mezi v ´yhody metody RF ˇrad´ıme fakt, ˇze je flexibiln´ı, nebot’ pro modelov´an´ı m ˚uˇze b ´yt pouˇzit velk ´y poˇcet atribut ˚u. Pˇritom lze algoritmus aplikovat jak na mal´e, tak na velk´e soubory dat, kter´e mohou b ´yt snadno a pomˇernˇe rychle vyhodnoceny. Dalˇs´ı nespornou v ´yhodou Random forestu oproti jin ´ym metod´am je skuteˇcnost, ˇze pro pomˇernˇe pˇresn´e rozhodov´an´ı nen´ı vyˇzadov´ana dokolan´a tr´enovac´ı mnoˇzina. Pˇrednost´ı je i velmi kr´atk ´y ˇcasov ´y interval pro nauˇcen´ı algoritmu zpracov´avat poˇzadovan´a data. Jako kaˇzd´a metoda m´a i tato sv´e nedostatky. Jeden z nich je jeho pomal´a pˇredpov´ıdac´ı schopnost a v nˇekter ´ych pˇr´ıpadech i n´aroˇcnost na sloˇzitost jednotliv ´ych rozhodovac´ıch strom ˚u.

C´ılem t´eto pr´ace je sezn´amit ˇcten´aˇre s metodou Random forest a jej´ı aplikac´ı na roz-pozn´av´an´ı objekt ˚u v obraze. Prvn´ı ˇc´ast diplomov´e pr´ace je vˇenov´ana klasifikac´ı z´akladn´ıch pojm ˚u, kter´e jsou nezbytn´e pro pochopen´ı dan´eho t´ematu. D ˚uraz je kladen pˇredevˇs´ım na sestaven´ı rozhodovac´ıho stromu, kter ´y je stˇeˇzejn´ı pro aplikaci vybran´e metody. V dalˇs´ıch

(13)

ˇc´astech diplomov´e pr´ace je na jednoduch´em pˇr´ıkladˇe vysvˇetleno, jak ´ymi zp ˚usoby se d´a Random forest sestavit.

Z´avˇereˇcn´a ˇc´ast se vˇenuje porovn´an´ı ´uspˇeˇsnosti a rychlosti vyhodnocen´ı obrazu metodami Random forest a SVM s kernelem Linear a kernelem RBF. V ´ysledky mˇeˇren´ı budou pouˇzity pro sestaven´ı programu pro detekci vozidel proj´ıˇzdˇej´ıc´ıch pˇres kˇriˇzovatku, kter ´y bude schopen vyhodnocovat obrazy z kamery v re´aln´em ˇcase.

(14)

2

Z ´akladn´ı pojmy

Tato kapitola je vˇenov´ana vysvˇetlen´ı z´akladn´ıch pojm ˚u, se kter ´ymi se d´ale pracuje. D ˚uraz je zde kladen pˇrev´aˇznˇe na vysvˇetlen´ı pojm ˚u potˇrebn ´ych k sestaven´ı Random forestu jako ke stˇeˇzejn´ımu t´ematu diplomov´e pr´ace. Potˇrebn´e n´azvoslov´ı nezbytn´e pro vysvˇetlen´ı postupu a zpracov´an´ı zadan´eho t´ematu je zde zavedeno vˇzdy jako n´azev jednotliv ´ych podkapitol.

2.1 Rozhodovac´ı strom

Smyslem rozhodovac´ıho stromu je zaˇrazen´ı vstupn´ıho objektu do jedn´e z v ´ysledn ´ych tˇr´ıd.

V z´asadˇe je rozhodovac´ı strom reprezentov´an disjunkcemi konjunkc´ı stanoven ´ych podm´ınek nad hodnotami atribut ˚u jednotliv ´ych instanc´ı. Kaˇzd´a cesta od koˇrene stromu k jeho listu koresponduje s konjunkc´ı test ˚u atribut ˚u a cel ´y strom je disjunkc´ı tˇechto konjunkc´ı. [9] Jin ´ymi slovy, rozhodovac´ı strom je moˇzn´e si pˇredstavit jako v ´yvojov ´y diagram maj´ıc´ı poˇc´atek ve v ´ychoz´ım uzlu (koˇrenu), kde vnitˇrn´ı uzel pˇredstavuje test na atribut. Kaˇzd´a z hran (vˇetv´ı), vych´azej´ıc´ı z uzlu, pˇredstavuje v ´ysledek dan´eho testu. Koncov ´y uzel (list) urˇcuje tˇr´ıdu, do kter´e byl objekt zaˇrazen. Cesta od koˇrene k listu je pˇredstavov´ana klasi-fikaˇcn´ımi pravidly, ve kter ´ych se strom vˇetv´ı, nicm´enˇe pozdˇeji jiˇz nedoch´az´ı k opˇetovn´emu propojovan´ı jednotliv ´ych uzl ˚u.

Form´alnˇe m ˚uˇzeme definici napsat jako:

Definice 2.1 Mˇejme datab´azi T = (#»t1, . . . , #»tn

)

, kde #»ti = (ti1, . . . , tim). D´ale mˇejme atributy

(A1, . . . , Ak) a mnoˇzinu tˇr´ıd C= (C1, . . . , Cl), kde k, l, m, n ∈ N

T v rovnici pˇredstavuje Rozhodovac´ı strom, pro kter´y plat´ı:kaˇzd´y vnitˇrn´ı uzel je ohodnocen atributem Ai

kaˇzd´a hrana je ohodnocena predik´atem pouˇziteln´ym na atribut rodiˇcovsk´eho uzlu ti jkaˇzd´y list je ohodnocen tˇr´ıdou Cj

[1]

V ´yˇse uveden´a definice je vysvˇetlena na Pˇr´ıkladu 5.1 v Kapitole 5.1. K tomuto pˇr´ıkladu n´aleˇz´ı rovnˇeˇz grafick´e zobrazen´ı rozhodovac´ıho stromu v podobˇe Obr´azku 10.

(15)

2.1.1 Sestaven´ı rozhodovac´ıho stromu

Probl´em nalezen´ı rozhodovac´ıho stromu se m ˚uˇze zd´at sloˇzit´e, ale ve skuteˇcnosti se jedn´a o trivi´aln´ı algoritmus. Jednoduˇse m ˚uˇze b ´yt vybr´an jeden libovoln ´y atribut a podle nˇej rozdˇelit mnoˇzinu na nˇekolik podmnoˇzin a n´aslednˇe tento krok opakovat do t´e doby, dokud podmnoˇziny nebudou podle atribut ˚u d´ale dˇeliteln´e.

C´ılem je nal´ezt optim´aln´ı velikost stromu. Mal ´y strom pˇrin´aˇs´ı riziko, ˇze nedok´aˇze zahr-nout vˇsechny potˇrebn´e parametry. Naopak pˇr´ıliˇs rozs´ahl ´y strom hroz´ı velkou ˇcasovou a prostorovou n´aroˇcnost´ı spoleˇcnˇe s t´ım rizikem, ˇze pozbude svou obecnou platnost. Na velk´e stromy je moˇzn´e n´aslednˇe aplikovat metodu proˇrez´av´an´ı, ale pˇri vytv´aˇren´ı rozs´ahlejˇs´ıch strom ˚u je jistˇe jednoduˇsˇs´ı aplikovat tyto metody jiˇz pˇri indukci rozhodo-vac´ıho stromu.

Pseudok ´od pro sestaven´ı rozhodovac´ıho stromu je uveden je uveden v Algoritmu 1.

1 function DECISION−TREE−LEARNING(example, attributes, default) returns a decision tree

2 inputs: examples, set of examples

3 attributes , set of attributes

4 default , default value for the goal predicate 5 if examples is empty then return default

6 else if all examples have the same classification then return the classification 7 else if attributes is empty then return MAJORITY−VALUE(examples) 8 else

9 best <−− CHOOSE− ATTRIBUTE(attributes, examples)

10 tree <−− a new decision tree with root test best

11 for each value v i of best do

12 examples i − {elements of examples with best= v i}

13 subtree − DECISION−TREE−LEARNING(examples i, attributes − best, MAJORITY−VALUE(examples)}

14 add a branch to tree with label v i and subtree subtree

15 end

16 return tree

Algoritmus .1: Sestaven´ı rozhodovac´ıho stromu [2]

Sestaven´ım rozhodovac´ıho stromu se zab ´yv´a hned nˇekolik metod. Mezi nejzn´amˇejˇs´ı patˇr´ı metody TDIDT, ID3, C4.5,. . . Tˇemto metod´am je vˇenov´ana cel´a Kapitola 5 – Algoritmy vyuˇz´ıvan´e pˇri sestavov´an´ı rozhodovac´ıho stromu.

2.2 N ´ahodn ´y les

V diplomov´e pr´aci je pouˇzito v´ıce rozˇs´ıˇren´e anglick´e oznaˇcen´ı t´eto techniky Random forest, pˇr´ıpadnˇe pod jeho zkratkou RF.

(16)

Random forest je pojem obecn´e techniky pro uˇcen´ı klasifikace, regrese a dalˇs´ıch ´ukon ˚u. V z´akladn´ı rovinˇe d´ale rozpracov´av´a a zdokonaluje teorii rozhodovac´ıch strom ˚u. Proces spoˇc´ıv´av´a v tom, ˇze nen´ı sestaven pouze jeden rozhodovac´ı strom (”boosting”), ale je sestavena cel´a ˇrada rozhodovac´ıch strom ˚u (les). Kaˇzd ´y jednotliv ´y strom zaˇrazen ´y do rozhodovac´ıho procesu pracuje nez´avisle na ostatn´ıch a m´a jinou strukturu atribut ˚u. Pˇri tr´enov´an´ı je sestavena mnoˇzina atribut ˚u. Kaˇzd ´y strom je pak n´aslednˇe sestaven na z´akladˇe podmnoˇziny, kter´a vznikla n´ahodn ´ym v ´ybˇerem z tˇechto atribut ˚u sestaven ´ych pˇri tr´enov´an´ı (bagging). Probˇehne test a pokud test oznaˇc´ı jeden strom jako pozitivn´ı a dalˇs´ı stromy zaˇrazen´e do rozhodovac´ıho procesu jako negativn´ı, je pravdˇepodobn´e, ˇze strom ˇc. 1 udˇelal pˇri klasifikaci chybu.

V ´yhoda Random forestu spoˇc´ıv´a pˇredevˇs´ım v eliminaci chyb pˇri rozhodov´an´ı jednot-liv´eho stromu. Tato schopnost eliminace chyb m´a sv´e vyuˇzit´ı pˇredevˇs´ım ve sporn ´ych pˇr´ıpadech. Dalˇs´ı v ´yhodou RF je ta vlastnost, ˇze metoda dok´aˇze sama klasifikovat d ˚uleˇzitost jednotliv ´ych atribut ˚u.

Sestaven´ım Random forestu se podrobnˇe zab ´yv´a Kapitola 6.1 – Vytvoˇren´ı Random forestu.

2.3 Support Vector Machine

Support vector machine (SVM) je metoda klasifikace line´arn´ıch dat. Pˇri klasifikaci ne-line´arn´ıch dat mus´ı b ´yt data transformov´ana do prostoru s vyˇsˇs´ı dimenz´ı, transformaˇcn´ı funkci naz ´yv´ame kernel. N´aslednˇe je moˇzn´e tato data klasifikovat jako line´arn´ı. Tato me-toda se ˇcasto vyuˇz´ıv´a v aplikac´ıch pro vyhled´av´an´ı objektu v obrazech. Samotn´e tr´enov´an´ı je ˇcasovˇe a pamˇet’ovˇe n´aroˇcn´e.

Podstatou tr´enov´an´ı s SVM je vytvoˇren´ı hyperroviny (prostor n − 1 dimenze), kter´a ze vstupn´ıch dat vytvoˇr´ı 2 sady vektor ˚u v n-rozmˇern´em prostoru. Pro kaˇzdou sadu se potom vytvoˇr´ı takov´ato hyperrovina, kter´a se znovu pouˇzije jako vstupn´ı sada. Data, kter´a nen´ı moˇzn´e separovat line´arnˇe mohou b ´yt nejprve transformov´ana do prostoru s vyˇsˇs´ı dimenz´ı.

Pro vˇsechna xi, xjz prostoru X, m ˚uˇzeme jist´e funkce k(xi, xj) vyj´adˇrit jako skal´arn´ı souˇcin

v prostoru V. Funkci k : X × X → R pak naz ´yv´ame kernel. V pˇr´ıpadˇe strojov´eho uˇcen´ı si situaci zjednoduˇs´ıme pomoc´ı takzvan´e ”feature mapy”φ : X → V. Kernel pot´e m ˚uˇzeme zapsat jako

K(xi, xj)=⟨φ(xi), φ(xj)

V, (1)

(17)

V praktick´e ˇc´asti budeme pracovat se dvˇema typy kernel ˚u. Prvn´ım z´astupcem bude Line´arn´ı kernel. Line´arn´ı kernel spoˇc´ıt´ame

K(xi, xj)= xTi xj, (2)

kde xi, xj∈ X.

Druh ´ym z´astupcem je kernel RBF (Radial basis function). Kernel je vyj´adˇren funkc´ı K(xi, xj)= e−γ∥xi−xj∥

2

, (3)

kde xi, xj∈ X ∈ N a γ ∈ (0, +∞).

Pro lepˇs´ı pochopen´ı line´arn´ıho kernelu se pod´ıvejme na Obr´azek 1. Zˇrejmˇe plat´ı x1 ∈

R, x2 ∈ R, takˇze V ∈ R2. Podle definice bude tedy hyperrovina v dimenzi n − 1 = 1,

tedy pˇr´ımka. Rozdˇelen´ı prostoru je tedy min-max ´uloha, kterou zjednoduˇsenˇe m ˚uˇzeme popsat: Najdi hyperrovinu f , jej´ıˇz minim´aln´ı vzd´alenost (v naˇsem pˇr´ıpadˇe kolmice) od krajn´ıch bod ˚u dvou skupin bod ˚u bude maxim´aln´ı.

Obr´azek 1: Pˇr´ıklad optim´aln´ıho rozdˇelen´ı bodu v 2D [3]

Na Obr´azku 2 je zn´azornˇena situace, kdy klasifikovan´a data nelze ve dvou dimenz´ıch line´arnˇe oddˇelit. Pokud, ale data transformujeme do tˇret´ı dimenze napˇr´ıklad pomoc´ı feature mapyφ(a, b) = (a, b, a2+b2), tedy kernelu K(x, y) = xy+x2y2je nalezen´ı hyperroviny n − 1= 2, tedy plochy, opˇet jednoduch´y min-max ´ukol.

(18)

Obr´azek 2: Pˇr´ıklad optim´aln´ıho rozdˇelen´ı bodu v 3D [7]

Tento odstavec bude vˇenov´an grafick´emu oddˇelen´ı skupiny bod ˚u pomoc´ı metody SVM Linear a SVM RBF. Obr´azek 3a zn´azor ˇnuje tr´enovac´ı mnoˇzinu se kterou budou pracovat v ´yˇse uveden´e metody SVM. Plat´ı, ˇze dan´e body v prostoru R2nelze od sebe spolehlivˇe line´arnˇe oddˇelit. Obr´azek 3b demonstruje rozdˇelen´ı tr´enovac´ı mnoˇziny pomoc´ı metody SVM Linear. ˇSrafovan´a oblast zobrazuje pˇredpovˇed’ SVM modelu pro dalˇs´ı body. Nach´az´ı -li se ˇcerven ´y bod v zelen´e oblasti nebo naopak, jedn´a se o chybu v klasifikaci bodu, Kapitola 2.6 – Hodnocen´ı bin´arn´ıch klasifik´ator ˚u. Pokud, ale vstupn´ı data pˇrevedeme do prostoru vyˇsˇs´ı dimenze napˇr´ıklad pouˇzit´ım kernelu RBF bude v ´ysledek uveden ´y na Obr´azku 3c pˇrijatelnˇejˇs´ı. Velikost oblast´ı okol´ı ˇcerven ´ych bod ˚u je moˇzn´e upravit pomoc´ı parametruγ.

(19)

(a) Tr´enovac´ı mnoˇzina

(b) SVM Linear

(c) SVM RBF

(20)

2.4 Entropie

Entropie je jedn´ım ze z´akladn´ıch pojm ˚u ve fyzice, matematice, teorii pravdˇepodobnosti, teorii informace a v mnoha dalˇs´ıch oblastech vˇedy. Setkat se s n´ı m ˚uˇzeme vˇsude tam, kde hovoˇr´ıme o pravdˇepodobnosti moˇzn ´ych stav ˚u dan´e soustavy nebo syst´emu.

Velmi zjednoduˇsenˇe by se dalo ˇr´ıci, ˇze entropie je m´ıra neuspoˇr´adanosti stav ˚u v soustavˇe. V t´eto pr´aci se budeme setk´avat pˇredevˇs´ım s entropi´ı diskr´etn´ıch stav ˚u zpracovanou Joasiahem Willardem Gibbsem.

Definice 2.2 Necht’ S je funkcion´al nad diskr´etn´ı pravdˇepodobnostn´ı funkc´ı P, k ∈ R je konstanta

jednotek ve kter´ych entropii S mˇeˇr´ıme a Pije pravdˇepodobnost i-t´eho mikrostavu. Pak

S= −k∑

i

Piln Pi. (4)

D´ale pracujeme s jednotkami bit ˚u, pro kter´e plat´ı k = ln(2)1 . Abychom odliˇsili tento konkr´etn´ı pˇr´ıpad entropie, bude v dalˇs´ı ˇc´asti diplomov´e pr´ace pouˇzito oznaˇcen´ı entropie H. Po matematick´e ´upravˇe z´ısk´ame v ´ysledn ´y stav entropie ve tvaru

H= −k∑ i Piln Pi= − 1 ln 2 ∑ i Piln Pi= − ∑ i Pi log2e log22 · log2Pi log2e = − ∑ i Pilog2Pi (5)

2.5 Klasifika ˇcn´ı a regresn´ı probl ´em

Klasifikaˇcn´ı probl´emje pojem pouˇz´ıvan ´y pro nalezen´ı zobrazen´ı f : D → C, kde je ke kaˇzd´emu prvku ti z mnoˇziny D = {t1, . . . , tn} pˇriˇrazen pr´avˇe jeden prvek cj z mnoˇziny

C= {c1, . . . , cm}. Proces klasifikace se skl´ad´a ze dvou krok ˚u:

1. uˇcen´ı, tr´enov´an´ı: pˇredstavuje tvorbu klasifikaˇcn´ıho modelu pomoc´ı tr´enovac´ı, pˇredem dan´e, mnoˇziny,

2. vlastn´ı klasifikace: pouˇzit´ı klasifikaˇcn´ıho modelu pro urˇcen´ı pˇr´ısluˇsn´e tˇr´ıdy pro tes-tovac´ı data.

Regresn´ı probl´emje hled´an´ı ˇreˇsen´ı pro nalezen´ı regresn´ıho modelu Yi= α + βxi+ ϵi, pro

(21)

2.6 Hodnocen´ı bin ´arn´ıch klasifik ´ator ˚u

Aby bylo moˇzn´e zkoumat a porovn´avat klasifik´atory zav´ad´ıme 4 z´akladn´ı stavy ve kter ´ych se m ˚uˇze klasifik´ator ocitnout.

• TP – True positive, spr´avnˇe vyhodnocen ´y pozitivn´ı v ´yskyt • TN – True negative, spr´avnˇe vyhodnocen ´y negativn´ı v ´yskyt

• FP – False positive, oznaˇcujeme tak´e jako chybu I. typu. V ´yznam t´eto hodnoty je, ˇze v ´yskyt byl vyhodnocen jako pozitivn´ı, ale ve skuteˇcnosti se jedn´a o negativn´ı v ´yskyt

• FN – False negative, oznaˇcujeme jako chybu II. typu. V ´yskyt byl vyhodnocen klasi-fik´atorem jako negativn´ı, ale ve skuteˇcnosti se jedn´a o pozitivn´ı v ´yskyt

Pro lepˇs´ı pˇrehlednost a nez´avislost na velikosti testovac´ı mnoˇziny zav´ad´ıme pomˇerov´e hodnocen´ı klasifik´atoru.

• ACC = TP+TN+FP+FNTP+TN – Pˇresnost. Vyjadˇruje pomˇer mezi spr´avnˇe vyhodnocen ´ymi v ´yskyty a vˇsemi v ´yskyty

• TPR= TP+FNTP – True positive rate. Vyjadˇruje pomˇer mezi spr´avnˇe vyhodnocen ´ymi pozitivn´ımi v ´yskyty a vˇsemi pozitivn´ımi v ´yskyty

• FPR = TN+FPFP – False positive rate. Vyjadˇruje pomˇer mezi chybnˇe vyhodnocen ´ymi negativn´ımi v ´yskyty a vˇsemi negativn´ımi v ´yskyty

• PPV = TP+FPTP – Positive predictive value. Popisuje kvalitu diagnostick´eho testu nebo statistick´eho mˇeˇren´ı vzhledem k pozitivn´ı pˇredpovˇedi. Jedn´a se o pomˇer mezi spr´avnˇe vyhodnocen ´ymi pozitivn´ımi v ´yskyty a souˇctem spr´avnˇe vyhodnocen ´ych pozitivn´ıch v ´yskyt ˚u a chybnˇe vyhodnocen ´ych negativn´ıch v ´ysledk ˚u.

• NPV = TNTN+FN – Negative predictive value. Popisuje kvalitu diagnostick´eho testu nebo statistick´eho mˇeˇren´ı vzhledem k negativn´ı pˇredpovˇedi. Jedn´a se o pomˇer mezi spr´avnˇe vyhodnocen ´ymi negativn´ımi v ´yskyty a souˇctem spr´avnˇe vyhodnocen ´ych negativn´ıch v ´yskyt ˚u a chybnˇe vyhodnocen ´ych pozitivn´ıch v ´ysledk ˚u.

• F1 = 2 · PPVPPV·TPR+TPR – F1 Score se pouˇz´ıv´a k testu pˇresnosti (ve smyslu spr´avnosti

klasifikace) a to pˇredevˇs´ım v pˇr´ıpadech, kdy je velk´e mnoˇzstv´ı negativn´ıch z´aznam ˚u, kter´e nejsou pro test pˇresnosti relevantn´ı. Jedn´a se o harmonick ´y pr ˚umˇer pˇresnosti (PPV) a citlivosti (TPR).

(22)

Na Obr´azku 4 jsou zn´azornˇeny vazby mezi nˇekter ´ymi v ´yˇse popsan ´ymi stavy.

FN(II)

TN

FP(I)

TP

TPR FPR PPV NPV

(23)

3

Popis vlastnost´ı obrazov ´e funkce

V t´eto kapitole jsou pops´any tˇri z´akladn´ı metody bˇeˇznˇe vyuˇz´ıvan´e v praxi. Kaˇzd´a z tˇechto metod charakterizuje obrazovou funkci jin ´ym zp ˚usobem. V podkapitol´ach je vysvˇetlen z´akladn´ı princip.

3.1 Haarovy pˇr´ıznaky

Haarovy pˇr´ıznaky sv ´ym charakterem detekuj´ı specifick´e rysy obrazu, kter´e jsou zaloˇzeny na jasov ´ych sloˇzk´ach digit´aln´ıho obrazu. Jedn´a se o jednoduch´e obd´eln´ıkov´e oblasti (Obr´azek 5) a m ˚uˇzeme je rozdˇelit do nˇekolika typ ˚u podle informace, kter´a m´a b ´yt de-tekov´ana. Napˇr´ıklad na hranov´e (5a), ˇc´arov´e (5b) a stˇredov´e (5c) pˇr´ıznaky. Hodnota pˇr´ıznaku se vypoˇc´ıt´av´a z intenzity obrazu pod danou oblast´ı.

f (x)= w0r0+ w1r1, (6)

kde f (x) je odezva Haarova pˇr´ıznaku na sn´ımek x, w0je v´aha b´ıl´e obd´eln´ıkov´e oblasti r0

(24)

(a) Hranov´e pˇr´ıznaky

(b) ˇC´arov´e pˇr´ıznaky

(c) Stˇredov´e pˇr´ıznaky

Obr´azek 5: Haarovy pˇr´ıznaky

3.2 Lok ´aln´ı bin ´arn´ı vzor

Metoda lok´aln´ıch bin´arn´ıch vzor ˚u (Local Binary Pattern - LBP) slouˇz´ı stejnˇe jako Haarovy pˇr´ıznaky k popisu vlastnost´ı obrazu. Popis textury se prov´ad´ı v bl´ızk´em okol´ı jednotliv ´ych pixel ˚u vstupn´ıho obrazu. Pro okol´ı byla zvolena kruhov´a reprezentace a v ´ysledn ´y popis se tedy vztahuje k bodu leˇz´ıc´ımu ve stˇredu okol´ı. Viz Obr´azek 6

(25)

Texturu T v lok´aln´ım okol´ı bodu definujeme jako:

T= t (gc, g0, · · · , gP−1), (7)

kde gcje hodnota pixelu ve stˇredu lok´aln´ıho okol´ı a gp, kde p= 0, · · · , P − 1 jsou hodnoty

pixel ˚u P > 1 symetricky rozm´ıstˇen´ych na kruˇznici o polomˇeru R > 0 se stˇredem ve zkouman´em bodˇe. [11] Tedy

t=

P−1

p=0

gp−gc. (8)

Od deskriptoru pˇredpokl´ad´ame odolnost v ˚uˇci jasov ´ym zmˇen´am obrazu. Abychom t´eto odolnosti dos´ahli uprav´ıme vzorec pro v ´ypoˇcet a LBP tedy definujeme:

LBPP,R = P−1 ∑ p=0 s(gp−gc ) 2p s(x)= ⎧ ⎪ ⎪ ⎨ ⎪ ⎪ ⎩ 1 pro x ≥ 0 0 pro x < 0 (9)

Pro uniformn´ı a rotaˇcnˇe invariantn´ı vzory pouˇzijeme vzorec

LBPP,R= ⎧ ⎪ ⎪ ⎨ ⎪ ⎪ ⎩ ∑P−1 p=0s ( gp−gc ) 2p pro U(LBPP,R) ≤ 2 P+ 1 pro U(LBPP,R) > 2 U(LBPP,R)=⏐ ⏐s( gP−1−gc) − s (g0−gc )⏐ ⏐+ P−1 ∑ p=1 ⏐ ⏐ ⏐ ⏐s ( gp−gc ) −s(gp−1gc)⏐⏐ ⏐ ⏐ (10) 3.3 HOG

Metoda HOG (Histograms of Orinted Gradiets) byla vyvinuta za ´uˇcelam detekce lidsk ´ych postav v obraze. Pˇr´ıznaky jsou zaloˇzeny na hled´an´ı v ´yznamn ´ych hran v obraze. Jednotliv´e gradienty jsou reprezentov´any svou velikost´ı a smˇerem. Jednotliv´e gradienty jsou z´ısk´any konvoluc´ı Gaussovsky filtrovan´eho obrazu I s maskou [−1, 0, 1], resp [−1, 0, 1]T

Ix=I ∗ [−1, 0, 1] ,

Iy=I ∗ [−1, 0, 1]T,

(11) kde * znaˇc´ı konvoluci.

(26)

Pot´e, co jsou z´ısk´any obrazy Ixa Iy, je pro kaˇzdou bu ˇnku vypoˇctena velikost gradientu m(x, y) a smˇer Θ(x, y). m(x, y) =√Ix2+ I2y, Θ(x, y) = tan−1 (I y Ix ) . (12)

Z vypoˇcten ´ych hodnot je sestaven histogram orientac´ı. Oblast i = {0, 2π} rozdˇel´ıme pod nˇekolika stejnˇe velk ´ych v ´yseˇc´ı (bin ˚u) a zaznamen´ame pˇr´ınos jednotliv ´ych gradient ˚u. [11] Konstrukce HOG deskriptoru spoˇc´ıv´a v rovnomˇern´em rozdˇelen´ı vstupn´ıho obrazu do stejnˇe velk ´ych ˇctvercov ´ych blok ˚u. Bloky n´aslednˇe rozdˇel´ıme do bunˇek, ve kter ´ych poˇc´ıt´ame gradienty. V ´ysledn ´y obraz tedy m ˚uˇzeme zn´azornit jak je uvedeno na Obr´azku 7. Zde je pˇr´ınos jednotliv ´ych gradient ˚u rozdˇelen do ˇsesti bin ˚u.

(a) Train car 1 (b) Train car 2

(c) Train car 3 (d) Train car 4

(27)

4

Vhodn ´e probl ´emy pro ˇre ˇsen´ı rozhodovac´ım stromem

Jak jiˇz bylo ˇreˇceno v ´yˇse v Kapitole 2.1, smyslem rozhodovac´ıho stromu je zaˇrazen´ı vstupn´ıho objektu do jedn´e z v ´ysledn ´ych tˇr´ıd. Optim´aln´ıch v ´ysledk ˚u bude dosaˇzeno, pokud rozhodovac´ı strom bude ˇreˇsit situace s n´asleduj´ıc´ımi charakteristikami.

• Instance jsou reprezentov´any atributy s konkr´etn´ı hodnotou:

koneˇcn ´y poˇcet atribut ˚u (napˇr. barva auta,. . . ) a kaˇzd´a instance m´a pr´avˇe jednu hodnotu tohoto atributu (napˇr. ˇcerven´a, zelen´a,. . . ),

kdyˇz m´a kaˇzd ´y atribut mal ´y poˇcet diskr´etn´ıch hodnot (ˇcerven´a, zelen´a, modr´a) je pro rozhodovac´ı strom jednoduˇsˇs´ı nal´ezt ˇreˇsen´ı,

algoritmus m ˚uˇze b ´yt rozˇs´ıˇren aby zvl´adal tak´e re´aln´e hodnoty (napˇr. teplota okol´ı, ´uhrn sr´aˇzek,. . . ).

• Rozhodovac´ı funkce v uzlu m´a diskr´etn´ı poˇcet v ´ystup ˚u:

rozhodovac´ı strom klasifikuje kaˇzdou hodnotu jako jeden z v ´ystup ˚u. Nejjed-noduˇsˇs´ı je pˇr´ıpad, kdy jsou moˇzn´e pr´avˇe dvˇe hodnoty (booleovsk´a klasifikace).

je moˇzn´e, aby c´ılov´a funkce mˇela re´aln ´y v ´ystup, ale tato varianta se bˇeˇznˇe nepouˇz´ıv´a.

• Disjunktn´ı rozdˇelen´ı hodnot.

Rozhodovac´ı stromy pˇrirozenˇe reprezentuj´ı disjunktn´ı mnoˇziny. • Tr´enovac´ı data mohou obsahovat mal´e procento chyb.

Na rozd´ıl od jin ´ych metod je v ´yhoda rozhodovac´ıho stromu v tom, ˇze tr´enovac´ı mnoˇzina m ˚uˇze obsahovat mal´e procento chyb.

• Tr´enovac´ı data mohou obsahovat chybˇej´ıc´ı atributy.

Metody pro rozhodovac´ı stromy mohou b ´yt pouˇzity i pro data s chybˇej´ıc´ımi atributy.

Protoˇze v praxi nastane jen m´alo jev ˚u, kdy jsou splnˇeny vˇsechny tyto podm´ınky, je sloˇzit´e pomoc´ı jednoho rozhodovac´ıho stromu doj´ıt k bezchybn´e klasifikaci. K eliminaci t´eto negativn´ı situace tedy m ˚uˇzeme pouˇz´ıt mimo jin´e metodu Random forest. Ta, jak jiˇz bylo ˇreˇceno v Kapitole 2.2, sestav´ı ˇradu rozhodovac´ıch strom ˚u. N´aslednˇe je zde uplatnˇen vˇetˇsinov ´y princip.

(28)

5

Algoritmy vyuˇz´ıvan ´e pˇri sestavov ´an´ı rozhodovac´ıho stromu

Tato kapitola je vˇenov´ana algoritm ˚um, pomoc´ı kter ´ych se d´a rozhodovac´ı strom sestavit. Jako uk´azkov ´y pˇr´ıklad si jsem zvolil sestaven´ı rozhodovac´ıho stromu pomoc´ı algoritmu TDIDT.

5.1 Algoritmus TDIDT

TDIDT (Top Down Induction of Decision Tree) funguje na principu sestaven´ı stromu od shora dol ˚u. V z´asadˇe vybere jeden atribut jako koˇren d´ılˇc´ıho stromu. N´aslednˇe rozdˇel´ı data v tomto uzlu na podmnoˇziny podle hodnot atribut ˚u. V dalˇs´ım kroku pˇrid´a uzel pro kaˇzdou podmoˇzinu. Existuje -li uzel, ve kter´em je v´ıce neˇz jedna tˇr´ıda, opakuje bˇeh pro tento uzel.

V algoritmu TDIDT se vyuˇz´ıv´a tak zvan´e Occamovy bˇritvy, kter´a ˇr´ık´a: Entity se nemaj´ı zmnoˇzovat v´ıce, neˇz je nutn´e. V tomto pˇr´ıkladˇe ji budeme interpretovat n´asledovnˇe: ˇC´ım m´a parametr vyˇsˇs´ı vypov´ıdac´ı hodnotu (menˇs´ı entropii 2.4), t´ım je lepˇs´ım kandid´atem na koˇren stromu (pozdˇeji podstromu).

Jako n´astin algoritmu si pˇredstavme n´asleduj´ıc´ı situaci.

Pˇr´ıklad 5.1

Majitel ˇretˇezce restaurac´ı chce pˇredv´ıdat chov´an´ı z´akazn´ık ˚u. Pˇresnˇeji se snaˇz´ı zjistit, jestli z´akazn´ık poˇck´a na uvolnˇen´ı stolu nebo ne. Proto prov´ad´ı po nˇejak ´y ˇcas pozorov´an´ı okol´ı restaurac´ı a zamˇeˇril se na tyto aspekty:

1. Alternativa: v okol´ı se nach´az´ı srovnateln´a restaurace

2. Bar: restaurace m´a pohodln´e z´azem´ı, kde m ˚uˇze z´akazn´ık poˇckat 3. P´a/So: den v t´ydnu (p´atek nebo sobota = T, jin´y den F)

4. Hlad: z´akazn´ık je hladov ´y

5. Obsazenost: poˇcet lid´ı v podniku (hodnoty Nikdo, Nˇekdo, Plno) 6. Cena: cenov´a skupina restaurace ($, $$, $$$)

7. Deˇst’: jestli venku prˇs´ı

(29)

Z´akazn´ık Alt Bar P´a/So Hlad Obs Cena D´eˇst’ Rez Typ Casˇ Poˇck´a X1 T F F T Nˇekdo $$$ F T Fr 0 − 10 T X2 T F F T Plno $ F F Th 30 − 60 F X3 N Y N N Nˇekdo $ F F Bg 0 − 10 T X4 T F T T Plno $ F F Th 10 − 30 T X5 T F T F Plno $$$ F T Fr ≥ 60 F X6 F T F T Nˇekdo $$ T T It 0 − 10 T X7 F T F F Nikdo $ T F Bg 0 − 10 F X8 F F F T Nˇekdo $$ T T Th 0 − 10 T X9 F T T F Plno $ T F Bg ≥ 60 F X10 T T T T Plno $$$ F T It 10 − 30 F X11 F F F F Nikdo $ F F Th 0 − 10 F X12 T T T T Plno $ F F Bg 30 − 60 T

Tabulka 1: Tr´enovac´ı mnoˇzina k pˇr´ıkladu 5.1

9. Typ: typ restaurace (Francouzsk´a (Fr), Italsk´a (It), Thajsk´a (Th), Burger (Bg)) 10. ˇCas: oˇcek´avan´a doba ˇcek´an´ı na m´ısto (0 − 10 minut, 10 − 30, 30 − 60, ≥ 60)

Majitel ˇretˇezce nashrom´aˇzdil ´udaje do Tabulky 1. Tuto tabulku naz ´yv´ame tr´enovac´ı mnoˇzina.

Koˇren stromu zvol´ıme podle nejniˇzˇs´ı entropie. Tedy vypoˇc´ıt´ame entropii podle rovnice 5 pro jednotliv´e stavy. Jako ´uspˇech (p+) zvol´ıme, ˇze z´akazn´ık poˇck´a jako ne ´uspˇech (p−), ˇze

z´akazn´ık nepoˇck´a. H(Obsazenost)= 2 12H(Obsazenost(Nikdo))+ 4 12H(Obsazenost(Nekdo))+ 6 12H(Obsazenost(Plno)) ≈ 2 12· 0+ 4 12 · 0+ 6 12 · 0.918 ≈ 0.459 (13) Dosazen´ım v ´ysledk ˚u rovnic 14, 15 a 16 do rovnice 13 z´ısk´ame v ´ysledek H(Obsazenost) ≈= 0.459

(30)

Parametr H(Parametr) Obsazenost 0.459 ˇ Cas 0.459 Cena 0.804 Hlad 0.804 Rezervace 0.879 P´a/So 0.879 Bar 0.981 Typ 0 Alternativa 0 D´eˇst’ 0

Tabulka 2: Entropie pro jednotliv´e parametry pˇr´ıkladu 5.1 Entropie v pˇr´ıpadˇe, ˇze nikdo nesed´ı v restauraci

H(Obsazenost(Nikdo))= −p+log2p+plog

2p− = −(0 2 ) log2 (0 2 ) − (2 2 ) log2 (2 2 ) = 0 (14)

Entropie v pˇr´ıpadˇe, ˇze je nˇekolik m´ıst v restauraci obsazeno H(Obsazenost(Nekdo))= −p+log2p+plog

2p− = −(4 4 ) log2 (4 4 ) − (0 4 ) log2 (0 4 ) = 0 (15)

Entropie v pˇr´ıpadˇe, ˇze je restaurace pln´a

H(Obsazenost(Plno))= −p+log2p+plog

2p− = −(2 6 ) log2 (2 6 ) − (4 6 ) log2 (4 6 ) ≈ 0.918 (16)

Podobnˇe pokraˇcujeme s v ´ypoˇctem entropi´ı pro ostatn´ı atributy. Jednotliv´e v ´ysledky jsou uvedeny v Tabulce 2.

V tomto pˇr´ıpadˇe lze tedy zvolit parametr Obsazenost nebo ˇCas, kter´e poskytuj´ı nejvˇetˇs´ı informaˇcn´ı zisk o rozdˇelen´ı mnoˇziny do podmnoˇzin na z´akladˇe jednoho parametru,

(31)

zn´azornˇeno na Obr´azku 8. D´ale by algoritmus pokraˇcoval v ´ypoˇctem dalˇs´ıch d´ılˇc´ıch pod-strom ˚u, dokud by nez´ıskal kompletn´ı informaci o rozdˇelen´ı.

V prvn´ım kroku nemaj´ı parametry Typ restaurace, Alternativa nebo D´eˇst’ ˇz´adnou vy-pov´ıdaj´ıc´ı hodnotu viz. Obr´azek 9.

V ´ysledn ´y rozhodovac´ı strom by mohl m´ıt podobnou strukturu jak je uvedeno na Obr´azku 10.

Obr´azek 8: Rozdˇelen´ı mnoˇziny podle obsazenosti

Obr´azek 9: Rozdˇelen´ı mnoˇziny podle typu

(32)

V´ıce informac´ı k tomuto pˇr´ıkladu uvedeno v knize [2]

5.2 Algoritmus ID3

Algoritmus ID3 byl vyvinut Rossem Quinlanem uˇz v roce 1986. Tento algoritmus vyuˇz´ıv´a k uˇcen´ı funkce s booleovsk ´ymi promˇenn ´ymi. Podobnˇe jako algoritmus TDIDT 5.1 vytv´aˇr´ı strom od shora dol ˚u. V kaˇzd´em uzlu zvol´ı atribut, kter ´y nejl´epe klasifikuje lok´aln´ı tr´enovac´ı data (nejlepˇs´ı atribut m´a nejvyˇsˇs´ı informaˇcn´ı zisk). Takto algoritmus pokraˇcuje, dokud nejsou spr´avnˇe zaˇrazena vˇsechna tr´enovac´ı data, a nebo dokud nebyly vyuˇzity vˇsechny atributy.

1 ID3 (Examples, Target Attribute, Attributes)

2 Create a root node for the tree

3 If all examples are positive, Return the single−node tree Root, with label = +.

4 If all examples are negative, Return the single−node tree Root, with label = −.

5 If number of predicting attributes is empty, then Return the single node tree Root,

6 with label = most common value of the target attribute in the examples.

7 Otherwise Begin

8 A<−− The Attribute that best classifies examples. 9 Decision Tree attribute for Root= A.

10 For each possible value, vi , of A,

11 Add a new tree branch below Root, corresponding to the test A= vi.

12 Let Examples(vi) be the subset of examples that have the value vi for A

13 If Examples(vi) is empty

14 Then below this new branch add a leaf node with label= most common target value in the examples

15 Else below this new branch add the subtree ID3 (Examples(vi), Target Attribute, Attributes − A )

16 End

17 Return Root

Algoritmus .1: Algoritmus ID3 [5]

5.3 Algoritmus C4.5 a C5.0

Algoritmus C4.5 m´a oproti TDIDT a ID3 nˇekolik z´asadn´ıch vylepˇsen´ı. Zejm´ena se jedn´a o to, ˇze je strom proˇrezan ´y jiˇz pˇri jeho konstrukci. Nav´ıc Algoritmus C4.5 umoˇz ˇnuje pr´aci s numerick ´ymi atributy, chybˇej´ıc´ımi hodnotami a tak´e br´at do ´uvahy r ˚uzn´e ceny za r ˚uzn´a chybn´a rozhodnut´ı. M ˚uˇzeme tedy prioritizovat jistou hodnotu oproti jin´e. Tato vlastnost je velmi v ´yhodn´a v pˇr´ıpadˇe, ˇze oˇcek´av´ame pravdˇepodobnost urˇcit´eho jevu jako velmi malou nebo naopak velkou. Rozhodovac´ı strom pak m ˚uˇze b ´yt v ´yraznˇe jednoduˇsˇs´ı a tedy i rozhodov´an´ı je rychlejˇs´ı.

(33)

Algoritmus C5.0 (resp. See5) implementuje oproti C4.5 nˇekolik nov ´ych funkc´ı. Za zm´ınku rozhodnˇe stoj´ı parametr cena za nespr´avnou klasifikaci (v algoritmus C4.5 jsou vˇsechny chyby povaˇzov´any za sobˇe rovn´e, to ovˇsem v re´aln´em svˇetˇe vˇzdy neplat´ı). D´ale je algo-ritmus C5.0 schopen pracovat s v´ıce datov ´ymi typy, napˇr´ıklad ˇcasem.

(34)

6

Sestaven´ı Random forestu

Algoritmus Random forestu (viz. Kapitola 2.2) byl vyvinut Leem Breimanem a Adele Cut-lerovou. Tento algoritmus si dok´aˇze poradit jak s klasifikaˇcn´ım, tak regresn´ım probl´emem (viz. Kapitola 2.5). OpenCV na Random forest pohl´ıˇz´ı jako na matici rozhodovac´ıch strom ˚u. Klasifikace funguje n´asledovnˇe: Random forest pˇrijme vektor vstupn´ıch vlast-nost´ı, klasifikuje jej pomoc´ı vˇsech strom ˚u v lese a vr´at´ı tˇr´ıdu, kter´a byla vyhodnocena jako nejpravdˇepodobnˇejˇs´ı.

Vˇsechny stromy se uˇc´ı za pouˇzit´ı stejn ´ych parametr ˚u, ale na r ˚uzn ´ych tr´enovac´ıch mnoˇzin´ach. Tyto podmnoˇziny jsou generov´any z origin´aln´ı tr´enovac´ı mnoˇziny pomoc´ı samozav´adˇec´ı procedury: pro kaˇzdou tr´enovac´ı podmnoˇzinu vybere n´ahodnˇe stejn ´y poˇcet tr´enovac´ıch vektor ˚u jako je v cel´e tr´enovac´ı mnoˇzinˇe. Algoritmus pˇripouˇst´ı opakov´an´ı vektor ˚u, takˇze v jednotliv ´ych stromech budou nˇekter´e vektory pouˇzity v´ıcekr´at a nˇekter´e budou chybˇet.

ˇ

Z´adn ´y z rozhodovac´ıch strom ˚u nen´ı proˇrezan ´y.[3]

S= ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ f11 · · · fm1 C1 ... ... ... fAB ... CB ... ... f1n · · · fmn Ci ⎞ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ , (17)

kde fABje vlastnost A tr´enovac´ıho objektu B, kter ´y kategorizujeme jako class CB.

6.1 Vytvoˇren´ı Random forestu

Vytvoˇren´ı rozhodovac´ıho stromu spoˇc´ıv´a v n´ahodn´em v ´ybˇeru k ˇr´adk ˚u, kde k ∈ N a z´arove ˇn k ≤ n z tr´enovac´ı mnoˇziny uveden´e v ´uvodu t´eto kapitoly a n´asledn´em sestaven´ı rozhodovac´ıho stromu z tˇechto dat. Random forest je potom l ∈ N rozhodovac´ıch strom ˚u.

(35)

Pˇr´ıklad 6.1

Mˇejme tr´enovac´ı mnoˇzinu S z ´uvodu Kapitoly 17. Nyn´ı vytvoˇrme l n´ahodn ´ych podmnoˇzin S1, S2,. . ., Sl. S1= ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ f12 · · · fm2 C2 f15 · · · fm5 C5 f18 · · · fm8 C8 ⎞ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ , S2= ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ f13 · · · fm3 C3 f15 · · · fm5 C5 f17 · · · fm7 C7 f18 · · · fm8 C8 f19 · · · fm9 C9 ⎞ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ , Sl = ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ f1a · · · fma Ca ... ... ... ... f1b · · · fmb Cb ⎞ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ , (18)

kde a, b, m, l, i ∈ N , fmnje vlastnost objektu, Cije v ´ysledn´a klasifikaˇcn´ı tˇr´ıda.

N´aslednˇe se nad takto vytvoˇren ´ymi maticemi spust´ı algoritmus pro vytvoˇren´ı rozhodo-vac´ıho stromu (napˇr´ıklad TTDI popsan ´y v pˇredchoz´ı Kapitole 5.1).

Pˇredpokl´adejme, ˇze jsme podle popsan´eho postupu sestavili l rozhodovac´ıch strom ˚u. Tuto mnoˇzinu jiˇz naz ´yv´ame Random forest. Kaˇzd ´y z tˇechto strom ˚u je nauˇcen ´y podle jin ´ych parametr ˚u, takˇze m ˚uˇze testovan ´y objekt zaˇradit do jin´e tˇr´ıdy. Poˇsleme -li do tohoto lesa testovac´ı objekt, obdrˇz´ıme v ´ysledek n´asleduj´ıc´ıho typu: pravdˇepodobnost v ´yskytu tohoto objektu ve tˇr´ıdˇe Cije k %. D´ale je uˇz rozhodnut´ı jen na vhodn´em pouˇzit´ı parametr ˚u, kdy

je pravdˇepodobnost dostateˇcnˇe velk´a, abychom tento objekt oznaˇcili, ˇze skuteˇcnˇe patˇr´ı do dan´e tˇr´ıdy.

V tuto chv´ıli na okamˇzik opust´ıme obecnou rovinu a zkus´ıme jednoduch ´y praktick ´y pˇr´ıklad.

Pˇr´ıklad 6.2

Mˇejme jednoduchou ´ulohu rozpozn´an´ı objekt ˚u v obraze. Naˇsim ´ukolem bude vytvoˇrit Random forest pro rozpozn´an´ı ˇctverce, hvˇezdiˇcky a obd´eln´ıku v testovac´ım Obr´azku 11. Aby bylo moˇzn´e tento ´ukol splnit potˇrebujeme pˇripravit tak´e tr´enovac´ı mnoˇzinu z Obr´azku 12.

(36)

Obr´azek 11: Testovac´ı obr´azek

Obr´azek 12: Tr´enovac´ı obr´azek

Nejprve je potˇreba zvolit vhodn´e parametry jak kvalifikovat jednotliv´e objekty. Na roz-pozn´an´ı hvˇezdiˇcky bude nejlepˇs´ı pouˇz´ıt obvod (hvˇezdiˇcka m´a jistˇe vˇetˇs´ı obvod neˇz ˇctverec, ˇci obd´eln´ık). Tento parametr n´am vˇsak jiˇz nebude staˇcit pro rozliˇsen´ı obd´eln´ıku a ˇctverce. Zde se nab´ız´ı pouˇzit´ı rozptylu d´elek hran objektu. Pro rozpozn´an´ı je potˇreba zvolit prarametry tak, aby byly invariantn´ı v ˚uˇci poloze a rotaci a velikosti objektu. K v ´ypoˇctu bude potˇreba jeˇstˇe nˇekolik vzorc ˚u. Vzorec pro centr´aln´ı moment, tˇeˇziˇstˇe a moment invariantn´ı v ˚uˇci poloze objektu.

Tˇeˇziˇstˇe objektu spoˇc´ıt´ame pomoc´ı vzorce xT =

m1,0

m0,0, yT =

m0,1

m0,0, (19)

(37)

Definice 6.1 Obecn´y moment definujeme mp,q= ∫ ∫ xpyqf(x, y) dxdy, diskr´etnˇe mp,q=∑ ∑xpyqf(x, y) , (20)

kde p, q ∈ N ˇr´ad momentu. Integrujeme, pˇr´ıpadnˇe sˇc´ıt´ame pˇres vˇsechny body objektu.

V naˇsem pˇr´ıpadˇe, ale potˇrebujeme moment, kter ´y nebude z´avisl ´y na poloze. Tuto vlastnost spl ˇnuje centr´aln´ı moment.

Definice 6.2 Centr´aln´ı moment definujeme

µp,q= ∫ ∫ (x − xT)p( y − yT)qf(x, y) dxdy, diskr´etnˇe µp,q= ∑ ∑ (x − xT)p( y − yT)qf(x, y) , (21)

kde xTa yTje poloha tˇeˇziˇstˇe objektu a p, q ∈ N ˇr´ad centr´aln´ıho momentu. Integrujeme, pˇr´ıpadnˇe

sˇc´ıt´ame pˇres vˇsechny body objektu.

Jako prvn´ı parametr tedy zvol´ıme pomˇer obvodu k obsahu obrazce. Uk´azalo se, ˇze je vhodn´e pouˇz´ıt f1 = p

2

µ0,0, kde p je obvod obrazce aµ0,0je nult ´y centr´aln´ı moment obrazce.

Zanedb´ame -li jasovou funkci f (x, y), rozumˇej bude m´ıt hodnotu 1 v kaˇzd´em bodˇe objektu, bude se jednat o obsah.

Informaci ohlednˇe orientace obrazu m ˚uˇzeme odvodit pomoc´ı centr´aln´ıch moment ˚u druh´eho ˇr´adu k sestaven´ı kovarianˇcn´ı matice.

µ′ 20 = µ20 µ00, µ ′ 02 = µ02 µ00, µ ′ 11 = µ11 µ00

Kovarianˇcn´ı matici tedy m ˚uˇzeme zapsat ve tvaru cov(I(x, y)) =

⎛ ⎜ ⎜ ⎜ ⎜ ⎝ µ′ 20 µ ′ 11 µ′ 11 µ ′ 02 ⎞ ⎟ ⎟ ⎟ ⎟ ⎠ (22)

Vlastn´ı ˇc´ısla kovarianˇcn´ı matice ud´avaj´ı d´elku hlavn´ı a vedlejˇs´ı osy rozloˇzen´ı ”hmoty”v objektu. V naˇsem pˇr´ıpadˇe jasov´e funkce v objektu. Pro zjednoduˇsen´ı si pˇredstavme, ˇze se jedn´a o elipsu, kterou objektu op´ıˇseme 13. Je zˇrejm´e, ˇze objekt ˇctverce a hvˇezdiˇcky bude m´ıt tyto osy podobnˇe velk´e, kdeˇzto u obd´eln´ıku budou tyto hodnoty rozd´ıln´e.

(38)

Obr´azek 13: Zn´azornˇen´ı v ´yznamu elipticity

Vlastn´ı ˇc´ısla t´eto matice spoˇc´ıt´ame jednoduˇse podle vzorce det ⎛ ⎜ ⎜ ⎜ ⎜ ⎝ µ′ 2,0−λ µ′1,1 µ′ 1,1 µ ′ 0,2−λ ⎞ ⎟ ⎟ ⎟ ⎟ ⎠=(µ ′ 2,0−λ) (µ′0,2−λ ) −µ′2 1,1 = λ2′ 2,0+ µ ′ 0,2) λ + (µ ′ 2,0µ ′ 0,2−µ′21,1) = 0 (23)

Po nˇekolika jednoduch ´ych matemetick ´ych ´uprav´ach rovnice 23 z´ısk´ame vlastn´ı ˇc´ısla matice 22 a= 1 b= −(µ′2,0+ µ′0, 2) c=(µ′2,0µ0,2−µ′2 1,1 ) D=(µ′2,0−µ′ 0,2 )2 + 4µ′2 1,1 takˇze λ = 1 2(µ ′ 0,2+ µ′2,0 ) 1 2 √ (µ′ 0,2+ µ′2,0 )2 + 4µ′2 1,1 (24)

Nyn´ı spoˇc´ıt´ame hodnoty parametr ˚u v tr´enovac´ım Obr´azku 12. V ´ysledky jsou uvedeny v Tabulce 3. Pˇri sestaven´ı matice pro Random forest zvol´ıme substituci.

(39)

objekt m0,0 p λmin λmax λmin/λmax p2/m0,0 1 ˇctverec 1408 113 114.105 121.325 0.940 9.069 2 ˇctverec 1393 116 114.268 119.271 0.958 9.66 3 ˇctverec 1412 113 116.479 120.963 0.963 9.043 4 ˇctverec 1431 115 116.782 122.121 0.956 9.242 5 hvˇezdiˇcka 435 150 60.898 63.636 0.957 51.724 6 hvˇezdiˇcka 434 155 63.022 63.748 0.989 55.357 7 hvˇezdiˇcka 434 149 60.167 62.501 0.963 51.154 8 hvˇezdiˇcka 432 150 58.433 64.375 0.908 52.083 9 obd´eln´ık 699 90 16.531 206.956 0.08 11.588 10 obd´eln´ık 739 80 18.076 216.197 0.084 8.660 11 obd´eln´ık 713 76 16.472 216.094 0.076 8.101 12 obd´eln´ık 700 76 16.5 208.5 0.079 8.251

Tabulka 3: Hodnoty parametr ˚u pro jednotliv´e objekty

Necht’ ˇctverec je objekt A, hvˇezdiˇcka objekt B a obd´eln´ık objekt C a F1 = λmin/λmax a

F2= p2/m0,0, pak mnoˇzinu S naz ´yv´ame tr´enovac´ı mnoˇzinou.

S= ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ F1 F2 class 0.940 9.069 A 0.958 9.66 A 0.963 9.043 A 0.956 9.242 A 0.957 51.724 B 0.989 55.357 B 0.963 51.154 B 0.908 52.083 B 0.08 11.588 C 0.084 8.660 C 0.076 8.101 C 0.079 8.251 C ⎞ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ (25)

Z tr´enovac´ı mnoˇziny vybereme n´ahodnˇe nˇekolik podmnoˇzin. V tomto pˇr´ıpadˇe jsem zvolil n´asleduj´ıc´ı 4 podmoˇziny. Vˇsimnˇete si, ˇze nen´ı potˇreba, aby kaˇzd´a podmnoˇzina obsahovala

(40)

vˇsechny klasifikaˇcn´ı tˇr´ıdy. S1= ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ F1 F2 class 0.940 9.069 A 0.957 51.724 B 0.989 55.357 B 0.084 8.660 C ⎞ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ , S2 = ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ F1 F2 class 0.940 9.069 A 0.956 9.242 A 0.957 51.724 B 0.908 52.083 B ⎞ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ S3= ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ F1 F2 class 0.963 51.154 B 0.908 52.083 B 0.076 8.101 C 0.079 8.251 C ⎞ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ , S4 = ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ F1 F2 class 0.958 9.66 A 0.963 9.043 A 0.963 51.154 B 0.076 8.101 C ⎞ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ (26)

Na z´akladˇe tˇechto hodnot sestav´ıme rozhodovac´ı stromy. Pˇri stestavov´an´ı postupujeme pomoc´ı ID3 algoritmu uveden´eho v Kapitole 5.2. Jako divezrifikaˇcn´ı parametr jsem pouˇzil giniho koeficient. Giniho koeficient definujeme jako obsah plochy mezi Loren-zovou kˇrivkou a diagon´alou jednotkov´eho ˇctverce ku celkov´e ploˇse pod diagon´alou.

GC= A

A+ B (27)

N´akres situace pro matici S1 je uveden na Obr´azku 14.

Obr´azek 14: V ´ypoˇcet giniho koeficientu

V ´ysledek je uveden na Obr´azc´ıch 15a, 15b, 15c, 15d. T´eto mnoˇzinˇe rozhodovac´ıch strom ˚u ˇr´ık´ame Random forest.

(41)

(a) Rozhodovac´ı strom S1 (b) Rozhodovac´ı strom S2

(c) Rozhodovac´ı strom S2

(d) Rozhodovac´ı strom S2

Obr´azek 15: Random forest

Nyn´ı pomoc´ı Random forestu uveden´eho na Obr´azku 15 budeme klasifikovat objekty v testovac´ım obraze. V testovac´ım Obraze 16 spoˇc´ıt´ame hodnoty F1 a F2 a uloˇz´ıme do

matice T (28). N´aslednˇe vyhodnot´ıme tyto parametry pro kaˇzd ´y strom v n´ahodn´em lese.

(42)

T= ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ F1 F2 1 0.994022 9.40264 2 0.0800296 7.97244 3 0.95834 51.9894 4 1 8.7097 5 0.0751434 11.3143 6 0.0745492 11.8578 7 0.925664 55.5109 8 0.955025 55.5738 9 0.992961 9.36017 ⎞ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ (28) P= ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ F1 F2 S1 S2 S3 S4 1 0.994022 9.40264 A A B A 2 0.0800296 7.97244 C A C C 3 0.95834 51.9894 B B B B 4 1 8.7097 A A B A 5 0.0751434 11.3143 C A C C 6 0.0745492 11.8578 C A C C 7 0.925664 55.5109 B B B B 8 0.955025 55.5738 B B B B 9 0.992961 9.36017 A A B A ⎞ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ (29)

Kdyˇz se pod´ıv´ame na v ´ysledky uveden´e v matici T a zaneseme se do v ´ysledkov´e Tabulky 4, zjist´ıme, ˇze n´aˇs jednoduch ´y Random forest je schopen vcelku dobˇre rozhodnout a kategorizovat dan ´y probl´em.

(43)

objekt A B C 1 ˇctverec 75% 25% 0% 2 obd´eln´ık 25% 0% 75% 3 hvˇezdiˇcka 0% 100% 0% 4 ˇctverec 75% 25% 0% 5 obd´eln´ık 25% 0% 75% 6 obd´eln´ık 25% 0% 75% 7 hvˇezdiˇcka 0% 100% 0% 8 hvˇezdiˇcka 0% 100% 0% 9 ˇctverec 75% 25% 0%

(44)

7

Vytvoˇren´ı aplikace pro rozpozn ´an´ı vozidel v OpenCV

V n´asleduj´ıc´ı kapitole si pop´ıˇseme, jak se d´a vytvoˇrit jednoduch ´y algoritmus pro roz-pozn´av´an´ı vozidel v OpenCv pomoc´ı Random forestu. Jak jiˇz n´azev napov´ıd´a, k vy-tvoˇren´ı aplikace pouˇzijeme knihovnu OpenCv, kter´a m´a jiˇz mnoˇzstv´ı metod pro pr´aci s obrazem pˇredimplementovan ´ych. Zejm´ena se bude jednat o metody pro vytvoˇren´ı HOG a Random forestu. V jednotliv ´ych sekc´ıch si pop´ıˇseme z´akladn´ı vstupn´ı hodnoty pro jednotliv´e metody. Praktick´a ˇc´ast, urˇcen´ı vhodn ´ych parametr ˚u, se prov´ad´ı pozorov´an´ım a vhodnou ´upravou parametr ˚u.

Nejdˇr´ıve se zamˇeˇr´ıme, jak ´ym zp ˚usobem je moˇzn´e popsat vlastnosti obrazov´e funkce. Jako uk´azku jsem zvolil metodu HOG. N´aslednˇe pˇrejdeme k samotn´emu vytvoˇren´ı Random forestu.

7.1 Metoda HOG v OpenCv

Vytvoˇren´ı HOG (Histograms of Oriented Gradients) provedeme pomoc´ı tˇr´ıdy cv::HOGDescriptor. Z´akladn´ı vstupn´ı parametry jsou winSize, blockSize, blockStride, cellSize, nbins. Jejich

matematick´e v ´yznamy jsme si jiˇz vysvˇetlili v Kapitole 3.3. Zde uvedu jen jejich v ´yznam a hrub´e nast´ınˇen´ı, jak se s tˇemito parametry pracuje:

• winSize (Size) pˇredstavuje velikost cel´eho okna, pˇres kter´e HOG poˇc´ıt´ame, • blockSize (Size) je velikost bloku, do kter ´ych jsme okno rozdˇelili,

• blockStride (int) znamen´a poˇcet pixel ˚u, o kter ´y blok pˇri v ´ypoˇctu jednotliv ´ych gra-dient ˚u posouv´ame,

• cellSize (Size) je velikost bu ˇnky, pro kterou gradient poˇc´ıt´ame ,

• nbins (int) pˇredstavuje poˇcet v ´yseˇc´ı, ve kter ´ych poˇc´ıt´ame pˇr´ır ˚ustek gradientu. N´ast´ınˇen´ı toho jak HOG deskriptor prov´ad´ı v ´ypoˇcet je uvedeno na Obr´azku 17. Z´arove ˇn je potˇreba si uvˇedomit, ˇze OpenCV vyˇzaduje validaci

(winSize.width − blockSize.width)%blockStride.width == 0 and

(winSize.height − blockSize.height)%blockStride.height == 0.

(45)

Pˇreloˇzeno do obecn´eho jazyka je v ´yznam pˇredchoz´ı podm´ınky n´asledovn ´y. Posouv´an´ım bloku o blockStride se n´am nem ˚uˇze st´at, ˇze budeme poˇc´ıtat hodnotu, kter´a nen´ı v obr´azku.

Obr´azek 17: Princip konstrukce HOG Deskriptoru [11]

7.2 Random forest v OpenCV

Vytvoˇren´ı Random forestu v OpenCV se porov´ad´ı pomoc´ı jiˇz implemetovan ´ych me-tod. V prv´e ˇrade existuje funkce cv::ml::RTrees::create(const cv::ml::RTrees::Params&

params=Params())

Tato metoda obsahuje tˇr´ıdu parametr ˚u cv::ml::RTrees::Params, kter´a se sest´av´a z nˇekolika parametr ˚u. Mezi tyto parametry patˇr´ı napˇr´ıklad maxDepth, minSampleCount,

regres-sionAccuracy, useSurrogates, maxCategories, priors, calcVarImportance, nactiveVars,

termCrit. V ´yznam jednotliv ´ych parametr ˚u je zˇrejm ´y uˇz z jejich n´azvu:

• maxDepth (int) pˇredstavuje hodnotu maxim´aln´ı hloubky stromu. (Pokud je zvo-lena pˇr´ıliˇs mal´a hodnota bude rozhodovac´ı schopnost stromu v ´yraznˇe omezena, naopak bude -li zvolena hodnota pˇr´ıliˇs velk´a bude strom pˇr´ıliˇs ”chytr ´y”a bude se zbyteˇcnˇe zab ´yvat podrobnostmi, kter´e nejsou relevantn´ı. Informace, kter´e mo-hou obraz zkreslit patˇr´ı napˇr´ıklad ˇsum, rozliˇsen´ı a jim podobn´e). Celkov´a velikost stromu m ˚uˇze b ´yt i menˇs´ı, pokud bude aplikov´ano jin´e ukonˇcovac´ı krit´erium (viz. n´ıˇze)

• minSampleCount (int) je minimum vzork ˚u potˇrebn ´ych k dalˇs´ımu dˇelen´ı stromu. (Pokud zvol´ıme hodnotu tohoto parametru pˇr´ıliˇs velkou, budou generov´any

(46)

ne-douˇcen´e stromy, naopak pokud bude hodnota pˇr´ıliˇs mal´a bude strom pˇreuˇcen ´y). Vhodn´a hodnota je mal´e procento z celkov ´ych dat (okolo 1%)

• regressionAccuracy (double) pˇredstavuje krit´erium pro pˇreruˇsen´ı pˇri pouˇzit´ı re-gresn´ıch strom ˚u. Pokud jsou vˇsechny absolutn´ı diference mezi odhadovan ´ymi hodnotami v uzlu a hodnotami z tr´enovac´ı mnoˇziny menˇs´ı neˇz hodnota tohoto parametru, pak se strom nebude jiˇz d´ale dˇelit

• useSurrogates (bool) pokud je nastavena hodnota na ¨true¨,budou vytv´aˇreny n´ahrady uzl ˚u. Tento parametr je v ´yhodn ´y, pokud pracujeme s ne ´upln ´ymi daty. Promˇenn´a d ˚uleˇzitosti bude v tomto pˇr´ıpadˇe vypoˇc´ıt´ana spr´avnˇe

• maxCategories (int) pokud program ve sv´em v ´ypoˇctu vyhodnot´ı, ˇze se d´a mnoˇzina rozdˇelit do v´ıce kategori´ı neˇz je nastaven´a hodnota tohoto parametru, pak najde suboptim´aln´ı rozdˇelen´ı do katategori´ı urˇcen ´ych t´ımto parametrem. Tento parametr je opˇet v ´yhodn ´y, aby nevznikal zbyteˇcnˇe pˇr´ıliˇs rozvˇetven ´y strom. Algoritmick´a sloˇzitost stromu je exponenci´aln´ı, takˇze pokud povol´ıme dˇelen´ı do pˇr´ıliˇs mnoha kategori´ı, bude v ´ypoˇcet trvat pˇr´ıliˇs dlouho a spotˇrebuje pˇr´ıliˇs mnoho syst´emov ´ych prostˇredk ˚u (napˇr´ıklad pamˇeti)

• priors (Mat&) tento parametr ovliv ˇnuje pravdˇepodobnost v ´yskytu jevu v mnoˇzinˇe. Pokud pracujeme s daty, kde je minim´aln´ı v ´yskyt jist´eho jevu, pak tuto pravdˇe-podobnost utlum´ıme a dopˇredu budeme poˇc´ıtat s t´ım, ˇze se jedn´a o chybu ve vyhodnocen´ı

• calcVarImportance (bool) pokud je nastavena hodnota true, bude tato hodnota spoˇc´ıt´ana a je moˇzn´e ji z´ıskat pomoc´ı funkce cv::ml::RTrees::getVarImportance() • nactiveVars (int) nastaven´ı velikosti n´ahodnˇe vybran´e podmnoˇziny vlastnost´ı k

nalezen´ı nejlepˇs´ıho rozdˇelen´ı uzlu stromu do dceˇrin ´ych uzl ˚u stromu. Pokud je hodnota nastavena na nulu, bude pouˇzita defaultn´ı hodnota odmocnina z mnoˇzstv´ı vlastnost´ı

• termCrit (cv::TermCriteria) ukonˇcovac´ı krit´eria pro dalˇs´ı dˇelen´ı uzlu pˇri uˇcen´ı. cv::TermCriteria mohou b ´yt typu COUNT, EPS nebo COUNT+ EPS. Kde COUNT znamen´a maxim´aln´ı poˇcet iterac´ı nebo element ˚u a EPS poˇzadovan´a pˇresnost nebo absolutn´ı rozd´ıl mezi n´asledn ´ymi kroky. ˇCasto se st´av´a, ˇze tr´enovac´ı algoritmus se asymptoticky pˇribliˇzuje k nˇejak´e hodnotˇe, kter´e nem ˚uˇze dos´ahnout. Proto je vhodn´e nastavit vhodnˇe tento parametr, aby bylo zamezeno zbyteˇcnˇe sloˇzit´emu poˇc´ıt´an´ı jiˇz zˇrejm ´ych hodnot

(47)

[3]

7.3 Metoda SVM v OpenCV

V t´eto kapitole je pops´ano pouˇz´ıt´ı metody SVM v OpenCV. Knihovna OpenCV jiˇz obsahuje potˇrebn´e algoritmy k vytvoˇren´ı SVM. Nyn´ı si vysvˇetl´ıme jednotliv´e parametry metody a jejich v ´yznam. Pro vytvoˇren´ı klasifik´atoru SVM vyuˇzijeme funkci cv::ml::SVM::create(). Mezi z´akladn´ı parametry t´eto metody patˇr´ı napˇr´ıklad Type, Kernel, TermCriteria.

• Type (int) Typ formulace SVM klasifik´atoru.

– CvSVM::C SVC C-Support Vector Classification. n-class klasifikace (n ≥ 2), umoˇz ˇnuje nedokonal´e oddˇelen´ı tˇr´ıd. Jako diskriminaˇcn´ı parametr je pouˇzita hodnota CValue

– CvSVM::NU SVCν-Support Vector Classification. n-class klasificace umoˇzˇnuje

nedokonal´e oddˇelen´ı tˇr´ıd. Parametrν ∈ ⟨0, 1⟩. ˇC´ım je vˇetˇs´ı hodnota ν, t´ım je hranice mezi mnoˇzinami hladˇs´ı.

– CvSVM::ONE CLASSRozdˇelen´ı mnoˇziny odhadem. Vˇsechna tr´enovac´ı data poch´az´ı z jedn´e tˇr´ıdy. SVM vytvoˇr´ı hranici na z´akladˇe oddˇelen´ı t´eto tˇr´ıdy od vˇsech pˇr´ıpadn ´ych dalˇs´ıch.

• CValue (double) Parametr C je pouˇzit jako diskriminaˇcn´ı hodnota v SVM optima-lizaˇcn´ı ´uloze C SVC.

• Nu (double) Parametrν ∈ ⟨0, 1⟩ je v SVM optimalizaˇcn´ı ´uloze NU SVC nebo ONE CLASS. ˇ

C´ım je vˇetˇs´ı hodnotaν, t´ım je hranice mezi mnoˇzinami hladˇs´ı.

• Kernel (int) zp ˚usob transformace do prostoru s vyˇsˇs´ı dimenz´ı. Volba tohoto para-metru ovliv ˇnuje dalˇs´ı povinn´e parametry

– CvSVM::LINEAR Line´arn´ı kernel. Neprov´ad´ı se ˇz´adn´e mapov´an´ı. Line´arn´ı klasifikace nebo regrese se prov´ad´ı v origin´aln´ım prostoru. K(xi, xj)= xTi xj

– CvSVM::POLYPolynomi´aln´ı kernel: K(xi, xj)= (γxTixj+coef0)degree, kdeγ > 0.

– CvSVM::RBFRadial basis function (RBF), vhodn´a volba pro vˇetˇsinu pˇr´ıpad ˚u. K(xi, xj)= e−γ||xi−xj||

2

, kdeγ > 0.

– CvSVM::SIGMOIDSigmoid kernel: K(xi, xj)= tanh(γxTixj+ coef0).

(48)

• gamma (double) je parametrγ pouˇzit´y pro v´ypoˇcet kernelu v POLY, RBF a SIGMOID. • coef0 (double) je parameter coe f 0 pouˇzit ´y pro v ´ypoˇcet kernelu v POLY a SIGMOID. • class weights (Mat&) znamen´a v´ahu jednotliv ´ych tˇr´ıd. Parametry C pro jednotliv´e tˇr´ıdy jsou z´ısk´any jako class weightsi∗C. Pomoc´ı tohoto parametru se daj´ı

prioriti-zovat v ´ysledky pro urˇcit´e tˇr´ıdy.

• term crit (cv::TermCriteria) je nastaven´ı ukonˇcovac´ıch krit´eri´ı pro tr´enov´an´ı SVM. [3]

7.4 Vytvoˇren´ı programu

V t´eto kapitole je popis tvorby jednoduch´eho rozpozn´avaˇce vozidel. Nejprve je potˇreba pˇripravit a popsat tr´enovac´ı a testovac´ı mnoˇzinu. Tr´enovac´ı mnoˇzina se mus´ı skl´adat z dostateˇcn´eho mnoˇzstv´ı pozitivn´ıch a negativn´ıch obraz ˚u. Na testovac´ı mnoˇzinˇe jsme pak schopni zjistit jak dobˇre n´aˇs algoritmus funguje. N´aslednˇe je potˇreba obrazov´a data popsat (zde je vyuˇzita metoda HOG) a nakonec nauˇcit program rozpozn´avat jednotliv´e objekty.

7.4.1 Sestaven´ı tr ´enovac´ı mnoˇziny

Pozitivn´ı tr´enovac´ı mnoˇzinou je v naˇsem pˇr´ıpadˇe soubor 1317 obraz ˚u vozidel o rozmˇeru 128 x 128 px. Pˇr´ıklad nˇekolika tr´enovac´ıch obraz ˚u je uveden na Obr´azku ˇc. 18. Jako negativn´ı mnoˇzinu lze pouˇz´ıt jak ´ykoli obraz, na kter´em vozidlo nen´ı zobrazeno. V naˇsem pˇr´ıpadˇe se negativn´ı mnoˇzina skl´ad´a z 3921 obraz ˚u.

(49)

Obr´azek 18: Tr´enovac´ı mnoˇzina positive

Tr´enovac´ı vektor sestav´ıme pomoc´ı metody compute hog(), kter´a je uvedena v algoritmu 3. Tato metoda spoˇc´ıt´a cv::HOGDescriptor pro vektor obraz ˚u img lst a uloˇz´ı jeho hodnoty do vektoru gradient lst. Kaˇzd ´y obr´azek ve vektoru img lst je pˇreveden do stup ˇn ˚u ˇsedi. N´aslednˇe je pro obr´azek sestaven vlastn´ı popisn ´y vektor gradient ˚u, kter ´y je uloˇzen do gradient lst. Nastaven´ı velikosti bloku, posunut´ı bloku, velikosti bu ˇnky a poˇcet smˇer ˚u (bin ˚u) provedeme pomoc´ı glob´aln´ıch promˇenn ´ych, protoˇze pˇri testov´an´ı obr´azk ˚u mus´ıme pouˇz´ıt stejn´e hodnoty jako pˇri tr´enov´an´ı. Jinak by rozhodovac´ı algoritmus nefungoval. Pro ´uˇcely testov´an´ı a tr´enov´an´ı byly zvoleny n´asleduj´ıc´ı parametry

• CELL SIZE= Size(8, 8) • BLOCK SIZE= Size(16, 16) • BLOCK STRIDE= Size(4, 4)

• NBINS= 6

void compute hog(const vector< Mat > & img lst, vector< Mat > & gradient lst, const Size & size)

{

HOGDescriptor hog; hog.winSize = size; hog.cellSize = CELL SIZE; hog.blockSize = BLOCK SIZE; hog.blockStride = BLOCK STRIDE; hog.nbins = NBINS;

(50)

Mat gray;

vector< Point > location ; vector< float > descriptors;

vector< Mat >:: const iterator img = img lst .begin(); vector< Mat >:: const iterator end = img lst.end();

for (; img != end; ++img)

{

cvtColor(∗img, gray, COLOR BGR2GRAY); equalizeHist( gray, gray ) ;

hog.compute(gray, descriptors); Mat g;

Mat(descriptors).convertTo(g, CV 32F); gradient lst .push back(g);

} }

V ´ypis 3: Metoda pro z´ısk´an´ı tr´enovac´ıch vektor ˚u

7.4.2 Vytvoˇren´ı Random forestu

Jakmile jsou naˇctena vˇsechna data z tr´enovac´ı mnoˇziny vloˇz´ıme je do struktury cv::Ptr<cv::ml::TrainData>, kterou n´aslednˇe vyuˇzijeme pˇri vytv´aˇren´ı Random forestu. Zde je d ˚uleˇzit´e m´ıt uloˇzeno kter ´y z´aznam patˇr´ı do kter´e skupiny dat. V naˇsem pˇr´ıpadˇe m´ame ve vektoru labels uloˇzeny skupiny 1 pozitivn´ı a 0 negativn´ı, kter´e odpov´ıdaj´ı poˇrad´ı naˇc´ıtan ´ych objekt ˚u. Zdrojov ´y k ´od je uveden ve v ´ypise 4.

V posledn´ım kroku tr´enov´an´ı vytvoˇr´ıme Random Forest, kter ´y uloˇz´ıme do struktury cv::Ptr<cv::ml::RTrees>. Volbu parametr ˚u prov´ad´ıme pozorov´an´ım chov´an´ı rozhodovac´ıho algoritmu a vhodnou korekc´ı jednotliv ´ych parametr ˚u.

Ptr<TrainData> prepareTrainData(vector< Mat > & gradient lst, vector<int> & labels) {

Mat samples(gradient lst.size () , gradient lst [0]. rows,CV 32F);

int col = 0;

for( int i =0; i < samples.rows; i++)

{

for( int j =0; j < samples.cols; j++)

{

samples.at<float>(i,j) = gradient lst .at( i ) .at<float>(col, j ) ; }

(51)

}

return TrainData::create(samples, 0, Mat(labels)) ;

}

Ptr<RTrees> trainRTrees(Ptr<TrainData> & train data) {

Ptr<RTrees> rtrees = RTrees::create(); rtrees−>setMaxDepth(50);

rtrees−>setMinSampleCount(600); rtrees−>setActiveVarCount(0);

rtrees−>setTermCriteria(TermCriteria(TermCriteria::EPS + TermCriteria::MAX ITER, 1000, 0.05));

rtrees−>train(train data ) ;

return rtrees ;

}

V ´ypis 4: Pˇr´ıprava tr´enovac´ı dat a sestaven´ı Random Forestu

7.4.3 Vytvoˇren´ı SVM

Pro naˇcten´ı tr´enovac´ıch dat do struktury cv::Ptr<cv::ml::TrainData>vyuˇzijeme funkci pre-pareTrainData (V ´ypis 4) z pˇredchoz´ı Podkapitoly 7.4.2

Ptr<SVM> trainSVM(Ptr<TrainData> & train data, int Kernel) { double C; Ptr<SVM> svm = SVM::create(); svm−>setType(SVM::C SVC); svm−>setKernel(Kernel); if (Kernel == SVM::RBF) { C = 10; svm−>setGamma(0.005); }

else if (Kernel == SVM::LINEAR)

{

C = 0.01; }

(52)

svm−>setTermCriteria(TermCriteria(TermCriteria::EPS + TermCriteria::MAX ITER, 1000, 0.05)); svm−>setC(C); svm−>train(train data); return svm; } V ´ypis 5: Sestaven´ı SVM

7.5 Vyhled ´av ´an´ı objektu v re ´aln ´em obraze

Aby bylo moˇzn´e tuto metodu aplikovat v praxi, je zapotˇreb´ı algoritmus rozˇs´ıˇrit tak, aby byl schopen rozpoznat osobn´ı vozidlo i v obraze, kter ´y m´a jin ´y form´at neˇz 128 x 128 px. Vyhled´av´an´ı prov´ad´ıme cyklick ´ym proch´azen´ım objektu pomoc´ı vyhled´avac´ıho okna tzv. ROI (Region Of Interest) o rozmˇeru 128 x 128 px. Kaˇzd ´y tento v ´yˇrez nech´ame vyhodnotit Random forest nebo SVM, abychom zjistili, jestli se jedn´a o vozidlo nebo ne.

Aby bylo moˇzn´e porovn´avat obrazy r ˚uzn ´ych velikost´ı, zvolil jsem metodu zmenˇsov´an´ı obrazu. V prvn´ım pr ˚uchodu maska pro v ´ypoˇcet proch´az´ı pˇres p ˚uvodn´ı velikost obrazu a pˇri kaˇzd´em dalˇs´ım se cel ´y obraz zmenˇs´ı na 80% sv´e aktu´aln´ı velikosti. Obraz je zmenˇsov´an do t´e doby, dokud je jeho v ´yˇska i ˇs´ıˇrka vˇetˇs´ı neˇz 128 x 128 px. Zdrojov ´y k ´od t´eto funkce je uveden ve V ´ypise 6.

Zde tak´e pouˇzijeme dalˇs´ı dvˇe glob´aln´ı promˇenn´e • WINDOW SIZE= Size(128, 128)

• WINDOW STEP= 32

vector<vector<float> > testNormalImage(Mat &img, Ptr<RTrees> & rTrees) {

HOGDescriptor hog;

hog.winSize = WINDOW SIZE; hog.cellSize = CELL SIZE; hog.blockSize = BLOCK SIZE; hog.blockStride = BLOCK STRIDE; hog.nbins = NBINS;

vector< float > descriptors; Mat g;

(53)

vector<vector<float> > result; Mat gray;

cvtColor(img, gray, COLOR BGR2GRAY); Mat rescaleImg = gray.clone();

float resizeFactor = 0.8; float factor = 1;

while(rescaleImg.rows − WINDOW SIZE.height> 0 && rescaleImg.cols − WINDOW SIZE.

width> 0) {

for ( int row = 0; row<= rescaleImg.rows − WINDOW SIZE.height; row +=

WINDOW STEP) {

for ( int col = 0; col <= rescaleImg.cols − WINDOW SIZE.width; col +=

WINDOW STEP) {

Rect windows(col, row, WINDOW SIZE.height, WINDOW SIZE.width); Mat countImg = rescaleImg.clone();

rectangle(countImg, windows, Scalar(255), 1, 8, 0); Mat Roi = countImg(windows);

equalizeHist( Roi, Roi ) ; hog.compute(Roi, descriptors);

Mat(descriptors).convertTo(g, CV 32F);

int predict = rTrees−>predict(g); if ( predict == 1) { vector<float> r; r .push back(factor); r .push back(col); r .push back(row); result .push back(r); } Roi.release() ; countImg.release(); } } resize(rescaleImg,rescaleImg,Size(),resizeFactor,resizeFactor) ; factor ∗= resizeFactor;

(54)

} rescaleImg.release(); gray.release() ; g.release() ; vector<float>().swap(descriptors); return result ; }

V ´ypis 6: Testov´an´ı re´aln´eho obrazu

Tato metoda n´am vr´at´ı velk´e mnoˇzstv´ı pozitivn´ıch v ´yskyt ˚u, kter´e vˇetˇsinou pˇrekr ´yvaj´ı objekt. Uk´azka pozitivn´ı detekce je uvedena na obr´azku 19a. Eliminaci tohoto jevu pro-vedeme pomoc´ı metody cv::groupRectangles(std::vector¡Rect¿& rectList, int groupThre-shold, double eps= 0.2 ). Parametr groupThreshold ud´av´a poˇcet pˇrekr´yvaj´ıc´ıch se ˇctverc ˚u, aby byl v ´yskyt povaˇzov´an za pozitivn´ı. Parametr eps nastavuje relativn´ı rozd´ıl mezi ˇctverci, aby byly jeˇstˇe povaˇzov´any za shodn´e.

Na z´akladˇe testov´an´ı a pozorov´an´ı spr´avnosti vyhodnocen´ı jsem dospˇel k tomu, ˇze vhodn´e nastaven´ı parametr ˚u groupThreshold a eps je pro statistickou kameru

• groupThreshold= 3 • eps= 5

V ´ysledek je uveden na Obr´azku 19b

(a) Pozitivn´ı detekce objektu klasifik´atorem (b) Korekce metodou groupRectangles

References

Related documents

Furthermore Winograd (1987) explains that for achieving language understanding, a computer that “as a language machine, manipulates symbols without respect to

This report covers trends in M&amp;A activity, transaction multiples, and public company valuations in the consumer and commercial specialty finance sectors.. Specifically,

6 Minta daftar persediaan yang mencakup nama barang, kualitas, dan harga per tanggal neraca serta cocokkan dengan buku besar.. 7 Lakukan penelaah analitis (analytical review)

We chose these behavioural tasks because they were more commonly used and are considered as a golden standard to evaluate specific aspects of executive functions, in particular

or information about their expertise, which is repeated mainly with Negation feedback. Social: we mean context information related to a user’s role at work, and

Accordingly, the research problem tackled in this thesis is that learners from previously disadvantaged black schools in Cape Town lack knowledge of hospitality

Looking to both feminist linguistic and social-science research, I argue that Pinterest exhibits a unique traffic in visual and verbal codes—an emerging online rhetoric that allows

This slope is inconsistent with theories of spiral galaxy structure, which predict metal-rich inner regions and relatively metal-poor outer regions; the observed oxygen