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
- 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 -