VYSOK ´
E U ˇ
CEN´I TECHNICK ´
E V BRN ˇ
E
BRNO UNIVERSITY OF TECHNOLOGYFAKULTA INFORMA ˇ
CN´ICH TECHNOLOGI´I
´
USTAV PO ˇ
C´ITA ˇ
COV ´
E GRAFIKY A MULTIM ´
EDI´I
FACULTY OF INFORMATION TECHNOLOGY
DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA
BOOSTING A EVOLU ˇ
CN´I ALGORITMY
BAKAL ´
A ˇ
RSK ´
A PR ´
ACE
BACHELOR’S THESIS
AUTOR PR ´
ACE
MICHAL MRNU ˇ
ST´IK
AUTHOR
VYSOK ´
E U ˇ
CEN´I TECHNICK ´
E V BRN ˇ
E
BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA INFORMA ˇ
CN´ICH TECHNOLOGI´I
´
USTAV PO ˇ
C´ITA ˇ
COV ´
E GRAFIKY A MULTIM ´
EDI´I
FACULTY OF INFORMATION TECHNOLOGY
DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA
BOOSTING A EVOLU ˇ
CN´I ALGORITMY
BOOSTING AND EVOLUTION
BAKAL ´
A ˇ
RSK ´
A PR ´
ACE
BACHELOR’S THESIS
AUTOR PR ´
ACE
MICHAL MRNU ˇ
ST´IK
AUTHOR
VEDOUC´I PR ´
ACE
Ing. MICHAL HRADI ˇ
S
SUPERVISOR
Abstrakt
Tato pr´ace pˇredstavuje kombinaci AdaBoostu a evoluˇcn´ıho algoritmu. Evoluˇcn´ı algoritmus je pouˇzit pro hled´an´ı line´arn´ı kombinace Haarov´ych pˇr´ıznak˚u. Z t´e je vytvoˇren slab´y klasi-fik´ator pro AdaBoost. Jsou zde pops´any z´aklady klasifikace, Haarovy pˇr´ıznaky a Adaboost. Uvedeny jsou tak´e z´akladn´ı informace o evoluˇcn´ıch algoritmech. D´ale obsahuje teoretick´y popis spojen´ı AdaBoostu a evoluˇcn´ıho algoritmu, doplnˇen´y o nˇekter´e implementaˇcn´ı de-taily. Implementace je testov´ana na obrazov´ych datech jako souˇc´ast syst´emu pro detekci obliˇceje. V´ysledky jsou porovn´any se samostatn´ymi Haarov´ymi pˇr´ıznaky.
Kl´ıˇ
cov´
a slova
boosting, adaboost, evoluˇcn´ı algoritmy, rozpozn´av´an´ı vzor˚u, haarovy pˇr´ıznaky
Abstract
This thesis introduces combination of the AdaBoost and the evolutionary algorithm. The evolutionary algorithm is used to find linear combination of Haar features. This linear combination creates the feature to train weak classifier for AdaBoost. There are described basics of classification, Haar features and the AdaBoost. Next there are basic information about evolutionary algorithms. Theoretical description of combination of the AdaBoost and the evolutionary algorithm is included too. Some implementation details are added too. Implementation is tested on the images as part of the system for face recognition. Results are compared with Haar features.
Keywords
boosting, adaboost, evolutionary algorithms, pattern recognition, haar features
Citace
Michal Mrnuˇst´ık: Boosting a evoluˇcn´ı algoritmy, bakal´aˇrsk´a pr´ace, Brno, FIT VUT v Brnˇe, 2008
Boosting a evoluˇ
cn´ı algoritmy
Prohl´
aˇ
sen´ı
Prohlaˇsuji, ˇze jsem tuto bakal´aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım pana Ing. Michala Hradiˇse.
. . . . Michal Mrnuˇst´ık
12. kvˇetna 2008
Podˇ
ekov´
an´ı
Pˇredevˇs´ım bych chtˇel podˇekovat vedouc´ımu pr´ace Ing. Michalu Hradiˇsovi za kvalitn´ı veden´ı a podporu.
c
Michal Mrnuˇst´ık, 2008.
Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe in-formaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´avnˇen´ı autorem je nez´akonn´e, s v´yjimkou z´akonem definovan´ych pˇr´ıpad˚u.
Obsah
1 Uvod´ 2
2 Klasifikace, rozpozn´av´an´ı vzor˚u a strojov´e uˇcen´ı 3
2.1 Klasifikace . . . 3
2.2 Uˇcen´ı klasifik´ator˚u . . . 3
2.3 AdaBoost . . . 4
2.4 Haarovy pˇr´ıznaky . . . 4
2.5 Kask´ada klasifik´ator˚u . . . 6
3 Evoluˇcn´ı algoritmy 8 3.1 Kˇr´ıˇzen´ı . . . 9
3.2 Mutace . . . 10
3.3 V´ybˇer . . . 10
4 Spojen´ı AdaBoostu a evoluˇcn´ıch algoritm˚u 12 4.1 Genom a pˇr´ıznaky . . . 12
4.2 Fitness funkce . . . 13
4.3 Pr˚ubˇeh evoluˇcn´ıho algoritmu . . . 13
5 Implementace 15 5.1 Tˇr´ıda TGAHaarFeatures . . . 15
5.2 Evoluˇcn´ı algoritmus . . . 15
5.3 Vyrovn´avac´ı pamˇet’ . . . 16
6 Testy 17 6.1 Parametry evoluˇcn´ıho algoritmu . . . 17
6.2 Tr´enovac´ı a testovac´ı data . . . 20
6.3 ROC kˇrivka . . . 20
6.4 Rychlost klasifik´atoru . . . 21
6.5 V´ysledky . . . 21
7 Z´avˇer 23 7.1 Genom, mutace a kˇr´ıˇzen´ı . . . 23
7.2 Fitness . . . 24
Kapitola 1
´
Uvod
ˇ
Clovˇek se odmaliˇcka uˇc´ı rozezn´avat vˇeci okolo sebe pomoc´ı vˇsech sv´ych smysl˚u. S rozvojem umˇel´e inteligence se tak´e stroje st´avaj´ı schopn´ymi uˇcit se a pozn´avat sv´e okol´ı. T´ımto se zab´yv´a strojov´e uˇcen´ı a rozpozn´av´an´ı vzor˚u. Pˇri z´ısk´av´an´ı informac´ı a komunikaci s okol´ım jsou nejd˚uleˇzitˇejˇs´ımi smysly zrak a sluch. Bylo vymyˇsleno mnoho metod jak zaˇr´ıdit, aby stroj slyˇsel nebo vidˇel a byl schopen tuto informaci d´ale zpracovat. Ty b´yvaj´ı vˇetˇsinou specializovan´e na jeden konkr´etn´ı probl´em. Existuj´ı tak syst´emy pro rozpozn´av´an´ı obliˇcej˚u, automobil˚u ˇci dalˇs´ıch objekt˚u v obraze.
Z´akladn´ı informace o rozpozn´av´an´ı vzor˚u a strojov´em uˇcen´ı jsou uvedeny v kapitole 2. D´ale tato kapitola popisuje algoritmus pro strojov´e uˇcen´ı AdaBoost, z´ısk´av´an´ı informace z obrazu pomoc´ı Haarov´ych pˇr´ıznak˚u a spojen´ı v´ıce klasifik´ator˚u pomoc´ı tzv. kask´ady.
U strojov´eho uˇcen´ı je ˇcasto potˇreba vybrat vhodn´e ˇreˇsen´ı z velk´eho poˇctu moˇznost´ı. Pokud nen´ı k dispozici vhodn´y matematick´y postup, lze pouˇz´ıt evoluˇcn´ı algoritmy. Ty jsou zaloˇzeny na simulaci pˇrirozen´eho v´ybˇeru, kter´y prob´ıh´a v pˇr´ırodˇe. Schopnost pˇreˇz´ıt je vyj´adˇrena schopnost´ı ˇreˇsit urˇcit´y probl´em. Evoluˇcn´ım algoritm˚um se vˇenuje kapitola 3. Problematika evoluˇcn´ıch algoritm˚u je velmi rozs´ahl´a, proto jsou pops´any jen principy a informace nutn´e k pochopen´ı dalˇs´ıch kapitol.
C´ılem t´eto pr´ace je vytvoˇrit funkˇcn´ı spojen´ı AdaBoostu a evoluˇcn´ıho algoritmu. V ide´aln´ım pˇr´ıpadˇe bychom tak chtˇeli dos´ahnout lepˇs´ıch v´ysledk˚u, neˇz poskytuj´ı st´avaj´ıc´ı metody. Tato f´aze byla ˇreˇsena v r´amci semestr´aln´ıho projektu. Prezentovan´e ˇreˇsen´ı bylo rozˇs´ıˇreno o pouˇzit´ı Haarov´ych pˇr´ıznak˚u, proto je ve st´avaj´ıc´ı podobˇe pouˇziteln´a jen pro zpracov´an´ı obrazu. Teoretick´e ˇreˇsen´ı je pops´ano v kapitole 4.
Toto spojen´ı bylo implementov´ano a pˇrid´ano do jiˇz existuj´ıc´ıho projektu, kter´y je vyv´ıjen na Fakultˇe informaˇcn´ıch technologi´ı Vysok´eho uˇcen´ı technick´eho v Brnˇe. Jedn´a se o syst´em slouˇz´ıc´ı k v´yzkumu klasifik´ator˚u pro detekci objekt˚u v obraze. Podrobnˇe je pops´an v ˇcl´anku [3]. Vybran´e implementaˇcn´ı detaily jsou uvedeny v kapitole 5. Zdrojov´e k´ody se nach´azej´ı na pˇriloˇzen´em CD.
V´ysledn´y syst´em byl tr´enov´an a testov´an na obrazov´ych datech pro detekci obliˇceje. Kapitola 6 pojedn´av´a o konfiguraci, jenˇz byla pouˇzita, a proveden´ych testech. Obsahuje informace o tr´enovac´ıch a testovac´ıch datech. V´ysledky test˚u jsou zhodnoceny a porovn´any s v´ysledky, kter´e byly z´ısk´any za pouˇzit´ı samostatn´ych Haarov´ych pˇr´ıznak˚u.
Pˇri vytv´aˇren´ı t´eto pr´ace bylo odhaleno mnoho nedostatk˚u v evoluˇcn´ım algoritmu i cel-kov´em n´avrhu metody. V z´avˇereˇcn´e kapitole 7 jsou uvedeny jak moˇznosti ˇreˇsen´ı tˇechto nedostatk˚u, tak i jin´a vylepˇsen´ı, jenˇz by byla realizovateln´a pˇri dalˇs´ım v´yvoji.
Kapitola 2
Klasifikace, rozpozn´
av´
an´ı vzor˚
u
a strojov´
e uˇ
cen´ı
V t´eto kapitole se dozv´ıte o rozpozn´av´an´ı vzor˚u (viz [1]) a dalˇs´ı informace s t´ım spojen´e. Syst´emy pro rozpozn´av´an´ı vzor˚u se skl´adaj´ı z v´ıce ˇc´ast´ı. Nejdˇr´ıve je nutno naˇc´ıst vstupn´ı data a pokud nebudeme pracovat pˇr´ımo s nimi, tak z nich spoˇc´ıtat pˇr´ıznaky. Potom pˇrijde na ˇradu klasifik´ator, kter´y urˇc´ı tˇr´ıdu dat. Na t´e z´avis´ı v´ystup syst´emu.
2.1
Klasifikace
Klasifikace je pˇriˇrazov´an´ı vzork˚u dat do tˇr´ıd. Vzorkem dat m˚uˇze b´yt cokoli s ˇc´ım pracujeme, ale vˇetˇsinou se jedn´a o vektor ˇc´ısel. Tˇr´ıdou je oblast, do kter´e m˚uˇze vzorek dat patˇrit. Klasifik´ator je pravidlo, kter´e pˇriˇrad´ı vzorek dat do tˇr´ıdy. Pokud se napˇr´ıklad snaˇz´ıme o rozpozn´an´ı ˇreˇci, tak vzorek dat je zvukov´y sign´al. Tˇr´ıdami jsou jednotliv´a slova nebo znaky. Pˇri detekci obliˇceje je vzorkem dat oblast obrazu. Jednou tˇr´ıdou jsou obliˇceje, druhou vˇse ostatn´ı (tzv. pozad´ı).
Vstupem klasifik´atoru mohou b´yt pˇr´ımo data, kter´a ale b´yvaj´ı mnohorozmˇern´a (napˇr. obraz m´a tolik rozmˇer˚u kolik pixel˚u), a tak se z nich ˇcastˇeji extrahuj´ı tzv. pˇr´ıznaky (fea-tures). T´ım sn´ıˇz´ıme poˇcet rozmˇer˚u dat, nejl´epe na jeden. Bylo vypracov´ano mnoho metod jak toho dos´ahnout. Pro obecn´a data lze pouˇz´ıt napˇr´ıklad PCA (Principal components analysis) nebo LDA (Linear discriminant analysis). Ty jsou zaloˇzeny na lin´arn´ı kombinaci a statistick´ych metod´ach. Pro obrazov´a data se velmi osvˇedˇcily Haarovy pˇr´ıznaky (viz 2.4). Nejjednoduˇsˇs´ım pˇr´ıkladem klasifik´atoru je mezn´ı hodnota (tzv. treshold), ta tvoˇr´ı hranici mezi tˇr´ıdami. Vˇsechny vzorky menˇs´ı neˇz mez jsou pˇriˇrazeny do jedn´e tˇr´ıdy, vˇetˇs´ı do druh´e. Pokud je tˇreba rozliˇsovat v´ıce tˇr´ıd, pouˇzijeme v´ıce mezn´ıch hodnot a tˇr´ıdy budou ohraniˇceny ze dvou stran.
U klasifik´atoru sledujeme nˇekolik hodnot. Celkov´a chyba je pomˇer ˇspatnˇe urˇcen´ych vzork˚u k celkov´emu poˇctu. D´ale ve vztahu k jedn´e tˇr´ıdˇe sledujeme poˇcet prvk˚u, kter´e byly do tˇr´ıdy chybnˇe pˇriˇrazeny (false positive) a tˇech, co do tˇr´ıdy patˇr´ı, ale byly pˇriˇrazeny jinam (false negative).
2.2
Uˇ
cen´ı klasifik´
ator˚
u
Pokud m´a klasifik´ator dobˇre urˇcovat pˇr´ısluˇsnost k tˇr´ıdˇe, mus´ı se to nauˇcit. K tomu potˇrebujeme tr´enovac´ı mnoˇzinu dat. Jestli chceme zjistit nakolik bylo tr´enov´an´ı ´uspˇeˇsn´e, je
tˇreba m´ıt nav´ıc testovac´ı mnoˇzinu dat. Data v obou mnoˇzin´ach se mus´ı liˇsit, ale mus´ı b´yt podobn´a re´aln´emu nasazen´ı klasifik´atoru. To znamen´a, ˇze pokud bude syst´em pouˇz´ıv´an v urˇcit´em prostoru (laboratoˇr, tov´arn´ı hala), mˇely by data poch´azet odtud. V podstatˇe staˇc´ı, pokud z dan´eho prostoru budou poch´azet vzorky pozad´ı (obraz haly, rachot stroj˚u). Vzorky detekovan´e tˇr´ıdy (lidsk´y hlas, obrazy obliˇceje) mohou b´yt poˇr´ızeny jinde.
Klasifik´ator se snaˇz´ı dos´ahnout co nejlepˇs´ı ´uspˇeˇsnosti na tr´enovac´ıch datech. Na testo-vac´ı mnoˇzinˇe zkouˇs´ıme, jak je klasifik´ator pouˇziteln´y i pro jin´a data neˇz ta, na kter´ych byl tr´enov´an. Se zvyˇsov´an´ım pˇresnosti na tr´enovac´ıch datech m˚uˇze zaˇc´ıt r˚ust chyba na tetso-vac´ıch datech. Doch´az´ı k tzv. pˇretr´enov´an´ı. Pˇr´ıˇcinou je pˇr´ıliˇsn´e pˇrizp˚usoben´ı tr´enovac´ım dat˚um, kter´e nenech´av´a ˇz´adn´y prostor pro odliˇsnosti testovac´ıch dat. Proto je nutn´e tr´enov´an´ı vˇcas ukonˇcit.
Existuj´ı dva zp˚usoby uˇcen´ı. Uˇcen´ı s uˇcitelem (supervised learning) a uˇcen´ı bez uˇcitele (unsupervised learning). Pˇri uˇcen´ı s uˇcitelem tr´enovac´ı data obsahuj´ı informaci o tˇr´ıdˇe, do kter´e patˇr´ı. D´ıky tomu m˚uˇze klasifik´ator sledovat, jak moc se mu daˇr´ı urˇcit spr´avnou tˇr´ıdu a podle toho se pˇrizp˚usobovat. U uˇcen´ı bez uˇcitele klasifik´ator ˇz´adnou informaci o tˇr´ıdˇe nedost´av´a. Snaˇz´ı se v datech naj´ıt podobnost a podle toho je rozdˇelit do pˇredem dan´eho poˇctu shluk˚u (ten odpov´ıd´a poˇctu tˇr´ıd). Svou ´uspˇeˇsnost hodnot´ı podle toho, jak se mu to podaˇrilo. Nev´yhodn´e je, ˇze algoritmus nepozn´a, zda tˇr´ıdy rozdˇelil dobˇre, ani kter´a tˇr´ıda je kter´a. Proto se pˇri uˇcen´ı klasifik´ator˚u vˇetˇsinou vyuˇz´ıv´a uˇcen´ı s uˇcitelem.
2.3
AdaBoost
AdaBoost je algoritmus, kter´y vyuˇz´ıv´a line´arn´ı kombinace slab´ych klasifik´ator˚u k dosaˇzen´ı lepˇs´ıho v´ysledku. U slab´eho klasifik´atoru n´am staˇc´ı, kdyˇz m´a chybu menˇs´ı neˇz 50 %. Na zaˇc´atku je kaˇzd´emu vzorku pˇriˇrazena v´aha, kter´a se ˇcasem mˇen´ı. Pokud je tˇr´ıda vzorku urˇcena ˇspatnˇe, jeho v´aha stoup´a, pokud dobˇre, tak kles´a. To znamen´a, ˇze se klade vˇetˇs´ı d˚uraz na ˇspatnˇe klasifikovan´e vzorky. To zaruˇcuje, ˇze chyba postupnˇe kles´a a ve vˇetˇsinˇe pˇr´ıpad˚u nedoch´az´ı k pˇretr´enov´an´ı. Na druhou stranu je t´ım zp˚usobna citlivost v˚uˇci ˇsumu. V´ıce o AdaBoostu lze naj´ıt v [2] a [8], z kter´ych vych´az´ı algoritmus 2.1.
2.4
Haarovy pˇ
r´ıznaky
Haarovy pˇr´ıznaky dobˇre uchov´avaj´ı informace o obrazu, a proto se pouˇz´ıvaj´ı pro obrazov´a data. Lze je rychle spoˇc´ıtat a pokud je dobˇre vybereme (viz n´ıˇze), z´avis´ı jen na t´e ˇc´asti obrazu, kter´a je pro klasifikaci podstatn´a. D´ıky tomu je lze ´uspˇeˇsnˇe pouˇz´ıt pro tvorbu klasifik´ator˚u.
Na obr´azku 2.2 jsou dvojbarevn´e obd´eln´ıky. To jsou pˇr´ıklady tvar˚u, kter´ych mohou Haarovy pˇr´ıznaky nab´yvat. Jejich velikost se m˚uˇze libovolnˇe mˇenit, ale pomˇer b´ıl´e a ˇcern´e ˇ
c´asti mus´ı b´yt zachov´an. Pro obraz 24×24 pixel˚u je pˇr´ıznak˚u v´ıce neˇz 180 000. Z tohoto poˇctu je nutno vybrat ty, kter´ymi jednotliv´e tˇr´ıdy nejl´epe rozliˇs´ıme. Klasifik´atoru vˇetˇsinou nestaˇc´ı jeden pˇr´ıznak, ale je nutno pouˇz´ıt jejich kombinaci. V [7] je pro slab´y klasifik´ator pouˇzit pouze jeden pˇr´ıznak, coˇz je kompenzov´ano pouˇzit´ım v´ıce slab´ych klasifik´ator˚u (viz 2.3).
Obraz, kter´y vstupuje do syst´emu, mus´ı b´yt pˇreveden do stupˇn˚u ˇsedi. Hodnotou bodu je intenzita barvy v tomto bodˇe. Pˇr´ıznak spoˇc´ıt´ame tak, ˇze pˇriloˇz´ıme obd´eln´ık na obraz, seˇcteme hodnoty pixel˚u v b´ıl´e oblasti a odeˇcteme od souˇctu pixel˚u v ˇcern´e oblasti. Pokud bychom mˇeli pˇri v´ypoˇctu proch´azet vˇsechny pixely dan´e oblasti, trval by pˇr´ıliˇs dlouho.
1. Na vstupu jsou tr´enovac´ı data (x1, y1). . .(xm, ym), kdexi∈X,yi∈Y ={−1,+1}.
X je mnoˇzina vstupn´ıch dat. Y je mnoˇzina tˇr´ıd.
2. Kaˇzd´emu vzorku dat ipˇriˇrad’ poˇc´ateˇcn´ı v´ahuD1(i) = 1/m.
3. T je poˇcet prvk˚u (slab´ych klasifik´ator˚u) v´ysledn´eho siln´eho klasifik´atoru. Prot= 1, . . . T:
• Pomoc´ı vahDt, vyber slab´y klasifik´ator kt:X→ {−1,+1} s nejmenˇs´ı chybou (souˇctem vah vzork˚u, kter´e slab´y klasifik´ator ˇspatnˇe urˇcil)t=
m
P
i:kt6=yi Dt(i).
• αt= 12ln1−tt
• Pˇrepoˇc´ıtej v´ahy vzork˚u:
Dt+1(i) = Dt(i) Zt × ( e−αt kdyˇz k t(xi) =yi eαt kdyˇz k t(xi)6=yi Dt+1(i) = Dt(i) exp (−αtyikt(xi)) Zt
Zt je normalizaˇcn´ı faktor, zajiˇst’uj´ıc´ı, ˇze Dt m´a vlastnosti distribuˇcn´ı funkce (integr´al je roven jedn´e) a spoˇc´ıt´ame jej:
Zt= m
X
i=1
Dt(i) exp (−αtyikt(xi))
4. V´ysledn´y siln´y klasifik´ator je:
K(x) = +1 kdyˇz T P t=1 αtkt(x)≥0 −1 kdyˇz T P t=1 αtkt(x)<0
Algoritmus 2.1: AdaBoost podle [2] a [8]
Obr´azek 2.2: Pˇr´ıklady haarov´ych pˇr´ıznak˚u
Tento probl´em ˇreˇs´ı tzv. integr´aln´ı obraz. U integr´aln´ıho obrazu je hodnota v jednom bodu souˇctem intenzit ve vˇsech bodech od tohoto bodu nahoru a doleva. Z toho lze jiˇz jednoduˇse spoˇc´ıtat souˇcet intenzit v obd´eln´ıkov´e oblasti.
obr´azek 2.3. Je na nˇem zn´azornˇen integr´aln´ı obraz, body a oblasti v nˇem. Naˇs´ım c´ılem je zjistit hodnotu oblasti D. Body w, x, y, z mus´ı b´yt voleny jako na obr´azku 2.3.A, B, C, D
jsou souˇcty intenzit v jednotliv´ych oblastech. Z rovnic
w = A
x = A +B
y = A +B+C+D
z = A +C
potˇrebujeme vyj´adˇritDpomoc´ıw, x, y, z. Abychom toho dos´ahli, vyn´asob´ıme nˇekter´e rov-nice −1: w = A −x = −A−B y = A +B+C+D −z = −A−C Z toho z´ısk´ameD=w−x+y−z.
Obr´azek 2.3: V´ypoˇcet obd´eln´ıkov´e oblasti pomoc´ı integr´aln´ıho obrazu
2.5
Kask´
ada klasifik´
ator˚
u
V [7] je kromˇe AdaBoostu a Haarov´ych pˇr´ıznak˚u uveden i postup jak v´yraznˇe urychlit klasifikaci. Je zobrazen na obr´azku 2.4 a spoˇc´ıv´a ve zˇretˇezen´ı klasifik´ator˚u. Ty postupnˇe zpracov´avaj´ı vzorky dat a rozhoduj´ı, zda patˇr´ı do detekovan´e tˇr´ıdy. Pokud kter´ykoli klasi-fik´ator rozhodne, ˇze tam vzorek nepatˇr´ı, je zahozen a k dalˇs´ımu zpracov´an´ı uˇz nedoch´az´ı. Klasifik´ator je nutno tr´enovat tak, aby zahodil co nejm´enˇe prvk˚u, kter´e do tˇr´ıdy patˇr´ı (co nejmenˇs´ı false negative). Na konci z˚ustanou vzorky, co do tˇr´ıdy patˇr´ı. M˚uˇze to b´yt i za cenu v´ıce vzork˚u do tˇr´ıdy chybnˇe zaˇrazen´ych (vyˇsˇs´ı false positive).
klasifikátor
1
klasifikátor2
klasifikátor3
data zahozené vzorky další zpracováníKapitola 3
Evoluˇ
cn´ı algoritmy
Pˇr´ıroda a jej´ı z´akony se uk´azaly jako dobr´a inspirace pˇri v´yvoji v´ypoˇcetn´ıch metod. Z´aklady pro evoluˇcn´ı algoritmy poloˇzil Charles Darwin svou teori´ı pˇrirozen´eho v´ybˇeru. Druhy ob´yvaj´ıc´ı naˇsi planetu se jiˇz po miliony let vyv´ıjely z jednobunˇeˇcn´ych organism˚u. Pˇreˇz´ıvaj´ı ty, kter´e se dok´azaly pˇrizp˚usobit okoln´ım podm´ınk´am l´epe neˇz ostatn´ı.
Evoluˇcn´ı algoritmy se pouˇz´ıvaj´ı k ˇreˇsen´ı sloˇzit´ych optimalizaˇcn´ıch probl´em˚u, kde neexis-tuje jin´y postup, nebo je ˇcasovˇe pˇr´ıliˇs n´aroˇcn´y. Pracuj´ı na podobn´em principu jako evoluce v pˇr´ırodˇe. M´ısto jednotliv´ych organism˚u m´ame jedince pˇredstavuj´ıc´ı ˇreˇsen´ı probl´emu. Je-dinec b´yv´a definov´an svou vnitˇrn´ı reprezentac´ı (tzv. genomem) a hodnotou fitness, kter´a pˇredstavuje ˇc´ıselnˇe vyj´adˇrenou kvalitu ˇreˇsen´ı, kter´e jedinec poskytuje. Genom m´ıv´a r˚uznou reprezentaci. Nejˇcastˇejˇs´ı je bin´arn´ı nebo re´aln´a, ale lze pouˇz´ıt cokoli, co bude vhodn´e (znaky, stromy, atd.). Fitness funkce je kl´ıˇcov´ym bodem pˇri n´avrhu evoluˇcn´ıho algoritmu. Mˇela by b´yt v´ypoˇcetnˇe co nejm´enˇe n´aroˇcn´a. Poˇcet vyhodnocen´ı se pohybuje v ˇr´adech tis´ıc˚u, aˇz mili´on˚u. D´ale mus´ı platit, ˇze ˇc´ım vyˇsˇs´ı (nebo niˇzˇs´ı, pokud hled´ame minimum) je hodnota fitness, t´ım kvalitnˇejˇs´ı ˇreˇsen´ı jedinec poskytuje.
Podle [4] rozliˇsujeme evoluˇcn´ı algoritmy pˇredevˇs´ım na genetick´e algoritmy, evoluˇcn´ı strategie a genetick´e programov´an´ı.
• Genetick´e algoritmy maj´ı bin´arnˇe k´odovan´e jedince. Mutace i kˇr´ıˇzen´ı se projevuje na ´
urovni jednotliv´ych bit˚u.
• Evoluˇcn´ı strategie reprezentuje jedince jako vektor re´aln´ych ˇc´ısel. Pro kˇr´ıˇzen´ı a mutaci lze pouˇz´ıt jak metod pouˇz´ıvan´ych pro genetick´e algoritmy, tak r˚uzn´ych vektorov´ych operac´ı.
• Genetick´e programov´an´ı je vytv´aˇren´ı algoritm˚u pomoc´ı evoluˇcn´ıho procesu.
Na obr´azku 3.1 jsou jednotliv´e f´aze evoluˇcn´ıho algoritmu. Sch´ema odpov´ıd´a implemen-taci popisovan´e v kapitole 5 i pr˚ubˇehu popisovan´emu v kapitole 4.3. Na zaˇc´atku je n´ahodnˇe vygenerov´ana populace jedinc˚u. Je vyhodnocena jejich fitness. N´aslednˇe se kontroluje, zda nebyla splnˇena nˇekter´a ukonˇcovac´ı podm´ınka (napˇr. dosaˇzen´ı urˇcit´e hodnoty fitness, ma-xim´aln´ıho poˇctu generac´ı atd.). Pak jsou vybr´ani rodiˇce n´asleduj´ıc´ı populace (viz 3.3). Kˇr´ıˇzen´ım a mutac´ı z nich z´ısk´ame potomky a vyhodnot´ıme jejich fitness. V´ybˇerem z rodiˇc˚u a potomk˚u nahrad´ıme st´avaj´ıc´ı populaci. Tak algoritmus pokraˇcuje, dokud nen´ı splnˇena ukonˇcovac´ı podm´ınka.
Ve zbytku t´eto kapitoly jsou pˇr´ıklady postup˚u pro jednotliv´e kroky evoluˇcn´ıho algoritmu. Kter´ykoli z nich lze nahradit jin´ym (vhodnˇejˇs´ım) postupem pro konkr´etn´ı probl´em.
Obr´azek 3.1: Sch´ema evoluˇcn´ıho algoritmu podle [5]
3.1
Kˇ
r´ıˇ
zen´ı
Kˇr´ıˇzen´ım se kombinuj´ı vlastnosti dvou jedinc˚u (v nˇekter´ych pˇr´ıpadech lze pouˇz´ıt jedinc˚u i v´ıce, ale vˇetˇsinou k tomu nen´ı d˚uvod). C´ılem je vznik jedince lepˇs´ıho neˇz kter´ykoli z rodiˇc˚u. Postupy mohou b´yt velmi rozmanit´e a lze je r˚uznˇe kombinovat. Mezi nejpouˇz´ıvanˇejˇs´ı patˇr´ı segmentov´e kˇr´ıˇzen´ı, kter´e je zn´azornˇeno na obr´azku 3.2 a pops´ano v algoritmu 3.3.
Obr´azek 3.2: Segmentov´e kˇr´ıˇzen´ı
Existuj´ı i varianty, kde se generuje v´ıce bod˚u kˇr´ıˇzen´ı. Napˇr´ıklad u dvou bod˚u vzniknou tˇri ˇc´astiA,B aC. Potomci vzniknou v´ymˇenou ˇc´ast´ıB.
Toto kˇr´ıˇzen´ı lze pouˇz´ıt i na genom reprezentovan´y vektorem re´aln´ych ˇc´ısel, jen m´ısto bit˚u jsou sloˇzky vektoru. Dalˇs´ı pouˇzitelnou metodou je kˇr´ıˇzen´ı pr˚umˇerem. Ze sloˇzek rodiˇcovsk´ych vektor˚u r1 ar2 vznikne jedin´y potomek s odpov´ıdaj´ıc´ı sloˇzkoup= r1+r2
2 .
• Vyber dva rodiˇceA, B.
• N´ahodnˇe zvol bod kˇr´ıˇzen´ı.
• A0 vznikne z t´e ˇc´asti A, kter´a leˇz´ı pˇred bodem kˇr´ıˇzen´ı a z ˇc´asti B leˇz´ıc´ı za bodem kˇr´ıˇzen´ı.
• B0 vznikne z t´e ˇc´asti B, kter´a leˇz´ı pˇred bodem kˇr´ıˇzen´ı a z ˇc´asti A leˇz´ıc´ı za bodem kˇr´ıˇzen´ı.
Algoritmus 3.3: Segmentov´e kˇr´ıˇzen´ı
rodiˇcovsk´ych vektor˚u a ˇc´ıslox v intervaluh0,1i jsou vypoˇc´ıt´any sloˇzky potomk˚u:
p1 = xr1+ (1−x)r2 p2 = (x−1)r1+xr2
3.2
Mutace
V pr˚ubˇehu evoluˇcn´ıho algoritmu je vhodn´e, kdyˇz se v populaci objev´ı prvky, kter´ych nelze dos´ahnout kˇr´ıˇzen´ım. To zajiˇst’uje pr´avˇe mutace. Algoritmus 3.4 popisuje z´akladn´ı postup mutace pro bin´arn´ı genom. U re´aln´ych genom˚u se neprov´ad´ı negace, ale napˇr´ıklad souˇcet s n´ahodnˇe generovan´ym ˇc´ıslem v pˇredem dan´em rozsahu.
• Je d´ana pravdˇepodobnost mutacepm ∈ h0,1i.
• Pro kaˇzd´y bit bv genomu:
– N´ahodnˇe generuj x∈ h0,1i. – Pokudx≤pm negujb.
Algoritmus 3.4: Mutace bin´arn´ıho genomu
3.3
V´
ybˇ
er
Existuj´ı r˚uzn´e postupy jak vybrat jedince, kteˇr´ı se stanou rodiˇci n´asleduj´ıc´ı populace. Vˇetˇsinou jsou zaloˇzeny na n´ahodn´em v´ybˇeru, kde jedinci s vyˇsˇs´ı fitness maj´ı vˇetˇs´ı ˇsanci st´at se rodiˇci. Takov´ym je i ruleta (roulete wheel, fitness proportionate selection).
Princip je velmi jednoduch´y. Na obr´azku 3.5 vid´ıte kruh rozdˇelen´y na ˇc´asti. P´ısmeny jsou oznaˇceny jedinci. Velikost pol´ıˇcka je urˇcena hodnotou fitness. V´ybˇer se prov´ad´ı tak, ˇze se
”roztoˇc´ı ruˇciˇcka“ a prvek, na kter´y uk´aˇze, je zaˇrazen mezi rodiˇce. Pravdˇepodobnost, ˇze bude jedinec i vybr´an je: pi = PNfi
j=1fj
, kde N je velikost populace a f je hodnota fitness. V´ybˇer prob´ıh´a tolikr´at, kolik potˇrebujeme rodiˇc˚u (jedinec m˚uˇze b´yt vybr´an i v´ıckr´at).
Kapitola 4
Spojen´ı AdaBoostu a evoluˇ
cn´ıch
algoritm˚
u
Adaboost i evoluˇcn´ı algoritmy jsou samy o sobˇe pouˇziteln´e pro uˇcen´ı klasifik´ator˚u. Kaˇzd´y pˇr´ıstup m´a sv´e v´yhody a mohou se vz´ajemnˇe doplˇnovat. To je dobˇre uk´az´ano v [6], kde je evoluˇcn´ıho algoritmu pouˇzito k prohled´av´an´ı prostoru Haarov´ych pˇr´ıznak˚u. Nejlepˇs´ı pˇr´ıznak slouˇz´ı k vytvoˇren´ı slab´eho klasifik´atoru pro AdaBoost.
Jak uˇz bylo uvedeno v kapitole 2.4, Haarovy pˇr´ıznaky jsou vhodn´e pro zpracov´an´ı ob-razu. Jejich spojen´ı s AdaBoostem m´a vˇsak jeden mal´y nedostatek. V pozdˇejˇs´ıch f´az´ıch AdaBoostu uˇz je velmi obt´ıˇzn´e nal´ezt Haar˚uv pˇr´ıznak, kter´y by pˇrin´aˇsel nˇejakou novou in-formaci. To lze ˇreˇsit v´ıce zp˚usoby. Jednou z moˇznost´ı, jak se s t´ım vyrovnat, je pouˇz´ıt v´ıce Haarov´ych pˇr´ıznak˚u pro jeden slab´y klasifik´ator. Spojen´ı m˚uˇze tvoˇrit napˇr´ıklad line´arn´ı kombinace (viz 4.1). Evoluˇcn´ı algoritmus je pak moˇzno vyuˇz´ıt k hled´an´ı vhodn´e lin´arn´ı kombinace pˇr´ıznak˚u pro slab´y klasifik´ator, jako se v [6] hledaj´ı jen pˇr´ıznaky.
4.1
Genom a pˇ
r´ıznaky
Genom je tvoˇren vektorem re´aln´ych ˇc´ısel −→v = a1, b1, a2, b2, . . . , am, bm, kde am, bm ∈
h−1,1i. Re´aln´e ˇc´ıslobmse pˇri vyhodnocen´ı mus´ı pˇrev´est na cel´e ˇc´ıslo, kter´e je identifikaˇcn´ım ˇ
c´ıslem konkr´etn´ıho Haarova pˇr´ıznaku. Pˇri pˇrevodu je nejdˇr´ıve nutno spoˇc´ıtatim=|bm| ·N, kde N je celkov´y poˇcet Haarov´ych pˇr´ıznak˚u sn´ıˇzen´y o jedna, a zaokrouhlit i. Potom pro vzorek datxz´ısk´ame hodnotu pˇr´ıznakuH(x) =a1hi1(x) +a2hi2+· · ·+amhim, kdehim(x)
je hodnota Haarova pˇr´ıznaku s identifikaˇcn´ım ˇc´ıslemim.
V´ysledn´a hodnota pˇr´ıznaku, kter´y je pouˇzit v slab´em klasifik´atoru, je:
H(x) =a1h1(x) +a2h2(x) +· · ·+anhn(x)
Kde an∈ R,hn(x) je hodnota Haarova pˇr´ıznaku hn pro vzorek datx.
Aby se daly pˇr´ıznaky d´ale zpracov´avat, je tˇreba omezit jejich hodnotu. V naˇsem pˇr´ıpadˇe se hodnota pˇr´ıznaku H(x) nach´az´ı v intervaluh−4,4i. Toho je dosaˇzeno normalizac´ı sloˇzek
a1, a2, . . . , anvektoru−→v tak, aby d´elka byla 1. Hodnoty Haarov´ych pˇr´ıznak˚u jsou v intervalu
h−2,2i. Abychom nepˇrekroˇcili rozsahh−4,4i, je nutn´e hodnotu kaˇzd´eho Haarova pˇr´ıznaku vydˇelit 2. Hodnota pˇr´ıznaku z´ıskan´eho pomoc´ı evoluˇcn´ıho algoritmu vˇcetnˇe normalizace je:
H(x) = Pma1 j=1aj ·hi1(x) 2 +· · ·+ am Pm j=1aj ·him(x) 2
4.2
Fitness funkce
Fitness funkce se snaˇz´ı vyj´adˇrit kvalitu slab´eho klasifik´atoru, kter´y lze s dan´ym pˇr´ıznakem vytvoˇrit. To lze jednoduˇse vyj´adˇrit vzd´alenost´ı pr˚umˇern´ych hodnot obou tˇr´ıd. Ta je poˇc´ıt´ana z tr´enovac´ıch vzork˚u. Pˇri v´ypoˇctu je nutno vz´ıt v ´uvahu v´ahy tr´enovac´ıch vzork˚u, kter´e urˇcuje AdaBoost. Hodnota pˇr´ıznaku H(x) je pakWH(x) =H(x)·w(x), kde w(x) je v´aha vzorku x. Celkov´a hodnota fitness pˇri poˇctech tr´enovac´ıch vzork˚u v jednotliv´ych tˇr´ıd´ach
XAa XB se pak spoˇc´ıt´a: F = XA X xA=1 H(xA) WH(xA) − XB X xB=1 H(xB) WH(xB)
Vyˇsˇs´ı fitness tak maj´ı pˇr´ıznaky, kter´e vytv´aˇrej´ı rozloˇzen´ı hodnot podobn´a obr´azku 4.1. V´aˇzen´e pr˚umˇery obou tˇr´ıd jsou dost rozd´ıln´e a fitness takov´ychto pˇr´ıznak˚u bude vy-sok´a. Dobr´y klasifik´ator lze vˇsak vytvoˇrit i z rozloˇzen´ı na obr´azku 4.2, ale pr˚umˇern´e hod-noty se pˇr´ıliˇs neliˇs´ı. Pˇr´ıznaky vytv´aˇrej´ıc´ı takov´a rozloˇzen´ı maj´ı n´ızkou fitness a s nejvˇetˇs´ı pravdˇepodobnost´ı zaniknou.
Obr´azek 4.1: Zn´azornˇen´ı vhodn´eho rozloˇzen´ı hodnot pro fitness
Obr´azek 4.2: Zn´azornˇen´ı nevhodn´eho rozloˇzen´ı hodnot pro fitness
4.3
Pr˚
ubˇ
eh evoluˇ
cn´ıho algoritmu
Poˇc´ateˇcn´ı generace je generov´ana n´ahodnˇe. Je vhodn´e sloˇzit poˇc´ateˇcn´ı populaci z v´ıce ˇ
vektory jen s kladn´ymi sloˇzkami a druh´a se z´aporn´ymi. D´ıky tomuto postupu je vˇetˇs´ı pravdˇepodobnost, ˇze se vyuˇzij´ı dobr´e vlastnosti z obou rozsah˚u.
V´ybˇer rodiˇc˚u zajiˇst’uje ruleta. Ta je pos´ana v kapitole 3.3. Poˇcet rodiˇc˚u je stejn´y jako velikost populace. D´ıky ruletˇe se vˇsak nˇekteˇr´ı mohou zaˇradit mezi rodiˇce v´ıckr´at a jin´ı v˚ubec. Z´aleˇz´ı na jejich fitness.
Kˇr´ıˇzen´ı se ´uˇcastn´ı rodiˇce po dvou podle toho, jak byli vybr´ani ruletou. Na pravdˇepodobnosti kˇr´ıˇzen´ı z´av´ıs´ı, jestli se rodiˇce budou kˇr´ıˇzit. V tom pˇr´ıpadˇe se n´ahodnˇe vy-bere ze zp˚usob˚u uveden´ych v seznamu n´ıˇze . Pokud ke kˇr´ıˇzen´ı nedojde, rodiˇce se beze zmˇeny zaˇrad´ı mezi potomky a mohou mutovat. Pouˇzity jsou n´asleduj´ıc´ı typy kˇr´ıˇzen´ı z kapitoly 3.1:
• Jednobodov´a varianta segmentov´eho kˇr´ıˇzen´ı.
• Kˇr´ıˇzen´ı line´arn´ı kombinac´ı rodiˇc˚u. Pro kaˇzdou sloˇzku rodiˇcovsk´ych vektor˚u r1 a r2
je generov´ano n´ahodn´e ˇc´ıslox s rovnomˇern´ym rozloˇzen´ım v intervaluh0,1i. Potomci pak maj´ı odpov´ıdaj´ıc´ı sloˇzkyp1=xr1+ (1−x)r2 ap2 = (x−1)r1+xr2.
• Tak´e se jedn´a o kˇr´ıˇzen´ı line´arn´ı kombinac´ı. Jedin´y rozd´ıl je, ˇze x je generov´ano jen jednou a pouˇzito pro vˇsechny sloˇzky rodiˇcovsk´ych vektor˚u.
Mutace m˚uˇze prob´ıhat dvˇema zp˚usoby. Jeden vyuˇz´ıv´a ˇc´ısel v rovnomˇern´em a druh´y v norm´aln´ım rozloˇzen´ı. Kaˇzd´y pokr´yv´a jin´y rozsah. To zajiˇst’uje v´ybˇer z ˇsirok´eho mnoˇzstv´ı pˇr´ıznak˚u a z´aroveˇn zabraˇnuje vynech´an´ı tˇech nejbliˇzˇs´ıch, zvl´aˇst’ pokud m´a jedinec vysokou fitness, vydrˇz´ı v´ıce generac´ı a jeho potomci podstoup´ı mutaci v´ıckr´at. Pravdˇepodonost mutace urˇcuje, zda potomek bude mutovat. Pokud k mutaci dojde, tak se n´ahodnˇe urˇc´ı, kter´y zp˚usob se pouˇzije.
• Uniformn´ı mutace uprav´ı kaˇzdou sloˇzku vektoru o hodnotu generovanou s rov-nomˇern´ym rozloˇzen´ım v urˇcit´em rozsahu. Mˇela by slouˇzit k v´ybˇeru nejbliˇzˇs´ıch pˇr´ıznak˚u.
• Norm´aln´ı mutace uprav´ı kaˇzdou sloˇzku vektoru o hodnotu generovanou s gaussov´ym rozloˇzen´ım a urˇcitou standardn´ı odchylkou. Rozsah mutace by mˇel b´yt v´yraznˇe vˇetˇs´ı neˇz u pˇredchoz´ıho zp˚usobu. D´ıky vˇetˇs´ımu rozsahu vznikaj´ı jedinci, ke kter´ym bychom se pomoc´ı prvn´ıho zp˚usobu nedostali.
N´asleduj´ıc´ı generace se skl´ad´a z potomk˚u a pˇredchoz´ı generace. Pˇreˇzije lepˇs´ı polovina z rodiˇc˚u a lepˇs´ı polovina z potomk˚u. Ostatn´ı zanikaj´ı.
Ukonˇcovac´ı podm´ınky jsou vyhodnocov´any pˇred v´ybˇerem rodiˇc˚u. Z´akladn´ı moˇznost´ı je ukonˇcen´ı po dosaˇzen´ı urˇcit´eho poˇctu generac´ı. D´ale je moˇzno kontrolovat poˇcet vyhodnocen´ı fitness funkce. Algoritmus se ukonˇc´ı pouze v m´ıstˇe, kde se podm´ınka kontroluje. To znamen´a, ˇ
Kapitola 5
Implementace
Evoluˇcn´ı algoritmus popsan´y v kapitole 4 je pˇrid´an jako dalˇs´ı zp˚usob generov´an´ı pˇr´ıznak˚u pro AdaBoost do syst´emu pro v´yzkum klasifik´ator˚u popsan´eho v [3]. Tento K imple-mentaci je vyuˇzita knihovna Evolving Objects (ke staˇzen´ı na adrese http://eodev. sourceforge.net/), kter´a je dostupn´a pod licenc´ı GLPL 1. Zdrojov´e k´ody jsou na pˇriloˇzen´em CD. Jedn´a se o souboryGAHaarFeatures.cppa GAHaarFeatures.h v adres´aˇri
program/src/features/.
Tˇr´ıda TGAHaarFeatures je stˇeˇzejn´ım bodem cel´e implementace. Jej´ı instance slouˇz´ı k tr´enov´an´ı klasifik´atoru. Ten spust´ı evoluˇcn´ı algoritmus a z v´ysledn´e populace si vybere nejvhodnˇejˇs´ıho jedince. Jedinec vybran´y klasifik´atorem je uloˇzen pomoc´ı instance tˇr´ıdy
TGAHaarFeature do xml, aby odtud mohl b´yt naˇcten a pouˇzit jinou instanc´ı tˇr´ıdy pˇri vlastn´ı klasifikaci.
5.1
Tˇ
r´ıda
TGAHaarFeatures
Konstruktor naˇcte konfiguraci z xml souboru a vytvoˇr´ı Haarovy pˇr´ıznaky.
Metoda initialize je vol´ana jednou pro kaˇzdou iteraci AdaBoostu. Vytvoˇr´ı vy-rovn´avac´ı pamˇet’ pro pˇr´ıznaky (viz 5.3). Vygeneruje poˇc´ateˇcn´ı populaci, normalizuje vˇsechny jedince (viz 4.1), spust´ı evoluˇcn´ı algoritmus (zavol´a metodu run). Potom znovu normali-zuje vˇsechny jedince. To je nutn´e z toho d˚uvodu, ˇze v pr˚ubˇehu evoluce se normalizace sice prov´ad´ı pˇri v´ypoˇctu fitness, ale jedinci si zachov´avaj´ı hodnotu. Na konci jsou k dispozici pˇr´ıznaky pro AdaBoost.
Metoda evaluate vrac´ı hodnotu urˇcit´eho pˇr´ıznaku. Je vyuˇz´ıv´ana, kdyˇz AdaBoost vy-hled´av´a vhodn´y pˇr´ıznak.
Metoda getFeature vytvoˇr´ı instanci tˇr´ıdy TGAHaarFeature a vr´at´ı ukazatel na tuto instanci.
5.2
Evoluˇ
cn´ı algoritmus
Implementace evoluˇcn´ıho algoritmu se nach´az´ı v metodˇe run tˇr´ıdy TGAHaarFeatures. Kv˚uli struktuˇre knihovny Evolving Objects je fitness funkce nez´avisl´a na tˇr´ıdˇe
1
TGAHaarFeatures a vyuˇz´ıv´a glob´aln´ıho ukazatele na vyrovn´avac´ı pamˇet’ (viz 5.3). To by mohlo zp˚usobit probl´emy pˇri vytvoˇren´ı v´ıce instanc´ı tˇr´ıdy TGAHaarFeatures.
Poˇc´ateˇcn´ı generace je generov´ana v r´amci metody initialize. Prvn´ı polovina popu-lace obsahuje vektory sloˇzen´e z ˇc´ısel v intervaluh0,1i a druh´a v intervaluh−1,0i. Hodnoty jsou generov´any n´ahodnˇe s rovnomˇern´ym rozloˇzen´ım. Velikost populace se nemˇen´ı. Nasta-vuje se pomoc´ı xml atributu populationSize.
Kˇr´ıˇzen´ı je reprezentov´ano tˇremi r˚uzn´ymi zp˚usoby, kter´e jsou pops´any v 4.3. Pravdˇepodobnost kˇr´ıˇzen´ı se nastavuje xml atributem crossoverProbability. Kˇr´ıˇzeni line´arn´ı kombinac´ı pˇredstavuj´ı tˇr´ıdy eoSegmentCrossover a eoHypercubeCrossover
z knihovny Evolving Objects. Kaˇzd´y z tˇechto zp˚usob˚u m´a pravdˇepodobnost, ˇze bude zvolen 40 %. Zbyl´ych 20 % zb´yv´a na segmentov´e kˇr´ıˇzen´ı. V Evolving Objects nen´ı obsaˇzena re´aln´a varianta tohoto kˇr´ıˇzen´ı a bylo nutno ji vytvoˇrit. Jedn´a se o tˇr´ıdu
eo1PtRealSegmentCrossover.
Mutace je pˇredstavov´ana tˇr´ıdami eoUniformMutation a eoNormalMutation. Pravdˇepodobnost mutace je nastavov´ana xml atributem mutationProbability. Po-kud k mutaci dojde, vybere se n´ahodnˇe z tˇechto moˇznost´ı:
• eoUniformMutation zmˇen´ı kaˇzdou sloˇzku jedince o ˇc´ıslo generovan´e s rovnomˇern´ym rozloˇzen´ım v rozsahu h−0.00005,0.00005i, coˇz pˇri poˇctu Haarov´ych pˇr´ıznak˚u asi 180 000 odpov´ıd´a v´ybˇeru z pˇribliˇznˇe 20 pˇr´ıznak˚u.
• eoNormalMutation mˇen´ı sloˇzky jedince o hodnotu generovanou s norm´aln´ım rozloˇzen´ım. Stˇred je dan´a sloˇzka vektoru a standardn´ı odchylka je 0.01.
Ukonˇcovac´ı podm´ınky jsou nastaviteln´e v konfiguraˇcn´ım xml souboru pomoc´ı atribut˚u:
• maximalGenerationsurˇcuje maxim´aln´ı poˇcet generac´ı. Pokud nen´ı definov´an, je im-plicitnˇe nastaven na 1 000.
• maximalEvaluatedFitness zastav´ı evoluˇcn´ı algoritmus po urˇcit´em poˇctu vyhodno-cen´ı fitness funkce. V okamˇziku, kdy je dosaˇzeno stanoven´eho poˇctu, se algoritmus neukonˇc´ı, ale pokraˇcuje aˇz do kontroly podm´ınek (viz obr´azek 3.1).
Pokud se m´a kontrolovat jen poˇcet vyhodnocen´ı fitness funkce, je tˇreba nastavit poˇcet generac´ı na 0. Jinak se pouˇzije implicitn´ı hodnota a algoritmus skonˇc´ı po jej´ım dosaˇzen´ı.
5.3
Vyrovn´
avac´ı pamˇ
et’
V´ypoˇcet fitness funkce je zrychlen pouˇzit´ım vyrovn´avac´ı pamˇeti. Ta uchov´av´a hodnoty naposledy pouˇzit´ych Haarov´ych pˇr´ıznak˚u pro vˇsechny tr´enovac´ı vzorky. Poˇcet uchov´avan´ych pˇr´ıznak˚u se nastavuje v xml souboru volboucacheSize. Pamˇet’ov´a n´aroˇcnost je d´ana:
poˇcet tr´enovac´ıch vzork˚u×cacheSize×sizeof(double)+konstantn´ı reˇzie Do vyrovn´avac´ı pamˇeti se pˇristupuje pomoc´ı dvou index˚u. Jeden index urˇcuje pˇr´ıznak a druh´y hodnotu tohoto pˇr´ıznaku pro konkr´etn´ı tr´enovac´ı vzorek. Pokud hodnoty pro poˇzadovan´y pˇr´ıznak ve vyrovn´avac´ı pamˇeti nejsou, tak se porovn´a poˇcet uloˇzen´ych pˇr´ıznak˚u scacheSize. Pokud by dalˇs´ı pˇr´ıznak tuto hodnotu pˇrekroˇcil, smaˇze se ten nejstarˇs´ı. Potom jsou spoˇc´ıt´any a uloˇzeny do pamˇeti hodnoty pˇr´ıznaku pro vˇsechny tr´enovac´ı vzorky.
Kapitola 6
Testy
Po dokonˇcen´ı implementace a odladˇen´ı zdrojov´eho k´odu byly provedeny testy. Jejich c´ılem bylo zjistit vlastnosti line´arn´ı kombinace Haarov´ych pˇr´ıznak˚u a porovnat je se samostatn´ymi Haarov´ymi pˇr´ıznaky. Pro kaˇzd´y z tˇechto pˇr´ıstup˚u je natr´enov´an klasifik´ator. Pot´e jsou ovˇeˇreny jeho vlastnosti na testovac´ıch datech. Jsou pouˇzita stejn´a tr´enovac´ı a testovac´ı data pro oba klasifik´atory. Prostˇredky pro tr´enov´an´ı a testov´an´ı jiˇz byly zahrnuty v projektu zmiˇnovan´em v kapitol´ach 1 a 5.
6.1
Parametry evoluˇ
cn´ıho algoritmu
Metrikou evoluˇcn´ıch algoritm˚u je poˇcet vyhodnocen´ı fitness funkce. R˚ust hodnoty fitness vˇsak nen´ı tomuto poˇctu ´umˇern´y. Kdyˇz m´ame dostatek ˇcasu a v´ypoˇcetn´ıch prostˇredk˚u, m˚uˇzeme nechat fitness funkci vyhodnotit v´ıckr´at. Nevad´ı n´am pomalejˇs´ı r˚ust, pokud je na konci dosaˇzeno lepˇs´ı hodnoty. Pokud chceme m´ıt v´ysledek rychle, potˇrebujeme zpoˇc´atku strmˇejˇs´ı r˚ust, i kdyˇz by se fitness ust´alila na niˇzˇs´ı hodnotˇe neˇz v pˇredchoz´ım pˇr´ıpadˇe.
počet vyhodnocení fitness n e jv yš ši f it n e ss v p o p ul ac i F F2 1 A B C
Obr´azek 6.1: Pˇr´ıklad pr˚ubˇehu fitness
Na obr´azku 6.1 vid´ıme pˇr´ıklad takov´ychto dvou pr˚ubˇeh˚u. V bodˇe A m´a vyˇsˇs´ı hodnotu pr˚ubˇehF2 a v bodˇe Cpr˚ubˇehF1. Pokud potˇrebujeme v´ypoˇcet ukonˇcit dˇr´ıve neˇz v bodˇeB, pouˇzijeme pr˚ubˇehF2. Kdyˇz je moˇzno ho ukonˇcit aˇz za bodemB, zvol´ımeF1. Poˇzadovan´emu
chov´an´ı je pak nutno pˇrizp˚usobit konfiguraci.
Obr´azek 6.1 je jen ilustraˇcn´ı. Re´aln´y pr˚ubˇeh fitness funkce vypad´a vˇetˇsinou jako na obr´azku 6.2, kter´y byl z´ısk´an pˇri ladˇen´ı programu. Abychom z´ıskali takov´eto pr˚ubˇehy, je
0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0 50 100 150 200 250 300 350 400 450 500 fitness number of generations
Obr´azek 6.2: Pˇr´ıklad pr˚ubˇehu fitness
tˇreba sledovat chov´an´ı fitness pro r˚uzn´e hodnoty parametr˚u. V konfiguraˇcn´ım xml souboru lze nastavit n´asleduj´ıc´ı:
• mutationProbability – pravdˇepodobnost mutace
• crossoverProbability– pravdˇepodobnost kˇr´ıˇzen´ı
• populationSize – velikost populace
• haarFeaturesCount– poˇcet Haarov´ych pˇr´ıznak˚u v line´arn´ı kombinaci
Moˇzn´ych kombinac´ı tˇechto parametr˚u je pˇr´ıliˇs mnoho. Bˇehem ladˇen´ı algoritmu se uk´azala jako nejvhodnˇejˇs´ı line´arn´ı kombinace dvou Haarov´ych pˇr´ıznak˚u a pravdˇepodobnost kˇr´ıˇzen´ı m˚uˇzeme zvolit 0.8. Uk´azalo se, ˇze nejv´ıce je r˚ust fitness funkce ovlivnˇen pravdˇepodobnost´ı mutace a velikost´ı populace.
Proto jsme sledovali v´yvoj fitness funkce pro velikosti populace 1, 5, 25, 125, 625, 3 125, 15 625 a pravdˇepodobnosti mutace 0.05, 0.1, 0.2, 0.4, 0.8. Hodnotu fitness jsme zjiˇst’ovali pˇri poˇctu vyhodnocen´ı fitness funkce 100, 200, 400, 800, 1 600, 3 200, 6 400, 12 800, 25 600, 51 200, 102 400, 204 800, 404 800 a 600 000. Pro kaˇzdou kombinaci tˇechto hodnot probˇehla evoluce dvan´actkr´at, vˇzdy pro prvn´ı iteraci AdaBoostu. Na obr´azku 6.3 je rozloˇzen´ı fitness pˇri poˇctu vyhodnocen´ı 404 800. Je tam vidˇet, ˇze se fitness v´ıcem´enˇe zvyˇsuje s vˇetˇs´ı populac´ı a vyˇsˇs´ı pravdˇepodobnost´ı mutace.
Nejvyˇsˇs´ı dosaˇzen´a hodnota fitness byla 0.9141. Z hodnot z´ıskan´ych ze vˇsech dvan´acti bˇeh˚u byly spoˇc´ıt´any aritmetick´e pr˚umˇery. Nejvyˇsˇs´ı pr˚umˇern´e hodnoty fitness pro vˇsechny
0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 1 10 100 1000 10000 population size 0.1 mutation probability 0.7 0.72 0.74 0.76 0.78 0.8 0.82 fitness
Obr´azek 6.3: Hodnoty fitness funkce po 404 800 vyhodnocen´ıch fitness funkce
zaznamenan´e poˇcty vyhodnocen´ı jsou v tabulce 6.1. Interval spolehlivosti (confidence in-terval) byl spoˇc´ıt´an podle [9]. Byla zvolena ´uroveˇn vˇerohodnosti 95 %.
Poˇcet vyhodnocen´ı Velikost Pravdˇepodobnost Fitness Interval fitness funkce populace mutace spolehlivosti
100 1 0.2 0.4182 ± 0.0554 200 1 0.1 0.4737 ± 0.0440 400 1 0.2 0.5160 ± 0.0577 800 1 0.2 0.5924 ± 0.0245 1 600 1 0.2 0.5968 ± 0.0226 3 200 125 0.4 0.6283 ± 0.0385 6 400 125 0.4 0.6804 ± 0.0430 12 800 125 0.4 0.7021 ± 0.0379 25 600 625 0.1 0.7076 ± 0.0353 51 200 625 0.4 0.7298 ± 0.0336 102 400 3 125 0.05 0.7601 ± 0.0261 204 800 3 125 0.2 0.8115 ± 0.0273 404 800 3 125 0.2 0.8269 ± 0.0271 600 000 3 125 0.2 0.8275 ± 0.0271
Tabulka 6.1: Nejlepˇs´ı hodnoty fitness pro dan´y poˇcet vyhodnocen´ı fitness funkce
Pˇri testech budeme cht´ıt dos´ahnout 90 % maxim´aln´ı dosaˇzen´e hodnoty fitness funkce:
0.9141·0.9 = 0.8227
Z tabulky 6.1 vybereme nejbliˇzˇs´ı vyˇsˇs´ı hodnotu, coˇz odpov´ıd´a poˇctu vyhodnocen´ı fitness funkce 404 800, pravdˇepodobnosti mutace 0.2 a velikosti populace 3 125. Tyto hodnoty
nastav´ıme v konfiguraˇcn´ım xml souboru, kter´y bude pouˇzit pro testov´an´ı klasifik´atoru
6.2
Tr´
enovac´ı a testovac´ı data
K tr´enov´an´ı byly pouˇzity obr´azky obliˇcej˚u v rozliˇsen´ı 24 × 24 pixel˚u a stupn´ıch ˇsedi. Tyto obr´azky byly sesb´ır´any z webov´ych str´anek a ruˇcnˇe anotov´any. V tr´enovac´ı sadˇe se jich nach´az´ı 10 000. Obr´azky pozad´ı byly vytvoˇreny jako n´ahodn´e v´yˇrezy (tak´e velikosti 24×24 pixel˚u) z 4 000 obr´azk˚u, kter´e neobsahuj´ı obliˇceje. Celkov´y poˇcet tˇechto v´yˇrez˚u je 250 000 000.
K testov´an´ı byla pouˇzita sada dat vytvoˇren´a na Carnegie Mellon University a Massa-chusetts Institute of Technology (MIT+CMU dataset). Tato sada obsahuje 114 obr´azk˚u, na kter´ych je pˇribliˇznˇe 500 obliˇcej˚u. Tyto obr´azku jsou skenov´any po v´yˇrezech o velikosti 24×24 pixel˚u, kter´ych je celkem 17 000 000.
6.3
ROC kˇ
rivka
Jak jiˇz bylo uvedeno v kapitole 2.1, jednou ze sledovan´ych vlastnost´ı klasifik´atoru je poˇcet vzork˚u, kter´e byly do tˇr´ıdy chybnˇe pˇriˇrazeny. ROC (receiver operating characteristic) kˇrivka zn´azorˇnuje pomˇer vzork˚u spr´avnˇe pˇriˇrazen´ych do tˇr´ıdy (true positive) v˚uˇci vˇsem vzork˚um, kter´e byly do tˇr´ıdy pˇriˇrazeny (true positive i false positive).
Na obr´azku 6.4 jsou ROC kˇrivky pro klasifik´ator, kter´y pouˇz´ıv´a line´arn´ı kombinaci Haarov´ych pˇr´ıznak˚u. Na obr´azku 6.5 pro samostan´e Haarovy pˇr´ıznaky. Kˇrivky jsou vˇzdy pro siln´y klasifik´ator sloˇzen´y z 50, 100 a 500 slab´ych klasifik´ator˚u.
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0 50 100 150 200 250 300 350 400 450 500
correct detection rate
false positives
stage 50 stage 100 stage 500
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 50 100 150 200 250 300 350 400 450 500
correct detection rate
false positives
stage 50 stage 100 stage 500
Obr´azek 6.5: ROC kˇrivka samostatn´ych Haarov´ych pˇr´ıznak˚u
6.4
Rychlost klasifik´
atoru
Rychlost´ı klasifik´atoru je myˇslen poˇcet prvk˚u kask´ady klasifik´ator˚u (viz kapitola 2.5), kter´y je vyuˇzit pˇri klasifikaci. Celou kask´adou jsou zpracov´any jen ˇc´asti obrazu, kter´e patˇr´ı do de-tekovan´e tˇr´ıdy. Na obr´azc´ıch 6.6 a 6.7 je zn´azornˇen pr˚umˇern´y poˇcet vyuˇzit´ych klasifik´ator˚u ve vztahu k celkov´emu poˇctu klasifik´ator˚u v kask´adˇe. Opˇet je vidˇet rozd´ıl mezi line´arn´ı kombinac´ı a samostatn´ymi Haarov´ymi pˇr´ıznaky.
6.5
V´
ysledky
Z graf˚u popsan´ych v 6.3 a 6.4 je zˇrejm´e, ˇze line´arn´ı kombinace nedosahuje kvalit Haarov´ych pˇr´ıznak˚u. Pˇr´ıliˇs mnoho vzork˚u je chybnˇe zaˇrazeno mezi obliˇceje. S t´ım je spojen´a i niˇzˇs´ı pr˚umˇern´a rychlost, protoˇze celou kask´adou proˇslo v´ıce vzork˚u, neˇz mˇelo.
0 5 10 15 20 25 0 50 100 150 200 250 300 350 400 450 500
Obr´azek 6.6: Pr˚umˇern´a rychlost line´arn´ı kombinace Haarov´ych pˇr´ıznak˚u
1 1.5 2 2.5 3 3.5 4 4.5 5 0 100 200 300 400 500 600 700 800 900 1000
Kapitola 7
Z´
avˇ
er
Z kapitoly 6 vypl´yv´a, ˇze line´arn´ı kombinace Haarov´ych pˇr´ıznak˚u nesplnila oˇcek´av´an´ı, kter´a do n´ı byla vloˇzena, pˇresto v´ysledky vypadaj´ı docela slibnˇe. Nesm´ıme zapom´ınat, ˇze se jedn´a o ran´e st´adium v´yvoje. Tento postup m´a urˇcit´y potenci´al a pokud se na nˇem bude d´ale pracovat, tak snad dos´ahneme lepˇs´ıch v´ysledk˚u. Nyn´ı se postupnˇe pod´ıv´ame na nedostatky zjiˇstˇen´e pˇri v´yvoji a testov´an´ı.
7.1
Genom, mutace a kˇ
r´ıˇ
zen´ı
V souˇcasn´e implementaci jsou Haarovy pˇr´ıznaky generov´any a ˇc´ıslov´any postupnˇe. Zaˇcne se v lev´em horn´ım rohu obrazu a po ˇr´adc´ıch se postupuje aˇz do prav´eho doln´ıho. Sousedn´ı indexy pak maj´ı Haarovy pˇr´ıznaky, kter´e jsou vedle sebe na ˇr´adku. D´ale soused´ı ty, co jsou na konci jednoho ˇr´adku s tˇemi, kter´e jsou na zaˇc´atku ˇr´adku n´asleduj´ıc´ıho. Pokud je pouˇzito v´ıce typ˚u Haarov´ych pˇr´ıznak˚u (viz obr´azek 2.2), doch´az´ı k dalˇs´ımu probl´emu, protoˇze potom soused´ı nejvˇetˇs´ı pˇr´ıznak pˇredchoz´ıho typu s nejmenˇs´ım pˇr´ıznakem typu n´asleduj´ıc´ıho.
Aby kˇr´ıˇzen´ı a mutace l´epe plnily sv˚uj ´uˇcel, mˇely by m´ıt sousedn´ı indexy Haarovy pˇr´ıznaky, jenˇz obsahuj´ı podobnou informaci. T´ım jsou myˇsleny ty, kter´e soused´ı v ˇr´adku nebo sloupci a ty, kter´e jsou o nˇeco vˇetˇs´ı ˇci menˇs´ı. Nav´ıc by mˇely sousedit pˇr´ıznaky stejn´eho typu.
Tyto probl´emy by bylo moˇzno ˇreˇsit zmˇenou mechanism˚u kˇr´ıˇzen´ı a mutace. Sloˇzky ge-nomu, kter´e pˇredstavuj´ı Haarovy pˇr´ıznaky, by byly upravov´any odliˇsn´ym zp˚usobem neˇz zbytek. Tak´e by mohly b´yt reprezentov´any cel´ymi ˇc´ısly.
Dalˇs´ı nedostatek je zp˚usoben koeficienty a1. . . am (viz kapitola 4.1). Pokud maj´ı ne-vhodn´e hodnoty, mohou zp˚usobit, ˇze i kvalitn´ı kombinace Haarov´ych pˇr´ıznak˚u zahyne. Tomu by se dalo zabr´anit ´upln´ym vyˇrazen´ım tˇechto koeficient˚u z genomu. Jejich hodnoty pro konkr´etn´ı kombinaci Haarov´ych pˇr´ıznak˚u by pak mohly b´yt vypoˇc´ıt´any nˇejakou statis-tickou metodou (PCA, LDA).
Existuje mnoho metod pro generov´an´ı pˇr´ıznak˚u. Vˇsechny maj´ı sv´e v´yhody i nev´yhody. Nemuselo by se vyb´ırat jen z Haarov´ych pˇr´ıznak˚u, ale pouˇz´ıt i jin´e (LDA, NLDA atd.). Kaˇzd´a z tˇechto metod by vˇsak musela m´ıt vlastn´ı postupy pro mutaci. Takov´yto syst´em by pak byl pouˇziteln´y i pro jin´e ´uˇcely neˇz zpracov´an´ı obrazu.
7.2
Fitness
Z v´ysledk˚u test˚u vypl´yv´a, ˇze pˇr´ıliˇs mnoho vzork˚u, kter´e do detekovan´e tˇr´ıdy nepatˇr´ı, je do t´eto tˇr´ıdy zaˇrazeno. To je pravdˇepodobnˇe zp˚usobeno t´ım, ˇze hodnota fitness funkce odpov´ıd´a kvalitˇe slab´eho klasifik´atoru, kter´y je z jedince natr´enov´an jen do urˇcit´e m´ıry. ˇReˇsen´ım by byla fitness funkce, jenˇz by t´eto kvalitˇe odpov´ıdala l´epe. Nejl´epe nahradit st´avaj´ıc´ı fitness funkci ´uspˇeˇsnost´ı slab´eho klasifik´atoru (viz kapitola 2.3).
7.3
Shrnut´ı
Pˇredchoz´ı postˇrehy se daj´ı shrnout do urˇcit´eho pl´anu pro dalˇs´ı v´yvoj. Za vyzkouˇsen´ı by st´aly n´asleduj´ıc´ı ´upravy:
• Genom bude tvoˇren pouze indexy pˇr´ıznak˚u r˚uzn´ych typ˚u.
• Kaˇzd´y typ pˇr´ıznak˚u bude m´ıt vlastn´ı postup mutace a bude moci mutovat jen v r´amci sv´eho typu.
• Poˇc´ateˇcn´ı populace bude sloˇzena z jedinc˚u, kteˇr´ı budou obsahovat jen jeden typ pˇr´ıznak˚u.
• Bude pouˇzito jen segmentov´e kˇr´ıˇzen´ı. To spolu se sloˇzen´ım poˇc´ateˇcn´ı populace zaj´ıst´ı kombinaci toho nejlepˇs´ıho ze vˇsech typ˚u pˇr´ıznak˚u.
• Koeficienty pro line´arn´ı kombinaci budou z´ısk´av´any pomoc´ı PCA nebo LDA.
• Jako fitness funkce bude pouˇzita ´uspˇeˇsnost slab´eho klasifik´atoru.
Pˇredpokl´ad´am, ˇze po zahrnut´ı tˇechto ´uprav bychom mohli dos´ahnout lepˇs´ıch v´ysledk˚u neˇz pomoc´ı souˇcasn´eho postupu. Moˇzn´a i lepˇs´ıch neˇz za pouˇzit´ı Haarov´ych pˇr´ıznak˚u. Pokud by tato oˇcek´av´an´ı byla splnˇena, z´ıskali bychom univerz´aln´ı a rozˇsiˇriteln´y syst´em, jenˇz by byl pouˇziteln´y pro r˚uzn´e typy dat.
Literatura
[1] Duda, R. O.; Hart, P. E.; Stork, D. G.: Pattern Classification (2nd Edition). Wiley-Interscience, 2000, ISBN 0471056693.
[2] Freund, Y.; Schapire, R.: A short introduction to boosting. 1999, [Online].
URLhttp://citeseer.ist.psu.edu/freund99short.html
[3] Hradiˇs, M.: Framework for Research on Detection Classifiers. In Proceedings of Spring Conference on Computer Graphics, 2008, s. 171–177.
URLhttp://www.fit.vutbr.cz/research/view_pub.php?id=8608
[4] Kvasniˇcka, V.; Posp´ıchal, J.; Tiˇno, P.: Evoluˇcn´e algoritmy. STU Bratislava, 2000, ISBN 8022713775.
[5] Schoenauer, M.: Evolving Objects Tutorial. 2002, [Online].
URLhttp://eodev.sourceforge.net/eo/tutorial/html/eoTutorial.html
[6] Treptow, A.; Zell, A.: Combining Adaboost Learning and Evolutionary Search to Select Features for Real-Time Object Detection. 2004.
URLhttp://citeseer.ist.psu.edu/646131.html
[7] Viola, P.; Jones, M.: Rapid object detection using a boosted cascade of simple features. 2001, [Online].
URLhttp://citeseer.ist.psu.edu/viola01rapid.html
[8] Wikipedia: AdaBoost — Wikipedia, The Free Encyclopedia. 2007, [Online].
URLhttp://en.wikipedia.org/w/index.php?title=AdaBoost&oldid=176678328
[9] Wikipedia: Student’s t-distribution — Wikipedia, The Free Encyclopedia. 2008, [Online].
URLhttp://en.wikipedia.org/w/index.php?title=Student%27s_