26.01.2015 Views

Realizacija detektora lica na osnovu Viola-Jones algoritma - Infoteh

Realizacija detektora lica na osnovu Viola-Jones algoritma - Infoteh

Realizacija detektora lica na osnovu Viola-Jones algoritma - Infoteh

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

INFOTEH-JAHORINA Vol. 11, March 2012.<br />

<strong>Realizacija</strong> <strong>detektora</strong> <strong>lica</strong> <strong>na</strong> <strong>osnovu</strong> <strong>Viola</strong>-<strong>Jones</strong><br />

<strong>algoritma</strong><br />

Boško Mihić, Jele<strong>na</strong> Lozanov<br />

studenti drugog ciklusa studija<br />

Fakultet tehničkih <strong>na</strong>uka<br />

Novi Sad, Srbija<br />

bmihic@gmail.com, jele<strong>na</strong>.lozanov@gmail.com<br />

Sadržaj—Rad prikazuje proces realizacije <strong>detektora</strong> <strong>lica</strong> <strong>na</strong><br />

<strong>osnovu</strong> <strong>Viola</strong>-<strong>Jones</strong> <strong>algoritma</strong>. Sam algoritam je opisan u<br />

osnovnim crtama uz detaljnije pojašnjenje jedino procedura koje<br />

su samostalno definisane. Pored toga, dat je i opis distribuirane<br />

realizacije treninga klasifikatora pomoću kog se vrši detekcija<br />

<strong>lica</strong>. Na kraju, rad prikazuje i ko<strong>na</strong>čne rezultate treninga uz<br />

osvrt <strong>na</strong> mogućnosti daljeg u<strong>na</strong>pređenja uspešnosti detekcije.<br />

(Abstract)<br />

Ključne reči-detekcija <strong>lica</strong>; boosting; paralelno izvršavanje;<br />

<strong>Viola</strong>-<strong>Jones</strong><br />

I. UVOD<br />

Tema rada predstavlja opis sistema za detekciju <strong>lica</strong><br />

realizovanog <strong>na</strong> <strong>osnovu</strong> <strong>Viola</strong>-<strong>Jones</strong> <strong>algoritma</strong>. Prednosti<br />

upotrebe ovog <strong>algoritma</strong> jesu jednostavnost, brzi<strong>na</strong> i visoke<br />

performanse. Ključne novine koje je uveo ovaj algoritam i koje<br />

su doprinele ovakvim karakteristikama ogledaju se u upotrebi<br />

integralne slike za manipulisanje podacima, upotrebi<br />

modifikovanog AdaBoost <strong>algoritma</strong> za generisanje<br />

klasifikatora i realizacije klasifikatora u formi kaskade manjih<br />

klasifikatora.<br />

U poslednje vreme, sa sve češćom pojavom<br />

multiprocesorskih jedinica u kompjuterskim sistemima, važ<strong>na</strong><br />

karakteristika ovog <strong>algoritma</strong> postala je i mogućnost relativno<br />

jednostavne paralelizacije izvršavanja, kako procesa treninga,<br />

tako i procesa detekcije <strong>lica</strong>. Tim povodom je i odlučeno da se<br />

prilikom realizacije ovog sistema izvrši paralelizacija procesa<br />

treninga klasifikatora <strong>na</strong> više raču<strong>na</strong>ra <strong>na</strong> kojima se, srazmerno<br />

broju procesorskih jedinica, izvršava više ili manje paralelnih<br />

procesa, praveći odgovarajući balans između kompleksnosti<br />

komunikacije i njene brzine. Prateći ta ograničenja, upotrebljen<br />

je prilično robustan sistem sinhronizacije fajlovima, o kojem će<br />

biti više reči u <strong>na</strong>stavku.<br />

Pre opisa same procedure važno je <strong>na</strong>pomenuti da su za<br />

trening klasifikatora korišćene slike <strong>lica</strong> koja su okrenuta<br />

približno u pravcu kamere, pa je i uspešnost detekcije <strong>lica</strong><br />

delom uslovlje<strong>na</strong> tim parametrom. Takođe, za region <strong>lica</strong> <strong>na</strong>d<br />

kojim se vrši detekcija izabran je nešto manji deo u odnosu <strong>na</strong><br />

o<strong>na</strong>j koji je korišćen u origi<strong>na</strong>lnom <strong>Viola</strong>-<strong>Jones</strong> radu[1].<br />

Rezultati tih odluka, kao i same realizacije <strong>algoritma</strong> biće<br />

izloženi <strong>na</strong> kraju rada, uz razmatranje oblasti čijim bi se daljim<br />

razvojem mogao ostvariti dodatni <strong>na</strong>predak.<br />

II. PROCEDURA<br />

Tokom razvoja <strong>detektora</strong>, u velikoj meri praćene su<br />

procedure i saveti izneti u radovima [1], [2]. Uzimajući to u<br />

obzir, u <strong>na</strong>stavku rada biće dat samo opštiji opis procesa<br />

generisanja klasifikatora za detekciju <strong>lica</strong> sa nešto detaljnijim<br />

opisima delova koji su samostalno realizovani.<br />

A. Slabi klasifikator<br />

Predstavlja osnovni deo krajnjeg klasifikatora. U<br />

matematičkom obliku, može se predstaviti kao:<br />

⎧1 za pf( x)<br />

> pθ<br />

hx ( , f, p, θ ) = ⎨ , (1)<br />

⎩ 0 i<strong>na</strong>če<br />

gde x predstavlja crno-belu podsliku veličine 24x24 piksela <strong>na</strong>d<br />

kojom se vrši detekcija, f testirano obeležje (eng. feature) slike,<br />

p polaritet i θ graničnu vrednost odlučivanja. Povrat<strong>na</strong> vrednost<br />

funkcije trebalo bi da bude 1 u slučaju slike <strong>lica</strong>, ili 0 u slučaju<br />

kada se <strong>na</strong> slici ne <strong>na</strong>lazi lice. Kao skup mogućih tipova<br />

obeležja, uzeti su pet osnovnih pravougaonih oblika sličnih<br />

Harovim talasima (eng. Haar’s wavelets) prikazanih <strong>na</strong> Sl. 1.<br />

Vrednost koja se dobije <strong>na</strong>kon primene ovih obeležja <strong>na</strong>d<br />

slikom jed<strong>na</strong>ka je razlici suma piksela unutar belih i crnih<br />

pravougaonika. S obzirom <strong>na</strong> to da se svaki od tih tipova<br />

obeležja može primeniti <strong>na</strong>d različitim delovima ulazne slike<br />

dimenzije 24x24, dobija se da je ukupan broj mogućih obeležja<br />

oko 160 000.<br />

Za određivanje <strong>na</strong>jboljih obeležja <strong>lica</strong>, potrebno je izvršiti<br />

testiranje svih mogućih obeležja <strong>na</strong>d svim pozitivnim i svim<br />

negativnim uzorcima, tj. slikama <strong>lica</strong> i slikama koje to nisu, a<br />

koje trenutni detektor i dalje detektuje kao da jesu. S obzirom<br />

<strong>na</strong> to da će do određene greške uvek doći, bitno je izvršiti<br />

selekciju <strong>na</strong>jboljih obeležja čijim će se kombinovanjem <strong>na</strong>jbrže<br />

Tip 1 Tip 2 Tip 3 Tip 4 Tip 5<br />

Slika 1.<br />

Osnovni tipovi obeležja.<br />

- 1154 -


doći do željene stope uspešnosti detekcije. O samom procesu<br />

selekcije takvih obeležja, biće više reči u <strong>na</strong>stavku.<br />

B. Jaki klasifikator<br />

Grupisanjem više slabih kasifikatora u celinu, dobija se jaki<br />

klasifikator. Time se postiže da se pouzdanost pojedinih slabih<br />

kasifikatora, koja veoma često iznosi tek nešto više od 50%,<br />

z<strong>na</strong>čajno poveća. Kako bi se to postiglo, potrebno je svakom<br />

slabom klasifikatoru dodeliti težinski koeficijent α t , koji je<br />

suprotno srazmeran greški koju on ostvaruje. Na <strong>osnovu</strong> tih<br />

koeficije<strong>na</strong>ta i samih slabih klasifikatora, definiše se jaki<br />

klasifikator pomoću sledećeg izraza:<br />

T<br />

T<br />

⎧<br />

1<br />

⎪1 za αtht( x)<br />

≥ αt<br />

Sx ( ) t= 1 2 t=<br />

1 .<br />

0 i<strong>na</strong>če<br />

= ⎨<br />

⎪⎩<br />

∑ ∑<br />

(2)<br />

Za <strong>Viola</strong>-<strong>Jones</strong> algoritam, od većeg je z<strong>na</strong>čaja da jaki<br />

klasifikator ostvaruje veliku pouzdanost pri klasifikaciji<br />

pozitivnih uzoraka (eng. TPR – True Positive Rate) nego pri<br />

klasifikaciji negativnih (eng. TNR – True Negative Rate), o<br />

čemu će biti više reči u <strong>na</strong>stavku. Da bi se to postiglo,<br />

predviđe<strong>na</strong> je upotreba faktora prilagođenja (eng. Tweak<br />

Factor) čijim se umanjivanjem takođe smanjuju i granične<br />

vrednosti unutar slabih kalsifikatora. Opis tog postupka nije<br />

deo samog <strong>Viola</strong>-<strong>Jones</strong> <strong>algoritma</strong> i realizovan je samostalno.<br />

Da bi se prome<strong>na</strong> graničnih vrednosti izvršila što je moguće<br />

ravnomernije između različitih slabih klasifikatora, bilo je<br />

potrebno uzeti „meru“ rasutosti rezultata primene obeležja <strong>na</strong>d<br />

uzorcima. U skladu sa potrebom da se rezultat dobije u što<br />

manje koraka, za meru rasutosti uzeto je polurastojanje između<br />

srednjih vrednosti primene obeležja <strong>na</strong>d pozitivnim i <strong>na</strong>d<br />

negativnim uzorcima, tj:<br />

1 1<br />

d f x f x<br />

P<br />

N<br />

( p) ( n)<br />

t<br />

=<br />

t( i<br />

) −<br />

t( i<br />

).<br />

2P<br />

i= 1 2N<br />

i=<br />

1<br />

∑ ∑ (3)<br />

Na <strong>osnovu</strong> ovog parametra, faktora prilagođenja i početne<br />

granične vrednosti θ t , nova granič<strong>na</strong> vrednost raču<strong>na</strong> se<br />

pomoću izraza:<br />

dt<br />

( tf −1)<br />

π<br />

θ′ ⎛ ⎞<br />

t<br />

= θt<br />

+ tg ⎜ ⎟,<br />

K ⎝ 2 ⎠<br />

gde K predstavlja koeficijent izduženosti tangens funkcije i<br />

izabran je fiksno, <strong>na</strong> nivou programa, tako da upotrebne<br />

vrednosti tf budu u okolini sredine opsega tog parametra.<br />

C. Kaskadni klasifikator<br />

Ko<strong>na</strong>čno, spajanjem više jakih klasifikatora u kaskadu,<br />

<strong>na</strong>staje kaskadni klasifikator kojim se i vrši detekcija <strong>lica</strong>.<br />

Potreba za kaskadnom strukturom pojavila se zbog činjenice<br />

da se prilikom pretraživanja slike testira veliki broj podslika<br />

(4)<br />

ulaz<br />

Slika 2.<br />

Kaskadni klasifikator.<br />

kako bi se saz<strong>na</strong>lo da li sadrže lice ili ne, stoga je efikasnije<br />

usredsrediti se <strong>na</strong> odbacivanje uzoraka koji ne sadrži lice nego<br />

pro<strong>na</strong>ći one koji sadrže.<br />

Kaskadni klasifikator se sastoji od više jakih klasifikatora,<br />

čiji je zadatak da procene da li kvadrat sigurno ne sadrži lice<br />

ili ga možda sadrži. Ukoliko je procenjeno da testirani kvadrat<br />

ne sadrži lice, on se odbacuje, a ukoliko se smatra da on<br />

možda sadrži lice, on se prosleđuje sledećem jakom<br />

klasifikatoru. Ko<strong>na</strong>č<strong>na</strong> odluka da li podslika sadrži lice ili ne,<br />

donosi se <strong>na</strong> <strong>osnovu</strong> izlaza iz poslednjeg jakog klasifikatora.<br />

Šematski prikaz opisanog postupka dat je <strong>na</strong> Sl. 2.<br />

Upravo zbog takve strukture kaskadnog klasifikatora,<br />

potrebno je da svaki jaki klasifikator zadrži visok TPR, kako bi<br />

prava <strong>lica</strong> mogla da „prežive“ sve elimi<strong>na</strong>cije. S druge strane,<br />

zbog z<strong>na</strong>čajno umanjenog dela negativa koje svaki sledeći jaki<br />

klasifikator i dalje ne može da odbaci (eng. False Positive<br />

Rate), dobijaju se visoke performanse sistema. Tako <strong>na</strong> primer,<br />

za prosečan TPR po jakom klasifikatoru od 0,99 i FPR od 0,35,<br />

za kaskadni klasifikator od 10 kaskada, ovi parametri bi<br />

iznosili:<br />

TPR<br />

FPR<br />

kk<br />

kk<br />

= TPR = 0,90<br />

10<br />

jk<br />

= FPR = 0,28⋅10<br />

10 −4<br />

jk<br />

D. Integral<strong>na</strong> slika i normalizacija podslika<br />

Pojam integralne slike podrazumeva zapravo samo<br />

drugačiju reprezentaciju slike. Koristi se za brzo sumiranje<br />

vrednosti piksela unutar nekog pravougaonog dela slike, što je<br />

upravo i slučaj kod raču<strong>na</strong>nja rezultata primene obeležja <strong>na</strong>d<br />

slikom. Na Sl. 3 dat je primer konvertovanja regularne slike u<br />

integralnu. Svakom pikselu dodaje se vrednost sume svih<br />

piksela iz<strong>na</strong>d njega i levo od njega. Na ovaj taj <strong>na</strong>čin<br />

omogućeno je da se suma svih piksela, u bilo kom<br />

pravougaoniku, izraču<strong>na</strong> <strong>na</strong> <strong>osnovu</strong> samo četiri vrednosti.<br />

Takav primer dat je <strong>na</strong> Sl. 4.<br />

1 1 1<br />

1 1 1<br />

1 1 1<br />

Slika 3.<br />

jak klasifikator<br />

da li je lice<br />

NE<br />

Odbačen<br />

MOŽDA<br />

jak klasifikator<br />

da li je lice<br />

NE<br />

Odbačen<br />

,<br />

1 2 3<br />

2 4 6<br />

3 6 9<br />

Ulaz<strong>na</strong> slika (levo) i integral<strong>na</strong> slika (desno).<br />

MOŽDA<br />

(5)<br />

- 1155 -


1 2<br />

A<br />

B<br />

2) odabir slabog klasifikatora koji minimalizuje grešku<br />

koja uzima u obzir težinske koeficijente uzoraka, <strong>na</strong> <strong>osnovu</strong><br />

izraza:<br />

3<br />

C<br />

4<br />

D<br />

N<br />

∑ w h( x f p θ)<br />

y (7)<br />

ε = min , , , − ,<br />

t f , p,<br />

θ i i<br />

i=<br />

1<br />

Slika 4.<br />

Primer raču<strong>na</strong>nja sume piksela unutar pravougaonika pomoću<br />

integralne slike.<br />

Površi<strong>na</strong> pravougaonika 4 jed<strong>na</strong>ka je D - (B + C) + A, gde<br />

je vrednost integralne slike u tački A jeda<strong>na</strong>ka sumi piksela<br />

unutar pravougaonika 1, vrednost u tački B sumi unutar 1 i 2,<br />

vrednost u tački C sumi unutar 1 i 3, i u tački D jed<strong>na</strong>ka je<br />

sumi sva četiri kvadrata.<br />

Pored primene integralnih slika za raču<strong>na</strong>nje sume<br />

vrednosti piksela, one se koriste i u procesu pripreme slike pred<br />

klasifikaciju. Naime, da bi se do određene mere eliminisala<br />

razlika u osvetljenju i kontrastu između <strong>lica</strong> <strong>na</strong> različitim<br />

slikama, potrebno je izvršiti normalizaciju vrednosti piksela<br />

podslike <strong>na</strong> kojoj se traži lice. Upravo se taj proces z<strong>na</strong>čajno<br />

ubrzava upotrebom integralne slike origi<strong>na</strong>la i integralne slike<br />

kvadratnih vrednosti piksela origi<strong>na</strong>la.<br />

S obzirom <strong>na</strong> to da se površine ispod obeležja uzimaju sa<br />

odgovarajućim težinskim koeficijentima tako da se<br />

jednosmer<strong>na</strong> komponenta razlike suma uvek potire, dovoljno je<br />

izvršiti samo normalizaciju varijanse. To se postiže tako što se<br />

rezultat primene obeležja <strong>na</strong>d podslikom podeli sa<br />

standardnom devijacijom vrednosti piksela te podslike, čime se<br />

dobija ekvivalentan efekat, kao da su svi pikseli podslike<br />

normalizovani pojedi<strong>na</strong>čno. Sama standard<strong>na</strong> devijacija, dobija<br />

se <strong>na</strong> <strong>osnovu</strong> izraza:<br />

σ<br />

S<br />

− S<br />

m<br />

2<br />

2<br />

x x<br />

x<br />

= ,<br />

(6)<br />

2<br />

gde S x² i S x predstavljaju sume vrednosti piksela regularne i<br />

kvadratne podslike, a m širinu/visinu slike.<br />

E. Modifikovani AdaBoost i trening<br />

U sklopu <strong>Viola</strong>-<strong>Jones</strong> <strong>algoritma</strong> korišćen je modifikovani<br />

AdaBoost algoritam, koji pretragom kroz 160 000 obeležja<br />

pro<strong>na</strong>lazi ono koje u tom trenutku stvara <strong>na</strong>jveći doprinos<br />

poboljšanju performansi jakog klasifikatora. Za skup (x 1 ,<br />

y 1 ),...,(x N , y N ) gde je y i =0 ako je x i negativan uzorak i y i =1 u<br />

suprotnom slučaju, i za skup težinskih koeficije<strong>na</strong>ta uzoraka<br />

koji su u početnom slučaju suprotno proporcio<strong>na</strong>lni broju<br />

uzoraka te vrste (pozitivnih ili negativnih), postupak<br />

pro<strong>na</strong>laska novog slabog klasifikatora i njegovog ubacivanja u<br />

trenutni jaki klasifikator, sadrži sledeće korake:<br />

1) normalizaciju težinskih koeficije<strong>na</strong>ta w i tako da suma<br />

svih koeficije<strong>na</strong>ta bude jed<strong>na</strong>ka 1,<br />

3) definisanje h t (x)=h(x, f t , p t , θ t ) pomoću parametarta f t ,<br />

p t , θ t za koje se dobija ε t ,<br />

4) ažuriranje težinskih koeficije<strong>na</strong>ta <strong>na</strong> <strong>osnovu</strong> izraza:<br />

i<br />

( θ )<br />

⎧ wiβt za h x, ft, pt,<br />

t<br />

= yi<br />

wi<br />

= ⎨ , (8)<br />

⎩ w i<strong>na</strong>če<br />

za βt=ε t /(1-ε t ),<br />

5) izraču<strong>na</strong>vanje težinskog koeficijenta α t =log(1-β t ) i<br />

dodavanje slabog klasifikatora u jaki klasifikator.<br />

Kao rezultat <strong>algoritma</strong> formira se jak klasifikator koji se<br />

sastoji od niza slabih klasifikatora, koji su uraču<strong>na</strong>ti sa<br />

težinskim koeficijentom α t , zavisno od njihove uspešnosti<br />

prilikom klasifikacije.<br />

S obzirom <strong>na</strong> to da se generisanje slabog klasifikatora vrši<br />

tako što se svako od obeležja primeni <strong>na</strong> svaki od trening<br />

uzoraka kako bi se pro<strong>na</strong>šlo <strong>na</strong>jbolje obeležje, ovaj deo<br />

AdaBoost <strong>algoritma</strong> predstavlja ujedno i <strong>na</strong>jzahtevniji deo u<br />

smislu dužine trajanja. Dodatno usporavanje predstavlja i<br />

pro<strong>na</strong>lazak optimalne granične vrednosti θ tako da bi što manji<br />

broj uzoraka bio pogrešno klasifikovan.<br />

III.<br />

IMPLEMENTACIJA<br />

A. Postavka<br />

Zbog velikog obima raču<strong>na</strong>nja, proces generisanja slabih<br />

klasifikatora podeljen je <strong>na</strong> više podređenih klije<strong>na</strong>ta<br />

pokrenutih <strong>na</strong> više radnih stanica, sa kojima se upravlja<br />

pokretanjem iste aplikacije u kontrolnom režimu rada <strong>na</strong><br />

glavnoj radnoj stanici. Same aplikacije pisane su u<br />

programskom jeziku C++. Komunikacija između kontrolne<br />

aplikacije i klije<strong>na</strong>ta odvija se razmenom XML fajlova u<br />

direktorijumima pojedinih klije<strong>na</strong>ta. Da bi takva komunikacija<br />

bila ostvariva, potrebno je da se sve instance programa pokrenu<br />

iz poddirektorijuma istog virtuelnog direktorijuma. Iako <strong>na</strong> prvi<br />

pogled ovo deluje kao nepraktično rešenje, razlog za takvu<br />

realizaciju leži baš u jednostavnosti inicijalizacije i pouzdanosti<br />

komunikacije. Samo pripajanje nove radne stanice u proces<br />

treninga, svodi se <strong>na</strong> deljenje direktorijuma sa tom radnom<br />

stanicom, bilo putem lokalne mreže ili upotrebom nekog od<br />

besplatnih cloud servisa za deljenje fajlova, poput Dropboxa.<br />

Čim se ostvari sinhronizacija fajlova, dovoljno je pokrenuti<br />

klijenta, koji će svoj rad <strong>na</strong>staviti u pozadini, čekajući <strong>na</strong><br />

instrukcije koje će mu stići u njegov radni direktorijum. Ovaj<br />

aspekt jednostavne inicijaliziacije nove radne stanice <strong>na</strong><br />

daljinu, omogućio je da se u nedostatku laboratorijskih resursa,<br />

pokrene i do 30 klije<strong>na</strong>ta paralelno <strong>na</strong> različitim raču<strong>na</strong>rima za<br />

- 1156 -


kućnu upotrebu, bez potrebe za razmatranjem mrežne<br />

infrastrukture pojedinih raču<strong>na</strong>ra.<br />

Druga prednost ove vrste komunikacije ogleda se i u brzoj<br />

razmeni negativnih uzoraka koje je potrebno generisati i<br />

razmeniti sa klijentima pred trening svakog novog jakog<br />

klasifikatora, s obzirom <strong>na</strong> to da se radi o paketima od nekoliko<br />

deseti<strong>na</strong> megabajta. Zahvaljujući činjenici da se slanje<br />

podataka vrši samo ka centralnom cloud serveru i da svi<br />

klijenti sa te lokacije dalje primaju podatke, sinhronizacija je<br />

višestruko ubrza<strong>na</strong>. Stavka koja je ipak predstavljala slabost<br />

ovakve komunikacije, ogledala se u razmeni jednostavnih i<br />

kratkih instrukcija. Ta razme<strong>na</strong> se odvija relativno sporo i često<br />

traje i do 10 sekundi. Međutim, pošto je bilo potrebno<br />

razmeniti samo dve poruke po jednom procesu potrage za<br />

novim slabim klasifikatorom, ta slabost i nije preterano dolazila<br />

do izražaja sa korišćenim brojem klije<strong>na</strong>ta.<br />

Sama komunikacija se odvija u sledećim koracima: klijenti<br />

su raspoređeni po folderima i za komunikaciju sa kontrolnom<br />

aplikacijom koriste fajlove XML strukture: <strong>Viola</strong><strong>Jones</strong>.request i<br />

<strong>Viola</strong><strong>Jones</strong>.response. Unutar request fajlova <strong>na</strong>laze se<br />

instrukcije kojim se centralni program obraća klijentima. Svaki<br />

request tag sadrži dva atributa. ID – koji se uvećava posle<br />

svakog poslatog zahteva i type – koji predstavlja tip zahteva i<br />

može da ima jednu od četiri vrednosti: 0 – stanje čekanja, 1 –<br />

zahtev za izvršavanje AdaBoost <strong>algoritma</strong>, 3 – provera<br />

dostupnosti i 4 – prosleđivanje ažuriranih težinskih<br />

koeficije<strong>na</strong>ta za <strong>na</strong>stavak izvršavanja AdaBoost <strong>algoritma</strong>.<br />

Unutar response fajla <strong>na</strong>lazi se odgovor klijenta <strong>na</strong> zahtev<br />

centrale. Komunikacija se uvek odvija u formi zahtev/odgovor,<br />

uz praćenje ID atributa zahteva koji služi kao brojač pristiglih<br />

poruka, pa je samim tim komunikacija prilično pouzda<strong>na</strong>.<br />

Pošto je za većinu klije<strong>na</strong>ta bilo potrebno rukovanje <strong>na</strong><br />

daljinu, <strong>na</strong>pravlje<strong>na</strong> je pomoć<strong>na</strong> aplikacija VJBot koja se<br />

izvršava u pozadini. Njoj se <strong>na</strong> sličan <strong>na</strong>čin, kao i glavnoj<br />

aplikaciji, pomoću fajlova VJBot.start i VJBot.stop saopštava<br />

da pokrene tj. zaustavi program, što je bilo korisno posebno<br />

tokom razvoja sistema.<br />

B. Generisanje pozitivnih uzoraka<br />

Za formiranje baze pozitivnih uzoraka <strong>na</strong>pravljen je<br />

program VJFaceSelector, koji je omogućio brzo isecanje slika<br />

<strong>lica</strong>. Program radi tako što učitava sliku po sliku, prevodi je u<br />

crno – beli format, a zatim zahteva od korisnika da oz<strong>na</strong>či dve<br />

tačke <strong>na</strong> licu, jednu u gornjem levom uglu, iz<strong>na</strong>d obrva i drugu<br />

u donjem desnu uglu ispod usa<strong>na</strong>. Na taj <strong>na</strong>čin formira se<br />

kvadrat sa datim koordi<strong>na</strong>tama koji sadrži sliku <strong>lica</strong>. Kvadrat je<br />

moguće pomerati sve dok se horizontalne ivice ne <strong>na</strong>đu tik<br />

iz<strong>na</strong>d obrva (gornja) i <strong>na</strong> liniji između usa<strong>na</strong> i brade (donja).<br />

Program zatim svaku sliku skalira <strong>na</strong> dimenzije 24x24 i snima<br />

u poseban folder. Baza pozitivnih uzoraka sadrži ukupno 5 500<br />

slika <strong>lica</strong>, od kojih se 5 000 koristi za trening klasifikatora, a<br />

500 za evaluaciju rezultata. Veći<strong>na</strong> slika koje su korišćene kao<br />

izvor za isecanje <strong>lica</strong> deo su baza LFW i FDDB preuzetih sa<br />

sajta univerziteta u Masačusetsu [3], [4].<br />

C. Generisanje negativnih uzoraka<br />

Prilikom generisanja negativa, prvo se vrši provera<br />

negativa korišćenih za trening prethodnog jakog klasifikatora,<br />

odnosno ispituje se da li ti negativi predstavljaju negative i za<br />

trenutni klasifikator. Zatim se generišu novi <strong>na</strong> <strong>osnovu</strong> baze<br />

slika koje ne sadrže <strong>lica</strong>. Prilikom dodavanja novih uzoraka u<br />

bazu negativa, vrši se provera da li se ta slika već <strong>na</strong>lazi u<br />

bazi, <strong>na</strong> <strong>osnovu</strong> hash vrednosti piksela te slike. Na taj <strong>na</strong>čin,<br />

omogućen je višestruki prolazak kroz sve negative uz<br />

postepeno povećanje broja prozora kojim se skenira slika u<br />

potrazi za negativima. Posle svakog prolaska kroz sve<br />

negative, dimenzije prozora, pomeraj prozora i počet<strong>na</strong><br />

veliči<strong>na</strong> prozora se umanjuju. Proces generisanja negativa<br />

obavlja kontrol<strong>na</strong> aplikacija, i po završetku posla te slike se<br />

pakuju u TAR arhivu i prosleđuju svim klijentima. Pakovanje<br />

uzoraka u TAR arhivu omogućava smanjenje broja fajlova, a<br />

samim tim i mnogo brži rad pošto se slike direktno učitavaju u<br />

memoriju iz jednog fajla.<br />

D. Trening<br />

Proces formiranja kaskadnog klasifikatora za detekciju <strong>lica</strong><br />

podeljen je <strong>na</strong> odvojeno pro<strong>na</strong>laženje jednog po jednog jakog<br />

klasifikatora. Pre pokretanja postupka generisanja svakog od<br />

njih, potrebno je odrediti vrednosti parametra TPR, FPR i<br />

maksimalan broj slabih klasifikatora unutar njega, koje bi taj<br />

jaki klasifikator trebalo da zadovolji. Na <strong>osnovu</strong> par<br />

eksperimentalnih pokretanja i rezultata iznetih u <strong>Viola</strong>-<strong>Jones</strong><br />

radu, za ove parametre uzete su sledeće vrednosti: TPR je<br />

postavljen <strong>na</strong> 0,99, FPR je postavljen <strong>na</strong> 0,35, dok je za<br />

maksimalan broj slabih klasifikatora biran duplo veći broj od<br />

onog koliko prethodni jaki klasifikator ima slabih klasifikatora.<br />

Po definisanju svih parametara treninga u koje dodatno spadaju<br />

i parametri vezani za proces generisanja negativa, lokacije<br />

relevantnih fajlova i sl, pristupalo se samom pokretanju<br />

treninga koji se sastojao od sledećih koraka:<br />

1) inizijalizacija početnih parametara i učitavanje dosad<br />

istreniranog dela kaskadnog klasifikatora,<br />

2) uspostava komunikacija sa dostupnim klijentima,<br />

3) generisanje negativa za trenirani jaki klasifikator <strong>na</strong><br />

<strong>osnovu</strong> upotrebe kaskadnog klasifikatora koji je dosad<br />

istreniran,<br />

4) pokretanje procesa generisanja novog slabog<br />

klasifikatora tokom kog svaki od klije<strong>na</strong>ta dobije određen<br />

opseg obeležja od ukupno 160 000 unutar kojih pro<strong>na</strong>lazi<br />

<strong>na</strong>jbolje od njih po prethodno opisanoj proceduri,<br />

5) prikupljanje rezultata klije<strong>na</strong>ta i određivanje <strong>na</strong>jboljeg<br />

obeležja među pristiglim od kog se generiše novi slabi<br />

klasifikator,<br />

6) ubacivanje novog slabog klasifikatora u jaki<br />

klasifikator i podešavanje faktora prilagođenja, tako da se<br />

zadovolji očekivani TPR,<br />

7) ako jaki klasifikator posle promene faktora<br />

prilagođenja i dalje poseduje FPR manji od zahtevane<br />

vrednosti, ili ako se dostigne maksimalni broja slabih<br />

klasifikatora, proces se zaustavlja i rezultati se snimaju. U<br />

suprotnom, algoritam se vraća <strong>na</strong> korak 4).<br />

Po okončanju ovog procesa program generiše još jedan<br />

dodatni izlazni fajl, koji sadrži podatke o različitim<br />

vrednostima parametara TPR i FPR, kao i o broju slabih<br />

klasifikatora i faktoru prilagođenja pri kojima su te vrednosti<br />

- 1157 -


dobijene. Na <strong>osnovu</strong> tih podataka, vrši se proce<strong>na</strong> da li iz<br />

krajnjeg jakog klasifikatora treba izbaciti poslednjih nekoliko<br />

slabih klasifikatora ako ne doprinose z<strong>na</strong>čajno smanjenju FPR,<br />

da li prihvatiti manje TPR pošto u pojedinim slučajevima to<br />

doprinosi z<strong>na</strong>čajnom smanjenju FPR, ili zadržati početne<br />

rezultate. Zahvaljujući takvoj a<strong>na</strong>lizi rezultata, izvrše<strong>na</strong> je<br />

z<strong>na</strong>čaj<strong>na</strong> redukcija broja slabih klasifikatora u pojedinim jakim<br />

klasifikatorima, pošto je vrednost FPR nekad vrlo brzo stizala<br />

do određene tačke posle čega bi nje<strong>na</strong> vrednost prestala<br />

z<strong>na</strong>čajnije da opada, pa su dodatni slabi kalsifikatori<br />

predstavljali višak koji bi samo usporavao program.<br />

Krajnji rezultat svakog od tih treninga, predstavljao je XML<br />

fajl koji je sadržio dotad istrenirani kaskadni klasifikator.<br />

IV. REZULTATI<br />

Pri pokretanju treninga za svaki jaki klasifikator, prvi korak<br />

predstavlja pro<strong>na</strong>laženje skupa negativnih uzoraka. S ozbirom<br />

<strong>na</strong> to da su se performanse kaskadnog klasifikatora podizale sa<br />

svakim novim dodavanjem jakog klasifikatora, odlučeno je da<br />

se broj negativa za treniranje svakog novog jakog klasifikatora<br />

smanji za po hiljadu, kako bi se ostvarila određe<strong>na</strong> optimizacija<br />

u potrošnji vreme<strong>na</strong>. U tabeli 1 prikazani su podaci vezani za<br />

proces generisanja negativa za trening svih 13 jakih<br />

klasifikatora, koliko ih ima u krajnjem kaskadnom<br />

klasifikatoru. Ovi rezultati ostvareni su pri generisanju negativa<br />

<strong>na</strong> <strong>osnovu</strong> baze od 1 500 slika visoke rezolucije. S obzirom <strong>na</strong><br />

to da je proces bio relativno brz za ovih 13 koraka, nije bilo<br />

potrebe za paralelizacijom samog procesa. Tako je <strong>na</strong> primer u<br />

poslednjem koraku, za testiranje 4,5 milijardi podslika utrošeno<br />

nešto više od sat vreme<strong>na</strong>, što je u odnosu <strong>na</strong> vreme potrebno<br />

za trening z<strong>na</strong>čajno kraći vremenski period. Međutim, u slučaju<br />

daljeg treninga dodatnih jakih klasifikatora,<br />

TABELA I.<br />

Redni br.<br />

jakog<br />

klasifikatora<br />

Br. negativa od<br />

prethodnog jakog<br />

klasifikatora<br />

GENERISANJE NEGATIVNIH UZORAKA.<br />

Ukupan broj<br />

negativnih<br />

uzoraka<br />

Broj testiranih<br />

uzoraka<br />

1 0 25 000 25 371<br />

2 13 074 24 000 21 561<br />

3 4 480 23 000 156 800<br />

4 10 998 22 000 237 457<br />

5 11 088 21 000 448 522<br />

6 6 295 20 000 2 184 093<br />

7 7 268 19 000 5 504 865<br />

8 6 053 18 000 17 438 300<br />

9 5 498 17 000 60 599 428<br />

10 6 007 16 000 134 607 254<br />

11 4 623 15 000 489 157 319<br />

12 4 762 14 000 1 374 276 835<br />

13 4 115 13 000 4 495 110 682<br />

Ukupno 84 261 247 000 6 579 768 487<br />

TABELA II.<br />

Redni br.<br />

jakog<br />

klasifikatora<br />

REZULTATI EVALUACIJE JAKIH KLASIFIKATORA.<br />

Broj slabih<br />

klasifikatora<br />

tf a TPR FPR<br />

1 2 0,3641 0,9860 0,5226<br />

2 5 0,5345 0,9898 0,1860<br />

3 9 0,3161 0,9959 0,4781<br />

4 16 0,3098 0,9938 0,5040<br />

5 28 0,3497 0,9917 0,2997<br />

6 37 0,2689 0,9896 0,3634<br />

7 40 0,2800 0,9979 0,3185<br />

8 54 0,2689 0,9958 0,3054<br />

9 76 0,2480 0,9979 0,3533<br />

10 66 0,3098 1,0000 0,2889<br />

11 95 0,2689 0,9915 0,3174<br />

12 137 0,2744 1,0000 0,2939<br />

13 193 0,2635 0,9957 0,3140<br />

Ukupno 758 - 0,9280 0,7420*10-6<br />

a. tweak factor<br />

paralelizacija i ovog postupka donela bi z<strong>na</strong>čajne uštede u<br />

vremenu.<br />

Kao što je već <strong>na</strong>glašeno, proces generisanja jakih<br />

klasifikatora zahtevao je da se utvrdi optimalni odnos između<br />

parametara klasifikatora. I dok je za prve jake klasifikatore bilo<br />

mnogo važnije da sadrže što manje slabih klasifikatora kako bi<br />

vreme potrebno za eliminisanje početnog broja testiranih<br />

regio<strong>na</strong> takođe bilo minimalno, kasniji klasifikatori su više<br />

usredsređeni da ostvaruju visoke TPR uz minimizaciju FPR.<br />

Kao krajnji rezultat treninga, dobijeni su jaki klasifikatori<br />

čiji su parametri dati u tabeli 2. U njoj su takođe prikazani i<br />

parametri krajnjeg kaskadnog klasifikatora. Uz TPR od 0,92<br />

koji je izraču<strong>na</strong>t <strong>na</strong>d setom od 500 slika korišćenih za<br />

evaluaciju, kao i uz FPR od 0,74*10 -6 koji je izraču<strong>na</strong>t <strong>na</strong><br />

<strong>osnovu</strong> FPR pojedinih jakih klasifikatora, ostvareni rezultati su<br />

zadovoljili očekivanja.<br />

Za sam kraj, odabran je test skup slika iz baze MIT+CMU<br />

koje su i u radovima [1] i [2] korišćene za grafički prikaz<br />

rezultata, kako bi se ostvarilo relativno poređenje. Slike su<br />

skenirane metodom klizajućeg prozora (eng. Sliding window)<br />

početne veličine 24x24 piksela, sa pomerajom od 10% i<br />

uvećanjem prozora <strong>na</strong> kraju jednog ciklusa od 20%. Rezultati<br />

detekcije <strong>lica</strong> <strong>na</strong>d tim slikama dati su <strong>na</strong> Sl. 5. I dok su rezultati<br />

primene origi<strong>na</strong>lnog <strong>Viola</strong>-<strong>Jones</strong> klasifikatora nešto bolji od<br />

onih koji su prikazani <strong>na</strong> slici, u odnosu <strong>na</strong> rad [2] ostvareni su<br />

uočljivo bolji rezultati.<br />

V. ZAKLJUČAK<br />

Realizovani sistem detekcije <strong>lica</strong> ostvario je solidne<br />

performanse, uspevajući da ostvari jedan od glavnih ciljeva<br />

implementacije ovog <strong>algoritma</strong>, a to je brzi<strong>na</strong> rada. Ipak ostalo<br />

je dosta mesta da dodatno u<strong>na</strong>pređenje. Jednu od mogućih<br />

- 1158 -


Slika 5.<br />

Izlaz iz <strong>detektora</strong> <strong>lica</strong> primenjenog <strong>na</strong>d slikama iz baze slika MIT+CMU.<br />

prome<strong>na</strong> predstavljao bi prelazak sa detekcije uskog dela <strong>lica</strong><br />

<strong>na</strong> detekciju šireg regio<strong>na</strong> zajedno sa spoljnim crtama <strong>lica</strong>, što<br />

bi se postiglo upotrebom drugačijeg seta pozitiva. Takođe,<br />

generisanje dodatnih jakih klasifikatora dodatno bi poboljšalo<br />

sposobnost klasifikatora da odbaci negative pa bi se, samim<br />

tim, za treniranje pojedinih jakih klasifikatora mogao dodatno<br />

podići TPR. I <strong>na</strong> kraju, oblast u kojoj je ostalo možda i <strong>na</strong>jviše<br />

mesta za <strong>na</strong>predak predstavlja upravo <strong>na</strong>čin smanjivanja<br />

graničnih vrednosti pojedinih slabih klasifikatora pri promeni<br />

faktora prilagođenja jakog klasifikatora. Finijom<br />

preraspodelom ovih prome<strong>na</strong>, ostvario bi se kontinuirani<br />

<strong>na</strong>predak u performansama jakog klasifikatora pri dodavanju<br />

novih slabih klasifikatora, što do sad nije bio slučaj.<br />

ZAHVALNICA<br />

Rad je realizovan kao završni projekat iz predmeta<br />

Kompjuterska vizija <strong>na</strong> 1. godini Master studija, kod docent dr<br />

Vladimira Crnojevića. Ovom prilikom, želeli bismo da se<br />

zahvalimo svim kolegama i prijateljima koji su <strong>na</strong>s nesebično<br />

podržali, dozvoljavajući <strong>na</strong>m da koristimo njihove perso<strong>na</strong>lne<br />

raču<strong>na</strong>re u svrhu treninga klasifikatora.<br />

LITERATURA<br />

[1] P. <strong>Viola</strong> and M. J. <strong>Jones</strong>, “Robust Real-Time Face Detection”,<br />

Inter<strong>na</strong>tio<strong>na</strong>l Jour<strong>na</strong>l of Computer Vision 57 (2), 2004.<br />

[2] O. H. Jensen, “Implementing the <strong>Viola</strong>-<strong>Jones</strong> Face Detection<br />

Algortihm”, Technical University of Denmark, 2008.<br />

[3] G. B. Huang, M. Ramesh, T. Berg and E. Learned-Miller, “Labeled<br />

Faces in the Wild: A Database for Studying Face Recognition in<br />

Unconstrained Environment”, University of Massachusetts, Amherst,<br />

Technical Report 07 – 49, October 2007.<br />

http://vis-www.cs.umass.edu/lfw/<br />

[4] V. Jain and E. Learned-Mille, “FDDB: A Benchmark for Face Detection<br />

in Unconstrained Settings”, Technical Report UM-CS-2010-009, Dept.<br />

of Computer Science, University of Massachusetts, Amherst. 2010.<br />

http://vis-www.cs.umass.edu/fddb/<br />

[5] K. Sung, T. Poggio, H. Rowley, S. Baluja and T. Ka<strong>na</strong>de, “Combined<br />

test set A, B and C”, MIT+CMU, 1998.<br />

http://vasc.ri.cmu.edu/idb/html/face/frontal_images/<br />

ABSTRACT<br />

This paper describes a realization of a frontal face detector<br />

based on the <strong>Viola</strong>-<strong>Jones</strong> algorithm. Independently developed<br />

procedures are fully given whereas the algorithm itself is<br />

briefly described. Also, distributed realization of classifier<br />

training used for face detection is presented. Fi<strong>na</strong>lly, this paper<br />

presents training results with possibilites of further<br />

improvement in face detection.<br />

REALIZATION OF FACE DETECTOR BASED ON<br />

THE VIOLA-JONES ALGORITHM<br />

Boško Mihić, Jele<strong>na</strong> Lozanov<br />

- 1159 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!