Analiza Si Implementarea Metodelor de Recunoastere a Formelor
Cuprins
Introducere
1. Determinarea algoritmilor pt recunoaștere facială în cadrul testării bazelor de date
1.1.Clasificatorul Nearest Prototype
1.2. Clasificatorul neuronal Kohonen supervizat
1.3. Algoritmul de antrenare al rețelei neurale circulare Kohonen
1.4. Algoritmul de calibrare al rețelei neurale Kohonen
1.5. Clasificare supervizată cu module neuronale cu autoorganizare concurente
1.6. Clasificatorii fuzzy și neuro-fuzzy
1.7. Clasificarea fuzzy clasică
1.8. Rețeaua neuronală fuzzy cu autoorganizare (Fuzzy SOM)
1.9. Rețeaua Kohonen cu arhitectură circulară
1.10. Calibrarea rețelei fuzzy-neuronale Kohonen
2. Comparația bazelor de date publice cu cea personală
2.1. Baza de date Faces’94
2.2. Baza de date AR
2.3. Baza de date personală
2.4. Evaluarea imaginilor din cadrul bazei de date din punct de vedere calitativ
3. Implementarea algoritmilor pentru recunoaștere facială
3.1.Fuziunea datelor în cadrul sistemelor de supraveghere militare
3.2.Componentele sistemului de supraveghere militară
3.3. Reprezentarea detaliilor principale ale feței
3.4. Detectarea și localizarea ochilor
3.5. Detectarea și localizarea gurii
3.6. Evaluarea algoritmilor de recunoaștere ai feței – parametri
3.7. Algoritmul de localizare a pupilei
3.8. Detecția și încadrarea feței
3.9. Detecția trăsăturilor faciale
3.10. Estimarea direcției privirii
3.11. Implementarea în Matlab
3.12.Estimarea prin segmentare cu prag
4. Rezultate experimentale
4.1. Descrierea aplicației de recunoaștere facială
4.2. Specificații ale programului informatic
4.3. Rezultate prin implementarea unui software pentru detecția și recunoașterea fețelor
4.4. Rezultate experimentale privind determinarea și implementarea clasificatorilor
5. Concluzii și contribuții personale
5.1. Concluzii privind prelucrarea imaginii pentru detecția feței
5.2. Concluzii privind prelucrarea imaginii pentru recunoașterea feței
5.3. Concluzii negative
5.4. Contribuții personale
5.5.Perspective și oportunități de cercetare
6. Bibliografie
7. Anexe
Introducere
Ca urmare a concluziilor din Rapoartele de cercetare anterioare și/sau a cercetărilor actuale din domeniul recunoașterii feței, in conformitate cu îndrumările Comisiei de îndrumare, prezentul Raport de cercetare și-a propus:
1. Determinarea algoritmilor pt recunoaștere facială în cadrul testării bazelor de date și studiul privind:
– Clasificatorul Nearest Prototype,
– Clasificatorul neuronal Kohonen supervizat,
– Algoritmul de antrenare al rețelei neurale circulare Kohonen,
– Algoritmul de calibrare al rețelei neurale Kohonen,
– Clasificare supervizată cu module neuronale cu autoorganizare concurente,
– Clasificatorii fuzzy și neuro-fuzzy,
– Clasificarea fuzzy clasică,
– Rețeaua neuronală fuzzy cu autoorganizare (Fuzzy SOM),
– Rețeaua Kohonen cu arhitectură circulară,
– Calibrarea rețelei fuzzy-neuronale Kohonen.
2. Identificarea principalelor baze de date publice folosite pentru recunoașterea feței persoanelor si comparația bazelor de date Faces 94 si a bazei de date AR cu cea personală
În cadrul acestei etape voi realiza experimente privind:
– identificarea ratei corecte de recunoaștere [%] pentru fuziunea canalelor de culoare;
– efectuarea de experimente prin selecția a 1, 3, 6, 9, 12, 18 caracteristici și antrenarea unui număr de 151 neuroni folosind varianta fără selecție de caracteristici și varianta de selecție a caracteristicilor cu PCA asupra spațiilor de culoare RGB, H1H2H3 si C1C2C3, respectiv C1C2 și C1;
– efectuarea de experimente folosind clasificatorii SOM, CSOM 1 și NP;
– reprezentarea ratelor de recunoaștere, prin fuziunea caracteristicilor.
În cazul bazei de date AR si a celei personale voi experimenta folosind metoda PCA vs. LDA antrenarea unei retele cu 40-400 neuroni cu un pas de 40, si metodele de clasificare SOM, CSOM 1, FSOM1 (varianta cu intrări non-fuzzy) si FSOM2 (varianta cu intrări fuzificate ) pentru identificarea ratei de recunoaștere maxime.
Voi realiza experimente prin antrenarea a 7 imagini de intrare si 7 imagini de test pentru:
– rata de recunoaștere corectă pentru PCA (C1)&PCA (C2)&PCA (C3);
– rata corectă de recunoaștere a LDA (C1)&LDA (C2)&LDA (C3);
– rata corectă de recunoaștere a PCA (C1)&PCA (C2);
– rata corectă de recunoaștere a LDA (C1)&LDA (C2);
– rata de recunoaștere corectă pentru PCA (C1);
– rata de recunoaștere corectă pentru LDA (C1) .
Voi reprezenta sub formă de tabel și grafic rezultatele obținute si fuziunea caracteristicilor pentru fiecare dintre aceste cazuri cu concluzii asupra performanțelor celei mai bune metode, privind rata de recunoaștere.
În aceast Raport voi utiliza următoarele spații color:
– RGB;
– C1C2C3 (spațiu color cu componente necorelate dedus prin aplicarea transformării Karhunen-Loeve asupra spațiului RGB, conform metodei prezentate în [26]);
– H1H2H3 (spațiu color cu componente necorelate dedus prin aplicarea unei transformări definite de rețeaua neuronală Hebbiană asupra spațiului RGB, conform metodei prezentate în [27]).
3. Voi realiza implementarea algoritmilor pentru recunoaștere facială în cadrul unei aplicații software alternativă la mediul Matlab.
Voi urmări detectarea și recunoașterea detaliilor principale ale feței prin:
– detectarea și localizarea ochilor;
– detectarea și localizarea gurii, după o schema logică de antrenare a algoritmului pentru recunoașterea feței personală implementând algoritmul de localizare a pupilei și centroidului feței având ca principale etape:
– detecția și încadrarea feței;
– detecția trăsăturilor faciale;
– estimarea direcției privirii.
În cadrul unei aplicații informatice realizate personal voi implementa procedee noi ca:
estimarea prin segmentare cu prag, urmarind determinarea unor metode optime de implementare a algoritmilor pentru detecția pupilei și a unor algoritmi actuali pentru determinare a regiunilor feței din fotografii sau imagini fixe, în scopul detectării și recunoașterii feței în acestea.
Totodată voi căuta folosirea unei metode mixte care să conducă la o rată de recunoaștere maximă realizată într-un timp de prelucrare foarte scurt și obținerea unor rate maxime de bună detecție de peste 90% și rate de falsă detecție de maxim 20% – comparabile pentru implementarea aplicației în cadrul sistemelor de supraveghere militare.
Voi optimiza experimentele prin folosirea metodei de selecție PCA, a interpolării cubice și a segmentării optime cu prag pentru detecția și recunoașterea feței implementând clasificatori HAAR-LIKE care sunt testați ca fiind aplicabili pentru aplicații militare și care sunt predefiniți în cadrul librăriei OpenCv, printr-o implementare folosinnd Microsoft Visual Studio, vers. Express (licență free).
Raportul își propune la final a trasa alte perspective și oportunități de cercetare pe baza concluziilor desprinse.
1. Determinarea algoritmilor pt recunoaștere facială în cadrul testării bazelor de date
1.1.Clasificatorul Nearest Prototype
Recunoașterea formelor prin metode statistice implică reprezentarea formelor folosind un număr de descriptori scalari, sub forma unui vector ce definește un punct în spațiul formelor [20].
Recunoașterea prin metodele statistice necesită alegerea unui set de caracteristici adecvat pentru construcía vectorilor formelor precum și proiectarea unui clasificator , adaptabil oricărei forme ce poate fi reprezentat printr-un vector aparținând unei clase dintr-un număr limitat de clase posibile K.
Recunoașterea fețelor se realizează prin proiectarea clasificatorului și clasificarea propriu zisă.
Algoritmul Nearest Prototype (NP) este un clasificator tradițional ce atribuie un eșantion de intrare X clasei ce are cel mai apropiat prototip față de x, respectiv:
, (1)
Prototipul fiecărei clase este astfel reprezentat ca fiind vectorul mediu al eșantioanelor de antrenament ce aparín clasei respective.
Clasificare folosind algoritmul NP:
– Se deschide programul Matlab
– In Command Window se scrie matricea continand vectorii de antrenare trainVectors (D x N): N vectori de dimensiune D
– Se scrie vectorul ce contine eticheta (clasa de apartenenta) fiecarui vector etichete (1 x N): un vector cu N coloane
– Se scrie matricea continand vectorii ce se doreste a fi clasificati classifVectors (D x M): M vectori de dimensiune D
– Se apeleaza functia NP NP(trainVectors, etichete, classifVectors)
– functia va returna clasa in care este clasificat fiecare vector
Selecția caracteristicilor
O problemă deosebită în recunoașterea imaginilor este selecția caracteristicilor, afectând puternic performanțele clasificării statistice. Selecția caracteristicilor este considerată ca un proces de transformare liniară sau neliniară a spațiului inițial al observațiilor într-un spațiu cu dimensionalitate redusă. Această transformare este necesară deoarece unii algoritmi care sunt eficienți într-un spațiu cu un număr redus de dimensiuni pot deveni nepractici într-un spațiu cu mai multe dimensiuni.
Pentru o singură clasă, criteriul de selecție reflectă eficiența transformării în reducerea dimensiunii concomitent cu conservarea informației originale.
În cazul mai multor clase, selecția caracteristicilor este funcție de eficiența lor privind separabilitatea claselor. Această separabilitate depinde atât de repartiția claselor cât și de clasificatorul utilizat.
Cele mai multe transformări utilizate pentru selecția caracteristicilor sunt liniare. Transformările neliniare, deși mai dificil de implementat, promit să realizeze o eficiență mai ridicată, exprimând mai bine natura dependenței dintre caracteristicile semnificative și datele observate.
1.2. Clasificatorul neuronal Kohonen supervizat
Rețeaua Kohonen se mai numește și Self Organizing Map – SOM (hartă cu autoorganizare). Rețeaua Kohonen face parte din grupul rețelelor nesupervizate. Aceasta oferă o metodă de ordonare și/sau vizualizare a unor date complexe pe baza similarităților.
Principala aplicație a acestei rețele este recunoaștere de forme. A fost folosită cu succes în aplicații ca: detecția intrusului, recunoașterea obiectelor, extragere de caracteristici, codare (compresie) de imagini, organizarea știrilor pe un website, clasificare de date senzoriale, organizarea muzicii pe baza similarităților sonore, predicții, clasificarea genelor, recunoașterea vorbirii, a vorbitorului, clasificarea textului etc. Ea încearcă să imite structura de neuroni a creierului uman. Astfel ea are o motivație biologică:
– Există o distribuție a senzorilor care au o zonă bine stabilită specifică (o excitație se proiectează într-o anumită zonă a cortexului): harta vizuală în cortexul vizual, harta fonotopică în cortexul auditiv, etc.;
– Autoorganizarea implică existența interacțiunilor locale: zona de excitație laterală îngustă (50 ÷ 100 μm), zona de inhibiție laterală largă (200 ÷ 500 μm), zona de excitație slabă (câțiva centimetri).
Rețeaua neuronală Kohonen implică învățarea competitivă și interacțiuni locale între neuroni (principiul vecinătății).
Efectele obținute cu rețeaua Kohonen sunt:
– Ordonare globală;
– Conservarea topologiei (transformă relațiile de similaritate între vectorii de intrare în relații de vecinătate între neuronii în care se proiectează acești vectori);
– După un număr suficient de iterații densitatea de probabilitate a vectorilor de intrare este aproximată foarte bine prin setul de ponderi al SOM;
– Neuronii devin decodori ordonați în rețea ai domeniilor lor de semnal din spațiul de intrare. Vectorii de intrare similari (vecini în spațiul de intrare) se proiectează în același neuron sau într-un neuron vecin;
– Reprezentarea economică a datelor și a relațiilor dintre ele.
Din punct de vedere al arhitecturii rețelele Kohonen pot fi clasificate astfel:
– Rețele unidimensionale: liniară, circulară și spirală;
– Rețele bidimensionale: plane (rectangulară, hexagonală,
cilindrică, sferică (doar aria), toroidală);
– Rețele tridimensionale: sferică (ca volum), paralelipipedică, toroidală;
– Rețele multidimensionale.
Caracteristicile generale ale rețelei neuronale Kohonen sunt următoarele:
a) este rețea nesupervizată;
b) se bazează pe principiul competiției: se calculează distanțele dintre vectorii de intrare
și toți vectorii pondere atașați neuronilor rețelei
, ) =
( 2 )
unde, = este vectorul asociat unității de ieșire ce conține toate ponderile de la n intrări = la nodul j = 1 M și i = 1 n.
Sunt calculate M distanțe dupa formula de mai sus pentru M neuroni, iar dintre acestea este aleasă distanța cea mai mică și neuronul astfel calculat este declarat căștigător –j*.
este distanța minimă între vectorul de intrare și vectorii pondere asociați neuronilor
= este neuronal câștigător.
Vectorul de intrare este cel mai asemănător cu neuronal câștigător și vectorul de intrare este proiectat în neuronul câștigător.
c) Principiul vecinătății – transformă relațiile de similaritate între vectorii de intrare în relații de vecinătate între neuronii în care se proiectează acești vectori.
Funcția de vecinătate , este simetrică și monoton descrescătoare cu distanța
[ , reprezintă indexul epocii, iar rc este raza vectoare a neuronului câștigător.
Vecinătatea reprezintă o legătură între neuronii apropiați și intervine atât în rafinarea ponderii neuronului câștigător, cât și în rafinarea ponderilor neuronilor vecini.
Cantitatea cu care se rafinează ponderea neuronului de index i atunci când neuronul c a fost declarat câștigător este proporțională cu funcția Φ .
Când Φ este egal cu 0 înseamnă că ponderea acelui neuron nu se rafinează, iar Φ este maxim când i = c (i este un neuron oarecare).
Tipuri de vecinătate:
– vecinătate rectangulară: =
– vecinătate triunghiulară: =
– vecinătate gaussiană: = exp[ .
Raza vecinătății σ(t) este monoton descrescătoare și poate avea formele:
– Liniară σ(k) = round (σ (0)-t* m), m = panta în scădere, (3 )
-Hiperbolică σ(k) = , (4 )
– Exponențială σ(k) = σ(0) , ( 5)
Distanța dintre neuronul câștigător c și neuronul i se calculează în funcție de tipul vecinătății.
Vecinătatea [V] rectangulară pentru o rețea rectangulară are forma:
Figura 1.1. – Vecinătate rectangulară pentru o rețea Kohonen rectangulară
S-a urmărit implementarea unui proces de recunoaștere de imagini faciale pe un model simplu, cu viteză mare de execuție. S-a ales un model neuronal cu autoorganizare (rețea Kohonen) cu arhitectură unidimensională sub formă de inel. Inelul conferă vecinătăți simetrice fiecărui neuron.
Prin instruirea rețelei Kohonen se proiectează fiecare imagine prezentată rețelei pentru analiză într-o anumită zonă de neuroni (distanța minimă). După fiecare imagine aplicată la intrarea rețelei, ponderile neuronului câștigător și ale vecinilor lui, definiți de raza de vecinătate, se modifică; inițial raza de vecinătate cuprinde întreaga rețea și se reduce apoi cu fiecare epocă.
Epoca înseamnă o proiectare de imagine pentru fiecare vector din lotul de antrenare (100 imagini). Instruirea se face până ce raza devine zero și apoi mai continuă un număr de epoci. Rezultatul constă în asocierea unui număr de neuroni cu fiecare clasă de imagini (o clasă = o persoană). Etichetarea neuronilor se face prin procesul de calibrare, rețeaua devenind astfel supervizată.
Rețeaua aleasă are M neuroni j = 1,..,M și un lot de L vectori de învățare .
1.3. Algoritmul de antrenare al rețelei neurale circulare Kohonen
Pașii de antrenare:
(1) Sunt inițializate ponderile cu valorile mici în mod aleatoriu, fiind aleși parametri ai ratei de învățare ƞ(t) = , (6)
ƞ(t) = (7)
unde E este numărul total de epoci, ƞ(t) = , (8)
ori ƞ(t) = , (9)
Este aleasă pentru variație a vecinătății varianta gaussiană
Φ [ d(, t] = exp [ – ] sau parametric de control ai vecinătății, aceasta scăzând cu 1 la fiecare epocă t.
ƞ(0) ia valoarea ƞ la prima iterație atunci când c = c* , c* fiind indexul curent iar c indexul neuronului câștigător.
Parametrul σ este cel care va influența viteza de învățare respectiv de antrenare a rețelei dar și precizia antrenării.
Acesta exprimă influența neuronului câștigător asupra vecinilor săi.
r – raza vecinătății, r N, r 0, scade cu o unitate la fiecare epocă, la prima epocă = [ ];
(2) Se aplică vectorul de intrare , 1 L;
(3) Este determinat indexul neuronului câștigător
c = { } = { } , unde
, j = 1,…, M fiind setul de ponderi al epocii t iar (k) și ) este elementul k al vectorului de intrare, respectiv al ponderilor;
(4) Sunt rafinate ponderile pentru neuronal câștigător și pentru vecinii săi:
(t+1) = (t) Φ[d(] [- l = -r,…,+r;
(5) Se trece la vectorul următor (i = i+1)
– Dacă lotul de vectori s-a terminat/dacă s-a atins numărul de epoci stabilite , se aplică condiția de stop. Altfel se trece la pasul (2) pentru i = 1.
1.4. Algoritmul de calibrare al rețelei neurale Kohonen
Rețeaua Kohonen în forma standard este o rețea nesupervizată, dar prin algoritmul de calibrare devine o rețea supervizată.
Rețeaua are un număr de M neuroni, fiecare dintre aceștia având asociat un set de ponderi, care este determinat anterior , pentru j = 1,…, M și pentru un lot de imagini pe care s-a efectuat antrenarea rețelei , pentru i – 1,…,L.
Pașii de calibrare:
(1) Pentru fiecare imagine din lotul de antrenare este calculate neuronul câștigător fiind declarat ca aparținând al clasei din care face parte imaginea de la intrare:
= { } = { }.
(2) Pentru urm[torul neuron neetichetat j, este calculat[ distanța c[tre fiecare imagine fiind aleasă ca imagine câștigătoare cea cu distanța minimă:
= { } = { },
în care este definit ca fiind indexul imaginii câștigătoare.
Este declarat apoi neuronal ca aparținând clasei din care face parte imaginea câștigătoare;
Se trece la următorul neuron iar dacă au fost terminați toți neuronii neetichetați se execută STOP.
Altfel se trece la pasul (2).
1.5. Clasificare supervizată cu module neuronale cu autoorganizare concurente –
MONACO (Concurrent Self-Organizing Map – CSOM)
Sistemul CSOM (Concurrent Self-Organizing Maps) a fost prima oară propus și implementat de V. Neagoe în [37] și [38].
A fost aplicat pentru recunoaștere de modele: recunoaștere imaginilor faciale alb-negru folosind PCA [37] și [39], clasificarea imaginilor satelitare [37], recunoaștere imaginilor faciale color [40], recunoașterea vorbirii [39].
O rețea cu autoorganizare concurentă este compusă din mai multe rețele SOM care funcționează pe baza principiului competiției. Fiecare bloc SOM este dedicat unei singure clase, el are ca scop cunoașterea cât mai bună a clasei respective, fiind antrenat utilizând doar vectorii de antrenare ale clasei respective.
Figura 1.2. – Antrenare CSOM
Numărul rețelelor SOM este egal cu numărul claselor. La clasificare, rețeaua CSOM este abordată global conform reprezentării din figura următoare, calculându-se distanțele dintre vectorul care urmează a fi clasificat și fiecare vector pondere al fiecărui neuron din fiecare modul SOM.
Clasa de apartenență modulului în care se află neuronul câștigător stabilește clasa de apartenență a vectorului clasificat.
Figura 1.3. – Clasificare CSOM
Rețeaua CSOM este o rețea supervizată, față de rețeaua SOM unde modulele SOM sunt antrenate într-o manieră nesupervizată; lotul de antrenare este împărțit pe clase, ordine prezentării lor în interiorul fiecărei clase fiind irelevantă.
Dacă pentru antrenarea rețelei SOM este necesară reantrenarea întregii rețele prin adaugarea unei noi clase, un avantaj al CSOM-ului este că pentru adăugarea acestei noi clase nu trebuie antrenat decât modulul respectiv, iar vectorii pondere ai celorlalte module nu sunt influențați sub nici o formă de noile imagini de antrenare.
Astfel relațiile de vecinătate sunt păstrate doar în interiorul rețelelor, în timp ce principiul competiției funcționează în continuare la nivel global.
Un alt avantaj al CSOM vis-a-vis de SOM este reprezentat de timpul de antrenare. Ordinul de mărime al numărului de operații la antrenarea CSOM este de C ori mai mic decât în cazul SOM, unde C reprezintă numărul de clase.
Fiecare rețea SOM poate avea oricare din topologiile SOM, aceleași relații ale ratei de antrenare și relații de vecinătate pot fi folosite în antrenarea lor.
Numărul neuronilor poate fi diferit între module, în funcție de complexitatea fiecărei clase.
Rețeaua CSOM combină calitățile unei rețele Kohonen cu o mai bună separație a claselor și cu posibilitatea de adăugare sau retragere de clase fără a fi necesar un nivel ridicat de calcule sau un timp îndelungat de reantrenare.
1.6. Clasificatorii fuzzy și neuro-fuzzy.
Logica fuzzy
Logica fuzzy reprezintă o abordare diferită pentru rezolvarea unei probleme. Includerea experienței umane în procesul de proiectare implică necesitatea ca mecanismele să cuantifice exact semnificația declarațiilor vagi făcute de experți. Utilitatea sursei de informație este foarte dependentă de scopul aplicației, dar probabil că rezultatul principal al multelor aplicații ale sistemelor fuzzy va fi că experiența umană este cea mai importantă parte din procesul de proiectare.
Logica fuzzy permite ca un element să fie membru parțial al unei mulțimi și astfel valoarea de apartenență, care are valori între 0 și 1, poate fi interpretată ca gradul în care un eveniment poate fi clasificat ca ceva; mai permite ca un element să fie parte din diferite mulțimi în același timp, cu diferite grade de apartenență. Acest lucru este important în domeniul sistemelor expert.
Informația poate fi reprezentată prin:
– variabile ;
– variabile ordinale ;
– variabile intervale ;
– variabile .
Spre deosebire de mulțimile convenționale, mulțimile fuzzy se mai pot reprezenta și prin alte două tipuri de variabile:
– reprezentarea variabilelor prin valori gradate de apartenență la mulțimi – permite ca valoarea de apartenență la o mulțime să fie interpretată în sensul că un element este mai apropiat decât altul pentru conceptul respectiv;
– variabile care aparțin mai multor mulțimi în același timp.
Aceasta înseamnă că reprezentările fuzzy aduc o îmbunătățire care este mai apropiată de felul în care oamenii utilizează termenii vagi ai limbajului natural.
Teoria mulțimilor fuzzy
Mulțimile fuzzy oferă o metodă de a reprezenta termeni lingvistici vagi, din limbajul de zi cu zi, într-o manieră precisă. Logica fuzzy oferă mecanismul pentru manipularea și tragerea concluziilor bazate pe astfel de informații vagi.
Mulțimile clasice au definit un prag care definește apartenența sau ne-apartenența variabilei la o anumită mulțime.
Mulțimea clasică (crisp) A, definită pe universul de discurs X, este definită de funcția caracteristică (x): X →{0,1} care proiectează fiecare element al lui X în 1 sau 0 în funcție de apartenența sau neapartenența la mulțimea A.
(x) = , ( )
O mulțime fuzzy este reprezentată prin funcția sa de apartenență μ (.)∈[0,1]. Astfel, un element poate fi un membru parțial al unei mulțimi, lucru care se mai poate spune: gradul în care un eveniment poate fi clasificat ca ceva anume.
Această funcție nu măsoară frecvența de apariție a evenimentului (probabilitatea relativă) sau necesitatea incertitudinii despre acel eveniment (probabilitatea subiectivă), ci permite ca
evenimente din viața reală să fie clasificate utilizând un număr finit de clase lingvistice.
Figura 1.4. Apartenența clasică Figura 1.5. Apartenența fuzzy
Funcția de apartenență fuzzy a unei mulțimi A este definită pe universul său de discurs X și este caracterizată de funcția µ(.): X →[0,1] A μ care proiectează fiecare element al lui X într-un număr real din intervalul [0,1]. Pentru o anumită valoare, valoarea funcției de apartenență
fuzzy reprezintă gradul de apartenență la acea mulțime.
Funcțiile fuzzy pot fi definite pentru o singură variabilă, sau prin operatorii logici în cazul utilizării mai multor variabile.
1.7. Clasificarea fuzzy clasică
Sistemele expert bazate pe reguli sunt des aplicate pentru probleme de clasificare, detecție a erorilor, medicină, biologie etc.
Logica fuzzy îmbunătățește clasificarea prin utilizarea definiției claselor întrepătrunse, interpretarea rezultatelor fiind de asemenea îmbunătățită prin cunoașterea mai amănunțită a structurii clasificatorului și a procesului de luare a deciziei.
Determinarea automată a regulilor de clasificare fuzzy utilizând datele de intrare se poate realiza prin diferite tehnici: metode neurofuzzy, alegerea regulilor bazată pe algoritmi genetici etc.
Modelul fuzzy pentru clasificare
Se aplică reguli fuzzy pentru a descrie fiecare din cele C clase din setul de date. Antecedentul regulii este o descriere fuzzy în spațiul n dimensional al caracteristicilor și concluzia regulii este o etichetare non-fuzzy a regulii cu o valoare de la 1 la C.
Regula i este astfel definită:
: Dacă x1 este Ai1 și … și xn este Ain atunci gi = ci, (11)
unde n reprezintă numărul caracteristicilor, =
este vectorul de intrare, gi este ieșirea regulii i și Ai1, Ai2, …, Ain sunt mulțimile fuzzy antecedente. Interconectarea antecedentelor este realizată prin însumare.
Gradul de activare al regulii i este dat de formula:
= , i = 1C, (12)
Ieșirea clasificatorului este dată de regula care are gradul de activare cel mai mare:
y = = , ( 13)
Gradul de certitudine al deciziei este dat de gradul de decizie normat:
CF = , (14)
Inițializarea datelor
Fie N perechi de date intrare-ieșire k = 1N, matricea datelor de intrare = = compusă din vectorii de ieșire corespunzători.
Antecedentele fuzzy ( din baza de reguli inițială se obțin prin calculul mediei clasei respective pentru caracteristicile corespunzătoare obținute.
Calculul mediei clasei c de ex. se face astfel:
= , (15)
în care c = 1C, k = 1 și este numărul vectorilor aparținând clasei c.
Fiecare funcție triunghiulară fuzzy poate fi definită folosind trei puncte: centrul funcției fuzzy unde valoarea de apartenență este maximă și două puncte marginale sub care și respectiv peste care coeficientul de apartenență este 0. Centrul antecedentului fuzzy Aij(xjk) este chiar valoarea medie a clasei i pentru caracteristica j.
Cele două extreme sunt definite de mediile claselor vecine.
În cazul în care media clasei respective este cea mai mare/mică medie pentru caracteristica respectivă se ia ca margine superioară/inferioară valoarea maximă/minimă a caracteristicii respective.
Dacă distanța dintre două centre vecine este mai mică decât un anumit prag, atunci punctele marginale ale celor două funcții fuzzy definite de cele două centre vor fi înlocuite cu două puncte aflate la o distanță acceptabilă față de mediile corespunzătoare.
Figura 1.6.- Antecedentul regulii i pentru caracteristica j
1.8. Rețeaua neuronală fuzzy cu autoorganizare (Fuzzy SOM)
În acest capitol se îmbină reprezentarea fuzzy cu rețeaua cu autoorganizare Kohonen [41] (Fuzzy Self Organizing Map – FSOM). Combinația asigură vagitatea datelor de intrare și a celor ieșirilor și o organizare neuronală bazată pe vecinătate – proiectarea datelor de intrare
asemănătoare în neuroni vecini.
Fuzificarea datelor de intrare
În clasificatorii convenționali statistici sau sintactici, vectorii de intrare sunt de natură cantitativă (exactă). Vectorii care au caracter imprecis (afectați de zgomot sau erori instrumentale) sunt de obicei ignorați în astfel de clasificatori. În plus, costul extragerii unor valori exacte si utilizarea acestora poate fi prea ridicat. În astfel de cazuri pot deveni utile variabilele lingvistice ca: mic, mediu sau mare; mai mult sau mai puțin.
Modelul neuronal fuzzy propus este capabil de a procesa ambele forme de date (exacte sau inexacte). Fie proprietățile lingvistice mic, mediu și mare. Orice valoare a caracteristicilor de intrare poate fi descrisă sub forma unor combinații de valori de apartenență pentru aceste trei proprietăți.
Funcții de apartenență de tip , aparținând intervalului [0,1], cu X ∈ℜn sunt definite ca în [42]. Astfel:
unde λ > 0 este raza funcției π cu c punctul central în care π (c, c,λ ) = 1. Funcția este reprezentată în figura
Figura 1.7.– Funcții de apartenență fuzzy de tip π
În figură reprezentată o mulțime fuzzy cu ajutorul funcției π (x,c,λ ), care descrie un mulțime de puncte adunate în jurul centrului c. În modelul propus se utilizează funcțiile π pentru a atribui valori de apartenență pentru valorile de intrare [43].
Orice caracteristică de intrare Fj poate fi exprimată sub forma unor valori de apartenență indicând un grad de apartenență la una din cele trei valori lingvistice (mic, mediu și mare). Astfel, un vector de intrare n dimensional
= , j = 1÷N, N este numărul vectorilor de antrenare ce poate fi reprezentat ca un vector tridimensional:
=
Prin definirea intrării (j = 1÷N ) sub forma proprietăților salle lingvistice se împarte scala dinamică a fiecărie caracteristici în trei regiuni ce se întrepătrund.
Fiecare caracteristică a acestora este definită de mulțimi mic, mediu, mare prin funcțiile .
În figura următoare am reprezentat scala funcțiilor dependentă de caracteristica a vectorului de intrare, i = 1÷ n.
Alegerea parametrilor funcțiilor
Fie și care definesc limitele maxime și minime ale funcției în funcție de variațiile acelei caracteristici în întregul lot de antrenare.
Astfel se pot reprezenta cele trei proprietăți lingvistice:
() = 1/2 ()
= ()
() = [ ],
= – ()
() = [
= () , ( 16 )
unde 0.5 1 este parametrul ce controlează extinterea întreprătrunderii, i = 1÷N
Funcțiile mai sus enumerate sunt reprezentate în figura următoare.
Figura 1.8. – Coexistența celor trei funcții π (mic, mediu și mare)
Această combinație de alegeri ale întinderilor și centrelor asigură faptul că fiecărei valori cantitative a caracteristicii de intrare din lungul axei i pentru vectorul îi este atribuită o combinație de valori de apartenență corespunzătoare spațiului lingvistic tridimensional reprezentat in figurile anterioare astfel încât cel puțin una din cele trei valori (), () și () este mai mare ca .
Implementările implică o reprezentare mai compactă si mai completă a fiecărui punct al modelului prin aceste proprietăți lingvistice și asigură o comportare mai bună a sistemului.
1.9. Rețeaua Kohonen cu arhitectură circulară
Harta cu autoorganizare a lui Kohonen este o rețea neuronală nesupervizată, care are la bază principiul competiției și principiul vecinătății. În Raport am utilizat o rețea circulară de forma celei reprezentate în continuare.
Figura 1.9.– Arhitectura circulară a unei rețele neuronale cu autoorganizare
Regula de antrenare a ponderilor este descrisă de relația:
(t+1) = , (17)
unde t este indexul epocii, η(t) este o valoare pozitivă care scade împreună cu indexul epocii și cu raza vecinătății, i = 1÷n, m = 1÷M și m* este indexul euronului câștigător.
În urma antrenării, anumite părți ale rețelei neurale devin sensibile pentru anumite intrări într-o manieră ordonată cu scopul de a se obține o hartă cât mai compactă (continuă) a semnalului de intrare.
După antrenare în număr suficient de iterații (epoci) în care formula ce definește (t+1) se aplică pentru întregul lot de antrenare, ajungându-se asimptotic la valori ale lui care ordonează topologic spațiul de ieșire.
Apoi rețeaua este calibrată, devenind astfel supervizată.
Vectorii de intrare
Intrările modelului neuronal propus conțin două părți. Astfel, pe lângă proprietățile lingvistice descrise anterior, este adăugat și un segment de informație contextuală [140] cu privire la clasa de apartenență a fiecărui vector de antrenare utilizat în antrenarea rețelei.
În rețeaua clasică Kohonen vectorii de intrare utilizați la antrenare conțin numai informații cantitative ale vectorilor, mai târziu fiind utilizată pentru calibrare și informația la clasele de apartenență ale acestora.
De obicei, în realitate, diferitele informații (date) nu sunt foarte bine definite, suprapunându-se sau fără să aibă granițe bine definite. Astfel, orice vector utilizat poate avea grade de apartenență în mai multe clase.
Pentru modelarea acestor tipuri de date poate fi utilă includerea informației contextuale despre apartenența la clase. Pentru ca partea lingvistică a vectorilor de intrare să fie cea dominantă, i se atribuie o pondere mai mică informației contextuale. Aceasta din urmă este utilizată doar pentru calibrarea rețelei.
Apartenența la clase sub forma informației contextuale
Fie , (18)
în care conține informația lingvistică cu dimensiunea 3*n, iar este informația de apartenență la clase, cu C componente și C numărul de clase.
Rezultă ca vectorul de intrare va avea dimensiunea 3*n + C.
Distanțele ponderate
Fie n vectorii dimensionali și ce reprezintă media și respectiv deviația standard rezultate din datele de antrenare pentru clasa k.
Distanța ponderată a vectorului va fi :
= , (19)
în care, j = 1N, N este numărul vectorilor de intrare, este valoarea componentei i a vectorului de intrare cu indexul j.
Funcția de apartenență
Funcția de apartenență a vectorului j , ce aparține clasei k este:
( ) = , (20)
în care este distanța ponderată definită anterior și constantele pozitive și
sunt generatoare fuzzy [44] și [45] ce controlează fuzzyficarea din mulțimea apartenențelor la clase, k = 1C.
( ) [0,1]și aceasta poate varia astfel încât dacă distanța vectorului față de o anumită clasă este mai mare, atunci funcția de apartenență scade.
Dacă distanța este 0 atunci funcția de apartenență este 1 (maximă) și dacă distanța tinde la infinit, funcția de apartenență tinde către 0.
Modificator fuzzy:
( ) ia C valori diferite de 0; pentru mărirea contrastului între apartenențele la clase se utilizează funcția INT [39]. Rezultă că:
= , (21)
Această modificare este utilă pentru mărirea contrastului între valorile de apartenență la clase și, deci, pentru scăderea ambiguității în luarea deciziei.
Pentru obținerea lui X " se realizează o ponderare, astfel încât informația predominantă să fie cea lingvistică .
Rezultă că:
= s )
) = , (22)
în care s este factorul de scalare și ia valori între 0 și 1, j = 1÷N. Pentru ca informația lingvistică să fie predominantă se alege s < 0.5.
1.10. Calibrarea rețelei fuzzy-neuronale Kohonen
În timpul calibrării spațiului de ieșire, vectorul de intrare pe baza căruia se face calibrarea este
= [ 0 ], cu j = 1 N și rezultat din formulele anterioare.
Sunt calculate ieșirile neuronilor atunci când se află la intrare unul din vectorii de antrenare. Neuronului care are cea mai mare valoare la ieșire i se atribuie clasa de apartenență a vectorului de intrare.
Neuronii astfel etichetați vor lua coeficientul de apartenență la clasa
respectivă unu, iar coeficienții de apartenență la celelalte clase vor fi egali cu zero.
Neuronii rămași neetichetați vor fi neuroni fuzzy.
Fie m unul din neuronii rămași neetichetați. Se calculează distanța între ponderile acestui neuron și toți vectorii de antrenare:
d() = , (23)
unde j = 1N , i = 1M și d() reprezintă distanța dintre indexul j și neuronul cu indexul m.
Se alege apoi vectorul cel mai asemănător cu ponderile neuronului m:
= = , ( 24 )
Se calculează un coeficient de apartenență al neuronului respectiv față de fiecare vector de antrenare:
() = , (25)
în care j = 1 N și m = 1M.
Pentru a obține un singur coeficient de apartenență pentru fiecare clasă se mediază toți coeficienții neuronului respectiv obținuți utilizând vectori aparținând aceleiași clase:
= , (26)
în care estenumărul vectorilor de antrenare aparținând clasei k, k = 1C, și α fiind parametrul ce controlează fuzzyficarea ( ).
Coeficienții de apartenență ce rezultă pentru neuronul m sunt scalați, astfel:
= 1, ( 27)
Clasificarea
Fie un vector de test prezentat intrării rețelei. Se calculează neuronul câștigător cu ajutorul relației anterioare.
Se aplică și a doua oară relația după eliminarea primului neuron câștigător. Fie m1 și m2 primii doi neuroni câștigători (cei mai asemănători doi neuronii cu forma prezentă la intrare). Se determină apoi clasa de apartenență a celor doi neuroni:
= =1 sau pentru i = 2.
Fie și clasele de apartenență rezultate, având coeficienții de apartenență , și. Dacă cele două clase și coincid, rezultatul este evident.
În schimb dacă avem ≠ , atunci se calculează:
+ ≈+ , (28)
în care este coeficientul maxim de apartenență al neuronului , este coeficientul de apartenență la clasa al neuronului este coeficientul maxim de apartenență al neuronului , coeficientul de apartenență la clasa este distanța dintre forma de intrare și primul neuron câștigător , este dintre forma de la intrare și al doilea neuron câștigător.
Dacă termenul rezultat în partea stângă este mai mare ca cel din partea dreaptă atunci se decide clasa , iar în caz contrar se decide clasa
2. Comparația Bazelor de date publice cu cea personală
Realizarea unei baze de date personale a plecat de la considerentul că majoritatea bazelor de date existente sunt achiziționate într-un mediu controlat iar cele preluate din media au aproximativ aceeași rezoluție. Baza de date prezentată este formată din cadre ale fețelor subiecților, achiziționate pentru evaluarea algoritmilor utilizați în etapa de procesare în vederea recunoașterii fețelor.
Principalele baze de date publice folosite pentru recunoașterea feței sunt prezentate in tabelul de mai jos:
Tabelul 2.1. Baze de date publice folosite pentru recunoașterea feței persoanelor
Principalele baze de date folosite pentru recunoașterea unor expresii ale feței sunt:
Tabelul 2.2. Baze de date publice folosite pentru recunoașterea expresiilor faciale
Tabelul 2.3. Caracteristici ale bazelor de date personale
2.1. Baza de date Faces’94
Baza de date Faces’94 [21] conține imagini cu dimensiunea 180×200 pixeli color. Dintre cei 153 de subiecți, 20 sunt de gen feminin. Fiecare subiect are câte 20 de imagini faciale. Fundalul pozelor este verde. Dinamica pozelor pentru un subiect în cadrul acestei baze de date este: mici variații de poziție a capului, nu există variații de iluminare, imaginile sunt captate de la distanță constantă, schimbări considerabile ale expresiei faciale.
Câteva imagini ale acestei baze de date sunt prezentate în figura următoare
Figura 2.1. – Exemple de imagini din baza de date Faces 94
Pentru experiment s-au ales aleatoriu trei imagini de antrenare și trei de test pentru fiecare subiect (3i/3t). Spațiile color în care se lucrează sunt: RGB, C1C2C3 și H1H2H3.
Imaginile originale de 180×200 pixeli au fost reduse la 90×100 pixeli prin
aplicația Paint.
Am făcut două tipuri de teste:
– unul din teste este realizat fără selecție de caracteristici, concatenându-se cele trei componente de culoare într-un singur vector de caracteristici,
– în al doilea se aplică PCA asupra vectorului de caracteristici, reținându-se 453 de caracteristici.
Rezultatele sunt prezentate în tabel și în figura următoare.
Condiția de stop pentru clasificatorii SOM și CSOM este după 40 de epoci, iar matricea de transformare cu ajutorul căreia se trece din spațiul RGB în spațiul C1C2C3 este:
K = , valorile proprii Λ =
Matricea de transformare prin care se trece din spațiul RGB în spațiul H1H2H3 este:
K =
Tabelul 2.4.– Faces’94 3i/3t – Rata corectă de recunoaștere [%] pentru fuziunea canalelor de culoare
Fuziunea caracteristicilor
Figura 2.2.– Schema bloc a clasificării color folosind fuziune la nivel de caracteristici
Prin fuziunea caracteristicilor se aplică mai întâi selecția de caracteristici, apoi caracteristicile sunt concatenate și clasificate. Fuziunea caracteristicilor RGB la baza de date Faces 94 este prezentată în continuare.
Figura 2.3.– Faces'94 3i/3t – Rata corectă de recunoaștere, CSOM 1, fuziunea caracteristicilor
În cazul clasificării CSOM în spațiul RGB se obține o rată de recunoaștere corectă mai mare folosind PCA, ajungând la 96.03%; spațiul color C1C2C3 are 98.00% fără selecție de
caracteristici; spațiul color H1H2H3 atinge 96.90% în cazul folosirii PCA.
Rezultatele cele mai bune rezultă fără selecție de caracteristici prin utilizarea spațiului C1C2C3, iar folosind PCA utilizând spațiul H1H2H3.
Dintre clasificatorii SOM, CSOM și NP, clasificatorul CSOM obține rezultatele cele mai bune în toate testele efectuate.
Prin clasificarea celor 453 imagini din lotul de test al bazei de date Faces’94 se obțin rezultate bune în cazul în care se aplică o metodă de selecție a caracteristicilor, fie asupra vectorilor de test (PCA, reținând 453 de caracteristici), fie asupra spațiului color (C1C2C3 și H1H2H3).
Clasificarea imaginilor brute prin sistemul CSOM conduce la o rată de recunoaștere maximă de 81.01%, fiind cu 15%÷18% sub nivelul celorlalte clasificări CSOM.
2.2. Baza de date AR
Baza de date AR [22] conține imaginile a 126 de subiecți, fiecare subiect având câte 26 de imagini.
Pozele au fost realizate în două sesiuni separate de 14 zile, fără să fie impuse restricții de îmbrăcăminte, machiaj, aranjare a părului, etc. Fiecare sesiune are câte 13 imagini
pentru fiecare subiect:
1. expresie neutră;
2. zâmbește;
3. supărat;
4. țipând;
5. este adăugată o sursă de lumină în partea stângă;
6. este adăugată o sursă de lumină în partea dreaptă;
7. sunt adăugate ambele surse de lumină (stânga și dreapta);
8. poartă ochelari de soare;
9. poartă ochelari de soare și este adăugată sursa de lumină din partea stângă;
10. poartă ochelari de soare și este adăugată sursa de lumină din partea dreaptă;
11. poartă eșarfă;
12. poartă eșarfă și este adăugată sursa de lumină din partea stângă;
13. poartă eșarfă soare și este adăugată sursa de lumină din partea dreaptă.
Exemple de imagini ale câtorva subiecți din baza de date AR sunt prezentate în figura următoare, fiecare coloană reprezintând o sesiune de fotografii a unui subiect.
Figura 2.4.– Exemple de imagini din baza de date AR
Având în vedere faptul că un mare procent dintr-o imagine din baza de date AR este reprezentat de fundal, a fost aplicat algoritmul de detecție a feței Viola-Jones [23], utilizând un program de detecție facială bazat pe acest algoritm [24]. Rezultatele sunt obținute utilizând imaginile rezultate în urma detecției și normate prin interpolare la dimensiunea de 100×100 pixeli.
În experiment am utilizat primele șapte imagini ale celor 38 de subiecți (eliminând imaginile în care subiectul poartă ochelari de soare sau eșarfă) pentru instruire și respectiv imaginile similare achiziționate după două săptămâni pentru test – 7i/7t.
Metodele de selecție a caracteristicilor folosite sunt PCA și LDA, iar clasificatorii utilizați sunt SOM, CSOM 1 și FSOM. Spațiile color în care se lucrează sunt RGB și C1C2C3.
În cazul selecției de caracteristici cu PCA s-au reținut câte 100 de caracteristici pentru fiecare culoare, apoi vectorii concatenați ai celor trei culori (3×100 = 300 de caracteristici) au fost folosiți în clasificare. În cazul LDA s-a aplicat tot pe fiecare culoare PCA reținându-se 100 de caracteristici, apoi LDA reținându-se tot 100 de caracteristici.
Vectorii rezultați au fost concatenați (3×100 = 300 de caracteristici) și clasificați, ca în cazul PCA.
Parametrii rețelelor SOM și CSOM sunt următorii: condiția de stop după 400 de epoci de antrenare; η=1 pentru primele 200 epoci si η = 0.1, pentru următoarele 200, unde t este indexul epocii curente; raza vecinătății scade cu 1 la fiecare epocă; σ = 18. Parametrii rețelelor FSOM sunt: fuzificarea intrărilor se face cu ajutorul funcțiilor π dacă este cazul, param = 0.8, Fd = 5, Fe = 1, s = 0.5, α = 0.4, cu aceeași parametri pentru rețeaua FSOM ca mai sus (la SOM/CSOM).
Pentru clasificatorii FSOM s-au experimentat varianta cu intrări non-fuzzy (FSOM 1) și cea cu intrări fuzificate (FSOM 2).
Rezultatele sunt prezentate în tabelele și figurile următoare.
Tabelul 2.5.– AR 7i/7t – Rata de recunoaștere corectă pentru PCA(C1)&PCA(C2)&PCA(C3) [%] (selecție de caracteristici urmată de concatenare)
Figura 2.5.– AR 7i/7t – Rata corectă de recunoaștere a PCA(C1)&PCA(C2)&PCA(C3)
Figura 2.6. – AR 7i/7t – Rata corectă de recunoaștere a LDA(C1)&LDA(C2)&LDA(C3)
Tabelul 2.6.– AR 7i/7t – Rata de recunoaștere corectă pentru PCA(C1)&PCA(C2) [%] (selecție de caracteristici urmată de concatenare)
Figura 2.7. – AR 7i/7t – Rata corectă de recunoaștere a PCA(C1)&PCA(C2)
Figura 2.8.– AR 7i/7t – Rata corectă de recunoaștere a LDA(C1)&LDA(C2)
Tabelul 2.7. – AR 7i/7t – Rata de recunoaștere corectă pentru PCA(C1) [%] (selecție de caracteristici urmată de concatenare)
Figura 2.9. – AR 7i/7t – Rata corectă de recunoaștere a PCA(C1)
Figura 2.10. – AR 7i/7t – Rata corectă de recunoaștere a LDA(C2)
Tabelul 2.8.– AR 7i/7t – Rata de recunoaștere corectă pentru PCA(R)&PCA(G)&PCA(B) [%] folosind clasificatorul CSOM 1
Figura 2.11.– AR 7i/7t – Rata corectă de recunoaștere folosind PCA, CSOM 1 și fuziunea caracteristicilor
Figura 2.12.– AR 7i/7t – Rata corectă de recunoaștere folosind LDA, CSOM 1 și fuziunea caracteristicilor
Baza de date AR este o bază greu accesibilă datorită variațiilor de iluminare, cu două surse de lumină. Un alt factor este acela că imaginile de test sunt procesate la un interval de două săptămâni după captarea imaginilor folosite în antrenare.
Rezultă că, în cazurile dificile cum sunt variațiile de iluminare, metoda potrivită de selecție a caracteristicilor este LDA, prin comparație cu PCA.
Prin compararea variantelor de clasificare FSOM rezultă că, pentru recunoașterea acestei baze de date, opțiunea de a lucra cu intrări fuzificate este mai potrivită decât varianta de a lucra cu intrări non-fuzzy. Varianta cu intrările fuzificate obține cele mai mari rate de recunoaștere corectă.
Prin compararea clasificatorilor SOM, CSOM și FSOM, în toate cazurile de clasificare folosind ca selecție de caracteristici PCA, cel mai bun este clasificatorul CSOM, obținând cele mai mari rate de recunoaștere corectă.
În varianta folosirii LDA, pe lângă clasificatorul CSOM care obține rezultate foarte bune chiar pentru un număr minim de neuroni, se mai poate remarca și clasificatorul FSOM în varianta cu intrări fuzificate care egalează clasificatorul CSOM în toate cazurile.
Rezultatele obținute pentru spațiul de culoare studiat (C1C2C3), în care se concatenează caracteristicile LDA în cele trei variante (C1&C2&C3), ating rata maximă de recunoaștere corectă de 100%. În spațiul C1C2C3 combinat cu PCA (72.93%) se obțin rate mai bune de recunoaștere decât în combinațiile de PCA cu C1C2 (72.56%), sau cu C1 (70.68%).
2.3. Baza de date personală
Baza de date oferă în 2 variante de seturi de 552 imagini cu dimensiuni 90 x 120 pixeli sau 4608 x 3456 pixeli
Baza de date de mici dimensiuni (90 x 120 pixeli) poate fi utilă pentru a fi prelucrată în timp foarte scurt iar cea cu dimensiunea 4608 x 3456 pentru a oferi prin prelucrare detalii pentru obținerea de rate de recunoaștere foarte mari a unor expresii faciale, detalii ale feței subiecților analizați.
Aceasta conține 2 orientări ale capului, 3 situații în care regiunea superioară a acestuia este acoperită, și 7 stări fizionomice, fotografiile fiind realizate pe un fundal uniform și deschis la culoare.
Condițiile de iluminare s-au realizat in semiîntuneric situație specifică unor activități militare de exemplu cele pentru desfășurarea unor manifestări sportive, mitinguri sau demonstrații, pentru a accentua dificultatea de recunoaștere a subiecților.
Realizarea unei baze de date personale a urmărit:
ca clasificatorii utilizați să poată fi implementați atât pentru procesarea imaginii cât și pentru îmbunătățirea calității acestora, prin extragerea informației utile;
exploatarea performanțelor detectorilor individuali cât și a spațiilor individuale sau modelelor asociate unor imagini ale unui subiect;
ca baza de date sa ofere o diversitate de contexte și tipologii ale cazurilor de detecție a feței umane, fiind suficient de mare și care să includă o mare varietate de situații posibile. Majoritatea bazelor de date standardizate existente sunt dedicate aproape exclusiv algoritmilor de recunoaștere și conțin fețe achiziționate în diferite condiții de iluminare, orientare sau interval de achiziție , majoritatea nu permit a recunoaște atat subiectul decat individual, mai putin cand acesta stimuleaza anumite expresii fizionomice ce ingreuneaza recunoasterea;
Cu ajutorul bazei de date ce contine 30 de screen shooturi se permite analizarea performantelor de recunoastere a subiectilor respective falsa rata de acceptare si falsa rata de rejectare. Totodata s-a urmarit ca aceste screen shooturi sa permita localizarea subiectilor detectati sau recunoscuti ca fiind de interes operativ pentru misiuni politienesti, de ex. upersoane urmarite, interzise sau date in consemn – simuland conditii reale pentru recunoastere;
De mentionat ca baza de date personala contine persoane de diferite etnii respectiv români, rromi, vârste și sexe diferite specifice procentajelor de participare a persoanelor la misiuni ce fac obiectul activitatilor Jandarmeriei. Aceasta s-a realizat pentru a permite condiții similar de simulare a recunoașterii subiectilor față de condițiile reale, spre deosebire de alte baze de date ce contin fie persoane de varsta 20-25 ani sau sex feminin.
Figura 2.13.Selecție cu fotografii din cadrul bazei de date folosite
fundalul este recunoscut și uniform, dimensiuni 90 x 120 cu posibilități de prelucrare până la 4608 x 3456 pixeli;
domeniul unghiular de rotire a feței față de direcția de vizare este de ± 90 grade iar fețele frontale pot fi parțial obturate cu un procent de până 40% păstrând elementele de simetrie axială a feței;
persoane de diferite rase, sexe, vârste,condiții de iluminare, context de fundal și procente de piele a corpului vizibile;
au fost surprinse mai multe stări emoționale (vesel, trist, mirat,lehamite, încruntat) ce se pot compara cu stări normale ale subiecților respectiv cu ochii închiși sau de rotire/acoperire a capului/feței catre stânga sau dreapta cu 90 grade;
contextul în care se pot regăsi imaginile ce conțin fețe este foarte variat, fața fiind delimitată de restul corpului de îmbrăcăminte, ochelari, etc.
În cadrul experimentelor am antrenat 7 imagini ale aceluiași subiect, excepție făcând pozițiile cu capul rotit sau partea superoară a feței acoperită.
Din punctul de vedere al numarului de imagini aparținând aceluiași subiect baza de date este comparabila cu baza AR.
Tabelul 3.9. – Baza de date personală 7i/7t – Rata de recunoaștere corectă pentru PCA(C1)&PCA(C2)&PCA(C3) [%] (selecție de caracteristici urmată de concatenare)
Figura 2.14.– Baza de date personală 7i/7t – Rata corectă de recunoaștere a
PCA(C1)&PCA(C2)&PCA(C3)
Figura 2.15.– Baza de date personală 7i/7t – Rata corectă de recunoaștere a
LDA(C1)&LDA(C2)&LDA(C3)
Tabelul 2.10.– Baza de date personală 7i/7t – Rata de recunoaștere corectă pentru PCA(C1)&PCA(C2) [%] (selecție de caracteristici urmată de concatenare)
Figura 2.16.– Baza de date personală 7i/7t – Rata corectă de recunoaștere a PCA(C1)&PCA(C2)
Figura 2.17.– Baza de date personală 7i/7t – Rata corectă de recunoaștere a LDA(C1)&LDA(C2)
Tabelul 3.11.– Baza de date personală 7i/7t – Rata de recunoaștere corectă pentru PCA(C1) [%] (selecție de caracteristici urmată de concatenare)
Figura 2.18.– Baza de date personală 7i/7t – Rata corectă de recunoaștere a PCA(C1)
Figura 2.19.– Baza de date personală 7i/7t – Rata corectă de recunoaștere a LDA(C2)
Baza de date personală este mai accesibilă ca bazele de date descrise anterior în sensul obținerii unor rate de recunoaștere puțin mai mari ca al acestora.
Diferența provine din faptul că imaginile personale sunt achiziționate fără variații de iluminare și pe un fundal deschis, fără umbre.
Un dezavantaj rămâne în continuare timpul mare de prelucrare, comparabil cu al bazei de date AR.
Folosind baza de date personală cea mai potrivită metodă de selecție este LDA. Ca și la baza de date AR variant cu intrările fuzzificate permire rezultate de recunoaștere mai bune.
Prin compararea clasificatorilor SOM, CSOM și FSOM, folosind metoda de selecție cu PCA, clasificatorul CSOM conduce la cele mai mari rate de recunoaștere.
Vizavi de aceasta, LDA permite și el obținerea de rezultate foarte bune la un număr mic de neuroni antrenați. In acest caz clasificatorul FSOM cu intrari fuzzyficate este comparabil cu clasificatorul CSOM in toate experimentele.
Pentru spațiul de culoare C1C2C3 prin concatenarea caracteristicilor LDA în cele trei variante (C1&C2&C3), se obține o rată maximă de recunoaștere corectă de 100% ca și în cazul bazei de date AR.
În spațiul C1C2C3 combinat cu PCA 73.08% (72.93% – AR) se obțin rate mai bune de recunoaștere decât în combinațiile de PCA cu C1C2 74.14 % (72.56% – AR), sau cu C1 71.14% (70.68% în cazul AR).
Ca și celelalte baze de date, baza de date realizată personal permite controlul centralizat al datelor, imaginea specifică subiecților achizitionată în aceeasi stare fizionomică fiind numerotată cu o extensie similară pentru fiecare subiect
Aceasta permite o viteză mare de regăsire și actualizare a informațiilor.
Structura bazei de date poate fi modificată fără a fi necesară modificarea programelor de aplicație permițând o bună flexibilitate.
Am urmărit posibilitatea introducerii de standarde privind modul de stocare a datelor fiecărui subiect, ceea ce permite interschimbarea datelor între grupuri de persoane precum și realizarea independenței datelor față de suportul hardware utilizat.
2.4. Evaluarea imaginilor din cadrul bazei de date din punct de vedere calitativ
O multitudine de studii prezintă performanțe ale bazelor de date în funcție de ratele de recunoaștere ale fețelor făra a aprofunda cauzele ce generează aceste valori. Astfel, este necesară evaluarea dependenței ce există între rata de recunoaștere și calitatea imaginilor din baza de date. Aceasta poate fi evaluată prin analiza luminozității și contrastului [1,2].
O evaluare correctă a dependenței recunoașterii feței de unele caracteristici de calitate a imaginii permite aplicarea selectivă a unor corecții care determină performanțele clasificatorului.
Un parametru util de avaluat în realizarea unei baze de date cu imagini ale fețelor este constrastul. Acesta este definit ca raportul dintre variația luminanței și valoarea medie a acesteia.
C = , (29)
Contrastul reprezintă o imagine conținând un fundal și o regiune sau obiect de interes, în cazul nostru fața persoanei. În funcție de această reprezentare s-a definit contrastul Weber, astfel:
C = , (30)
unde este valoarea intensității obiectului de interes, iar este valoarea medie a intensității fundalului.
Contrastul Michelson definește contrastul în funcție de valorile maxime și minime ale intensității imaginii, conform relației urmatoare:
C = , (31)
O variantă a măsurării contrastului se poate reprezenta prin calculul valorii rădăcinii medii pătratice (RMS), acesta luând în calcul toate elementele imaginii analizate.
Calculul pornește de la ipoteza ca imaginea este normalizată în intervalul [0,1].
C = , (32)
unde, M și N sunt dimensiunile imaginii analizate, este intensitatea pixelului de coordonate (i,j), iar este intensitatea medie a imaginii.
III. Implementarea algoritmilor pentru recunoaștere facială
Reprezentarea culorii este în dependință de lungimile de undă electromagnetică din spațiul vizibil și în funcție de aplicație. Astfel, în televiziune informația de culoare se transmite sub formă de 1 componentă de luminanță și două de cromitanță iar pentru a fi afișată imaginea sunt combinate culorile RGB.
Reprezentarea imaginii în spații de culoare diferite conduce la rezultate diferite.
Un spațiu de culoare constă într-un model de culoare și o
proiecție specifică a acestui model în spațiul de culoare absolut [25].
Există cinci modele principale pentru spațiile color, unele dintre ele având
și subdiviziuni:
– CIE (Commission internationale de l'éclairage) reprezintă prima tentativă de a produce un spațiu color bazată pe măsurarea percepției umane.
Variante:
– CIE (Commission internationale de l'éclairage) reprezintă prima tentativă de a produce un spațiu color bazată pe măsurarea percepției umane. Variante: CIEXYZ, CIELUV, CIELAB, CIEUVW;
– RGB descrie ce tip de lumină trebuie emisă pentru a produce un anumit tip de culoare.
Cele trei culori (lumini) sunt combinate aditiv. RGB stochează valori individuale pentru cele trei culori (roșu, verde și albastru). Există multe variante de spații color RGB;
– sisteme bazate pe luminanță și crominanță au fost prima oară utilizate în sistemul de transmisie TV NTSC, fiind prescurtat YIQ. Sistemul stochează o valoare de luminanță și două valori de crominanță.
Variante: YIQ, YUV, YDbDr, YPbPr, YcbCr, xbYCC;
– sisteme bazate pe nuanță și saturație este utilizat de artiști deoarece este naturală gândirea în termeni de nuanță și saturație decât în termeni de componente color aditive.
Variante: HSV, HSL;
– sistemul CMYK este utilizat pentru tipărire, deoarece descrie ce tipuri de cerneală trebuie aplicată astfel încât lumina reflectată prin mediul transparent al cernelii să aparțină spectrului dorit.
În aceast Raport s-au utilizat următoarele spații color:
– RGB;
– C1C2C3 (spațiu color cu componente necorelate dedus prin aplicarea transformării Karhunen-Loeve asupra spațiului RGB, conform metodei prezentate în [26]);
– H1H2H3 (spațiu color cu componente necorelate dedus prin aplicarea unei transformări definite de rețeaua neuronală Hebbiană asupra spațiului RGB, conform metodei prezentate în [27]).
Imaginile color presupun analiza celor trei componente de culoare și utilizarea informației color. Combinarea informației se poate realiza în mai multe feluri.
Dacă se consideră cele trei culori ca fiind canale de informație diferite, clasificarea lor poate intra sub acțiunea teoriei de fuziune a datelor.
Tehnicile de fuziune a datelor combină informațiile obținute de la senzori diferiți (fie că sunt de același tip fie că nu) pentru a obține o precizie mai mare decât în cazul în care se utilizează informația unui singur senzor [28], [29], [30].
Conceptul de fuziune a datelor rezultate din senzori diferiți nu este nou fiind descris în [31] ca o colectare a datelor provenite de la mai mulți senzori realizată natural de oameni și animale pentru o evaluare mai precisă a mediului înconjurător, a identificării pericolelor etc, îmbunătățind astfel șansele de supraviețuire.
Aplicațiile de fuziune a datelor obținute de la mai mulți senzori sunt foarte variate vizând în special domeniul militar ca: recunoașterea automată a țintei, ghidarea vehiculelor autonome, cercetarea câmpului de luptă, recunoașterea automată a elementelor ostile.
3.1.Fuziunea datelor în cadrul sistemelor de supraveghere militare
Urmarirea dinamică și stabilirea sau verificarea identității unei persoane sunt probleme de interes militar de actualitate care, deși prezintă implementări funcționale și performante, sunt încă limitate din cauza condițiilor ambientale.
Condițiile de iluminare ale subiectilor determină de cele mai multe ori funcționarea cu performanțe variabile a algoritmilor însărcinați cu segmentarea imaginii, detecția contururilor și localizarea unor trăsături caracteristice limitate de acoperirea părții inferioare sau superioare a feței, portul bărbii sau al ochelarilor. Raportul și-a propus stabilirea identității unei persoane pe baza comparării unei imagini a persoanei subiect cu conținutul unei baze de date, optimizarea timpului de prelucrare și creșterea ratei de recunoaștere față de metode ce presupun folosirea unor programe matematice sau algoritmi nepractici.
Trăsăturile caracteristice fiecărei persoane prezentate în baza de date se găsesc sub forma unor distanțe care sunt analizate și prelucrate în vederea comparării cu trăsăturile imaginii subiect. Imaginea subiect conține persoana a cărei identitatate se dorește a fi stabilită sau verificată și este prelucrată în vederea extragerii trăsăturilor fundamentale. În acest articol sunt prezentate principalele metode prin care se incearcă realizarea unui sistem de recunoaștere a persoanelor, unele probleme care intervin, precum și stadiul actual și direcțiile de continuare a proiectului.
Recunoașterea persoanelor prin intermediul unui sistem video automat reprezintă un obiectiv necesar în cadrul a numeroase domenii în care se dorește stabilirea sau verificarea identității. Sistemele de supraveghere utilizate în cadrul unităților militare și polițienesti sunt confruntate în principal cu două probleme distincte: urmărirea în mod automat a persoanei vizate și recunoașterea persoanei respective.
3.2.Componentele sistemului de supraveghere militară
Sistemele de supraveghere militare necesită tehnici pe prelucrare și analiză în timp real a imaginilor achiziționate de pe scena militară, tehnici de procesare a imaginilor, tehnici de ințelegere și reprezentare bazate pe modele și tehnici de procesare bazate pe evenimente.
Sistemul de supraveghere militar conține o rețea de camere de supraveghere fixe si/sau mobile cu funcționare continuă sau conectată la diferite tipuri de senzori.
Figura 3.1. Schema bloc a unui sistem de supraveghere video
Astfel camerele de supraveghere fixe furnizează semnale video pentru o supraveghere globală, în timp ce camerele de supraveghere active furnizează imagini video asupra unor elemente de interes din scena militară, având posibilități de mărire, focalizare și rotire.
Semnalele video furnzate de la camerele fixe pot permite detectarea, recunoașterea și/sau urmărirea persoanelor după atribute ale persoanei sau altor forme.
Informația obținută este procesată și folosită la comanda camerelor video pe direcțiile de interes. Astfel sistemul poate permite ca în cazul detecției unui autovehicul orientarea pentru a se identifica numărul de inmatriculare al acestuia, iar in cazul detecției persoanelor orientarea de precizie pentru recunoașterea persoanelor după elemente faciale, analiza mersului, a lobului urechii, vascularizare sau implementând tehnologii biometrice mixte.
Din schema bloc se observă ca elementele brute sau de detaliu ale imaginilor achiziționate sunt procesate prin analiza multirezoluție în blocul de reprezentare simbolică a scenei.
Mai multe modele multirezoluție stocate in baze de date antrenează seturi de imagini ale căror tipar este comparat cu cel achiziționat acționând către comanda sistemului optoelectronic al camerelor active sau cu posibilități către comanda altor blocuri de analiză, alarmare utilizator.
Principalele blocuri din compunerea unui sistem de supraveghere militară au fost definite in Raportul 1 și 2 de cercetare.
Aplicații non-militare includ monitorizarea proceselor de fabricare, robotică, recunoașterea formelor sau a persoanelor, aplicații medicale. Domenii de cercetare în care se întâlnesc tehnicile de combinare și fuziune a datelor includ: procesarea semnalelor digitale, estimare statistică, inteligență artificială și metode numerice clasice.
Fuziunea datelor provenite de la mai mulți senzori conduce către avantaje importante față de datele obținute de la un singur senzor.
În plus față de avantajul statistic obținut prin combinarea unor surse de același tip (cum este cazul componentelor de culoare RGB), utilizarea mai multor tipuri de senzori (cum ar fi adăugarea imaginilor din spectrul infraroșu) poate mări precizia cu care cantitatea poate fi observată și caracterizată.
Caracterizarea fundamentală a fuziunii de date implică transformarea ierarhică între energia sau parametrii observați și decizia sau inferența privind locația, caracteristicile sau identitatea entității și o interpretare a entității observate în condițiile mediului înconjurător și a relațiilor cu alte entități.
Transformarea între un parametru observat și decizie sau inferență evoluează de la un semnal observat către concepte mai abstracte.
Determinarea vitezei și a poziției unei ținte pe baza unui aparat radar și a unei camere în infraroșu dintr-o serie temporară de măsurători zgomotoase reprezintă o problemă clasică de estimare statistică [32], [33], ce este rezolvată cu ajutorul filtrului Kalman și variantelor acestuia.
Stabilirea identității observând atributele obiectivului este realizată prin metode de recunoașterea formelor, tehnici bazate pe algoritmi de clustering, rețele neuronale sau metode de fuziune a deciziilor ca inferențe Bayesiane [34], teoria Dempster-Shafer [35], [36], sau tehnici de decizie ponderate [30].
Datele obținute de la mai mulți senzori pot fi combinate sau fuzionate la diferite nivele:
a) fuziunea datelor brute;
b) fuziunea vectorilor de caracteristici;
c) fuziunea la nivel de decizie.
Datele brute pot fi combinate direct dacă datele senzoriale sunt de același tip (care măsoară același fenomen – doi senzori vizuali sau doi senzori acustici).
Tehnici de fuziune a datelor brute implică de obicei metode clasice de detecție și estimare.
În consecință, dacă datele senzoriale nu sunt comparabile, atunci fuziunea trebuie să aibă loc la nivel de caracteristici.Nivelul fuziunii de caracteristici implică extragerea caracteristicilor reprezentative din datele brute.
Există dovezi că modalitatea de recunoaștere pe care o folosesc oamenii implică funcții cognitive bazate pe caracteristici. În fuziunea la nivel de caracteristici, acestea sunt extrase din observații senzoriale multiple și combinate într-un singur vector de caracteristici concatenat care este apoi clasificat prin metode clasice de recunoașterea formelor.
Fuziunea la nivel de decizie implică totodată fuziunea informațiilor senzoriale după ce fiecare senzor a făcut o determinare preliminară a locației, caracteristicilor sau identității entității.
Exemple de metode de fuziune a deciziei includ metode de decizie ponderată (pe bază de vot), inferență clasică, inferență Bayesiană, metoda Dempster-Shafer sau metode bazate pe logică fuzzy.
În ciuda noțiunilor calitative și a calculelor cantitative de a utiliza sisteme îmbunătățite prin folosirea senzorilor și a unui proces de fuziune, implementarea unui sistem cu fuziune de date nu este simplă.
În practică s-a dovedit că fuziunea datelor senzoriale poate conduce uneori chiar la rezultate mai slabe decât cele obținute prin utilizarea celui mai potrivit senzor dintre ele.
Aceasta se realizează de regulă la combinarea unor date precise cu altele imprecise, atunci când incertitudinile sau variațiile nu sunt cunoscute.
Fuziunea canalelor de culoare
Figura 3.2.– Schema bloc a clasificării color folosind fuziune la nivelul canalelor de culoare
Fuziunea canalelor de culoare este o metodă de fuziune care aparține primului nivel de fuziune, unde sunt combinate date brute. În figura 5.1 sunt prezentate operațiile care duc la o decizie de clasificare.
Cele trei canale de culori R, G și B sau după caz C1, C2 și C3 sau H1, H2 și H3, sunt concatenate (fuzionate) sub forma unui vector de date.
Vectorul de date suferă o transformare (PCA) prin care se extrag caracteristicile. Caracteristicile rezultate sunt clasificate. Blocul de extragere a caracteristicilor este opțional.
În cadrul Raportului de cercetare am efectuat experimente folosind Baza de date Faces 94, baza de date AR și cea personală.
3.3. Reprezentarea detaliilor principale ale feței
Componentele modelului facial în cazul analizei sau sintezei expresiilor faciale, sunt determinate de complexitate, mobilitate și unicitate.
Topologia feței se numește expresie facială și modelarea aspectului facial se numește sinteză facială.
Construirea unei expresii faciale se realizează în două etape:
< 𝐸𝑚𝑜𝑡𝑖𝑜𝑛, 𝑖𝑛𝑑𝑒𝑥(𝑖𝑑)𝑒𝑚𝑜𝑡𝑖𝑜𝑛, 𝑏𝑟𝑎𝑖𝑛 >⇒< 𝐸𝑥𝑝𝑟𝑒𝑠𝑠𝑖𝑜𝑛(𝑓𝑎𝑐𝑒)
Această secțiune descrie modelul expresiei faciale folosind schema definită:
< 𝐸𝑚𝑜𝑡𝑖𝑜𝑛 >⇒< 𝐶𝑜𝑑𝑒 >⇒< 𝑓𝑎𝑐𝑖𝑎𝑙𝑚𝑢𝑠𝑐𝑙𝑒𝑠
Recunoașterea biometrică facială poate fi abordată din perspectiva problemei directe și a problemei inverse, în funcție de modelul topologic.Astfel, implementările pot permite folosirea de folosi transformări, reprezentări, măsuri de manipulare, toate din punct de vedere topologic.
Astfel zona fundamentală a feței umane poate fi descrisă ca suprafața dintre linia unde începe părul și bărbie, și dintre cele două urechi. Aplicațiile informatice perimit detecția și recunoașterea fețelor, identificarea în baze de date sau recunoașterea fețelor care nu aparțin persoannelor testate. Acestea sunt implementate la nivelul unor interfețe om – mașină, pentru scopuri de securitate, autentificare, urmărire sau supraveghere militară, sau pentru alte aplicații în medicină și psihologie.
Funcționalitatea acestor aplicații depinde de compararea modelelor achiziționate cu cele din baze de date, depinzând de parametrii acestora și de sarcinile pe care trebuie să le îndeplinească
De exemplu, procesul de recunoaștere a feței nu necesită sensibilitate la expresiile faciale, deși trebuie să fie capabilă să identifice mișcarea mușchilor.
Clasificarea miscărilor feței se poate efectua după mișcările globale ale întregului cap sau numai după mișcările locale ale acestuia care determină diferite expresii faciale.
Capacitatea detectării mișcărilor musculare și schimbărilor în expresii este importantă în special într-o serie de aplicații, ca o nouă generație de detectoare de minciuni care nu implică contactul intruziv cu persoana testată, sau detectarea stărilor fizionomice corespunzătoare profilurilor psihologice aparținând infractorului respectiv victimei, cu aplicabilitate în zone predispuse comiterii de infracțiuni, zone aglomerate, aeroporturi, gări etc.
Problematica inversă descrisă de procesarea facială este descrisă de sinteza fețelor, iar problematica directă este determinată de analiza structurii topologice a feței.
Figura 3.3. Reprezentarea detaliilor principale ale feței [10]
Astfel sinteza fețelor este o preocupare recentă de post-procesare pentru a obține o imagine care reproduce realitatea.
Din punct de vedere psihologic sunt diferite clasificări ale expresiilor faciale, ca fericirea, surprinderea, tristețea, teama, etc, pe de o parte sau expresii care pot fi divizate în funcție de mulțumire sau nemulțumire, activitate sau pasivitate, sau capacitate de control.
Relația dintre topologia facială și o expresie emoțională este definită de o extensie. Pentru a exemplifica, extensia unui zâmbet implică o serie de topologii faciale care necesită mișcarea gurii, a ochilor și a sprâncenelor.
Cele mai importante caracteristici faciale care conțin proeminente detalii ce individualizează subiecții analizați sunt ochii și gura. Algoritmii care permit localizarea ochilor se bazează pe potrivirea de tipare [3,4] ori pe antrenarea folosind rețele neuronale [5,6].
Metodele de recunoaștere presupun ca etapă anterioată detecția feței. Aceasta se realizează prin descompunerea imaginii analizate în componente ale unui spațiu de culoare [7,8,9].
Recunoașterea facială se poate realiza ca un întreg sau pe componente ale unui model facial respectiv ca o sumă de sub-componente ale modelului.
Aceste variante de recunoaștere includ modele ale ochilor, ale gurii, ale nasului, ale sprâncenelor și ale urechilor.
La recunoașterea unui model facial analiza se poate efectua în funcție de atribute ca: formă, mărime, textură, dinamism, etc. Detaliile oferite de expresiile faciale prin modificarea dinamicii mușchilor, a pielii, necesită aplicații de modelare respectiv o combinații între modelarea activității musculare și deformarea pielii.
Pielea joacă cel mai important rol în recunoașterea facială, schimbările elasticității acesteia conducând la schimbarea trăsăturilor, cu un rol negativ în recunoaștere fiind factorul îmbătrânirii persoanelor.
3.4. Detectarea și localizarea ochilor
Figura 3.4. Exemple de detecție a ochilor folosind baza de date CMU PIE
Determinarea regiunilor candidat pentru detectarea și localizarea ochilor se poate face prin:
– construirea unei hărți de rezultate ale componentelor de cromitanță , și
– construirea unei hărți de rezultate ale componentelor de luminanță
= , (33)
Unde, , și sunt componentele cromatice ale spațiului YCbCr normalizate în gama [0,255].
Harta de cromitanță se poate reprezenta și prin intermediul operatorilor morfologici de dilatare și eroziune, componenta de luminanță fiind definită de un element structural utilizat în operații morfologice [7].
Astfel, harta de cromitanță permite procesări prin egalizare de histogramă sau de combinare cu harta de luminanță prin operatorul de multiplicare urmând ca rezultatul să fie dilatat morfologic, comparat cu o mască și normalizat pentru a se pune în evidență caracteristicile faciale respectiv a se elimina alte regiuni.
3.5. Detectarea și localizarea gurii
Detectarea și localizarea regiunilor candidat pentru detectarea și localizarea gurii își propune analiza componentei de culoare roșie care este conținută preponderent în buze față de cantitatea de culoare albastru față de alte regiuni ale feței.
Figura 3.5. Exemple de detecție a gurii
Astfel, în regiunea gurii componenta de cromitanță este mai mare decât componenta cromatică având un raspuns redus al parametrului precum și un răspuns mare pentru
Harta asociată regiunilor candidat pentru gură M va fi:
M = , (34)
Unde:
= 0.95 , (35)
în care:
și sunt normalizate în intervalul [0.255], n este numărul de pixeli conținuți în masca feței F, iar estimat sub forma raportului dintre valorile medii ale componentelor și .
În reprezentări din cauza prezenței unor resturi în zonele analizate, în hărțile construite se rețin doar maximele ce se situează în interiorul regiunilor candidat posibile, care au rezultat din procesul de filtrare al culorii roșii.
Caracteristicile feței definite de ochi și gură sunt analizate în prima etapă de răspunsul vizual al retinei, caracteristicile fiind simetrice [7]. Aceasta presupune preprocesarea imaginii pentru analiza proprietăților sale printr-un operator de simetrie generalizat, ce funcționează pe baza operațiilor de pixeli de margine.
Nivelul simetriei feței asociază fiecărui pixel din imagine o valoare dependentă de cea a pixelilor din vecinătate:
Mσ(p) = , (36)
Unde, este contribuția pixelilor din vecinătatea (i,j) a pixelului p din setul de vecinătăți definite de
3.6. Evaluarea algoritmilor de recunoaștere ai feței – parametri
Evaluarea algoritmilor de recunoaștere a feței se realizează prin determinarea ratei de falsă acceptare (FAR) și a ratei de falsă respingere (FRR).
În etapa de detecție, rata de bună recunoaștere indică procentul de pixeli ai feței detectați de către algoritm, iar rata de falsă detecție indică procentul de pixeli care nu aparțin feței detectați ca fiind ai feței.
FAR = NTP / NTP + NFN, (37)
Rata falsă de acceptare (FAR) reprezintă o unitate de măsură pentru sistemul de securitate biometric, care va accepta incorect o tentativă de acces de către un utilizator neautorizat.
FRR = NFP / NFP + NTN, (38)
Rata falsă de respingere (FRR) reprezintă o unitate de măsură pentru sistemul de securitate biometric, care va respinge în mod incorect o tentativă de acces din partea unui utilizator autorizat.
unde,
NTP este numărul de pixeli ai feței recunoscuți corect (true positives),
NFN este numărul de pixeli ai feței nerecunoscuți ( false negatives),
NFP este numărul de pixeli de tip non – față recunoscuți ca fiind de tip față ( false positives), NTN este numărul de pixeli de tip non față corect nerecunoscuți (true negatives).
Când algoritmul de recunoaștere este dependent de un parametru, acesta va influența variabil valori ale ratelor de recunoaștere.
Privind rata de falsă acceptare în cazul detecției (FPR) aceasta este depedndenta de rata de falsă acceptare (TPR), după reprezentări folosind curba ROC (Relative Operating Characteristics), ce reprezintă in figura urmatoare dependența între TPR ȘI FPR în domeniul de variație al parametrului algoritmului [11].
Figura 3.6. Dependenta intre rata buna de detectie (TPR) și rata falsă de detectie (FPR) exprimata prin curba ROC
Recunoașterea feței într-o aplicație realizată folosind OpenCv comportă trei etape principale:
– detecția și urmărirea feței,
– detecția direcției ochilor,
– recunoașterea feței
Figura 3.7. Schema logică de antrenare a algoritmului pentru recunoașterea feței
Etapele de antrenare sunt:
1. Detectia fețelor (Viola Jones / OpenCV);
2. Detectia poziției ochilor folosind metoda Viola Jones + validare trasaturi antropomorfice; Initializare șablon ochi;
3. Urmărirea feței (tracking prin potrivire de șabloane (MatchTemplate / OpenCV);
4. Detecția și urmărirea pupilei
Alternativa la pasul 3: CAMSHIFT / OpenCV
3.7. Algoritmul de localizare a pupilei
Algoritmul de localizare a pupilei si directiei privirii are o reprezentare in figura 4.10.
Acesta se implementeaza dupa schema bloc din figura 2.4.
Algoritmul presupune sa estimeze poziția subiectului prin determinarea centrului de vizare al imaginii împărțite de prin prag optim.
Segmentarea imaginii inițiale a fost efectuată cu pragul optim, peste care se aplică un algoritm de centru al imaginii.
S-a folosit soluția de filtrare și un algoritmul de tip centroid pentru calibrare a pragului de discriminare al subiectului
Pasii de antrenare sunt:
– detectia ochilor
– segmentarea imaginii si impartirea acesteia cu un prag optim
– selectia punctelor cu intensitate scazuta din imagine
– selectia punctelor ce definesc centrul pupilei
– stabilirea directiei privirii.
Figura 3.8. Schema bloc a algoritmului de localizare al pupilei
3.8. Detecția și încadrarea feței
Detecția feței și etichetarea acesteia sunt punctele de plecare în cadrul unui sistem de recunoaștere a persoanelor. Din imaginile inițiale preluate video, fața persoanei trebuie încadrată, în vederea realizării acestui lucru plecându-se de la tehnicile descrise în [17]. Imaginea originală filtrată median pentru obținerea unei imagini conținând un contur proeminent ca și descriere redusă a feței.
Filtrul median este aplicat pentru eliminarea eventualelor zgomote. Ceea ce rezultă în urma acestor filtrări ne permite stabilirea unor poziții care definesc încadarea rectangulară a feței. În primul rând, prin scanarea pe verticală, de sus în jos, a imaginii rezultat, se determină valoarea ymin corespunzând muchiei superioare a dreptunghiului de încadrare.
Pentru trasarea muchiilor verticale ale dreptunghiului de încadrare, imaginea este scanată vertical și este realizat graficul mediei tuturor pixelilor de pe coloane.
Figura 3.9. Imaginea subiect cu încadrarea feței.
Determinarea mediei generale din acest grafic stabilește poziția inițială a poziției capului persoanei din imagine [18].
Intersecția conturului feței cu orizontala trasată anterior marchează cele două extreme pe orizontală care stabilesc pozițiile celor două muchii verticale ale încadrării. În procesul de încadrare a feței o etapă importantă este localizarea bărbiei. Astfel luminozitatea și umbrele sau reflexiile de lumină afectează algoritmul de detecție a bărbiei, conducând la o falsă recunoaștere.
, (39)
Astfel, dacă trei dintre cele patru muchii de încadrare sunt calculate, cu ajutorul acestei relații teoretic se poate stabili spațiul de căutare al bărbiei. Detecția bărbiei este însă dificilă, în condițiile în care imaginea analizată a fost produsă afectată puternic de rezultatele filtrărilor.
De aceea, pentru soluționarea acestei probleme în practică se propune o metodă hibridă în care se combină utilizarea relației de mai sus cu următoarea observație.
Zona gâtului este în general ușor detectabilă, iar bărbia este poziționată în marea majoritate a cazurilor în jumătatea superioară a acestei zone. În cazul în care zona gâtului nu poate fi detectată, se recurge la stabilirea spațiului de căutare pe baza relației anterioare. Metodele descrise produc rezultate acceptabile.
Se poate observa că încadrarea feței este suficient de precisă, ea incluzând toate trăsăturile esențiale ale feței, care urmează a fi localizate în continuare.
3.9. Detecția trăsăturilor faciale
Poziția pe verticală a trăsăturilor are ca spațiu de căutare dreptunghiul de încadrare stabilit în secțiunea anterioară. Metodele utilizate sunt cele descrise în [17,18] și constau în principal în calcularea maximelor proiecțiilor orizontale ale gradienților zonei feței.
Spațiul de căutare pentru ochi se găsește în jumătatea superioară a feței, ei fiind localizați cu precizie de graficul gradienților pe orizontală. Din acest grafic se pot calcula pozițiile ambilor ochi precum si poziția aproximativă a nasului. Dacă în cazul ochilor maximele locale sunt net distanțate de restul graficului, maximul care descrie poziția nasului poate să nu fie atât de pronunțat. De aceea pe baza unor relații empirice se poate stabili spațiul vertical de căutare pentru nas:
= + 0.3 (), (40)
= + 0.45 () , (41)
Spațiul de căutare al gurii este definit:
= + 0.3 () , (42)
= + 0.45 () , (43)
La fel rezultă și spatiul de căutare vertical pentru sprâncene. După aceasta urmează localizarea pe orizontală a acestor componente faciale.
Astfel, se calculează linia de simetrie a feței ca și medie a tuturor diferențelor intensitate-contrast a pixelilor din încadrare [19].
Nasul se localizează în imediata apropiere a liniei de simetrie iar spațiul de căutare pe orizontală pentru ochi se calculează pe baza unor relații empirice detaliate în [19]. Rezultatele obținute sunt ilustrate în figura.
Figura 3.10. Imaginea subiect cu încadrarea feței și marcarea trăsăturilor caracteristice
Plecându-se de la imaginea inițială prezentată, după încadrarea feței a fost realizată și localizarea tuturor trăsăturilor faciale, indicate în figura 3 sub forma unor linii orizontale și verticale de diferite culori.
3.10. Estimarea direcției privirii
Detectia ochilor si urmarirea directiei privirii este subiectul unor cercetari recente din [12, 13, 15], care folosesc clasificatori haarcascade predefiniti.
Haarcascade_frontalface_alt.xml haarcascade_alt_tree_eyeglasses.xml
Figura 3.11. Implementare in OpenCv:detect MultiScale() [14]
Principalii clasificatori Haar predefiniti si care se pot implementa în OpenCv pentru detecția și recunoașterea componentelor faciale sunt:
– haarcascade_eye.xml
– haarcascade_eye_tree_eyeglasses.xml
– haarcascade_frontalface_alt.xml
– haarcascade_frontalface_alt_tree.xml
– haarcascade_frontalface_alt2.xml
– haarcascade_frontalface_default.xml
– haarcascade_fullbody.xml
– haarcascade_lefteye_2splits.xml
– haarcascade_lowerbody.xml
– haarcascade_mcs_eyepair_big.xml –
-haarcascade_mcs_eyepair_small.xml
-haarcascade_mcs_leftear.xml
– haarcascade_mcs_lefteye.xml
– haarcascade_mcs_mouth.xml
– haarcascade_mcs_nose.xml
– haarcascade_mcs_rightear.xml
– haarcascade_mcs_righteye.xml
– haarcascade_mcs_upperbody.xml
– haarcascade_profileface.xml
– haarcascade_righteye_2splits.xml
– haarcascade_upperbody.xml C
Alti clasificatori pt. detectia de obiecte cu ajutorul metodei detectMultiScale ():
– %OPENCV_DIR%\data\lbpcascades : lbpcascade_frontalface.xml http://en.wikipedia.org/wiki/Local_binary_patterns %OPENCV_DIR%\data\hogcascades hogcascade_pedestrians.xml http://en.wikipedia.org/wiki/Histogram_of_oriente d_gradients
Algoritmul specific utilizat în cadrul unei aplicații implementată în OpenCv este acela folosind detecția centroidului feței, având structura conform schemelor bloc de mai înainte este descris de ecuațiile următoare, unde S este pragul utilizat pentru discriminarea pupilei.
S-a urmărit realizarea unei procesări a valorii lui x cu o valoare a lui folosind din spațiul de date un număr de puncte.
Algoritmul analizează zonele de x și y în funcție de luminozitate și le înmulțește, făcând apoi suma pe toate – urile.
, (44)
, (45)
, (46)
unde, sunt ponderile (valoarea sub un prag de minim) pentru și , S este pragul de selecție optim.
Logica este aceea de aplicare a unui număr de ponderi pe același set, facând suma ponderilor, și de incercare pe mai multe seturi făcând media ponderilor.
Centrul feței analizate se stabilește în funcție de distanța dintre pupilă și vârful nasului. Astfel, pupila nu este definită ca un punct ci ca o colecție de n puncte, care la un set limitat de imagini furnizează valori ponderate pentru coordonatele punctelor din plan, și .
Una din măsurătorile furnizate cu ajutorul algoritmului de centroid al feței poate folosi etichetarea obiectelor binare, calculul centrul de simetrie al fiecărei fețe, și trasarea locației centrului acesteia pe partea de sus a imaginii.
I = imread('text.png');
imshow(I)
L = bwlabel(I);
s = regionprops(L, 'Centroid');
hold on
for k = 1:numel(s)
plot(s(k).Centroid(1), s(k).Centroid(2), 'r*')
end
hold off
xlim([0 60])
ylim([0 60])
Figura 3.12. Exemplu de implementare al măsurătorilor furnizate cu ajutorul algoritmului de centroid al feței
Pentru calculul intensității ponderate a centrului fiecarei regiuni îi corespunde o regiune într-o imagine gri se vor calcula centrul de simetrie/greutate ponderată în funcție de valorile pixelilor scară de gri.
Cel mai simplu mod este de a folosi ambele proprietăți PixelIdxList și PixelList din regionprops.
I = imread('spheres.png');
imshow(I)
bw = I < 255;
bw = imfill(bw, 'holes');
L = bwlabel(bw);
imshow(label2rgb(L, @jet, [.7 .7 .7]))
Figura 3.13. Exemplu de implementare a proprietăților PixelIdxList și PixelList din regionprops
Figura 3.14. Exemplu de reprezentare grafică a centrului de simetrie/greutate ponderată în funcție de valorile pixelilor scară de gri.
Se folosește PixelIdxList și PixelList pentru fiecare regiune marcată:
s = regionprops(L, 'PixelIdxList', 'PixelList');
Figura 3.15. Reprezentare a funcțiilor și PixelList pentru fiecare regiune marcată
Fiecare rând din PixelList pentru o regiune conține coordonatele x și y ale unui pixel din acea regiune.
s(1).PixelList(1:4, 🙂
ans =
48 94
48 95
48 96
48 97
Figura 3.16. Reprezentare a funcțiilor și PixelList pentru fiecare regiune marcată după coordonatle x și y ale pixelilor din acea regiune
Obținem valoarea tonurilor de gri de pixeli dintr-o regiune prin indexarea în I cu PixelIdxList. Prin ponderarea acestor valori cu coordonate x și y, putem calcula centrul de greutate al feței.
idx = s(1).PixelIdxList;
sum_region1 = sum(I(idx));
x = s(1).PixelList(:, 1);
y = s(1).PixelList(:, 2);
xbar = sum(x .* double(I(idx))) / sum_region1
xbar =
74.6128
ybar = sum(y .* double(I(idx))) / sum_region1
ybar =
92.5121
Figura 3.17. Modalitatea de obținere a valoarii tonurilor de gri de pixeli dintr-o regiune prin indexarea în I cu PixelIdxList, ponderarea acestor valori cu coordonate x și y, și calculul centrului de greutate/simetrie al feței.
Rezultatele prelucrării într-o buclă și suprapunerea locațiilor de centroid pe imagine sunt prezentate în continuare:
imshow(I)
hold on
for k = 1:numel(s)
idx = s(k).PixelIdxList;
pixel_values = double(I(idx));
sum_pixel_values = sum(pixel_values);
x = s(k).PixelList(:, 1);
y = s(k).PixelList(:, 2);
xbar = sum(x .* pixel_values) / sum_pixel_values;
ybar = sum(y .* pixel_values) / sum_pixel_values;
plot(xbar, ybar, '*')
end
hold off
Figura 3.17. Modalitatea de implementare pentru suprapunerea locațiilor de centroid al feței
Figura 3.18. Reprezentare grafică a rezultatelor obținute pentru diferite valori
Aplicația funcționează bine și destul de repede. Cu toate acestea, ea are nevoie de o imagine binară, adică, este nevoie de o valoare de prag. Acest lucru nu este atât de simplu, cu o imagine care are conținut redus de fundal perfect sau curat.
Imaginea binară este doar o modalitate de a reprezenta un set de pixeli asociați cu fiecare regiune. Dacă nu știm ce pixeli aparțin fiecărui obiect, se poate formula o modalitate de a calcula centroizii similar calculul unei integrale definiter, fără a fi declarat limitele de integrare.
imshow(I, [])
imshow presupune anumite game dinamice-negru la alb pentru imagini scara de gri. De exemplu, în cazul în care imaginea de intrare este uint8, atunci 0 este afișată ca negru si 255 este afișat ca alb.
Dacă imaginea de intrare este uint16, atunci 65535 este afișat ca alb. Pentru imagini duble și single, 1 este afișat ca alb. imagesc, pe de altă parte, displayes imaginea la modă imagine dependent.
Pixelul minim este afișat folosind prima culoare colormap, iar pixelul maxim este afișat folosind ultima culoarea colormap. Pentru a obține un efect similar, o altă soluție poate fi folosirea celei mai strălucitoare valori cutoff pixel ale regiunii analizate.
3.11. Implementarea în Matlab
"WeightedCentroid" poate reprezenta intensitățile pixelilor din regiunea de imagine ca greutăți în calculul centrului de greutate. Cu "Centroid", toți pixelii din regiune conduc la obținerea unor ponderi egale.
Utilizarea unui set de instrumente de prelucrare a imaginii în Matlab permite găsirea valorilor ponderate ale centroizilor cu funcția regionprops. Acest lucru se datorează faptului că funcția poate reveni fie o WeightedCentroid fie ca o listă de indici a pixelilor, fiecare fiind etichetat ca o imagine, de PixelList, iar apoi centrul de greutate este ușor de calculat ponderată.
În regionprops se returnează doar valoarea de centroid neponderat (sau centrul de greutate al binar care a fost obținut utilizând bwlabel.
Astfel, informațiile cu privire la pozițiile pixelilor pot fi utilizate pentru a determina acești centroizi.
Regionprops poate fi folosit in legătură cu lista de pixeli pentru a calcula centrul de greutate neponderat așa cum se poate folosi pentru a calcula valoarea ponderată a unui centroid.
Chiar dacă funcția de descoperire nu poate fi folosită într-o buclă se pot găsi diferite valori de ieșire de bwlabel.
function [WC, WA] = WeightedMoments(L, I);
[m, n] = size(L);
[keys, idx] = sort(L(:));
% Get weights and locations in sorted order
w = I(idx);
idx = idx – 1; % Convert to 0-index for simplicity
x = floor(idx / m);
y = idx – x * m;
% Location of the starting point of each region.
locs = find([diff(keys); 1]);
% Weighted area and locations
Msum = cumsum([w, x.*w, y.*w]);
Mloc = diff(Msum(locs,:));
M00 = Mloc(:, 1);
M10 = Mloc(:, 2);
M01 = Mloc(:, 3);
% Weighted centroids and areas
WC = [M10 ./ M00, M01 ./ M00] + 1; % Convert back to 1-index
WA = M00;
end
Figura 3.19. Varianta de implementare în Matlab pentru calculul centrului de greutate al feței
Nu s-a testat performanta, din figura de mai sus unde este reprezentat un algoritm pentru a obține valorile ponderate ale centroizilor ponderate și zonelor feței.
3.12. Estimarea prin segmentare cu prag
Metoda de evaluare a fost de a estima poziția subiectului prin determinarea centrului de vizare al imaginii împărțite de prin prag optim.Segmentarea imaginii inițiale a fost efectuată cu pragul optim, peste care se aplică un algoritm de centru al imaginii.
Textura complexă și contrastul imaginii a redus apariția de segmentare și resturi de produs.
S-a folosit soluția de filtrare și un algoritmul de tip centroid pentru calibrare a pragului de discriminare al subiectului [16].
În continuare este prezentat schematic algoritmul descris.
Figura 3.20. Structura algoritmului propus
Pe imaginea inițială s-a realizat o segmentare cu prag optim asupra căreia s-a aplicat un algoritm de centroid. Textura complexă a imaginii și contrastul redus au condus la apariția unor artefacte de segmentare pentru a căror eliminare a fost aleasă soluția aplicării unui filtru morfologic.
4. Rezultate experimentale
4.1. Descrierea aplicației
Aplicatia a fost realizata pornind de la libraria de clasificatori HAAR implementata folosind tehnologia interpolarii cubice prin funcții predefinite spline.
Programul ruleaza independent si necesită instalarea Microsoft Visual Studio 2013 (free), fiind realizat in limbajul de programare C Sharp.
Considerentele principale care au stat la baza alegerii acestuia a fost viteza de prelucrare faorte rapida, catre timp real, si meniul accesibil de operare/programare.
Pasi de programare:
1. Declararea tuturor variabilelor, obiectelor si vectorilor de imagine
Image<Bgr, Byte> currentFrame; //** Cadrul curent al imaginii faciale
Capture grabber; //** variabila care pastreaza imaginea captata
HaarCascade face; //** clasificatorul pentru facial
HaarCascade eye; //** clasificatorul pentru ochi
-Definirea tipului de font
MCvFont font = new MCvFont(FONT.CV_FONT_HERSHEY_TRIPLEX, 0.5d, 0.5d); //** tipul de font si dimensiune ce o sa fie afisat deasupra imaginii
-definirea imaginilor rezultate dupa detectie precum si aceea ce urmeaza a fi inregistrata in baza de date
Image<Gray, byte> result, TrainedFace = null; //** imaginea rezultat si imaginea ce urmeaza a fi captata si inregistrata in baza de date
Image<Gray, byte> gray = null; //** sunt stocate diferentele de gri ale imaginiii
-generarea unui vector cu toate imaginile adaugate se face in lista sub forma:
List<Image<Gray, byte>> trainingImages = new List<Image<Gray, byte>>(); //** un vector cu toate imaginile (subiecti) care urmeaza a fi adaugate in baza de date
-generarea vectorului pentru etichetarea subiectilor
List<string> labels= new List<string>(); //** vector pentru etichetarea persoanelor
List<string> NamePersons = new List<string>(); //** vector cu numele persoanelor
int ContTrain, NumLabels, t; //** contoare pentru numarul de persoane care urmeaza a fi salvate (ContTrain), pentru etichete (NumLabels), pentru fiecare fata detectata se trece la pasul urmator (t)
string name, names = null; //** variabile de tip string (sir de caractere) pentru salvarea numelui si a numelor persoanelor.
2. Incarcarea clasificatorului pentru detectie frontala a fetei si ochilor de tip Haar Cascade
face = new HaarCascade("haarcascade_frontalface_default.xml");
//eye = new HaarCascade("haarcascade_eye.xml");
-incarcarea fetelor deja existente si etichetarea fiecareia dintre ele
– definire mesaje din box:Nu exista nimic salvat (binar) in baza de date, va rog sa adaugati cel putin un subiect cu caracteristici faciale", "Incarcarea fetelor si antrenarea lor", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
– initializare camera pentru captare (deschiderea camerei)
– initializare contor de antrenare al fetelor
– obtinerea unui cadru gri de la dispozitivul de captare (Camera)
– initializarea detectorului facial Emgu pentru procesarea imaginilor
3. Definirea actiunii pentru fiecare element detectat
4. Redimensiunea fetei detectate ca imagine pentru compararea fortata a aceleiasi dimensiuni cu imaginea de test folosind interpolare cubica.
-afisarea fetei adaugate intro scala gri
– salvarea intrun fisier de tip text a fetelor antrenate
-scrierea etichetelor a fetelor antrenate intrun fisier text pentru incarcari si detectari ulterioare
-predefinire mesaje box : " a fost detectata si adaugata.", "Trainingul a fost efectuat cu succes", "Activatia dectarea fetei mai intai.", "Trainingul a esuat.",
5. Obtinem cadrul curent de la dispozitivul de captare
– convertim imaginea obtinuta la scala gri
-folosind Detectorul facial MCvAvgComp definim actiunea pentru fiecare element rezultat in urma clasificarii HAAR prin trasarea (reprezentarea) fetei detectate in canalul 0 al culorii gri folosind culoarea albastra.
-se face apel la Clasa TermCriteria care se foloseste la recunoasterea imaginilor antrenate cu un numar maxim de antrenari (variabila maxIteration).
-se defineste obiectul de recunoastere al vectorului facial comun
-trasam cate o eticheta pentru fiecare fata detectata si recunoscuta.
– stabilim numarului de fete detectate in scena
-setam regiunea de interes a fetei
– sunt concatenate numele persoanelor recunoscute si afisarea lor
6. Afisarea fetelor procesate si recunoscute
– eliberarea listei (vectorului) de nume
4.2. Specificații ale programului informatic
In EigenObjectRecognizer.cs se gaseste codul sursa folosit pentru recunoasterea fiecarui obiect prin metoda PCA (Principle Components Analysis)
In Main Form.cs din Anexa se gaseste codul sursa al intregii aplicatii
In Resources sunt prevazute posibilitati de inserare a unor imagini/baze de date format .gif
S-a folosit o configuratie de calcul: processor dual core 2x 2.4Gz, Ram 2 G. si o camera web normala.
Conditiile de iluminare in care s-au realizat experimentele arata ca aceasta nu este critica, insa performante de recunoastere superioare se pot obtine cu o iluminare buna a subiectilor.
Detectia si recunoasterea acestora presupun achizitia de imagini fixe, ceea ce din punct de vedere militar impune luarea unor masuri tehnice ex. puncte de control access au zone special amenajate.
4.3. Rezultate obținute prin implementarea unui software pentru detecția și recunoașterea fețelor
În cadrul Raportului de cercetare am realizat mai multe experimente:
1.Am introdus si analizat imagini achizitionate cu camera web
2. Am introdus fotografii din cele doua baze de date personale.
De mentionat faptul ca aplicatia permite recunoasterea fetelor persoanelor din fotografii, cu conditia etichetarii prealabile a acestora (actiuni politienesti)
Detectia si recunoasterea persoanelor in cadrul sistemelor militare de supraveghere a obiectivelor/accesului in acestea, perimetre cu acces restrictionat
Experiențele pe obiecte de fundal de diferite nuanțe, forme și mărimi precum și în semiîntuneric au demonstrat o bună selectivitate a algoritmului la recunoașterea feței umane.
Aplicația nu creează confuzii între clase de fețe similare și permite o bună implementare pentru recunoașterea feței umane.
Figura 4. 1. Captura de ecran cu eticheta unei persoane recunoscute din baza de date
Figura 4.2. Captura de ecran cu imaginea achizitionata in baza de date a subiectului nr. 6
Figura 4.3. Captura de ecran cu subiectul nr 5 identificat
Figura 4.4. Captura de ecran cu locatia unde se regaseste subiectul etichetat cu nr 5
Figura 4.5.Captura de imagine video recunoscuta dupa antrenare cu numele subiectului
Figura 4.6. Captura de ecran 3 subiecti detectati din baza de date
din multimi aglomerate si localizarea lor
Figura 4.7. Captura de ecran 4 subiecti detectati din baza de date
din multimi aglomerate si localizarea lor
Figura 4.8. Captura de ecran 2 subiecti detectati din baza de date
din multimi aglomerate si localizarea lor
Figura 4.9.Captura de ecran 1 subiect detectat din baza de date
din multimi aglomerate si localizarea lui
Figura 4.10. Captura de ecran 2 subiecti detectati din baza de date
din multimi aglomerate si localizarea lor pe fundal intunecat si miscarea subiectilor
Figura 4.11. Captura de ecran cu subiectul nr 24 din baza de date recunoscut in 6 stari faciale: cu ochelari, incruntat/maniat, trist,surprins, vesel. Iluminare: semiintuneric
Figura 4.12. Captura de ecran cu subiectul nr 7 din baza de date recunoscut in 6 stari faciale: cu ochelari, incruntat/maniat
Figura 4.13. Captura de ecran cu datele de identificare ale subiectului recunoscut
4.4. Rezultate experimentale privind determinarea și implementarea clasificatorilor în cadrul Bazelor de date
1. Prin antrenarea bazei de date Faces 94 conținând 3 imagini de instruire si 3 imagini de testare, cele mai bune rezultate ale ratei de recunoastere au fost prin folosirea CSOM 1 si spatiul componentelor C1C2C3 prin antrenarea a 9 X151 neuroni respectiv 18 x 151 neuroni fara selectie de caracteristici obținându-se o rata de 98% (tabelul 3.4)
In cadrul aceluiași experiment s-au obținut rezultate acceptabile de 96.24% folosind metoda de selectie PCA si spatiul componentelor H1H2H3 de 96.24% in cazul antrenarii a 6 x 151 neuroni.
Astfel, în cazul clasificării CSOM în spațiul RGB se obține o rată de recunoaștere corectă mai mare folosind PCA, ajungând la 96.03%; spațiul color C1C2C3 are 98.00% fără selecție de
caracteristici; spațiul color H1H2H3 atinge 96.90% în cazul folosirii PCA.
Rezultatele cele mai bune rezultă fără selecție de caracteristici prin utilizarea spațiului C1C2C3, iar folosind PCA utilizând spațiul H1H2H3.
Dintre clasificatorii SOM, CSOM și NP, clasificatorul CSOM obține rezultatele cele mai bune în toate testele efectuate.
Prin clasificarea celor 453 imagini din lotul de test al bazei de date Faces’94 se obțin rezultate bune în cazul în care se aplică o metodă de selecție a caracteristicilor, fie asupra vectorilor de test (PCA, reținând 453 de caracteristici), fie asupra spațiului color (C1C2C3 și H1H2H3).
Clasificarea imaginilor brute prin sistemul CSOM conduce la o rată de recunoaștere maximă de 81.01%, fiind cu 15%÷18% sub nivelul celorlalte clasificări CSOM.
2. Prin antrenarea bazei de date AR continand 7 imagini de instruire si 7 imagini de testare în cazul C1C2C3, folosirea SOM impreuna cu metoda de selectie implementand LDA aduce rata de 100% de recunoastere prin antrenarea de la 280-360 neuroni.
Aceeasi rata de recunoastere se obtine folosind tot LDA pentru 40 neuroni antrenați folosind CSOM1 SI 360, 400 neuroni folosind FSOM2.
Metoda implementand PCA aduce rezultate foarte slabe de max 72.93% folosind CSOM și pentru antrenarea a 400 neuroni.
Aceeași bază de date, folosind spatiul componentelor C1C2 aduce rezultate mult mai bune prin folosirea LDA respectiv o rată de 100% folosind metoda de clasificare SOM pentru antrenarea a 280-400 neuroni.
Aceeasi rata se obține pentru antrenarea a 40 neuroni prin LDA folosind clasificarea CSOM1 și 360-400 neuroni folosind FOSM 2.
Si in acest caz folosirea PCA nu ofera rezultate mai mari de 72.56% pentru antrenarea a 400 neuroni prin clasificarea CSOM 1.
Aceeași bază de date folosind o singură componentă de culoare C1 oferă rezultate mult mai bune prin implementarea LDA folosind clasificarea SOM rezultând o rată de 100% incepând cu antrenarea a 240-400 neuroni, CSOM 1 pentru 40 neuroni respectiv 280-4—neuroni și FSOM2 pentru 200 respectiv 280-400 neuroni.
In acest caz folosirea PCA conduce la cele mai slabe rezultate respectiv de maximum 70.68% pentru 360 neuroni antrenati prin clasificarea CSOM1.
Aceeași bază de date folosind componenta de culoare C2 în cazul RGB conduce la rezultate de maximum 80.83% pentru antrenarea a 400 neuroni prin CSOM1 cu LDA și de 71.83% cu PCA.
Baza de date AR este o bază greu accesibilă datorită variațiilor de iluminare, cu două surse de lumină. Un alt factor este acela că imaginile de test sunt procesate la un interval de două săptămâni după captarea imaginilor folosite în antrenare.
Rezultă că, în cazurile dificile cum sunt variațiile de iluminare, metoda potrivită de selecție a caracteristicilor este LDA, prin comparație cu PCA.
Prin compararea variantelor de clasificare FSOM rezultă că, pentru recunoașterea acestei baze de date, opțiunea de a lucra cu intrări fuzificate este mai potrivită decât varianta de a lucra cu intrări non-fuzzy. Varianta cu intrările fuzificate obține cele mai mari rate de recunoaștere corectă.
Prin compararea clasificatorilor SOM, CSOM și FSOM, în toate cazurile de clasificare folosind ca selecție de caracteristici PCA, cel mai bun este clasificatorul CSOM, obținând cele mai mari rate de recunoaștere corectă.
În varianta folosirii LDA, pe lângă clasificatorul CSOM care obține rezultate foarte bune chiar pentru un număr minim de neuroni, se mai poate remarca și clasificatorul FSOM în varianta cu intrări fuzificate care egalează clasificatorul CSOM în toate cazurile.
Rezultatele obținute pentru spațiul de culoare studiat (C1C2C3), în care se concatenează caracteristicile LDA în cele trei variante (C1&C2&C3), ating rata maximă de recunoaștere corectă de 100%. În spațiul C1C2C3 combinat cu PCA (72.93%) se obțin rate mai bune de recunoaștere decât în combinațiile de PCA cu C1C2 (72.56%), sau cu C1 (70.68%).
3. Baza de date personală continand 7 imagini de instruire si 7 imagini de testare în cazul C1C2C3, permite 100 % rata de recunoastere prin antrenarea a 280- 400 neuroni clasificarea SOM cu selectia de caracteristici LDA.
Aceeași rată se obține pentru CSOM 1 cu antrenarea a 40 neuroni, respectiv FSOM 2 incepand cu 360-400 neuroni.
Folosirea PCA in toate metodele de clasificare conduce la cel mai bun scor de 73.08% pentru 400 neuroni antrenați folosind clasificarea CSOM1.
Aceeași bază de date pentru componentele C2C3 conduce la rezultate de recunoastere maxima de 100% pentru folosirea LDA si clasificarea SOM incepand cu antrenarea a 280-400 neuroni, 40 neuroni pentru clasificarea CSOM1 si 360-400 neuroni pentru clasificarea FSOM2.
Recunoasterea maxima folosind PCA este de 74.16% pentru antrearea a 400 neuroni clasificarea CSOM 1.
Aceeasi baza de date personala folosind o singura componentă C1 permite obtinerea celor mai bune rezultate dintre toate experimentele si comparativ cu celelalte baze de date.
Prin clasificarea SOM și selectia de carateristici folosind LDA prin antrenarea a 160 neuroni si 240-400 neuroni se obtin 100% rata de recunoastere.
O creștere a ratei de recunoaștere la 100% se obține si pentru csom 1 cu 280-400 neuroni dar mai ales FSOM 2 pentru 200 neuroni respectiv 280-400 neuroni antrenați.
Folosirea PCA conduce la aceleași rezultate slabe de maximum 7114% pentru 360 neuroni antrenați folosind CSOM1.
Baza de date personală este mai accesibilă ca bazele de date descrise anterior în sensul obținerii unor rate de recunoaștere puțin mai mari ca al acestora.
Diferența provine din faptul că imaginile personale sunt achiziționate fără variații de iluminare și pe un fundal deschis, fără umbre.
Un dezavantaj rămâne în continuare timpul mare de prelucrare, comparabil cu al bazei de date AR.
Folosind baza de date personală cea mai potrivită metodă de selecție este LDA. Ca și la baza de date AR variant cu intrările fuzzificate permire rezultate de recunoaștere mai bune.
Prin compararea clasificatorilor SOM, CSOM și FSOM, folosind metoda de selecție cu PCA, clasificatorul CSOM conduce la cele mai mari rate de recunoaștere.
Vizavi de aceasta, LDA permite și el obținerea de rezultate foarte bune la un număr mic de neuroni antrenați. In acest caz clasificatorul FSOM cu intrari fuzzyficate este comparabil cu clasificatorul CSOM in toate experimentele.
Pentru spațiul de culoare C1C2C3 prin concatenarea caracteristicilor LDA în cele trei variante (C1&C2&C3), se obține o rată maximă de recunoaștere corectă de 100% ca și în cazul bazei de date AR.
În spațiul C1C2C3 combinat cu PCA 73.08% (72.93% – AR) se obțin rate mai bune de recunoaștere decât în combinațiile de PCA cu C1C2 74.14 % (72.56% – AR), sau cu C1 71.14% (70.68% în cazul AR).
5. Concluzii și contribuții personale
Studiile și experiențele efectuate în prezentul Raport de cercetare au avut ca scop principal determinarea de noi metode și tehnologii biometrice de prelucrarea digitală a imaginii pentru îmbunătățirea unei anumite clase de algoritmi utilizați în detecția și recunoașterea feței umane.
Am urmărit realizarea unei rate de recunoaștere de 100% și a unui timp real de prelucrare specific implementării în aplicații militare ce presupun detecția și recunoașterea persoanelor.
În aplicațiile practice am orientat cercetarea către doua obiective:
– prelucrarea imaginii pentru detecția feței și,
– prelucrarea imaginii pentru recunoașterea feței.
5.1. Concluzii privind prelucrarea imaginii pentru detecția feței
Experiențele au avut ca scop determinarea unor metode optime de implementare a algoritmilor pentru detectia pupilei si a unor algoritmi actuali pentru determinare a regiunilor feței din fotografii sau imagini fixe, în scopul detectării feței în acestea.
Întrucât utilizarea unor algoritmi bazați pe un anumit model sau spațiu de culoare poate conduce la rezultate diferite în funcție de contextul nivelului de informație conținut în imaginea achiziționată s-a propus îmbunătățirea performanțelor acestora prin tehnici mixte ce presupun fuziunea decizională.
Dacă în Raportul de cercetare nr 3 am urmărit determinarea performanțelor specifice fiecărui detector individual în acest Raport am căutat folosirea unei metode mixte care să conducă la o rată de recunoaștere maximă realizată într-un timp de prelucrare real.
Folosind aplicația care implementează algoritmul de detecție a pupilei impreuna cu clasificatorii Haar-like am constatat ca rezultatele sunt superioare din punct de vedere al ratei de detecție (TPR) și falsă detecție (FPR) față de clasificatorii folosiți individual.
Astfel s-au obținut rate maxime de bună detecție de peste 95% și rate de falsă detecție de până 15%.
Prin construcția a doua baze de date cu imagini ale subiectilor achizitionate individual si in multimi aglomerate, care conțin o mare varianță a tipului pielii, contextului iluminării și poziției subiecților în scenă precum și a unor stări fizionomice specifice am urmărit experimental:
1. Identificarea performanțelor clasificatorilor pentru baza de date propusă
2. Experimentarea unei aplicații informatice în Open Cv care să implementeze metode de detecție a feței
3. Implementarea în cadrul unei aplicații a unui algoritm personal de detecție a feței în conjuncție cu cel mai eficient clasificator individual implementat prin metode Viola- Jones.
4. Evaluarea performanțelor din punct de vedere practic si teoretic( falsa rată de detectie si rejectare, detectarea fetei prin rotirea capului, detectarea unor stari emotionale si a feței superioare parțial acoperite, timp de prelucrare) prin experimente pentru detecția persoanelor în mulțimi aglomerate
5.2. Concluzii privind prelucrarea imaginii pentru recunoașterea feței
Studiul aplicativ a avut ca scop realizarea unor aplicații software pentru recunoașterea în timp real a persoanelor individuale sau din mulțimi aglomerate implementand un algoritm existent prin metoda Viola Jones.
Experimentele au fost optimizate prin prin folosirea metodei de selecție PCA, a interpolării cubice și a segmentării optime cu prag pentru detecția și recunoașterea feței.
Rezultate obținute:
1. Metoda implementând clasificatori HAAR-LIKE este cea mai aplicabilă pentru aplicații militare.
Aceasta permite o rată de recunoaștere falsă de maxim 15%, o rată de recunoaștere de peste 95%, în timp real, pentru o rotire a feței subiecților cu până la 45 grade, precum și recunoașterea feței superioare acoperite, respectiv a unor stări emoționale.
OpenCV folosit permite recunoașterea de imagini cu rezoluții mici, începând cu 90 x 120 pixeli.
Aplicația permite recunoașterea feței superioare acoperite și a 6 stări emoționale.
2. Folosind implementarea in Microsoft Visual Studio,detecția și recunoașterea feței se face în timp real, nu se fac întârzieri datorate prelucrării matematice ca de ex. la Matlab, și se obțin rezultate net superioare față de acesta.
3. Metoda permite recunoașterea fețelor persoanelor în mulțimi aglomerate atât pe un fundal iluminat normal, uniform cât și pe un fundal accidentat, înconjurat de obiecte și în semiîntuneric.
Acesta permite recunoașterea a 6 stări emoționale asociate subiectului, inclusiv recunoașterea acestuia purtând ochelari, fără a se face confuzie cu alte clase de subiecți.
4. Toate aplicațiile informatice permit prelucrarea datelor stocate sub formă de fotografii în format .jpg, .png sau .bmp dar și a imaginilor video fixe, în timp real furnizate de o cameră video.
5. Comparația și rezultatele practice obținute conduc la recomandarea programului informatic, pentru aplicații militare de supraveghere ce presupun detecția și/sau recunoașterea persoanelor în mulțimi aglomerate, manifestații sportive, cultural, religioase, detecția persoanelor date în consemn la frontieră, a persoanelor suspecte sau urmărite ce fac obiectul acțiunilor militare sau Poliției.
6. Prelucrarea imaginilor este un domeniu complex și foarte dinamic, cu numeroase aplicații în diverse domeniul militar. Optimizări ulterioare ale aplicației pot permite extragerea informațiilor utile din imagine și pot îmbunătăți procesul de extragere și analiză.
7. Aplicația optimizată a fost testată în aplicații operative pentru depistarea persoanelor ce fac obiectul misiunilor Jandarmeriei sau Poliției, în mulțimi aglomerate – obținându-se rezultate bune din punct de vedere operativ.
5.3. Concluzii negative
1. Recunoașterea persoanelor prin aplicația descrisă este condiționată de orientarea feței acestora la un unghi de 45 sau 60 de grade față de obiectiv, în prima respectiv în ultima aplicație.
2. Influențează negativ și nu se poate realiza recunoașterea atunci când subiecții au fața acoperită, poartă barbă sau au fața puternic aplecată către pământ, ori fiind obturată în mare parte de către alte imagini.
Acestea pot constitui însă puncte de plecare către viitoare cercetări implementând recunoașterea și analiza feței în conjuncție cu alte metode, de exemplu, pentru imagini achiziționate de la distanțe foarte mici, procedeul de recunoaștere a irisului.
3. Analiza rezultatelor a scos în evidență aspecte negative, ce nu permit recunoașterea în unele cazuri a fețelor din imagini, ca:
• Imposibilitatea de a depista fețe sunt sub un unghi de rotire mai mare de 60 grade.
• Probleme de luminozitate și contrast în întuneric.
4. Achiziția fotografiilor și imaginilor presupune realizarea acestora de la distanțe de 10-15 metri, frontal sau la 60 de grade fata de subiecții vizati. Performanțele pot fi crescute prin folosirea unor teleobiective sau care implementează zoom optic.
5. Algoritmii pot fi ulterior rafinați prin introducerea de criterii suplimentare specifici, de detecție a feței, precum algoritmi de căutare a expresiei caracteristicilor faciale, specifici stărilor emoționale.
5.4. Contribuții personale
am realizat două baze de date personale ce pot constitui suport pentru cercetări viitoare
s-au determinat metodele cele mai performante pentru selecția algoritmilor actuali pentru determinare a regiunilor feței din fotografii sau imagini fixe, în scopul detectării/recunoașterii feței în acestea.
s-au efectuat experiențe pentru stabilirea performanțele algoritmilor bazați pe un anumit model sau spațiu de culoare prin tehnnologii biometrice mixte ce presupun fuziunea decizională (PCA, segmentarea cu prag optim, interpolarea cubică, integral image).
5.5. Perspective și oportunități de cercetare
dezvoltarea unei palete consistente de tehnici biometrice hibride avansate
În cadrul aplicatiilor biometrice curente este preferata utilizarea unor algoritmi si tehnici standard de fuziune a informatiei
Au avantajul simplitatii si al unui nivel de performanta relativ consistent, metodele respective isi dovedesc limitarile in solutionarea unor probleme (biometrice) complexe.
se propun noi proceduri de fuziune a informatiei adaptate sistemelor biometrice hibride complexe, insistandu-se cu precadere fie pe infuzia tehnicilor de procesare inteligenta in cazul algoritmilor standard deja existenti
dezvoltarea si aprofundarea unor tehnici de fuziune inovative (spre exemplu, tehnicile mixte sau antrenabile de fuziune a informatiei
investigarea de noi tehnici de procesare neuro-fuzzy-genetice perfect adaptate sistemelor biometrice moderne
dezvoltarea unei baze de date (multispectrale) proprii consistente si credibile.
Lucrări publicate/susținute la Conferințe Științifice ca urmare a acestui Raport de cercetare
1. drd. Marian Dorin PÎRLOAGĂ, prof.univ.dr.ing.Emil CREȚU, prof.univ.dr.ing. Ciprian RĂCUCIU Analysis and implementation methods of pattern recognition applications using video, International Conference STRATEGIES XXI-Technologies-Military applications, simulation and resources- Carol I Defence University, Command and Staff Faculty, 13-14 nov.2014 București, pag.204-216, ISSN 2285-8415, ISSN-L 2285-8318 (indexată Proquest și CEEOL)
2. drd. Marian Dorin PÎRLOAGĂ, prof.univ.dr.ing.Emil CREȚU, prof.univ.dr.ing. Ciprian RĂCUCIU Optimization of biometric technologies for military applications using faces recognition , International Conference STRATEGIES XXI-Technologies-Military applications, simulation and resources- Carol IDefence University, Command and Staff Faculty, 13-14 nov.2014 București pag 216-228, ISSN 2285-8415, ISSN-L 2285-8318 (indexată Proquest și CEEOL)
3. drd. Marian Dorin PÎRLOAGĂ, Marius Rogobete, Col.(r.) prof.univ. dr. ing. Ciprian RĂCUCIU , Gl. Bg.(r.) prof.univ. dr.ing. Emil CREȚU, Recognition of faces in the crowd using biometric technologies mixed, Buletinul Științific al Academiei Navale Mircea cel Batran Constanta, Mai 2015, B ISSN – 1454-864X, Conferința SEA CONF 2015 Constanța (indexată Proquest)
4. drd. Marian Dorin PÎRLOAGĂ , Marius Rogobete, Col.(r.) prof.univ. dr. ing. Ciprian RĂCUCIU , Gl. Bg.(r.) prof.univ. dr.ing. Emil CREȚU, Optimal classification using RBF for face recognition, Buletinul Științific al Academiei Navale Mircea cel Batran Constanta, Mai 2015, B ISSN – 1454-864X, Conferința SEA CONF 2015 Constanța (indexată Proquest)
5. Marius ROGOBETE1, CiprianRĂCUCIU2, Marian-Dorin PÎRLOAGĂ3 1Alstom GRID Romania, 040231, Bucharest, Romania 2Titu Maiorescu University, Bucharest,Romania 2Military Technical Academy, Bucharest,Romania . Image Protection.A Framework Proposal. Buletinul Științific al Academiei Navale Mircea cel Batran Constanta, Mai 2015, B ISSN – 1454-864X, Conferința SEA CONF 2015 Constanța (indexată Proquest)
6. Marius ROGOBETE1, CiprianRĂCUCIU2, Marian-DorinPÎRLOAGĂ3 1Alstom GRID Romania, 040231, Bucharest, Romania 2Titu Maiorescu University, Bucharest,Romania 2Military Technical Academy, Bucharest,Romania. Using Hide Watermark in Visual Watermark extraction.Advantages.Algorithm. Buletinul Științific al Academiei Navale Mircea cel Batran Constanta, Mai 2015, B ISSN – 1454-864X, Conferința SEA CONF 2015 Constanța (indexată Proquest)
7. Pîrloagă Marian Dorin *, Răcuciu Ciprian **, Crețu Emil*** , Rogobete Marius****, Optimizing face recognition in images, Revista Academiei Forțelor Aeriene ‘’Henri Coandă’’- Brașov ISSN 2069-4733 , B ISSN 1842-9238, pag. 123 – 133, Vol. XIII, No 1 (28)/2015 (indexată Copernicus, EBSCO, Cabell Publishing/Cable Directories, Kubon & Sagner)
8. Pîrloagă Marian Dorin *, Răcuciu Ciprian **, Crețu Emil***, Rogobete Marius**** PCA versus LDA in implementing of neural classifiers for face recognition Revista Academiei Forțelor Aeriene ‘’Henri Coandă’’- Brașov ISSN 2069-4733 , B ISSN 1842-9238, pag. 113- 119, Vol. XIII, No 1 (28)/2015 (indexată Copernicus, EBSCO, Cabell Publishing/Cable Directories, Kubon & Sagner)
Lucrarea a beneficiat de suport financiar prin proiectul cu titlul „Studii doctorale și postdoctorale Orizont 2020: promovarea interesului național prin excelență, competitivitate și responsabilitate în cercetarea științifică fundamentală și aplicată românească”, număr de identificare contract POSDRU/159/1.5/S/140106. Programul este cofinanțat din Fondul Social European prin Programul Operațional Sectorial Dezvoltarea Resurselor Umane 2007-2013. Investește în Oameni!
6. Bibliografie
[1] Peli, E. Contrast in complex images, Journal of Optical Society of America 7-10 Oct.1990, 2032-2040.
[2]Eskicioglu, A.M., Fisher, p.s. Image Quality Measures and their Performances, IEEE Transactions on Communications 43, 12 Dec 1995, 2959-2965.
[3] LAM, K.M., YAN, H. Locating and extracting the eye in Human face Images. Pattern recognition 29, 5 May 1996, 771-779.
[4] Smeraldi, F.,Carmona O.,Bigun, J. Saccadic search with gabor features applied to eye detection and real time head tracking. Image Vision Computing 18, 4 Mar 2000,323-329.
[5]Takacs, B.,Wechsler, H. Detection of facesand facial Landmarks using Iconic filter banks. Pattern Recognition 30, 10 (1997), 1623-1636.
[6] Ryu, Y.S.,Oh, S.y. Automatic extraction of eye and mouth fields from a face image using eigenfeatures and multilayer perceptrons. Pattern Recognition 34 (2001), 2459-2466.
[7] HSU, R.L.,Abdel-Mottaleb, M.,Jain. A.K. Face detection in color images using Hausdorff distance. IEEE Transactions on pattern analysis and Machine Inteligence 24, 5 (May 2002), 696-706.
[8] Feng,G.C.,Yuen, P.C. Multi-cues eye detection on gray intensity image. Pattern recognition 34 (2001), 1033-1046.
[9]Lee, J.Y., Yoo, S.I. An elipticalboundary modelfor skincolor detection. In Proceedings of the International Conference o Imaging Science, Systems and Technology (2002).
[10] http://www.faceplusplus.com/tech_landmark/ .
[11] T Fawcet, An introductionto ROC Analysis, Pattern recognition letters 27 (2006), 861-874.
[12] www.cs.nju.edu.cn/wujx/RareEvent/cascade/JPG .
[13] Note curs Detectia componentelor faciale: Detectia si urmarirea ochilor. Detectia clipitului. Marita. T. Universitatea tehnica Cluj Napoca.
[14] http://www.bioid.com/downloads/software/bioid-face-database.html .
[15] B. Kisacanin, V. Pavlovic, T.S. Huang, Real-Time Vision for Human-Computer Interaction, Springer 2005, pp. 141-157, “A Real-Time Vision Interface Based on Gaze Detection — EyeKeys”, John J. Magee .
[16]C.G. Vasile, “Iris recognizing. General prezentation and applications, results obtained with an experimental model”, The XXXII Communication Session of Institute for Advanced Technologies, Bucharest, 2004.
[17] [1] K. Aas. Detection and Recognition of Faces in Video Sequences.
[18] http://dsplabs.upt.ro/dalt/projects/project2_4/docs/SCSS2001/FaceRecognition.pdf.
[19] R. Brunelli, T. Poggio. Face Recognition vs Templates. In IEEE Transactions on Pattern Analysis and Mach Intell., 15, 1042-1052, 1993.
[20] http://www.victorneagoe.com/university/prai/lab1a.pdf .
[21] Dr. Libor Spacek Department of Computer Science, University of Essex UK.
[22] A.M. Martinez and R. Benavente. The AR Face Database. CVC Technical Report #24, June 1998.
[23] P. Viola, M.J. Jones, “Robust Real-Time Face Detection”, International Journal of Computer Vision, v.57 No. 2, pp. 137-154, May 2004.
[24] S. Krishna, “Open CV Viola-Jones Face Detection in Matlab”, 2008
[25] Wikipedia – http://en.wikipedia.org.
[26] V.E. Neagoe, “An optimum 2D color space for pattern recognition”, Proc. of the 2006. International Conference on Image Processing, Computer Vision&Pattern Recognition, Las Vegas, Nevada, June 26-29, 2006, vol. 2, pp. 526-532, ISBN: 1-932415-99-8.
[27] V.E. Neagoe and A.C. Mugioiu, "A fully neural approach to color facial image recognition", Proc. of the World Automation Congress, 2008 (WAC 2008), International Symposium on Soft Computing in Industry (ISSCI'08),Sept. 28–Oct. 2, 2008, Hawaii, USA, ISBN:978-1-889335-38-4, IEEE Catalog No. 08EX2476.
[28] J. Llinas and E. Waltz, Multisensor Data Fusion. Boston, MA: Artech House, 1990.J. Llinas and E. Waltz, Multisensor Data Fusion. Boston, MA: Artech House, 1990.
[29] L. A. Klein, Sensor and Data Fusion Concepts and Applications, SPIE Opt. Engineering Press, Tutorial Texts, vol. 14, 1993.
[30] D. Hall, Mathematical Techniques in Multisensor Data Fusion. Boston, MA: Artech House, 1992.
[31] D. L. Hall AND J. Llinas, An Introduction to Multisensor Data Fusion, Proceedings of the IEEE, VOL. 85, NO. 1, JANUARY 1997.
[32] H. W. Sorenson, “Least-square estimation: From Gauss to Kalman,” IEEE Spectrum, pp. 63–68, July 1970.
[33] C. T. Zahn, “Graph-theoretical methods for detecting and describing Gestalt cluster,” IEEE Trans. Computers, vol. C-20, Jan. 1971.
[34] G. R. Iverson, Bayesian Statistical Inference. Beverly Hills, CA: Sage, 1984.
[35] J. D. Lowrance and T. D. Garvey, “Evidential reasoning: A developing concept,” in Proc. Int. Conf. on Cybern. and Soc., Oct. 1982, pp. 6–9.
[36] A. P. Dempster, “Generalization of Bayesian inference,” J. Royal Statist. Soc., vol. 30, pp. 205–247, 1968.
[37] V.E. Neagoe and A. Ropot, ”Concurrent Self-Organizing Maps for Pattern Classification”, Proc. of First IEEE International Conference on 282 Cognitive Informatics, ICCI 2002, 19-20 August 2002, Calgary, Alberta, Canada, ISBN 0-7695-1726-9, pp. 304-312.
[38] V.E. Neagoe, ”Concurrent Self-Organizing Maps for Automatic Face Recognition” In: Proc. of the 29th International Conference of the Romanian Technical Military Academy, November 15-16, 2001, Bucharest, Romania. Section 9 (Communications). ISBN: 973-8290-27-9. (2001) pp. 35-40.
[39] V.E. Neagoe and A. Ropot, “Concurrent Self-Organizing Maps – a Powerful Artificial Neural Tool for Biometric Technology”, Proc. of World Automation Congress WAC ’04, Seville, 3, (2004), ISBN 1-889335-20-7, IEEE Catalog 04EX832C.
[40] V.E. Neagoe and A.C. Mugioiu, "A fully neural approach to color facial image recognition", Proc. of the World Automation Congress, 2008 (WAC 2008), International Symposium on Soft Computing in Industry (ISSCI'08),Sept. 28–Oct. 2, 2008, Hawaii, USA, ISBN:978-1-889335-38-4, IEEE Catalog No. 08EX2476.
[41] T. Kohonen “Self-Organising Maps” Springer-Verlag, Berlin,Heidelberg, 1995.
[42] S. K. Pal and P. K. Pramanik, “Fuzzy measures in determining seedpoints in clustering,” Pattern Recog. Left., vol. 4, pp. 159-164, 1986.
[43] S. Mitra, S. K. Pal, “Self-organizing Neural Network As A Fuzzv Classifier” IEEE TRANSACTIONS ON SYSTEMS, MAN, AND CYBERNETICS,VOL. 24, NO. 3, MARCH 1994.
[44] S. K. Pal and D. Dutta Majumder, “Fuzzy sets and decision making approaches in vowel and speaker recognition,” IEEE Trans. Syst., Man, Cybem., vol. 7, pp. 625-629, 1977.
[45] S. K. Pal and D. Dutta Majumder, Fuzzy Mathematical Approach to Pattern Recognition. New York Wiley (Halsted Press), 1986.
[46] http://sourceforge.net/p/emgucv/svn/1442/tree/tags/REL_2_0_0_0_ALPHA/Emgu.CV/EigenObjectRecognizer.cs
Anexa 1
Implementarea în OpenCv a clasificatorului HaarCascade
//clasificatorul folosit pentru detecția fețelor
HaarCascadeClassifier classifier = HaarCascadeClassifier.DefaultFaceClassifier;
//Detectorul Viola Jones bazat pe clasificatori HAAR
HaarObjectDetector detector;
//construtorul clasei
public DetectorFete()
{
detector= new HaarObjectDetector(
classifier, 30, ObjectDetectorSearchMode.NoOverlap,
1.5f, ObjectDetectorScalingMode.SmallerToGreater);
}
/// <summary>
/// Functie care obtine pozitia fetelor in imagine
/// </summary>
/// <param name="image">Imaginea</param>
/// <returns>intoarce dreptunghiurile in care au fost detectate fete</returns>
public Rectangle[] getFete(Bitmap image)
{
return detector.ProcessFrame(image);
}
}
}
Anexa 2
Implementare în OpenCv a unei aplicații personale de recunoaștere facială
//Autor: Marian DorinPirloaga
//Data ultimeiactualizari: 16.02.2015
using System;
usingSystem.Collections.Generic;
usingSystem.Drawing;
usingSystem.Windows.Forms;
using Emgu.CV;
usingEmgu.CV.Structure;
usingEmgu.CV.CvEnum;
using System.IO;
usingSystem.Diagnostics;
namespaceMultiFaceRec
{
public partial class FrmPrincipal : Form
{
//Declarareatuturorvariabilelor, obiectelorsivectorilor de imagine
Image<Bgr, Byte>currentFrame; //** Cadrulcurent al imaginiifaciale
Capture imagine_capturata; //** variabila care pastreazaimagineacaptata
HaarCascadeimagine_faciala; //** clasificatorulpentru facial
HaarCascadeimagine_ochi; //** clasificatorulpentruochi
MCvFontsetari_font = new MCvFont(FONT.CV_FONT_HERSHEY_TRIPLEX, 0.5d, 0.5d); //** tipul de font sidimensiunece o sa fie afisatdeasupraimaginii
Image<Gray, byte>rezultat, imagine_antrenata = null; //** imaginearezultatsiimagineaceurmeaza a fi captatasiinregistrata in baza de date
Image<Gray, byte>imaginea_gri = null; //gray //** suntstocatediferentele de gri ale imaginiii
List<Image<Gray, byte>>imagini_antrenate = new List<Image<Gray, byte>>(); //trainingImages //** un vector cu toateimaginile (subiecti) care urmeaza a fi adaugate in baza de date
List<string>etichete = new List<string>(); //** vector pentruetichetareapersoanelor
List<string>nume_persoane = new List<string>(); //** vector cu numelepersoanelor
intcontor_antrenare, numar_etichete, t; //** contoarepentrunumarul de persoane care urmeaza a fi salvate (ContTrain), pentruetichete (NumLabels), pentrufiecare fata detectata se trece la pasulurmator (t)
stringnume, numele = null; //** variabile de tip string (sir de caractere) pentrusalvareanumeluisi a numelorpersoanelor.
publicFrmPrincipal()
{
InitializeComponent();
//** incarcareclasificatorpentrudetectiefrontala a fetei
imagine_faciala = new HaarCascade("imaginefacialafrontala_haarcascade.xml"); // haarcascade_frontalface_default.xml
//eye = new HaarCascade("haarcascade_eye.xml");
try
{
//Load of previustrainned faces and labels for each image
//** incarcareafetelordejaexistentesietichetareafiecareiadintreele
stringinformatii_etichete = File.ReadAllText(Application.StartupPath + "/ImaginiFacialeAntrenate/EticheteAntrenate.txt");
string[] etichete = informatii_etichete.Split('%');
numar_etichete = Convert.ToInt16(Labels[0]);
contor_antrenare = numar_etichete;
stringimagini_faciale_incarcate;
for (inttf = 1; tf< numar_etichete+1; tf++)
{
imagini_faciale_incarcate = "imagine_faciala" + tf + ".bmp";
imagini_antrenate.Add(new Image<Gray, byte>(Application.StartupPath + "/ImaginiFacialeAntrenate/" + imagini_faciale_incarcate));
labels.Add(Labels[tf]);
}
}
catch(Exception e)
{
//MessageBox.Show(e.ToString());
MessageBox.Show("Nu existanimicsalvat (binar) in baza de date, va rog saadaugaticelputin un subiect cu caracteristicifaciale", "Incarcareafetelorsiantrenarealor", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
private void button1_Click(object sender, EventArgs e)
{
//** initializare camera pentrucaptare (deschidereacamerei)
imagine_capturata = new Capture();
imagine_capturata.QueryFrame();
//** initializareaevenimentului de captare
Application.Idle += new EventHandler(CapturaCadru);
button1.Enabled = false;
}
private void button2_Click(object sender, System.EventArgs e)
{
try
{
//** contorul de antrenare al fetelor
contor_antrenare = contor_antrenare + 1;
//** obtinereaunuicadrugri de la dispozitivul de captare (Camera)
imaginea_gri = imagine_capturata.QueryGrayFrame().Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
//** detectorul facial
//** Emguestefolositpentruprocesareaimaginilor
MCvAvgComp[][] imagini_faciale_detectate = imaginea_gri.DetectHaarCascade(
face,
1.2,
10,
Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,
new Size(20, 20));
//Actiuneapentrufiecare element detectat
foreach (MCvAvgCompf inimagini_faciale_detectate[0])
{
imagine_antrenata = currentFrame.Copy(f.rect).Convert<Gray, byte>();
break;
}
//** redimensiuneafeteidetectate ca imagine pentrucomparareafortata a aceleiasidimensiuni cu imaginea de test
//** folosindinterpolarecubica.
imagine_antrenata = result.Resize(100, 100, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
imagini_antrenate.Add(imagine_antrenata);
labels.Add(textBox1.Text);
//** afisareafeteiadaugate intro scalagri
imageBox1.Image = imagine_antrenata;
//** Salvareaintrunfisier de tip text a fetelorantrenate
File.WriteAllText(Application.StartupPath + "/ImaginiFacialeAntrenate/EticheteAntrenate.txt", trainingImages.ToArray().Length.ToString() + "%");
//** Scriereaetichetelor a fetelorantrenateintrunfisier text pentruincarcarisidetectariulterioare
for (inti = 1; i<trainingImages.ToArray().Length + 1; i++)
{
imagini_antrenate.ToArray()[i – 1].Save(Application.StartupPath + "/ImaginiFacialeAntrenate/imagine_faciala" + i + ".bmp");
File.AppendAllText(Application.StartupPath + "/ImaginiFacialeAntrenate/EticheteAntrenate.txt", etichete.ToArray()[i – 1] + "%");
}
MessageBox.Show("Fata lui: " + textBox1.Text + " a fostdetectatasiadaugata.", "Trainingul a fostefectuat cu succes", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Activatiadectareafeteimaiintai.", "Trainingul a esuat.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
voidCapturaCadru(object sender, EventArgs e)
{
label3.Text = "0";
//label4.Text = "";
NumePersoane.Add("");
//** Obtinemcadrulcurent de la dispozitivul de captare
cadruCurent = imagine_capturata.QueryFrame().Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
//Il convertim la scalagri
imagine_capturata = cadruCurent.Convert<Gray, Byte>();
//Detectorul facial
MCvAvgComp[][] imaginiFacialeDetectare = imagine_capturata.DetectHaarCascade(
face,
1.2,
10,
Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,
new Size(20, 20));
//Actiuneapentrufiecare element
foreach (MCvAvgCompf infacesDetected[0])
{
t = t + 1;
rezultat = cadruCurent.Copy(f.rect).Convert<Gray, byte>().Resize(100, 100, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
//** trasarea (reprezentarea) feteidetectate in canalul 0 al culoriigrifolosindculoareaalbastra
cadruCurent.Draw(f.rect, new Bgr(Color.Red), 2);
if (imagini_antrenate.ToArray().Length != 0)
{
//** ClasaTermCriteria care se foloseste la recunoastereaimaginilorantrenate cu unnumar maxim de antrenari (variabilamaxIteration).
MCvTermCriteriacriteriu = new MCvTermCriteria(contor_antrenare, 0.001);
//** Obiectul de recunoastere al vectorului facial comun
EigenObjectRecognizerrecunoastere = new EigenObjectRecognizer(
imagini_antrenate.ToArray(),
etichete.ToArray(),
3000,
reftermCrit);
nume = recunoastere.Recognize(rezultat);
//** Trasam cate o etichetapentrufiecare fata detectatasirecunoscuta.
cadruCurent.Draw(name, ref font, new Point(f.rect.X – 2, f.rect.Y – 2), new Bgr(Color.LightGreen));
}
NumePersoane[t-1] = nume;
NumePersoane.Add("");
//** Stabilireanumarului de fete detectate in scena.
label3.Text = imaginiFacialeDetectare[0].Length.ToString();
/*
//Set the region of interest on the faces
gray.ROI = f.rect;
MCvAvgComp[][] eyesDetected = gray.DetectHaarCascade(
eye,
1.1,
10,
Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,
new Size(20, 20));
gray.ROI = Rectangle.Empty;
foreach (MCvAvgCompey in eyesDetected[0])
{
Rectangle eyeRect = ey.rect;
eyeRect.Offset(f.rect.X, f.rect.Y);
currentFrame.Draw(eyeRect, new Bgr(Color.Blue), 2);
}
*/
}
t = 0;
//** concatenareanumelorpersoanelorrecunoscutesiafisarealor
for (intnnn = 0; nnn<facesDetected[0].Length; nnn++)
{
nume = nume + NumePersoane[nnn] + ", ";
}
//** Afisareafetelorprocesatesirecunoscute
imageBoxFrameGrabber.Image = cadruCurent;
label4.Text = nume;
nume = "";
//** Eliberarealistei (vectorului) de nume
//Clear the list(vector) of names
NumePersoane.Clear();
}
private void button3_Click(object sender, EventArgs e)
{
}
private void btnIesire_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
Anexa 3
Codul sursă pentru recunoașterea fiecarui obiect prin metoda PCA
using System;
usingSystem.Diagnostics;
usingEmgu.CV.Structure;
namespace Emgu.CV
{
/// <summary>
/// Recunoasterefolosind PCA (Principle Components Analysis)
/// </summary>
[Serializable]
public class EigenObjectRecognizer
{
private Image<Gray, Single>[] _imaginiComune;
private Image<Gray, Single> _mediaImaginilor;
private Matrix<float>[] valoriComune;
private string[] etichete;
private double pragulAcceptatPentruDistantaComuna;
/// <summary>
/// Get the eigen vectors that form the eigen space
/// </summary>
/// <remarks>The set method is primary used for deserialization, do not attemps to set it unless you know what you are doing</remarks>
public Image<Gray, Single>[] ImaginiComune
{
get { return _imaginiComune; }
set { _imaginiComune = value; }
}
/// <summary>
/// Initializareetichetepentruimagineaantrenatacorespunzatoare
/// </summary>
public String[] Etichete
{
get { return _etichete; }
set { _etichete = value; }
}
/// <summary>
/// Initializareapraguluicomun al distantei
/// Cu cat estemai mic numarul, cu atatmaimult o imagine examinatava fi tratata ca un obiectnerecunoscut
/// Initializarea cu unnumar mare (de exemplu 5000) siobiectul de recunoastereintotdeauna o satratezeimagineaexaminata
/// caunacunoscuta
/// </summary>
public double PragulComunPentruDistanta
{
get { return pragulComunPentruDistanta; }
set { pragulComunPentruDistanta = value; }
}
/// <summary>
/// Preluareaimaginiimedii.
/// </summary>
/// <remarks>Metoda set se folosestepentrudeserializare, si in acestcaz nu esterecomandatasetareaeidecatdaca
/// se doresteacestlucru</remarks>
public Image<Gray, Single>ImaginiiMedii
{
get { return _mediaImaginilor; }
set { _mediaImaginilor = value; }
}
/// <summary>
/// Preluareavalorilorcomune a fiecareiimaginiantrenate
/// </summary>
/// <remarks>Metoda set se folosestepentrudeserializare, si in acestcaz nu esterecomandatasetareaeidecatdaca
/// se doresteacestlucru</remarks>
public Matrix<float>[] ValoriComune
{
get { return _valoriComune; }
set { _valoriComune = value; }
}
privateEigenObjectRecognizer()
{
}
/// <summary>
/// Creareaunuiobiect de tip recunoasterefolosinddatelespecificeantrenariisi a parametrilor,
/// care intotdeaunavareturnacelmai similar obiect
/// </summary>
/// <param name="imagini">Imaginilefolositepentru training, fiecaredintreeletrebuiesaaibeaceeasidimensiune.
/// Este recomandatanormalizareahistogrameipenntruimagini</param>
/// <param name="criteriu">Criteriulpentrurecunoastereaantrenarii</param>
publicEigenObjectRecognizer(Image<Gray, Byte>[] imagini, ref MCvTermCriteriacriteriu)
: this(imagini, GenerateLabels(imagini.Length), ref criteriu)
{
}
private static String[] EticheteGenerate(intdimensiune)
{
String[] etichete = new string[dimensiune];
for (inti = 0; i<dimensiune; i++)
etichete[i] = i.ToString();
returnetichete;
}
/// <summary>
/// Creareaunuiobiect de recunoasterefolosindantrenareaspecificafolosinddatelesiparametriicorespunzatori.
/// Intotdeauna se vareturnacelmai similar obiect
/// </summary>
/// <param name="imagini">Imaginilefolositepentruantrenare, fiecaredintreeletrebuiesaaibeaceeasidimensiune. Este recomandatanormalizareahistogrameipenntruimagini</param>
/// <param name="etichete">Etichetelecorespondenteimaginilor</param>
/// <param name="criteriu">Criteriulfolositpentrurecunoastereaantrenarii.</param>
publicEigenObjectRecognizer(Image<Gray, Byte>[] imagini, String[] etichete, ref MCvTermCriteriacriteriu)
: this(imagini, etichete, 0, ref criteriu)
{
}
/// <summary>
/// Create an object recognizer using the specific tranning data and parameters
/// </summary>
/// <param name="imagini">Imaginilefolositepentruantrenare, fiecaredintreeletrebuiesaaibeaceeasidimensiune. Este recomandatanormalizareahistogrameipenntruimagini</param>
/// <param name="etichete">Etichetelecorespondenteimaginilor</param>
/// <param name="pragulComunPentruDistanta">
/// Praguldistanteicomune, (0, ~1000].
/// Cu cat estemai mic numarul, cu atatmaimult o imagine examinatava fi tratata ca un obiectnerecunoscut.
/// Dacapragulestemai< 0, functia de recunoastereintotdeaunavatrataimaginea ca fiindunadintrecelecunoscute.
/// </param>
/// <param name="criteriu">Criteriulpentrurecunoastereaantrenamentului.</param>
publicEigenObjectRecognizer(Image<Gray, Byte>[] imagini, String[] etichete, double pragulComunPentruDistanta, ref MCvTermCriteriacriteriu)
{
Debug.Assert(imagini.Length == etichete.Length, "Numarulimaginilortrebuiesa fie egal cu numarul de etichete.");
Debug.Assert(pragulComunPentruDistanta>= 0.0, "Pragulvaloriidistanteicomunetrebuiesa fie >= 0.0");
CalcEigenObjects(imagini, ref criteriu, out _imaginiComune, out _mediaImaginilor);
/*
_avgImage.SerializationCompressionRatio = 9;
foreach (Image<Gray, Single>img in _eigenImages)
//Set the compression ration to best compression. The serialized object can therefore save spaces
img.SerializationCompressionRatio = 9;
*/
_ValoriComune = Array.ConvertAll<Image<Gray, Byte>, Matrix<float>>(imagine,
delegate(Image<Gray, Byte>imagine_curenta)
{
return new Matrix<float>(EigenDecomposite(imagine_curenta, _imaginiComune, _mediaImaginilor));
});
_etichete = etichete;
_pragulComunPentruDistanta = pragulComunPentruDistanta;
}
#region static methods
/// <summary>
/// Calculareaimaginilorcomunepentruimaginileantrenate
/// </summary>
/// <param name="imaginiAntrenate">Imaginifolositepentruantrenare</param>
/// <param name="criteriu">Criteriulfolositpentruantrenare</param>
/// <param name="imaginiComune">Rezultatul cu imaginilecomune</param>
/// <param name="medie">Imagineamedierezultata</param>
public static void CalculareaObiectelorCommune(Image<Gray, Byte>[] imaginiAntrenate, ref MCvTermCriteriacriteriu, out Image<Gray, Single>[] imaginiComune, out Image<Gray, Single>medie)
{
intlatimme = imaginiAntrenate[0].Width;
intinaltime = imaginiAntrenate[0].Height;
IntPtr[] obiecte = Array.ConvertAll<Image<Gray, Byte>, IntPtr>(imaginiAntrenate, delegate(Image<Gray, Byte>imagine_curenta) { return img.Ptr; });
if (criteriu.max_iter<= 0 || criteriu.max_iter>imaginiAntrenate.Length)
criteriu.max_iter = imaginiAntrenate.Length;
intmaximulComunPentruObiecte = criteriu.max_iter;
#region initializareimaginicomune
imaginiComune = new Image<Gray, float>[maximulComunPentruObiecte];
for (inti = 0; i<imaginiComune.Length; i++)
imaginiComune[i] = new Image<Gray, float>(latime, inaltime);
IntPtr[] obiecte_comune = Array.ConvertAll<Image<Gray, Single>, IntPtr>(imaginiComune, delegate(Image<Gray, Single> imagine) { return imagine.Ptr; });
#endregion
medie = new Image<Gray, Single>(latime, inaltime);
CvInvoke.cvCalcEigenObjects(
obiecte,
refcriteriu,
obiecte_comune,
null,
medie.Ptr);
}
/// <summary>
/// Descompunereaimaginii ca valoricomune, folosindvectoriicomunirespectivi
/// </summary>
/// <param name="sursa">Imaginea care urmeazasa fie descompusa</param>
/// <param name="imaginiComune">Imaginilecomune</param>
/// <param name="medie">Media imaginilor</param>
/// <returns>Valorilemedii ale imaginiidescompuse</returns>
public static float[] DescompunereaComuna(Image<Gray, Byte>sursa, Image<Gray, Single>[] imaginiComune, Image<Gray, Single>medie)
{
returnCvInvoke.cvEigenDecomposite(
sursa.Ptr,
Array.ConvertAll<Image<Gray, Single>, IntPtr>(imaginiComune, delegate(Image<Gray, Single> imagine) { return imagine.Ptr; }),
medie.Ptr);
}
#endregion
/// <summary>
/// Fiind data valoareacomuna, reconstruimimagineaproiectata
/// </summary>
/// <param name="valoareComuna">Valoricomune</param>
/// <returns>Imagineaproiectata</returns>
public Image<Gray, Byte>ProiectareaComuna(float[] valoareComuna)
{
Image<Gray, Byte>rezultat = new Image<Gray, byte>(_mediaImaginilor.Width, _mediaImaginilor.Height);
CvInvoke.cvEigenProjection(
Array.ConvertAll<Image<Gray, Single>, IntPtr>(_imaginiComune, delegate(Image<Gray, Single> imagine) { return imagine.Ptr; }),
valoareComuna,
_medieImagine.Ptr,
res.Ptr);
return res;
}
/// <summary>
/// Obtinedistantaeuclidianacomunadintre imagine sioricarealteimagini din baza de date
/// </summary>
/// <param name="imagine">Imaginea care urmeazasa fie comparata din setul de imaginiantrenate</param>
/// <returns>Un vector de distantecomue din fiecare imagine din imaginileantrenate</returns>
public float[] ObtineDistanteComune(Image<Gray, Byte> imagine)
{
using (Matrix<float>valoriComune = new Matrix<float>(DescompunereaComuna(imagine, _imaginiComune, _medieImagine)))
returnArray.ConvertAll<Matrix<float>, float>(_valoriComune,
delegate(Matrix<float>valoareComunaI)
{
return (float)CvInvoke.cvNorm(valoareComuna.Ptr, valoareComunaI.Ptr, Emgu.CV.CvEnum.NORM_TYPE.CV_L2, IntPtr.Zero);
});
}
/// <summary>
/// Avandimaginea de examinat, se gaseste in baza de date celmai similar obiect, returneaza ID-ulsidistantacomuna
/// </summary>
/// <param name="imagine">Imaginea care urmeazasa fie cautata din baza de date.</param>
/// <param name="id">ID-ulceluimai similar obiect.</param>
/// <param name="distantaComuna">Distantacomuna a celuimai similar obiect.</param>
/// <param name="eticheta">Etichetaimaginiispecifice.</param>
public void GasesteCelMaiSimilarObiect(Image<Gray, Byte> imagine, out int id, out float distantaComuna, out String eticheta)
{
float[] distanta = GetEigenDistances(imagine);
id = 0;
distantaComuna = dist[0];
for (inti = 1; i<dist.Length; i++)
{
if (dist[i] <distantaComuna)
{
id = i;
distantaComuna = dist[i];
}
}
eticheta = Etichete[id];
}
/// <summary>
/// Se incearcarecunoastereaimaginiisireturnareaetichetei sale
/// </summary>
/// <param name="imagine">Imaginea care urmeaza a fi recunoscuta</param>
/// <returns>
/// String.Empty, daca nu esterecunoscut;
/// Etichetaimaginiicorespondente, altfel
/// </returns>
public String Recunoastere(Image<Gray, Byte> imagine)
{
int id;
floatdistantaComuna;
String eticheta;
GasesteCelMaiSimilarObiect(imagine, out id, out distantaComuna, out eticheta);
return (_valoareaPraguluiDistanteiComune<= 0 || distantaComuna< _valoareaPraguluiDistanteiComune ) ? _etichete[id] : String.Empty;
}
}
}
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Analiza Si Implementarea Metodelor de Recunoastere a Formelor (ID: 161859)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
