Veidų išskyrimas
Veidų išskyrimo ir atpažinimo uždaviniai
Kelių dešimčių metų kompiuterinio atpažinimo patirtis rodo, kad veidų ir kalbos uždaviniai yra vieni sunkesnių. Atpažinti kalbą kompiuteriu buvo pradėta kiek anksčiau, nes kalbos signalai reikalauja mažiau kompiuterio resursų, o kompiuterių eros pradžioje tai buvo aktualu. Pvz. vidutiniškai per 0.1 sekundę ištariamas vienas žodis. Kad išsaugoti šią informaciją telefono kokybės lygyje reikės 0.1x8000x1 = 800 baitų (0.1 sek., 8000 imčių per sek., 1 baitas imčiai). Palyginimui nedidelis nespalvotas paveikslėlis 200x200x1 = 40000 (200 taškelių plotis, 200 aukštis, 1 baitas pilkumo lygmeniui koduoti) pareikalaus 50 kartų daugiau kompiuterio resursų.
Šis faktas atsispindi ir mūsų smegenų žievės plotų funkciniame pasiskirstyme. Teigiama, kad apie 80 procentų smegenų žievės ploto skirta priimti ir apdoroti su vaizdais ir susijusią informaciją. Savo ruožtu smegenų dalis, kuri apdoroja vaizdus, yra specializuota veidų atpažinimui. Prisiminkite kiek iš veido pažįstate žmonių ir galėsite susidaryti įspūdį kokio atminties kiekio jums reikia šios unikalios informacijos įsiminimui.
Reikia skirti objekto išskyrimo ir atpažinimo uždavinius. Turint konkretų vaizdą pirma reikia išskirti lokalias sritis, kuriose yra veidai, o po to kiekvienoje srityje išskirtą veidą atpažinti priskiriant jį konkrečiam jums pažįstamam asmeniui arba nustatyti veido apibendrintus parametrus (rasę, lytį, amžių ir pan.). Kalbant programavimo kalbos Java terminais reikia skirti klases ir objektus. Klasės yra apibendrinti objektai, kuriuose apibrėžiami tos klasės objektus charakterizuojantys laukai. Veido išskyrimo uždavinys atitinka klasės tipo atpažinimą, o veido atpažinimas - objekto laukų reikšmių identifikavimą. Žinant objekto laukų reikšmes ir turint veidų "duomenų bazę" (mums pažįstamų veidų aibę) galima bandyti objektą sutapatinti su vienu iš bazėje esančių objektų arba priimti sprendimą, kad išskirto veido parametrai (požymiai) neatitinka nei vieną mums pažįstamą. Šiame kurse mes mėginsime spręsti tik pirmąjį uždavinį, t.y. veido(-ų) išskyrimo uždavinį.
Veidų skaitmeniniai signalai
Kaip ir kalbos atveju
reikia skirti analoginius, diskrečiuosius ir skaitmeninius
vaizdus.
Analoginis vaizdas matematine prasme yra dviejų kintamųjų funkcija
u = u(x,y).
(x,y) plokščio vaizdo taškelio (angl. pixel - "picture element" koordinates, o u = u(x,y) - vaizdo intensyvumą tame taške. Vaizdo intensyvumas priklauso nuo trimatės vaizdo scenos objektų, apšvietimo, vaizdo stebėtojo pozicijos, plokščio vaizdo (2-atės projekcijos) registravimo būdo ir t.t.
Diskrečiu vaizdu vadiname analoginį vaizdą apibrėžiančios funkcijos imtis
ui,j = u(xi,yj)
apibrėžtas diskrečioje gardelėje (xi,yj). Kaip taisyklė, imtys imamos vienodu atstumu x ir y kryptimis. Tokiu būdu, jei atstumą tarp gretimų taškų pažymėti h, gausime
ui,j = u(ih,jh) .
Deja praktiškai gauti bet kokio analoginio signalo reikšmes taškuose (xi,yj) neįmanoma. Dalykas tas, kad bet koks šviesos intensyvumo matavimo prietaisas negali gauti intensyvumo tankio reikšmės idealiai lokalizuotame taške. Todėl kiekviena išmatuota reikšmė atspindi vidutinį intensyvumą taško (xi,yj) aplinkoje. Išmatuota intensyvumo reikšmė visuomet turi matavimo paklaidą. Dėl šios priežasties ir dėl to, kad kompiuteriuose galima saugoti tik baigtiniu skaičiumi bitų apibrėžiamą informaciją, išmatuota reikšmė yra kvantuojama.
Kvantuotos reikšmės yra numeruojamos ir numeriai sutapatinami su kvantuoto intensyvumo reikšme. Tokiu būdu gaunamas skaitmeninis vaizdas (signalas):
ui,j e {0,1,...,M-1} .
Čia M žymi kvantų skaičių (tipiniu atveju M = 255).
Tačiau realiai mes suvokiame spalvotus vaizdus. Šis reiškinys yra gana sudėtingas. Šviesos intensyvumas yra tik integralinė patenkančio į matavimo pasirinktą plotą šviesos srauto energijos išraiška. Žvelgiant giliau, šviesos srautas sudarytas iš skirtingų dažnių elektromagnetinių bangų. Matematine prasme šviesos intensyvumas yra elektromagnetinių bangų galingumo pagal bangų dažnį integralas. Savo ruožtu neteisinga kalbėti apie taškinio signalo galingumo skleistinę pagal dažnius, nes taškinio šaltinio galingumas visiems bangos ilgiams yra vienodas. Problemos sprendimas analogiškas kalbos signalo atvejui - diskretizavimo taško aplinkoje vaizdo signalui pritaikoma lango funkcija ir kalbama apie "pasverto" lango funkcija vaizdo galingumo išdėstymą pagal dažnį.
Žmogaus rega sugeba dalinai išgauti informaciją apie šviesos srauto galingumo skleistinę pagal dažnius. Tiksliau, akies tinklainėje yra trijų rūšių kūgeliai specializuoti priimti artimas raudonos, žalios ir mėlynos spalvas atitinkančių dažnių šviesas. Regimos šviesos dažnių diapazonas yra nuo 360 iki 720 nanometrų.
Veidų išskyrimo metodikos
Išvardinsime populiariausias ir paprasčiausias veidų išskyrimo metodikas
Violos ir Jones greitas veidų išskyrimo algoritmas
Trumpai aprašysime pora gerai pasiteisinusių veidų išskyrimo metodikų.
Pirmąją vadinsime jos autorių P. Viola ir M. J. Jones vardu. Šios metodikos pagrindinis privalumas - sparta. Viola ir Jones pasiūlė skaičiuoti labai paprastus ir greitai apskaičiuojamus parametrus. 1 paveikslėlis iliustruoja šių požymių keturis pagrindinius tipus. Paveikslėlio šablonai balta spalva žymi pozicijas, kuriose esantys vaizdo taškeliai sumuojami su pliuso ženklu, o pilka spalva žymi pozicijas, kuriose esantys taškeliai sumuojami ir paimami su minuso ženklu. Požymiu yra laikomas baltoje (-ose) ir pilkoje (-ose) srityje (-se) esančių taškelių skirtumas.
1 paveikslėlis. Keturi Haro tipo požymiai
Savo darbe Viola ir Jones naudojo 24x24 taškelių vaizdus, kuriuose galima priskaičiuoti iki 45396 Haro tipo požymių. Kad greitai apskaičiuoti požymio reikšmę, jie naudojo "kaupiamąjį vaizdą". 2 paveikslėlis iliustruoja jo reikšmę taške (x,y), kuri gaunama sumuojant vaizdo reikšmes pilkame stačiakampyje, kurio viršutinis kairysis taškas sutampa su vaizdo tuo pačiu kampiniu tašku, o apatinis dešinysis yra taške (x,y). Aišku, kad kaupiamąją sumą kompiuteryje galima efektyviai apskaičiuoti ir išsaugoti masyve, kurio matmenys bus tokie patys kaip ir pradinio vaizdo.
2 paveikslėlis. Kaupiamasis vaizdas taške (x,y) naudojamas greitai apskaičiuoti Haro tipo požymį.
Jei pažymėti kaupiamojo vaizdo reikšmes iu = iu(x,y) (i - žymi "Integral"), tai norint gauti vaizdo taškelių sumą stačiakampyje D su kampiniais taškais 1 ir 4 (žiūr. 3 paveikslėlį) pakaks keturių veiksmų: iu(4)+iu(1)-iu(2)-iu(3)
3 paveikslėlis. 1 ir 4 taškais apibrėžto stačiakampio D taškų suma iu(4)+iu(1)-iu(2)-iu(3)
Haro tipo požymiai bus apskaičiuojami analogiškai sudedant ir atimant atitinkamuose stačiakampiuose gautas reikšmes. Nežiūrint į greitą elementarių požymių apskaičiavimą vis viena naudoti visų požymių atpažinimui netikslinga. Kad išskirti geriausiai tinkamus klasifikacijai požymius, autoriai naudojo Adaboost apmokymo algoritmą. Šio algoritmo esmė yra tokia. Tarp didelio požymių parametrų aibės ieškomas nedidelis skaičius požymių, kurie sumuojami su svoriais ir duoda geriausius atpažinimo rezultatus. Kraštiniu atveju galite išrinkti vienintelį požymį, kuris kasifikuodamas pagal taisyklę:
hj(x) = 1 , jei pjfj(x) <
pjTj,
hj(x) = 0 , priešingu atveju ,
darys mažiausiai klaidų. Čia x žymi 24x24 vaizdo fragmentą, fj - j-ąjį požymį, Tj - klasifikavimo slenkstį, o pj - ženklą. 4 paveikslėlis aprašo (anglų kalba) požymio, svorių ir klasifikavimo schemą naudojant AdaBoost metodiką. Pagal šią metodiką silpni hj(x) yra apjungiami į vieną su svoriais. Čia T žymi naudojamų atpažinimui požymių skaičių.
4 paveikslėlis. T silpnų klasifikatorių paieškos ir apjungimo metodika.
Viola ir Jones atlikdami sistemos apmokymą eksperimentiniu būdu išskyrė 200 požymių (T=200), kuriuos naudodami gavo gerus atpažinimo rezultatus. 384x288 taškelių vaizdui apdoroti užtenka apie 1 sekundę. Šis greičio pasiekimas jų darbo paskelbimo metu buvo rekordinis. Aišku vien tik algoritmo greitis nieko nepasako, nes galima "labai greitai" su 1/2 tikimybe spėti, kad pateiktas 24x24 vaizdo fragmentas yra veidas arba ne.
5 paveikslėlis iliustruoja jų sistemos veidų išskyrimo kokybę. Abscisių ašyje atidedamos neteisingų teigiamų išskyrimų dažnis (vaizdo fragmentas buvo pripažintas veidu, nors iš tikrųjų toks nėra), o ordinačių ašyje - teisingai atpažintų veidų dalis. Pavyzdžiui išskiriant veidus 14084 testavimui skirtų vaizdų imtyje algoritmas darė vieną klaidingą teigiamą veido išskyrimą ir teisingai atpažino 95 procentus veidų. Trumpai objektų išskyrimo ir atpažinimo kreivės vadinamos ROC kreivėmis (angl. receiver operating curves). Kuo ROC kreive ribojamas plotas arčiau vieneto, tuo algoritmas geresnis. Taip pat svarbūs ROC kreivės ribiniai taškai, kurie atspindi kraštutinius atvejus - kokią dalį veidų algoritmas gali teisingai atpažinti nedarydamas nei vieno klaidingo teigiamo išskyrimo ir atvirkščiai - kokia bus dalis klaidingų teigiamų veidų išskyrimų išskiriant visus tikrus veidus teisingai. Sprendžiant iš grafiko, pirmasis skaičius yra apie 0.6.
5 paveikslėlis. Neteisingų teigiamų / teisingai klasifikuotų veidų kreivė (taip vadinama ROC kreivė).
Algoritmo aprašymo pabaigai pateiksime AdaBoost algoritmu rastų pirmųjų dviejų požymių iliustraciją. Su šiais požymiais gaunama mažiausiai veidų išskyrimo klaidų (tiksliau gaunamas maksimalus ROC kreive ribojamos figūros plotas). Pastebėkime, kad kompiuteriu gautas rezultatas atitinka lūkesčius, kad atpažįstant veidus mes bene didžiausią dėmesį kreipiame į akis. Šį intuityviai suprantamą faktą paremia dar 1950-aisiais atlikti rusų psichofiziko Jarbus darbai (žiūr. 6, 7 paveikslėlius).
![]() | ![]() |
6 paveikslėlis (kairiau). AdaBoost algoritmu surasti pirmieji du geriausią veidų išskyrimo rezultatą duodantys požymiai.
7 paveikslėlis (dešiniau). Žmogaus akių judesiais fiksuojamas dėmesys į stebimą moters paveikslą.
Hausdorfo metrikos panaudojimas išskirti veidams
Kitas pasiteisinęs veidų išskyrimo algoritmas remiasi Hausdorfo metrika. Hausdorfo metrika gerai tinka spręsti bendrus atpažinimo uždavinius.
1 apibrėžimas.
Tarkime A = {a1, ... , am} ir B = {b1, ... , bn}
yra dvi baigtinės tos pačios metrinės erdvės taškų aibės.
Tuomet Hausdorfo atstumu tarp
A ir B aibių vadinamas dydis
H(A,B) = max {h(A,B), h(B,A)}
kur
h(A,B) = maxaeA minbeB ||a-b||
h(A,B) dydis vadinamas aibės A tiesioginiu Hausdorfo atstumu iki aibės B. ||a-b|| žymi atstumą tarp a ir b taškų. Vaizdų atveju pasiteisino kiek modifikuotas Hausdorfo tiesioginis atstumas apibrėžiamas išraiška
h(A,B) = 1/|A|SaeA minbeB ||a-b||
Čia m = |A| žymi A aibės elementų skaičių.
Patogu A ir B aibėms suteikti tokią prasmę: A - atpažinimui skirtas vaizdas, B - objektas ieškomas vaizde. Iš Hausdorfo atstumo apibrėžimo aišku, kad tiesiogiai skaičiuoti Hausdorfo atstumą tarp vaizdo A ir objekto B nėra prasmės, nes jis praktiškai visuomet bus didelis. Todėl atliekami tokie žingsniai.
Turint vaizdą ir objektą/etaloną atliekamos transformacijos su įvairiais parametrais, kad minimizuoti Hausdorfo atstumą. Jei pažymėti galimų transformacijų aibę simboliu P, tai gausime tokią atstumo tarp A ir B formulę:
dp^(A,B) = minpeP H(A,Tp(B)) .
8 paveikslėlis iliustruoja aprašytą procedūrą grafiškai.
8 paveikslėlis. Objekto transformacijos minimizuoti Hausdorfo atstumą (šaltinis) Aišku, kad taikant tiesiogiai šią schemą pradiniams A ir B skaitmeniniams vaizdams gausime didžiulius skaičiavimo kiekius. Todėl atliekamas specifinis požymių išskyrimas A ir B vaizde, paliekantis tik mažą dalį charakteringų A ir B taškų. O. Jesorsky, K.J. Kirchberg, R.W. Frishholz darbe taškų mažinimo tikslu atliekami tokie pirminiai žingsniai.
9 paveikslėlis iliustruoja visus veido išskyrimo remiantis Hausdorfo metrika etapus. Sprendžiant optimalios transformacijos paiešką galima naudoti genetinius minimizavimo algoritmus. Čia jų mes neaprašinėsime tačiau bendrais bruožais idėja yra tokia. Bet kokį globalaus minimumo paieškos uždavinį visuomet galima tiesioginio parametrų perrinkimo būdu, tačiau tai užima nerealiai daug kompiuterio resursų. Galima mažinti perrenkamų taškų skaičių atsitiktinai pasirenkant visas parametrų reikšmes, tačiau naudojant tokią strategiją galima gauti tolimas nuo globalaus minimumo reikšmes. Genetiniai minimizavimo algoritmai taupo ir skaičiavimų sąnaudas ir duoda neblogas minimumų reikšmes. Tai pasiekiama derinant atsitiktinį parametrų generavimą su perspektyvių parametrų rinkinių modifikavimu mėgdžiojant genetikoje stebimus procesus.
9 paveikslėlis. Veido išskyrimo etapai naudojant Hausdorfo metriką (šaltinis)
Nuorodos
Naudingos nuorodos parinktos pagal veidų išskyrimo specialistą Robert Frischholz
Nuoroda | Komentarai |
---|---|
Metodikos | Veidų išskyrimo populiariausių metodikų trumpi aprašymai |
Straipsniai | Veidų išskyrimo rinktiniai straipsniai ir apžvalgos |
Duomenys | Įvairios veidų atpažinimo ir išskyrimo algoritmų testavimo duomenų bazės |
Programinė įranga | Nuorodos į laisvai platinimas ir komercines veidų išskyrimo bei atpažinimo sistemas |
Nuorodos | Veidų išskyrimui skirtos nuorodos |
Kita | Veidų iliuzijos ir kita |
Praktinis darbas
Realizuokite veidų išskyrimo algoritmą Java kalba.
Jūsų sukurtas veidų išskyrimo algoritmas bus vertinamas pagal
pateiktų algoritmui nežinomų veidų atpažinimo kokybę.
Reikalingų algoritmui atiderinti veidų pavyzdžius rasite čia arba galite pasirinkti čia.
Literatūra
2005 m. vasario 23 d.