Procesul de recunoaștere facială dintr-o imagine [305279]
Universitatea “Politehnica” [anonimizat]-o [anonimizat]: [anonimizat]. Nicolae Vizireanu Iordanov Eugen
2018
CUPRINS
Listă figuri :
Figura 1 Algoritmul general pentru recunoașterea feței 9
Figura 1.1 [anonimizat] 10.0 12
Figura 1.2 [anonimizat] 10.0 12
Figura 1.3 Soft-ul VeriLook determină unele trăsături și caracteristici ale feței/persoanei după imaginea analizată 13
Figura 3.1 Fereastră de scanare cu dimensiunea 2 x 2 cu valori de luminozitate 19
Figura 3.2 Masca operatorului Roberts pentru 19
Figura 3.3 Masca operatorului Roberts pentru 19
Figura 3.4 Fereastră de scanare cu mărimea 3 x 3 cu valori de luminozitate 20
Figura 3.5 Masca operatorului Prewitt pentru 20
Figura 3.6 Masca operatorului Prewitt pentru 21
Figura 3.7 Masca operatorului Sobel pentru 21
Figura 3.8 Masca operatorului Sobel pentru 22
Figura 3.9 Primele 4 măști ale operatorului Robinson 22
Figura 3.10 Măștile Laplace 24
Figura 3.11 Obținerea valorii de corelație în punctul 26
Figura 3.12 Caracteristicile standard Haar 28
Figura 3.13 Schema principiului de lucru a ferestrei de scanare. 29
Figura 3.14 Imaginea originală 29
Figura 3.15 Imaginea integrală 30
Figura 3.16 Calculul imaginii integrale 30
Figura 3.17 [anonimizat]. 30
Figura 3.18 Caracteristicile Haar pentru un clasificator. 31
Figura 3.19 Cascadă de clasificatori. 32
Figura 3.20 [anonimizat]. 33
Figura 4.1 Eigenfaces 34
Figura 4.2 Modelul matematic al unui singur neuron. 37
Figura 4.3 Arhitectura unei rețele neuronale cu două straturi. 37
Figura 4.4 Exemplul metodei arborelui. 38
Figura 5.1 Schema generală a algoritmului de recunoaștere a feței din cadru 39
Figura 5.2 [anonimizat] (șapca) 45
Figura 5.3 Uniformizarea și filtrarea imaginii de intrare 45
Figura 5.4 Detecția și decuparea feței din imaginea de intrare 46
Figura 5.5 Imagine de intrare (mâna ridicată la nivelul capului) 46
Figura 5.6 Detecția și decuparea feței din imaginea de intrare 47
Figura 5.7 Imagine de intrare (mâna ridicată la nivelul gurii) 47
Figura 5.8 Uniformizarea și filtrarea imaginii de intrare 48
Figura 5.9 Detecția și decuparea feței din imaginea de intrare 48
Figura 5.10 [anonimizat] 49
Figura 5.11 Uniformizarea și filtrarea imaginii de intrare 49
Figura 5.12 Detecția și decuparea feței din imaginea de intrare 50
Figura 5.13 Imagine de intrare, 3 maturi și un copil 50
Figura 5.14 Uniformizarea și filtrarea imaginii de intrare 51
Figura 5.15 Detecția și decuparea fețelor din imaginea de intrare 51
Figura 5.16 [anonimizat] 52
Figura 5.17 [anonimizat] 52
Figura 5.18 Imagine de intrare cu mai multe persoane 53
Figura 5.19 Uniformizarea și filtrarea imaginii de intrare 53
Figura 5.20 Detecția și decuparea fețelor din imaginea de intrare 54
Figura 5.21 Imagine de intrare, 3 copii 54
Figura 5.22 Uniformizarea și filtrarea imaginii de intrare 55
Figura 5.23 Detecția și decuparea fețelor copiilor din imaginea de intrare 55
Figura 5.24 Imagine de intrare, 2 persoane (ochelari) 56
Figura 5.25 Uniformizarea și filtrarea imaginii de intrare 56
Figura 5.26 Detecția și decuparea fețelor din imaginea de intrare 57
Listă acronime :
GMFD – General Matching Face Detection
PSM – Perturbation Space Method
ARBM – Adaptive Regional Blend Matching
LoG – Laplacian of Gaussian
AdaBoost – Adaptive Boosting
MCP – Metoda Componentelor Principale
CART – Classification and Regression Tree
QUEST – Quick, Unbiased, Efficient Statistical Tree
RGB – Red, Green, Blue
Introducere
Problema recunoașterii modelelor faciale aparține claselor de sarcini greu de formulat, iar în prezent este destul de actuală în legătură cu necesitatea de automatizare a proceselor de comunicare (vizual) în sistemele inteligente. Prin urmare, și în prezent continuă căutarea și realizarea unor principii eficiente de a transfera capacitatea omului de recunoaștere sistemelor computerizate. Pentru rezolvarea problemei date, rețelele neuronale artificiale par foarte promițătoare. Acestea sunt induse din biologie, deoarece ele constau din elemente ale căror capacități funcționale sunt similare celor mai multe dintre funcțiile elementare ale unui neuron biologic. În ciuda similarității superficiale, rețelele neuronale artificiale demonstrează proprietățile inerente creierului uman. În special, acestea sunt ”instruite” pe baza experienței, generalizează situațiile anterioare din exemple noi, extrag proprietăți esențiale din informațiile primite care conțin date excesive.
În prezent, domeniile cele mai răspândite de utilizare a camerelor de filmat sunt sistemele de securitate și monitorizare a securității. Principala funcție a supravegherii video este fixarea infracțiunii pe obiectul protejat și pe teritoriul său, precum și controlul accesului. Din această cauză sarcina cea mai urgentă pentru sistemul inteligent de monitorizare este problema de izolare și identificare a fețelor umane în prezența diferitor tipuri de factori precum : zgomotul, calitatea slabă a imaginii, nivelurile de lumină, prezența unui fundal complex, înclinarea imaginii și altele.
Sarcinile recunoașterii persoanei după imaginea feței sunt împărțite în trei clase mari : căutarea în baze de date voluminoase, controlul accesului și controlul fotografiilor în documente. Ele diferă atât după cerințele date sistemelor de recunoaștere, cât și după metodele de soluționare și, prin urmare, sunt clase separate [1].
Semnalul video recepționat de la camera de filmat este privit ca o secvență de cadre având un format predeterminat care corespunde numărului de pixeli ai fotodetectorului matricei. Fiecare cadru, matematic este văzut ca o matrice bidimensională constând din eșantioane de semnale de luminanță sau semnale cromatice. Procesul de recunoaștere facială este complex, respectiv este împărțit în două etape: detecția feței în imagine și compararea feței detectate cu cele din baza de date.
În ultimul timp, sarcina recunoașterii fețelor umane devine o necesitate tot mai pronunțată. Recunoașterea facială – este o aplicație practică a teoriei recunoașterii modelelor, în sarcina căreia intră localizarea automată a feței umane într-o imagine, iar în caz de necesitate, recunoașterea persoanei după față.
Recunoașterea facială este aplicabilă în următoarele domenii : sisteme de securitate, criminalistică, grafică computerizată, interacțiune om-calculator, realitate virtuală, gaming, comerț electronic, personalizare și protecția datelor, etc. Astfel observăm cât de actuală este sarcina dată.
În Figura 1 de mai jos, vedem algoritmul general pentru recunoașterea facială din imagine.
Figura 1 Algoritmul general pentru recunoașterea feței
În prima etapă, un cadru din secvența video de intrare este capturat, și este alocat celui de-al doilea bloc – selectarea feței din cadru. Algoritmul de selecție pentru cadrul capturat determină prezența fețelor în imagine și recunoaște locația lor. Obiectivul algoritmilor de selecție a feței din imagini este de a scana imaginea cu o ”fereastră”, care are o anumită dimensiune și formă, precum și de a detecta în interiorul ”ferestrei” dacă este prezentă o față umană sau nu. După detectarea feței din imagine, aceasta este tăiată din fundalul principal, care este neuniform și conține obiecte care vor complica etapa de recunoaștere. Sarcina recunoașterii este de a determina, pe baza caracteristicilor obiectului selectat și apartenenței sale la o anumită clasă din baza de date, în acest caz fața persoanei.
Prezentarea sistemelor și algoritmilor existente
La momentul de față, există zeci de sisteme de recunoaștere a fețelor umane care pot căuta și identifica persoana în fotografii digitale dar și în fluxuri video. Sistemele oferă un procent ridicat de recunoaștere și pot fi utilizate împreună cu sistemele de control al accesului pentru a spori nivelul de securitate și acces la obiectivele cu cerințe sporite de securitate.
Sistemele moderne de recunoaștere facială :
1.1 Sistemul "FaceVACS".
FaceVACS este un sistem de recunoaștere și identificare a feței creat de compania Cognitec Systems [2], care implementează identificarea și verificarea persoanelor din imagine, găsește copii în baze mari de date și permite comparația imaginilor persoanelor din diferite surse, cu imagini stocate în diferite baze de date. Sistemul FaceVACS utilizează algoritmul B8T8 [2], care este stabil și destul de sigur la rotirea feței cu ± 15ș, expresii faciale, coafură, obiecte interferente, inclusiv utilizarea ochelarilor și diferențele de iluminare. Pentru a îmbunătăți calitatea imaginilor, se utilizează filtre speciale, cum ar fi filtrul de corecție a feței din fotografie, care utilizează tehnologia de modelare 3D pentru a crea o proiecție frontală a feței umane din imaginile cu fețe obținute în profil [2].
Cerințele minime față de imaginile procesate în sistemul "FaceVACS-DBScan" sunt :
Imagine relativ clară;
Fața este vizibilă în totalitate în imagine;
Distanța dintre ochi mai mare de 32 pixeli;
64 tonuri gri în zona imaginii feței.
Caracteristicile funcționale ale sistemului [3] :
Detectează simultan mai multe fețe;
Compară fețele cu imaginile din bazele de date în timp real;
Afișează semnale în timp real atunci când apar evenimente definite de utilizator;
Afișează și exportă statistici despre fluxul de persoane, demografia vizitatorilor și comportamentul persoanelor;
Trimite semnale și statistici către dispozitivele mobile;
Suportă înregistrarea interactivă din imaginea statică și fluxul video live;
Oferă scalabilitate ridicată în ceea ce privește dimensiunea listei de vizionări, numărul de fluxuri video și numărul de fețe vizibile.
Sistemul dat permite importarea rapidă de fișiere video și imagini, pentru a facilita efectuarea investigațiilor detaliate. De exemplu, agenții de securitate și poliția, pot încărca videoclipuri înregistrate într-o anumită locație și într-un anumit timp, pentru a urmări eventualii participanți la o infracțiune. Utilizatorii sistemului FaceVACS pot găsi o persoană înscrisă într-o bază de date cu imagini sau pot căuta o persoană necunoscută și pot localiza aparițiile acesteia în mai multe fișiere video. Sunt folosite filtre unde sunt specificate intervalele de vârstă, sexul, etnia. FaceVACS-Video Scan procesează fișierele video înregistrate mai rapid decât streaming-urile video live [3].
1.2 Sistemul ”VeriLook SDK”.
”VeriLook SDK” este un sistem de recunoaștere a feței, creat de compania Neurotechnology [4]. Tehnologia dată reprezintă un sistem de detectare a fețelor cu posibilitatea recunoașterii simultane multiple și identificarea rapidă facial [4].
Sistemul este alcătuit din mai multe module care implementează următorii algoritmi :
Prelucrarea prin distribuire a fețelor și imaginilor;
Detecția și recunoașterea fețelor dintr-un semnal video;
Recunoașterea sexului persoanei detectate;
Liveness – detection : suprimarea accesului unui intrus bazat pe un eșantion biometric al unui utilizator înregistrat;
Recunoașterea emoțiilor : uimire, bucurie, frică, tristețe, furie, etc;
Analiza punctelor ”cheie” ale feței;
Identificarea trăsăturilor faciale : zâmbet, gură deschisă, ochi închiși, etc;
Recunoașterea facial chiar și în prezența elementelor interferente : ochelari, pălărie, eșarfă, etc;
Determinarea calității imaginii feței;
Reînregistrarea și generalizarea trăsăturilor faciale.
Cerințele minime ale sistemului VeriLook SDK pentru imagini și fluxuri video:
Rezoluția imaginii : mai mare decât 640 x 480;
Distanța dintre ochi : mai mult de 50 de pixeli;
Numărul de cadre pentru Liveness – detection : 10-25;
Avantajele tehnologiei date include stabilitatea softului la rotirea feței cu ± 15° și înclinarea capului la 45ș în orice direcție față de poziția frontală-verticală, precum și timpul de detectare a feței din cadru, care este de la 10 ms la 0.86 secunde.
Precizia sistemului "VeriLook SDK" depinde de calitatea imaginii feței. Luminile frontale și difuze sunt potrivite pentru recunoașterea feței, deoarece în fotografie poate fi observată o distribuție uniformă a luminii pe suprafața feței. Pentru identificare, dezvoltatorii sistemului recomandă o expresie facială neutră, deoarece un zâmbet larg, ochi închiși, sprâncene încruntate, reduc acuratețea procesului de recunoaștere.
Figura 1.1 Detecția feței cu ajutorul soft-ului VeriLook 10.0
Figura 1.2 Eroare de detecție al softu-ului VeriLook 10.0
Figura 1.3 Soft-ul VeriLook determină unele trăsături și caracteristici ale feței/persoanei după imaginea analizată
1.3 Sistemul ”NEC’s Face Recognition”
”NEC’s Face Recognition” este un sistem de recunoaștere a feței creat de compania ”NEC” [5]. Sistemul dat include câteva module care implementează următorii algoritmi :
Este utilizată metoda generală de identificare a feței (General Matching Face Detection – GMFD), care asigură o viteză mare de detecție și o precizie înaltă a recunoașterii faciale. Metoda GMFD se bazează pe rețele neuronale și efectuează o căutare preliminară după perechile de ochi;
Algoritmul PSM (Perturbation Space Method), creat de compania ”NEC”. Acesta este capabil să se descurce eficient cu diversitatea locațiilor feței în cadru (fața înclinată sau sub un oarecare unghi). Folosind acest algoritm, imaginile bi-dimensionale pot fi convertite în imagini tri-dimensionale, pentru analize ulterioare;
Metoda ARBM (Adaptive Regional Blend Matching), datorită căreia este minimalizat impactul variațiilor nesubstanțiale ale feței (cum ar fi prezența unor bijuterii, ochelari, pălărie) asupra preciziei recunoașterii faciale.
Sistemul de recunoaștere a fețelor ”NEC’s Face Recognition” are următoarele caracteristici :
Recunoaștere multiplă;
Detectare de fețe și a ochilor;
Recunoașterea independentă a direcției de privire și a trăsăturilor feței (prezența ochelarilor, păr facial și expresia feței);
Identificarea zonelor faciale similare;
Identificare pe baza trăsăturilor faciale individuale;
Integrarea în sistemele de supraveghere video;
Sistemul se manifestă stabil la rotirea feței cu ±15°, înclinarea capului la 45ș în orice direcție față de poziția frontală inițială și la un coeficient de compresie ridicat al imaginii.
În comparație cu alte sisteme biometrice care utilizează datele de pe amprentă și iris, recunoașterea feței are avantaje specifice datorită procesului său Contact-Less. Imaginile feței pot fi obținute de la distanță fără a deranja persoana în cauză,iar identificarea ei nu necesită interacțiunea fizică. În plus, recunoașterea feței servește scopului de descurajare a criminalității, deoarece imaginile de față care au fost înregistrate și arhivate pot ajuta mai târziu să identifice o persoană. Tehnologia NEC constă în toleranța sa la o calitate slabă, inclusiv imaginile cu rezoluție redusă până la 24 de pixeli între ochi. Videoclipurile și imaginile de supraveghere video comprimate, considerate anterior ca fiind puțin sau deloc folositoare, sunt acum dovezi utile care măresc rata de identificare [6].
1.4 Sistemul ”Re:Action”
"Re:Action" este un sistem de recunoaștere a feței creat de compania VisionLabs [7], care permite căutarea pe fotografii digitale sau în fișierele video. Se utilizează algoritmi pentru extragerea informațiilor-cheie : un portret al unei persoane și un descriptor de față corespunzător acestui portret. Pentru recunoașterea ulterioară, se utilizează numai descriptorul feței. Sistemul analizează și corectează rezultatele detectării, apoi urmărește și verifică rezultatele detectării feței și utilizează algoritmi de învățare adaptivă.
Sistemul dat are următoarele caracteristici tehnice :
Rezoluția minimă a cadrului este de 320 x 240 pixeli;
Dimensiunea minimă a feței în cadru este de 40 x 40 pixeli, iar dimensiunea maximă – 200 x 200 pixeli;
Unghiul de înclinare admis al feței în cadru este de ±10°;
Prelucrarea simultană a până la 5 fețe într-un cadru.
1.5 Sistemele ”Face Detection” și ”Face Recognition”
Două sisteme de detectare și recunoaștere a fețelor umane în fotografii și semnale video digitale au fost propuse de către compania ”FACE++”. Caracteristica principală al acestor sisteme este posibilitatea detectării feței în condiții de iluminare nesatisfăcătoare și sub diferite poziții ale capului [8].
Sistemul "Face Recognition" utilizează algoritmi de învățare profundă (deep learning) pentru a face față sarcinilor de verificare și este capabil să detecteze punctele-cheie ale feței, care sunt : ochii, nasul, gura și sprâncenele. Pentru verificarea fețelor se utilizează modele de covarianță, și se face o analiză a identității pentru două modele.
Pentru recunoașterea facială dintr-un flux video sunt necesare următoarele cerințe minime :
Cel puțin 20 de cadre (pentru dispozitivele mobile);
Dimensiunea minimă a feței în cadru este de 16 x 16 pixeli. Producătorii ”FACE++” susțin că datorită algoritmilor folosiți, expresiile faciale complexe pot fi procesate în timp real.
Dezavantajele sistemelor moderne de recunoaștere facială
Sistemele moderne de recunoaștere a feței umane prezentate mai sus dau rezultate bune (în multe cazuri probabilitatea recunoașterii corecte, conform dezvoltatorilor, depășește 97%) și este utilizată cu succes în sistemele de securitate și în verificarea accesului. Multe dintre sisteme rezolvă problemele iluminării, prezența obiectelor perturbatoare, cum ar fi barbă, ochelari, coafuri, iau în considerare modificările posibile ale expresiilor faciale și detectează fețele frontale chiar și întoarse sub un unghi. Chiar și așa, cerințele minime stabilite de producătorii de sistem pentru fluxurile video și imagini, precum rezoluția bună a cadrelor, claritatea înaltă și numărul de cadre pe secundă – nu sunt întotdeauna respectate.
Toate acestea duc la o serie de probleme cu care se confruntă multe sisteme de recunoaștere :
Rezoluție mică a fluxului video provenit de la camera de supraveghere video, fapt ce complică sarcina de recunoaștere;
Zgomotele prezente în imagini și video, cauzate de condițiile nefavorabile de mediu (de exemplu: ceață, opacitate, ploaie, radiație, interferențe electromagnetice și filmări nocturne);
Prezența unui fundal complex – camera de filmat folosită la sistemele de supraveghere se află afară, respectiv în fluxul video este prezent fundalul complex în jurul feței unei persoane.
Analiza algoritmilor de captare a feței dintr-o imagine
Să luăm în considerare prima abordare a detectării feței – selectarea zonei feței din imaginea originală. Prin evidențierea acesteia, vom înțelege localizarea acesteia – detectarea zonei feței în cazul în care doar o persoană este prezentă pe imaginea sursă și este obiectul principal. Pentru a rezolva problema selecției obiectelor, sunt utilizați mai mulți algoritmi diferiți, care folosesc abordări diferite pentru a rezolva această problemă. Principalii algoritmi pentru localizarea obiectelor sunt :
Metodele empirice
Metodele bazate pe modele de contur
Metode bazate pe comparație cu un model (șablon)
Metode bazate pe ”învățare”
3.1 Algoritmul bazat pe metode empirice
Metodele empirice de detectare a feței se bazează pe anumite reguli, obținute din rezultatele cercetării și ale cunoștințelor despre fața umană. Regulilor simple le este atribuită descrierea trăsăturilor faciale și proporția lor :
Fața are nas, gură și ochi, care sunt amplasate oarecum simetric între ele;
Proporțiile și relațiile de legătură între părțile faciale (frunte, zona medie și inferioară a feței);
Diferența vizibilă de luminozitate între partea superioară și partea centrală a feței.
Pe baza acestor reguli, se construiește un algoritm care verifică prezența acestora în imagine. În primul rând, sunt căutate trăsăturile faciale, apoi fețele găsite în imagine sunt verificate pe baza unor reguli codificate [9].
Oamenii de știință Yang și Huang au folosit cunoștințe ierarhice pentru a detecta fețele dintr-o imagine [10]. Acest sistem are la bază trei reguli. O ierarhie complexă a imaginilor este creată prin mediere secvențială și sub-eșantionarea imaginii de intrare.
În primul rând, imaginea este scanată la primul nivel, care are cea mai mică rezoluție, pentru identificarea potențialilor candidați. Ulterior, datele primite sunt transferate la un nivel mai superior, unde este realizată alinierea histogramelor și sunt selectate limitele imaginilor. Apoi, zonele selectate sunt transferate la ultimul nivel, unde se detectează posibilele fețe ale persoanelor, folosind o fereastră de scanare, care aplică regulile generale, ce răspund de elementele faciale – ochii, nasul și gura.
A doua metodă, bazată pe cunoștințe empirice, a fost dezvoltată de oamenii de știință Kotropoulos și Pitas [11]. Metoda se bazează pe construirea histogramelor de-a lungul liniilor verticale și orizontale în zona în care s-ar afla fața umană. Proiecțiile orizontale și verticale în punctul imaginii sunt calculate cu ajutorul următoarelor formule :
HI(x,y)=, (3.1)
VI(x,y)=, (3.2)
unde I(x,y) este intensitatea imaginii în punctul (x,y) .
Mai întâi, se calculează proiecția orizontală a imaginii și se identifică minimele locale, determinate de modificările bruște în HI(x,y). Aceste minime locale corespund marginilor feței. În mod similar, este calculată și proiecția verticală, și se identifică minimele locale care determină localizarea ochilor, nasului și gurii. Aceste minime locale reprezintă o zonă din imagine în care se presupune că s-ar afla fața.
Algoritmii empirici detectează bine fețele frontale pe un fundal nu prea complex și ce nu conține multe zgomote [9]. Principalul dezavantaj al acestui algoritm este dificultatea de a traduce cunoștințele umane în reguli clar definite. Dacă regulile sunt formate în detaliu (strict), sistemul va elimina fețele din imagine care nu respectă toate regulile. Dacă regulile sunt prea generale, atunci aceasta va duce la o creștere a reacționării sistemului la detecții false faciale. De altfel, este dificil să se aplice o astfel de metodă și să se detecteze fețele în poziții diferite, deoarece trebuie luate în considerare toate cazurile posibile.
3.2 Algoritmi bazați pe modele de contur
Selectarea contururilor este folosită ca o etapă preliminară în procesul de extragere a caracteristicilor imaginii. Astfel de algoritmi lasă contururi pe imagine. Contururile imaginii sunt zone cu o concentrație mare de informații, care sunt necesare recunoașterii obiectelelor din imagine. Există multe metode pentru delimitarea contururilor, care sunt asociate cu corecția după histograme și binarizarea imaginii. Una dintre metode – segmentarea bazată pe evidențierea contururilor. Segmentarea este procesul de împărțire a unei imagini digitale în părțile sale componente sau obiecte, în funcție de sarcină, care în acest caz este selectarea feței persoanei din imagine.
Algoritmii de segmentare a imaginii se bazează pe una din două proprietăți de bază ale luminozității imaginii: discontinuitatea și omogenitatea. Discontinuitatea este împărțirea imaginii în părți, bazată pe modificări bruște ale valorilor luminozității. Omogenitatea este împărțirea imaginii în regiuni omogene, conform unor criterii predefinite [12]. În procesul segmentării,diferențele de luminozitate reprezintă un interes aparte datorită limitelor obiectelor, deoarece scopul segmentării, este selecția obiectelor din imagini. Procedura de selectare a contururilor implică doi pași. În primul rând, sunt detectate în imagine diferențele de luminozitate, după care se formează contururile. Apoi, rezultatele obținute sunt comparate cu valoarea de prag T, care este selectată în mod experimental. Dacă , atunci pixelul cu coordonatele (x,y) aparține conturului și i se atribuie valoarea de luminozitate : , dacă însă – pixelul aparține fundalului și i se atribuie luminozitatea [13].
Atunci când contururile imaginii au fost găsite, este necesar să fie izolat obiectul de interes din imagine, în acest caz fața persoanei. Deoarece este analizată o imagine cu fundal complex, pot fi selectate de altfel și alte obiecte, ale căror valori ale intensității pot coincide cu intensitatea pixelilor de pe fața persoanei. Criteriile de căutare ale obiectului de interes pot fi diferite: căutare după formă, după zonă, arie și altele. În acest caz, căutarea este efectuată după arie, deoarece fața persoanei ocupă cea mai mare parte a imaginii. Selecția feței se realizează prin căutarea unor zone de pixeli conectate și crearea unei matrice, fiecare element al cărei este egal cu numărul obiectului căruia îi aparține pixelul corespunzător al imaginii originale.
În practică sunt utilizate câteva metode de evidențiere a diferențelor de luminozitate :
Metoda gradientului
Metoda Canny
Metoda Laplace
3.2.1 Metoda gradientului
Metoda gradientului – constă în calcularea derivatei de ordin 1 a funcției de luminozitate (este utilizată pentru a detecta prezența unui contur în imagine). Gradientul imaginii în punctul reprezintă vectorul G, orientat în direcția modificării maxime a luminozității, modulul căruia este egal cu :
, (3.3)
, (3.4)
, (3.5)
unde și sunt componentele acestui vector [2].
Pentru a reduce din calcule, modulul gradientului este calculat după formula de mai jos :
, (3.6)
Pentru a găsi derivatele gradientului și , se folosește una din metodele următoare :
Operatorul Roberts
Operatorul Prewitt
Operatorul Sobel
Operatorul Robinson
Operatorul Roberts
Imaginea discretă este scanată cu o fereastră de 2 x 2 pixeli, care este afișată în Figura 3.3.
Figura 3.1 Fereastră de scanare cu dimensiunea 2 x 2 cu valori de luminozitate
Pentru fiecare poziție a ferestrei, sunt calculate componentele și :
, (3.7)
, (3.8)
unde ,,, sunt valorile de luminozitate ale pixelilor din fereastra 2 x 2.
Aceste derivate pot fi realizate prin prelucrarea întregii imagini cu ajutorul operatorului descris de măștile prezentate în Figurile 3.2 și 3.3.
Figura 3.2 Masca operatorului Roberts pentru
Figura 3.3 Masca operatorului Roberts pentru
După găsirea derivaților, se face calculul conform formulei modulului gradientului pentru fiecare pixel situat în rândul și coloana . Operatorul Roberts este ușor în implementare și rapid, dar realizarea măștilor de dimensiuni de 2 x 2 nu este convenabilă din cauza lipsei unui element central clar exprimat. Prin urmare, sunt mai des folosite măști cu o dimensiune de 3 x 3.
Operatorul Prewitt
Pentru a detecta diferențele de luminozitate, imaginea este scanată folosind fereastra 3 x 3, care este prezentată în Figura 3.4.
Figura 3.4 Fereastră de scanare cu mărimea 3 x 3 cu valori de luminozitate
Pentru fiecare poziție a ferestrei, valorile și sunt calculate în felul următor :
, (3.9)
, (3.10)
În formulele de mai sus, diferența dintre sumele de pe rândurile de sus și de jos ale unui cluster de 3 x 3 este o valoare aproximativă a derivatei de-a lungul axei x, iar diferența dintre sumele de pe prima și ultima coloană este derivată de-a lungul axei y [12]. Pentru a aplica aceste formule, este folosit operatorul Previtt, care este descris de măștile prezentate în Figurile 3.5 și 3.6.
Figura 3.5 Masca operatorului Prewitt pentru
Figura 3.6 Masca operatorului Prewitt pentru
Operatorul Prewitt este ușor de realizat, dar are o eroare de calcul semnificativă, respectiv fața poate să nu fie evidențiată, sau este evidențiată și fața dar și corpul persoanei.
Operatorul Sobel
Operatorul Sobel utilizează de obicei o mască cu o dimensiune de 3 x 3, în timp ce valorile medii ale luminozității sunt calculate cu coeficientul 2. Calculul gradientului de imagine constă în obținerea valorilor derivatelor parțiale pentru fiecare punct.
, (3.11)
, (3.12)
După calculul derivatelor parțiale, modulul gradientului în punctul central al vecinătății se calculează folosind formula prezentată anterior [13]. Pentru a implementa expresiile descrise mai sus, se folosesc măștile prezentate în Figurile 3.7 și 3.8.
Figura 3.7 Masca operatorului Sobel pentru
Figura 3.8 Masca operatorului Sobel pentru
Utilizarea coeficientului 2 în masca operatorului Sobel se bazează pe nevoia de a acorda o mai mare importanță punctelor centrale [12].
Operatorul Robinson
Operatorul Robinson este simplu în implementare datorită utilizării coeficienților 0, 1 și 2. Măștile acestui operator sunt simetrice față de axa centrală plină cu zerouri. Este suficient de obținut rezultatul prelucrării primelor patru măști, restul obținându-se prin inversarea primelor (Figura 3.9).
Valoarea maximă, obținută după aplicarea tuturor celor patru măști pe pixel și în imediata lor apropiere este considerată amploarea gradientului, iar unghiul de gradient poate fi aproximat ca unghiul liniilor zero din mască.
Figura 3.9 Primele 4 măști ale operatorului Robinson
Aplicând operatorul Robinson, în imagine pot fi observate întreruperi de contururi, și puncte pe imaginea segmentată, dar acest lucru nu afectează selecția corectă a feței. De asemenea, operatorul Robinson se descurcă mai bine cu zgomotul din imagine în comparație cu operatorul Sobel.
3.2.2 Metoda Canny
Este una din cele mai eficiente metode de selecție a contururilor, utilizează operații morfologice.
Algoritmul dat constă din câteva etape :
Imaginea este nivelată, uniformizată cu un filtru, folosind funcția de impuls descrisă de legea Gaussiană. Este luat în considerare gradul de nivelare și zgomotul din imagine :
În fiecare punct, se calculează gradientul variației luminozității din imagine :
, (3.13)
Este realizată suprimarea ușoară a salturilor de luminozitate din imagine. În rezultat, sunt salvate valorile gradienților care depășesc valorile gradienților ce se află în vecinătate, în direcția gradientului imaginii;
Prelucrarea morfologică a rezultatelor, în care sunt stabilite două praguri: inferior și superior. Toate punctele care au depășit pragul superior sunt păstrate, iar punctele care depășesc pragul inferior sunt de asemenea salvate însă doar dacă sunt vecine cu punctele de mai sus, celelalte sunt excluse din imaginea conturată formată [12-13].
Operatorul Canny oferă o mai bună selecție a contururilor decât celelalte metode descrise, chiar și în prezența zgomotului, și de asemenea lipesc discontinuitățile în contururi, punctele sau unele linii.
3.2.3 Metoda Laplace
Metoda Laplace de separare a contururilor diferă de metoda gradientului prin faptul că limitele sunt evidențiate indiferent de direcția lor. Datorită acestei caracteristici, contururile imaginilor se disting mai puternic decât în celelalte metode [12]. Metoda constă în calcularea celei de-a doua derivate al funcției de luminozitate.
Laplacianul unei imagini discrete pentru un pixel într-un perimetru de 3 x 3 poate fi determinat astfel :
, (3.14)
unde locația variabilelor (vezi Figura 3.4).
Aproximarea discretă folosind elementele vecine pe diagonală are forma :
, (3.15)
Pentru realizarea acestor ecuații, se folosesc măști, care sunt prezentate în Figura 3.10.
Figura 3.10 Măștile Laplace
Metoda Laplace în forma sa neschimbată, nu este folosită pentru detectarea contururilor din următoarele motive :
Este prea sensibilă la zgomot;
Folosirea modulului Laplace duce la dublarea contururilor, ceea ce complică procesul de segmentare.
Din aceste motive, metoda Laplace, în problemele de segmentare, se reduce la utilizarea proprietății sale de intersectare a nivelului zero pentru localizarea conturului.
3.2.4 Metoda Laplace-Gauss
Metoda Laplace-Gauss este o convoluție a operatorilor Laplace și Gauss. Acest operator reprezintă derivata a doua a funcției :
, (3.16)
unde ; 𝜎 – deviația standard.
Convoluția imaginii cu o astfel de funcție duce la defocusarea acesteia, cu valoarea deviației standard.
Acest operator a fost numit Laplace-ul operatorului Gaussian (LoG-Laplacian of Gaussian). Convoluția imaginii cu operatorul este echivalentă cu imaginea care inițial ar fi fost minimizată cu funcția Gauss, iar apoi ar fi fost calculat Laplace-ul [12].
În această metodă, sarcina funcției Gaussiene constă în nivelarea imaginii și reducerea influenței zgomotului, iar obiectivul Laplacian este de a localiza contururile.
Caracteristicile algoritmului :
Algoritmul funcționează corect, atunci când obiectul se află pe un fundal uniform;
Algoritmul poate funcționa incorect, atunci când imaginea este mai luminoasă sau întunecată, respectiv umbrele din imagine pot fi percepute drept contururi;
Detecții false, în cazul prezenței zgomotului în imagine;
Cu cât rezoluția imaginii este mai redusă, cu atât crește probabilitatea erorilor de localizare.
Astfel, utilizarea metodelor de segmentare nu va fi considerată ca o metodă independentă pentru rezolvarea problemei localizării unei fețe într-o imagine în care există un fundal complex, zgomot și rezoluție scăzută.
3.3 Algoritmul bazat pe compararea șabloanelor
Metoda cea mai simplă de detectare a fețelor într-o imagine digitală este o metoda bazată pe o comparație cu un șablon. Această metodă se bazează pe vizualizarea întregii imagini sursă cu o mască locală și compararea imaginii din câmpul acestei măști cu un etalon (șablon). Un șablon este imaginea cu o dimensiune specificată în care fața umană sau o parte din ea (ochi, nas, gură) este situată în centru, iar fundalul din jurul feței corespunde cu fundalul imaginii originale.
Se utilizează două tipuri de șabloane :
Non-deformabile – sunt șabloanele care sunt expuse scalării și pot fi deplasate;
Deformabile – sunt șabloanele care își schimbă forma, ajustându-se conform datelor de intrare. Cel mai des sunt folosite pentru a selecta părțile feței (nas, ochi, gură).
Atunci când se compară imaginile, ca măsură de proximitate, se selectează eroarea medie pătratică sau corelația reciprocă dintre imaginea din zona mască și șablonul. Minimul erorii medii pătratice sau maximul corelației reciproce obținute ca rezultat, va indica cea mai bună potrivire a imaginii din zona de mască cu șablonul.
Considerăm o imagine , cu dimensiunile M x N, și șablonul cu dimensiunile J x K, unde J ≤ M și K ≤ N [12]. Mutând șablonul pe întreaga imagine, este calculată corelația (a se vedea formula în forma sa generală) :
, (3.17)
unde = 0,1,2,…,M – 1 și = 0,1,2,…,N – 1 .
Suma este efectuată în zona în care se intersectează imaginea și șablonul. În Figura 3.11 este prezentată procedura de corelare, în care vizualizarea imaginii sursă pornește de la o poziție din colțul din stânga sus și continuă vertical în jos până când șablonul se află în câmpul imaginii originale.
Analizăm punctul imaginii – . După calcularea valorii de corelație, obținem o valoare . Atunci când și se schimbă, șablonul trece peste întreaga imagine și dă funcția . Poziția maximelor funcției indică punctele în care aria șablonului se potrivește cel mai bine cu aria imaginii. Cu toate acestea, în apropierea marginilor imaginii, precizia scade, deoarece mărimea erorii de corelare este proporțională cu aria șablonului, care a depășit limitele imaginii [12].
Figura 3.11 Obținerea valorii de corelație în punctul
Dezavantajul funcției de corelație este sensibilitatea sa la schimbarea amplitudinii imaginii și a șablonului.
În ciuda simplității acestei metode, căutarea feței este realizată în conformitate cu șablonul, rapid și eficient, însă necesită ca dimensiunile imaginii dorite să corespundă cu dimensiunile șablonului. Însă această relație este dificil de realizat, respectiv procesul este efectuat de mai multe ori, de fiecare dată dimensiunea imaginii originale schimbându-se [14].
Din imaginea originală a chipului persoanei se obțin etaloanele care acoperă cea mai informativă parte a feței: sprâncenele, ochii, nasul și gura. Sprâncenele, ochii și nasul unei persoane sunt neschimbătoare. Metoda de comparație cu șablonul face posibilă selectarea unei fețe în cazurile în care dimensiunile, punctul de observare și fundalul din imaginea originală nu corespund cu șablonul. Erorile se pot datora complexității fundalului, pe care sunt prezente un număr mare de obiecte interferente, deoarece condițiile de iluminare se modifică și respectiv preluarea și utilizarea informațiilor din imagine este dificilă.
Metoda bazată pe compararea cu șablonul a devenit destul de răspândită. Cu toate acestea, localizarea obiectelor reale se caracterizează printr-o complexitate mare de calcul asociată problemelor discutate mai sus.
3.4 Algoritm bazat pe învățare
Analiza efectuată a algoritmilor de recunoaștere facială de pe o imagine are următoarele dezavantaje :
Metodele empirice sunt complexe în implementare, deoarece cunoașterea umană este dificil de transformat în anumite reguli care ar putea funcționa cu imagini reale care au zgomote, un fundal complex și o rezoluție redusă;
Metodele bazate pe modelele de contur nu funcționează bine atunci când imaginea este zgomotoasă, prea luminoasă sau prea întunecată, are un fundal complex și o rezoluție scăzută. Umbrele din imagine sunt percepute ca limite, ceea ce duce la funcționarea incorectă a algoritmului. Astfel de metode sunt cel mai bine de utilizat în pre-procesare la imagini;
Metodele bazate pe compararea cu șablonul evidențiază fața, când imaginea are un fundal uniform, dar în practică (de exemplu la sistemele de supraveghere/securitate), o astfel de condiție nu este întotdeauna fezabilă.
Metoda bazată pe învățare (formare) este lipsită de deficiențele menționate mai sus, prin urmare ele sunt utilizate în sistemele de supraveghere video și de control al accesului.
3.4.1 Metoda Viola-Jones
Metoda Viola-Jones este una dintre cele mai eficiente metode de căutare a feței umane în imagine, deoarece are viteză mare și probabilitate scăzută de detecție falsă [15]. Algoritmul funcționează bine și recunoaște caracteristicile faciale la un unghi de până la 30 de grade. Pe măsură ce unghiul crește, rata de detecție scade semnificativ, ceea ce face dificilă utilizarea algoritmului în sistemele moderne [16]. Metoda stă la baza majorității algoritmilor de recunoaștere și identificare existenți, iar metoda Viola-Jones este implementată în majoritatea camerelor moderne și camerelor telefoanelor mobile.
Algoritmul se bazează pe ideile-cheie :
Reprezentarea imaginii în formă integrală – pentru calculul rapid al caracteristicilor;
Folosirea caracteristicilor lui Haar – pentru a extrage informații de pe imagine;
Folosind o metodă specială de învățare/formare – un boosting pentru selectarea semnelor;
Primirea de semne la intrarea unui clasificator, care dă rezultat "adevărat" sau "fals";
Utilizarea ”cascadei” – pentru a elimina rapid ferestrele pe care nu există nici o față.
Deoarece în algoritm se produce ”învățarea” clasificatorilor, este necesar un eșantion pregătit de imagini pozitive și negative. Pe imaginile pozitive sunt prezente fețe frontale cu dimensiunea de 24 x 24 sau 20 x 20 pixeli. Această dimensiune este convenabilă pentru învățare, deoarece fața unei persoane poate fi departe în imagine și este necesară găsirea unei fețe de dimensiuni mici. Eșantionul de formare conține toate invariantele la lumină, caracteristici ale rasei, persoane de sexe diferite și persoane cu emoții pe față.
Imaginile negative reprezintă o colecție de fotografii diferite cu aceeași dimensiune, pe care nu există nici o față umană. Numărul de imagini pozitive este mult mai mic decât cel negativ, de exemplu, autorii metodei au utilizat 5000 de imagini cu fețe și 10.000 de imagini fără fețe [17].
După construirea eșantionului de formare, trebuie de extras din imagine caracteristicile după care va fi instruit clasificatorul. Pentru aceasta, se folosesc caracteristicile Haar, care sunt filtre formate din suprafețe rectangulare adiacente, așa cum este arătat în Figura 3.12.
Figura 3.12 Caracteristicile standard Haar
Aceste dreptunghiuri sunt suprapuse pe o imagine cu dimensiunea de 24 x 24 și se realizează numărarea tuturor luminozităților pixelilor, care au nimerit în zonele luminoase și întunecate. Apoi se calculează diferența dintre sume :
, (3.18)
unde – intensitatea pixelilor; – toți pixelii din regiunea dreptunghiului alb; – toți pixelii din regiunea dreptunghiului negru.
Diferența calculată este valoarea unei anumite caracteristici. În plus, această valoare este comparată cu pragul determinat în timpul procesului de formare. Dacă valoarea depășește pragul, atunci caracteristica a detectat obiectul, altfel nu a făcut-o. Caracteristicile date sunt calculate în zona fereastrei de scanare, care se mișcă în jurul întregii imagini.
Figura 3.13 Schema principiului de lucru a ferestrei de scanare.
Fereastra de scanare este prezentată în Figura 3.13. Acest proces se repetă de mai multe ori pentru diferite dimensiuni ale ferestrei scanate, adică se aplică scalarea deasupra ferestrei și a semnelor. Pentru calcularea caracteristicilor cât mai rapid, este utilizată o reprezentare integrală a imaginilor. În reprezentarea integrată a imaginilor, se formează o matrice, dimensiunile căruia coincid cu dimensiunile imaginii originale. În fiecare element al matricei este stocată suma intensităților tuturor pixelilor situați în stânga și deasupra acesteia. [18]. Elementele matricei sunt calculate după formula :
, (3.19)
unde , – coordonatele pixelului pe imagine; este intensitatea pixelului cu coordonatele ale imaginii integrale; este intensitatea pixelilor cu coordonatele imaginii originale (a se vedea Figura 3.14).
Figura 3.14 Imaginea originală
Figura 3.15 Imaginea integrală
O astfel de imagine integrală rezultă dintr-o singură trecere prin imagine. Analizăm pixelul cu coordonatele (Figura 3.16).
Figura 3.16 Calculul imaginii integrale
Pentru fragmentul din stânga sus, suma intensităților pixelilor se calculează astfel :
, (3.20)
, (3.21)
unde este suma acumulată a rândului. Din formulele de mai sus rezultă că și [15]. Atunci când imaginea integrală este construită, este posibilă calcularea rapidă a sumelor pixelilor unui dreptunghi care poate avea deja orice suprafață. Fie A, B, C, D – valorile imaginii integrale în colțurile dreptunghiului (Figura 3.17).
Figura 3.17 Calcularea sumei luminozității pixelilor într-un dreptunghi arbitrar.
Suma valorilor intensităților pixelilor din imaginea original :
, (3.22)
În acest caz, dacă imaginea integrală este calculată, atunci pentru un dreptunghi amplasat în orice loc al imaginii, sunt suficiente trei operații de adăugare.
Fiecare dintre aceste caracteristici se calculează foarte rapid, dar numărul de semne este un număr mare: deci pentru o fereastră de 24 x 24 pixeli, obținem 160.000 de semne. Toate caracteristicile nu pot fi calculate, deci trebuie de selectat un subset de caracteristici care vor permite de împărțit efectiv eșantionul de formare în ”față” și ”lipsa feței”. În Figura 3.18 sunt prezentate toate caracteristicile Haar pe care le folosește un singur clasificator.
Figura 3.18 Caracteristicile Haar pentru un clasificator.
Pentru a selecta un subset specific de caracteristici este folosită metoda boosting-ului.
Boosting – este o metodă modernă de clasificare și recunoaștere a modelelor. Este o procedură pentru construirea secvențială a compozițiilor algoritmului de învățare, atunci când fiecare algoritm ulterior urmărește să compenseze deficiențele celui precedent. [19 – 20].
Un clasificator care permite câteva erori este considerat "puternic", iar un clasificator care are o marjă de la 51% – "slab" sau simplu. Ca urmare a funcționării algoritmului boosting, la fiecare iterație se formează un clasificator simplu precum :
, (3.23)
unde – arată direcția semnului inegalității, dacă valoarea semnului este negativă și indică separat pentru fiecare caracteristică; – valoarea pragului; – valoarea calculată a caracteristicii; – fereastra de căutare; – numărul iterației. Ulterior, a fost dezvoltat un algoritm de boosting mai avansat – AdaBoost (Adaptive Boosting – îmbunătățire adaptivă) [19]. AdaBoost combină clasificatorii simpli și atribuie fiecăruia o sarcină specifică. Această combinație ponderată este considerat un clasificator "puternic".
În metoda lui Viola-Jones, clasificatorii au fost combinați într-o secvență de filtre. Fiecare astfel de filtru este un clasificator separat AdaBoost, având un număr mic de clasificatori simpli.
AdaBoost-ul utilizat pentru căutarea fețelor arată în felul următor :
Calcularea tuturor caracteristicilor lui Haar pentru toate imaginile eșantionului de învățare/formare;
Este ales un astfel de criteriu și prag pentru care suma greutăților imaginilor clasificate eronat era minimă;
Definim greutățile întregului eșantion.
Folosind metoda AdaBoost pentru a găsi fețe în imagine, trebuie de vizualizat un număr mare de ferestre. Din moment ce prezența feței în imagini este întâlnită rar, trebuie respectiv de eliminat cât mai repede ferestrele pe care nu există fețe. Din această cauză este construită o cascadă de clasificatori.
Cascada constă dintr-un lanț de clasificatori instruiți, structura cărora este ilustrată în Figura 3.19.
Figura 3.19 Cascadă de clasificatori.
Lucrul cascadei începe cu clasificatori "slabi", care elimină o parte din ferestrele negative, acceptând aproape toate cele pozitive. Dacă primul clasificator reacționează bine la fragmentul în care potențial se află fața, atunci este lansat al doilea clasificator, mai complex. Răspunsul negativ al unuia dintre clasificatori în orice etapă duce la respingerea ferestrei. Această structură în cascadă mărește rata de detecție, accentuând activitatea sa în zone mai informative ale imaginii, adică acolo unde este prezentă persoana.
În Figura 3.20, este prezentată o imagine cu zgomot, unde fețele sunt selectate utilizând algoritmul Viola-Jones.
Figura 3.20 Rezultatele detectării faciale cu ajutorul metodei Viola-Jones.
Se observă că metoda găsește fețe cu obiecte perturbatoare, în cazul dat ochelari, și atunci când fața este înclinată la un unghi mic și este prezentă expresia facială. Fundalul complex nu a generat probleme de detecție, metoda Viola – Jones a selectat o fereastră a feței destul de mică în cazul in care fața este sub un oarecare unghi, de asemenea mărimea ferestrei depinde și de fundal unde pot exista multe obiecte diferite care induc zgomot.
Algoritmul Viola-Jones și persoanele de culoare
De mulți ani deja, detectarea feței persoanelor de origine africană a fost problematică. Fețele de culoare întunecată sunt greu de detectat în comparație cu fețele de culoare deschisă. Asta se datorează printre altele diferenței de intensitate a contrastului dintre ochi, obraji și nas, care este greu de separat de un algoritm. Fundalul complicat (multe obiecte de fundal) / întunecat complică și mai mult sarcina detecției fețelor persoanelor de culoare. Procesul de detecție facială în cazul persoanelor de rasă negroidă întâlnește următoarele probleme :
Raportul de contrast al imaginii și al fețelor;
Dificil de separat elemente faciale precum : ochi, nas și gură;
Culoarea feței și al părului este în majoritatea cazurilor aceeași. Sau părul de pe cap poate fi tuns foarte scurt sau chiar lipsi (cazul bărbaților și a copiilor);
Algoritmul Viola-Jones cu o anumită valoare de prag specific, oferă rezultatul cu o rată de detectare rapidă și are o precizie ridicată pentru detecția fețelor persoanelor de origine africană, origine asiatică, precum și fețele nou-născuților. Trebuie menționat însă că timpul de calcul este puțin mai mărit decât în cazul persoanelor cu fața de culoare deschisă. Timpul mediu de calcul poate varia în jurul valorii de 2.894 secunde (pentru persoanele de rasă europeană această valoare variază in jur de 1 sec, Procesor Intel I3, 2.10 GHz, 3 Gb RAM, Windows 7), desigur această valoare depinde de complexitatea imaginii. Rata medie de detecție este de aprox. 92,47%.. Numărul mare de fețe care sunt prezente în imagine nu afectează timpul de calcul și rata de detecție.[21]
Analiza algoritmilor de recunoaștere a feței din imagini
În prezent, există mai multe metode de recunoaștere a unei persoane după fața sa : metoda ”fețelor proprii” (eigenfaces), rețelele neuronale artificiale, metoda de luare a deciziilor – metoda arborelui (decision forest), modele Markov cu stări invizibile, analiza diferențială liniară și altele. Să analizăm în detaliu primii trei algoritmi, după performanța și precizia lor.
4.1 Metoda Eigenface
La baza algoritmului Eigenface stă metoda componentelor principale (MCP), care este cea mai eficientă metodă în prezent. Ideea metodei este aceea că matricea imaginii poate fi reprezentată ca un vector unidimensional prin plasarea celei de-a doua coloane sub prima, a treia sub cea a doua, și așa mai departe. Vectorii care rezultă se află în spațiu, care are o dimensiune foarte mare, iar datele necesare aparțin unei dimensiuni mai mici, deci trebuie de găsit spațiul optim în care se poate de identificat și descris trăsăturile individuale ale fiecărei fețe. Pentru a rezolva această problemă, se folosesc principalele componente ale distribuției feței, care sunt vectorii proprii ai matricei de covarianță a setului de imagini. Vectorii proprii se aranjează în funcție de mărimea valorii proprii. Fiecare din acești vectori descrie trăsăturile feței și pot fi priviți ca un set de trăsături caracteristice. De asemenea, fiecare zonă a imaginii contribuie la fiecare vector propriu, lucru care permite reprezentarea vectorului ca aproximație la imaginea feței, din această cauză sunt numiți vectori proprii (Eigenfaces). Fiecare imagine a feței este reprezentată ca o combinație liniară a fețelor proprii (Figura 4.1) [22].
Figura 4.1 Eigenfaces
Analizăm imaginea cu dimensiunea de x pixeli. Această imagine poate fi descrisă de un vector cu dimensiunea :
, (4.1)
unde – numărul imaginii.
Este necesar de găsit vectorii care descriu cel mai bine distribuția imaginilor fețelor în întreg spațiul imaginii. Se consideră un set de imagini cu vectorii , care este un eșantion de antrenament. Calculăm vectorul mediu pe întregul eșantion de antrenament :
, (4.2)
După calcularea vectorului mediu, îl scădem din fiecare imagine :
, (4.3)
Vectorii rezultați stochează informații unice despre chipul uman. Pentru cea mai bună descriere a distribuției imaginilor, este construit un set de vectori ortogonali , în care fiecare vector – este calculat conform formulei :
, (4.4)
, (4.5)
unde sunt valorile proprii ale matricei de covarianță și sunt vectorii proprii ai matricei de covarianță.
Matricea de covarianță se calculează astfel :
, (4.6)
Dacă numărul de imagini este mai mic decât dimensiunea spațiului, atunci vectorii proprii cu valori proprii nenule vor fi . Aici încheie procesul cu eșantionul de antrenament.
Acum, la intrare este aplicată o imagine de testare cu o față ”x”, care este descompusă în vectori proprii [22]. Se calculează coeficienții de descompunere și se construiește un vector care descrie contribuția fiecărei ”fețe” la reprezentarea imaginii test.
După realizarea vectorului, se proiectează această imagine într-un spațiu nou și se definește cărei imagini a eșantionului de formare, exemplul dat îi este cel mai apropiat. Pentru asta se calculează distanța dintre imaginea în sine și proiecția sa :
, (4.7)
, (4.8)
Dacă valoarea este mare, atunci imaginea de intrare cu o probabilitate mare nu aparține bazei de date cu imagini.
4.2 Rețele neuronale artificiale
Una dintre cele mai răspândite metode de recunoaștere sunt rețelele neuronale artificiale. Rețelele neuronale au apărut ca urmare a modelării funcțiilor creierului uman și reprezintă un sistem liniar universal care ajustează parametrii bazați pe datele de intrare [22].
Atunci când este antrenată o rețea neuronală, sunt oferite diverse imagini ale fețelor oamenilor, indicând din ce clasă fac parte. Eșantionul este reprezentat ca vector al valorilor caracteristicilor. În acest caz, toate caracteristicile trebuie să determine în mod unic clasa din care face parte eșantionul. Dacă caracteristicile nu sunt suficiente, rețeaua poate corela același tipar cu mai multe clase, ceea ce va duce la erori de recunoaștere. Instruind o rețea neuronală, este posibil de găsit fețele nerecunoscute anterior și de primit un răspuns despre apartenența lor la o anumită clasă. Rețeaua neuronală constă din particule elementare – neuronii artificiali, care sunt modelul neuronilor biologici din creierul uman.
În Figura 4.2 este prezentat modelul matematic al neuronului, care este un anumit element care primește mai multe semnale de intrare, apoi înmulțește aceste semnale cu coeficienții de ponderare și le însumează :
, (4.9)
unde – semnale de intrare; – coeficienți de ponderare.
După sumare, se face o transformare neliniară a neuronului, rezultând un semnal de ieșire :
, (4.10)
unde este funcția de transfer neliniară a neuronului; – deplasarea continuă.
Deoarece deplasarea continuă este de obicei echivalată cu o greutate suplimentară , care primește un singur semnal, atunci :
, (4.11)
, (4.12)
Transformarea descrisă mai sus se numește funcția de activare, dacă semnalul sumar, ținând cont de multiplicatorii de pondere, depășește pragul, atunci neuronii devin activi și transmit semnalul, de exemplu 1, altfel neuronul nu este se activează.
Figura 4.2 Modelul matematic al unui singur neuron.
Astfel, un neuron este un clasificator liniar, deoarece ia o combinație liniară de caracteristici de intrare. Neuronul poate fi reprezentat ca o hiperplană liniară de separare într-un spațiu mare de caracteristici. Adică, un neuron poate rezolva o problemă liniară de clasificare în care există obiecte de două tipuri și în spațiu ele pot fi separate de un hiperplan. Procesul de învățare a unui neuron este un proces de alegere a greutăților pentru fiecare caracteristică. Pentru aceasta, se folosesc metode de formare, cum ar fi metoda descendentă a gradientului stochastic, metoda vectorului de suport. Cu toate acestea, s-au constatat situații când a fost imposibil să fie implementat algoritmul, folosind o clasificare liniară (neuron), din această cauză s-a trecut la utilizarea mai multor neuroni, care formează o rețea neuronală. O rețea neuronală constă din mai multe straturi de neuroni astfel încât informațiile din ea să fie transferate de la intrare spre ieșire, iar fiecare neuron primește informații numai de la stratul anterior și transmite următorului. Toate rețelele neuronale pot fi împărțite condiționat în două grupuri : propagarea directă și inversă. În rețelele de propagare directă, semnalul se transmite de la intrarea în rețea spre ieșirea ei. În rețelele neuronale de propagare inversă, datele de ieșire ale oricărui neuron pot fi transmise la ieșirile sale, ceea ce permite simularea unor procese mai complexe [1]. Arhitectura rețelei neuronale cu mai multe straturi este reprezentată în Figura 4.3.
Figura 4.3 Arhitectura unei rețele neuronale cu două straturi.
Primul strat este alimentat cu date prelucrate care trec prin toate straturile rețelei neuronale, respectiv la ieșire sunt obținute rezultatele prelucrării. Numărul de neuroni ai straturilor de intrare și de ieșire trebuie să coincidă cu dimensiunea datelor de ieșire. Toate straturile, cu excepția intrărilor și ieșirilor, nu sunt afișate și prin urmare se numesc ascunse. Neuronii din stratul de intrare nu convertesc semnalele, deoarece distribuie semnalul de intrare între neuronii primului strat și stratul ascuns. Semnalul, atunci când trece prin rețeaua neuronală, suferă modificări care depind de valoarea inițială a semnalului, de coeficienții de ponderare ai neuronilor și de funcția de activare.
Formarea unei astfel de rețele neuronale este realizată folosind un algoritm pentru propagarea inversă a erorii, care este un fel de gradient descendent în spațiul de greutăți cu scopul de a minimiza eroarea totală a rețelei.
Erorile de rețea rezultate sunt valorile corecției greutăților care se propagă în direcția opusă dinspre intrări către ieșiri, prin legăturile/”greutățile” care leagă neuronii [1]. Algoritmul invers de propagare a erorilor este complex și se învață un timp îndelungat. Pe lângă rețelele neuronale, se folosesc și rețele probabilistice, rețele Kohonen, rețele neuronale convoluționale, arbori neuronali. Alegerea arhitecturii depinde de specificitatea obiectului care este recunoscut.
4.3 Metoda arborelui (decision forest)
Metoda arborelui este o structură ierarhică secvențială care permite de obținut o decizie finală privind clasificarea unui obiect cu ajutorul logici binare. Respectiv, întrebarea care e pusă următorului nivel ierarhic depinde de răspunsul primit la nivelul anterior.
Figura 4.4 Exemplul metodei arborelui.
Un arbore este alcătuit din noduri de luare a deciziilor, care sunt unite între ele prin ramuri și noduri ramurale, după cum vedem în Figura 4.4. Este exclus de altfel ca ramurile arborelui sa creeze un ciclu. În arbore există un nod special, care se numește nod rădăcină. Acest nod este baza arborelui, deoarece de la el se poate ajunge la orice nod.
Fiecare nivel din arbore este considerat ca fiind una dintre soluții, adică fiecare nod al arborelui este pus în conformitate cu o întrebare care conține mai multe opțiuni de răspuns corespunzătoare ramurilor de ieșire. Nodurile de decizie conțin criterii de selecție, iar ramurile verifică dacă condițiile sunt adevărate sau false. În funcție de opțiunea de răspuns selectată, este realizată trecerea la nodul următor până când se ajunge la nodul ramural, căruia îi este atribuită o etichetă care indică caracteristicile obiectului recunoscut la una dintre clase.
Până în prezent, există numeroși algoritmi care implementează construcția arborilor de decizie, dintre care cei mai frecvenți sunt :
CART (Classification and Regression Tree – arbore de clasificare și regresie) este un algoritm care reprezintă construcția unui arbore binar de decizie. Fiecare nod al copacului are doi descendenți care rezolvă problema de clasificare și regresie [23];
C4.5 – este un algoritm care rezolvă doar problema clasificării. Se bazează pe construirea unui arbore de decizie cu un număr nelimitat de descendenți la nod [23];
QUEST (Quick, Unbiased, Efficient Statistical Tree – arbore statistic, rapid, echidistant și eficient) este un algoritm care utilizează metode îmbunătățite care rezolvă problemele metodelor de mai sus: echidistant în alegerea variabilelor pentru ramificare [23].
Descrierea aplicației
Algoritmul lui Viola-Jones, în comparație cu alte metode și algoritmi de selecție, este algoritm de ”formare/învățare”. Respectiv este necesar să avem o bază de imagini pozitive și negative. Imaginile pozitive sunt considerate imaginile în care sunt prezente persoane de diferite vârste, naționalități, cu ochelari și barbă, iar imaginile negative – este doar fundalul. Algoritmul se descurcă perfect cu imaginile zgomotoase, precum și cu imaginile ce au rezoluție redusă. Întoarcerea capului persoanei nu afectează eficacitatea selecției feței. Pentru a îmbunătăți stabilitatea algoritmului de recunoaștere în prezența fundalului complex, a zgomotului și a rezoluției scăzute, a fost elaborată o metodă de extracție combinată. Algoritmul constă în mai multe etape de prelucrare preliminară a imaginii originale și a extragerii feței utilizând metoda Viola-Jones. Scopul acestui algoritm este de a restrânge câmpul de căutare din imagine pentru recunoașterea ulterioară a feței.
Astfel, algoritmul general de recunoaștere va arăta astfel (Figura 5.1) :
Figura 5.1 Schema generală a algoritmului de recunoaștere a feței din cadru
Pentru a crește probabilitatea de detectare corectă a feței din imagine, se aplică procesarea preliminară, care constă în trei etape :
Traducerea imaginii în tonuri de gri ;
Filtrarea zgomotului ;
Echilibrarea histogramei.
Cadrul capturat al fluxului video, care vine de la aparatul de fotografiat, este reprezentat în modelul de culoare RGB. Culoarea nu este foarte informativă pentru problema recunoașterii, astfel încât a doua etapă a preprocesării este reprezentarea acestei imagini în spațiul de culoare YUV, unde componenta de luminozitate este separată de diferența de culoare, deoarece aceasta accelerează funcționarea detectorului. Pentru a converti o imagine RGB într-un sistem de culori YUV, trebuie de utilizat următoarele formule :
, (5.1)
, (5.2)
, (5.3)
unde R este intensitatea culorii roșii; G – intensitatea culorii verzi; B – intensitatea culorii albastre; Y este componenta de luminanță; U, V – componente de culoare diferită.
Pentru o imagine în semiton, este importantă numai valoarea componentei luminante, deoarece conține o imagine în nuanțe de gri, iar componentele de culoare diferită conțin informații pentru restaurarea culorii necesare.
Prin convertirea imaginii sursă în spațiul de culoare YUV, zgomotul este atenuat prin filtrare. În acest caz, scopul principal al acestei etape este eliminarea eficientă a zgomotului, păstrând în același timp detalii importante pentru alocarea ulterioară și apoi recunoașterea facială. Luând în considerare un model de zgomot Gaussian, așa cum se întâlnește adesea în camerele de securitate, Gaussianul se manifestă sub condiții de recepție a semnalelor adverse, cum ar fi zgomotul în circuitele electrice, zgomotul în senzori din cauza lipsei iluminării sau a temperaturii ridicate a senzorului [24]. Suprimarea efectivă a zgomotului poate fi realizată dacă efectul pixelilor asupra rezultatelor se reduce odată cu creșterea distanței.
Spațiul de culori YUV este un pic neobișnuit. Componenta Y determină luminozitatea culorii (denumită și luminanță), în timp ce componentele U și V determină culoarea însăși. Y variază de la 0 la 1 (sau 0 la 255 în formate digitale), în timp ce U și V variază de la – 0,5 până la 0,5 (sau -128 până la 127 în formă digitală semnată sau între 0 și 255 în formă nesemnată). Unele standarde limitează în continuare intervalele, astfel încât valorile depășite să indice informații speciale cum ar fi sincronizarea. Un aspect al YUV este că se poate de renunțat la componentele U și V și astfel de obținut o imagine de tip gri. Deoarece ochiul uman este mai receptiv la luminozitate decât este la culoare, multe formate de compresie a imaginilor se debarasează de jumătate sau mai multe canale chromatice pentru a reduce din cantitatea de date cu care urmează de lucrat, fără a afecta grav calitatea imaginii. [25] Probabilitatea detecției false pentru un eșantion de 50 de fotografii pentru un filtru Gaussian este de aprox. 4%. În ciuda faptului că există o eroare destul de joasă, acest filtru nu este utilizat de unul singur. Imaginile prelucrate cu ajutorul filtrului Gaussian sunt foarte neclare, ceea ce are o influență negativă asupra etapei de recunoaștere.
Filtrul median este distribuit pe scară largă în procesarea imaginilor, dar are un dezavantaj – filtrul estompează detaliile fine din imagine. Acest lucru se datorează faptului că mărimea detaliilor este mai mică decât jumătate din dimensiunea ferestrei mediane a filtrului. Pentru a rezolva această problemă, trebuie de mărit dimensiunea ferestrei mediane.
O metodă bună de filtrare adaptivă este filtrul bilateral. Filtrul dat efectuează uniformizarea imaginii, suprimând zgomotul și obiectele de dimensiuni mici ce au contrast redus, menținând în același timp claritatea limitelor obiectelor mari. Acest rezultat se obține prin calcularea intensității fiecărui pixel ca medie ponderată a intensităților pixelilor învecinați. Greutatea asociată cu pixelii adiacenți variază în funcție de valorile de distanță în planul imaginii și pe axa intensității. Această caracteristică permite de păstrat limitele clare ale obiectelor din imagine. Filtrul este numit bilateral, deoarece proximitatea pixelului este evaluată din ambele părți: după distanță și intensitate. Filtrul bilateral, spre deosebire de alte metode de reducere a zgomotului, păstrează limitele feței persoanei însă detaliile mici devin neclare.
Deoarece filtrele median și gaussian modifică imaginile astfel încât acestea devin uneori foarte neclare, ceea ce poate fi rău pentru etapa de recunoaștere, combinăm filtrul bilateral și filtrul median. Metoda combinată suprimă zgomotul de intrare din imagini și la prima iterație selectează cu succes fețele din imagini, reducând timpul de funcționare al algoritmului. Pentru un lucru mai eficient a metodei Viola-Jones, se propune o etapă de prelucrare a imaginii înainte de extracția feței, care constă în utilizarea unei metode combinate de reducere a zgomotului constând dintr-un filtru median și bilateral.
5.1 Aplicația pas cu pas
TestDatabasePath = uigetdir('D:\image', 'Alege folder-ul'); – Aici putem personaliza și indica căile folder-ului de unde vor fi preluate imaginile din biblioteca personală care vor fi prelucrate în Matlab și vom analiza cât de bine detectează fața umană din ele.
uigetdir – Deschide fereastra de dialog pentru selectarea folderului indicat.
prompt = {'Alege poza :'}; – afișează un mesaj și așteaptă ca utilizatorul să introducă textul și apoi returnează valoarea introdusă sau nulă dacă intrarea este anulată (CANCEL / Esc). Specifică o secvență de sus în jos a câmpurilor de editare din caseta de dialog. Afișează textul scris între ‘ ‘ și așteaptă introducerea titlului pozei care urmează a fi prelucrată ;
dlg_title = 'Imaginea originală'; – specificăm titlul pentru figura ce urmează să fie arătată de către Matlab ;
num_lines= 1; – fereastra ce apare și unde se scrie “numele” pozei care urmează a fi prelucrată, are 1 rând ”lățime” ;
def = {'11'}; – definim numele pozei de intrare, aici putem alege ce titlu de poză să fie propus inițial de aplicație (în acest caz aplicația propune spre testare poza cu titlul ”11”) ;
Poza=inputdlg(prompt,dlg_title,num_lines,def); – creează o variabilă cu datele deja specificate mai sus și oferă utilizatorului posibilitatea de a introduce imaginea de intrare dorită;
Poza=strcat(TestDatabasePath,'\',char(Poza),'.jpg'); – leagă orizontal corespondența rândurilor de caractere ale caracterelor menționate între paranteze. Toate matricele de intrare trebuie să aibă același număr de rânduri (sau oricare poate fi un singur șir). Când intrările sunt matrice de caractere, ieșirea este, de asemenea, o matrice de caractere – în acest caz ”calea” folder-ului, titlul variabilei (imaginea de intrare) și formatul variabilei ;
X = imread(Poza); – este citită imaginea de intrare ;
[m, n, r] = size(X); – stabilim variabilele ce vor defini mărimea rândurilor și coloanelor imaginii, cu alte cuvinte mărimea imaginii ;
X_2 = imresize (X, [480 640]); – aici este stabilită noua mărime a imginii, care va fi micșorată în comparație cu mărimile ei inițiale, respective va fi de 480×640 ;
if(size(X_2,3)>1) – valoarea ”3” ar fi pentru ”r” specificat mai sus, care este de fapt intensitatea culorii, respectiv în cazul în care ea depășește valoarea de 1 (iar în cazul unei poze color sigur depășește), imaginea urmează să fie prelucrată și transformată în imagine bi-tonală.
for i=1:size(X_2,1)
for j=1:size(X_2,2) – imaginea urmează a fi transformată în imagine bi-tonală, în nuanțe gri, rând cu rând, și coloană după coloană ;
GrayImg(i,j)=0.2989*X_2(i,j,1)+0.5870*X_2(i,j,2)+0.1140*X_2(i,j,3); – are loc transformarea imaginii în imagine bi-tonală; este modificat spațiul de culori din RGB în YUV; Pentru a realiza conversia din RGB în YUV este necesar de înmulțit constantele R,G,B cu următorii coeficienți :
R = 0.299; G = 0.587; B = 0.114; [26]
figure(1) – apare o fereastră unde urmează să apară variantele prelucrate ale imaginii de intrare;
subplot (1,2,1) – fereastra în care vor apărea imaginile prelucrate va consta din două părți ;
imshow(X) – în prima parte va fi imaginea de intrare, originală ;
title ('Imaginea de intrare') – titlul imaginii de intrare, amplasat deasupra imaginii ;
subplot (1,2,2) – a doua parte a ferestrei, alături de imaginea de intrare ;
imshow (GrayImg) – în a doua parte a ferestrei, lângă imaginea de intrare va fi prezentată aceeași imagine, dar în tonuri gri, bi-tonală ;
title('Imaginea bitonală') – titlul imaginii în tonuri gri, amplasat deasupra imaginii respective ;
Noise = imnoise(GrayImg, 'gaussian',0,0.0008 ); – o nouă variabilă ”Noise”, care reprezintă zgomotul; adaugă zgomot Gaussian asupra imaginii bi-tonale cu media 0 și variația 0.0008 ;
Med = medfilt2(Noise,[3 3]);% Filtrul median – o nouă variabilă ”Med”; asupra imaginii bi-tonale este aplicat filtrul median ; fiecare pixel de ieșire conține valoarea mediană în zona 3×3, în jurul pixelului corespunzător din imaginea de intrare ;
Y = double(Med)/255; – double i-a valori între 0 și 1, 8 biți per pixel, împărțiți pe întreaga gamă a imaginii RGB (255) ;
Y = Y+0.03*randn(size(Y)); – returnează o serie de intrări aleatoare care are aceeași dimensiune ca img1; este reînnoită valoarea variabilei img1 ;
Y(Y<0) = 0; Y(Y>1) = 1; – sunt impuse condițiile date pentru a putea trece imaginea prin filtru.
z = 5; % semi-lățime
sigma = [2 0.1]; % deviație standard
bfltfilter = bfilter2(Y,z,sigma); – este realizată conversia bi-dimensională a imaginii img1 după valoarea w; este filtrată imaginea img1 cu o deviație standard specificată de sigma.
Gamma = histeq(bfltfilter,20); – variabila Gamma transformă imaginea filtrată, întorcând în ‘bfltfilter’ o intensitate a imaginii cu 20 nivele de gri. Un număr aproximativ egal de pixeli este mapat la fiecare dintre 20 de nivele în imagine, astfel încât histograma ei este aproximativ uniformizată.
figure(2) – apare o fereastră unde urmează să apară variantele filtrate ale imaginii de intrare ;
subplot (1,3,1) – fereastra în care vor apărea imaginile prelucrate va consta din trei părți ;
imshow (Noise) – în prima parte va fi imaginea cu zgomot ;
title ('Imaginea cu zgomot') – titlul imaginii cu zgomot, amplasat deasupra imaginii respective ;
subplot (1,3,2) – a doua parte a ferestrei, alături de imaginea de intrare ;
imshow(bfltfilter) – în a doua parte a ferestrei va fi imaginea cu filtrată ;
title ('Imaginea filtrată') – titlul imaginii filtrate, amplasat deasupra imaginii respective ;
subplot (1,3,3) – a treia parte a ferestrei, alături de imaginea de intrare ;
imshow (Gamma) – în a treia parte va fi imaginea cu corecție Gamma ;
title ('Corecție Gamma') – titlul imaginii corectată Gamma, amplasat deasupra imaginii respective ;
poza = uint8(round(Gamma*255)); – pentru a converti o imagine corectată Gamma de la ‘double’ la uint8, amplificat cu 255 ;
FaceDetect = vision.CascadeObjectDetector('FrontalFaceCART'); – Model antrenat de clasificare în cascadă, specificat ca vector de caractere. ClassificationModel controlează tipul de obiect de detectat. Implicit, detectorul este configurat să detecteze fețe.
BB = step(FaceDetect,poza); – step calculează răspunsul pas cu pas al unui sistem dinamic. În cazul dat, detectează fața în imaginea filtrată ;
IFaces = insertObjectAnnotation(poza, 'rectangle', BB, 'Face'); – IFaces returnează o formă de dreptunghi și etichetă în locația specificată de poziție.
Face = imcrop (poza,BB); – decupează imaginea image în funcție de BB, care specifică dimensiunea și poziția dreptunghiului de decupare în termeni de coordonate spațiale. Imaginea tăiată include toți pixelii din imaginea de intrare care sunt complet sau parțial închiși de dreptunghi.
PozaTest = imresize (Face, [200 180]); – variabila TestImage reprezintă fața cu mărimi de 200×180 ;
figure(3) – apare o fereastră unde urmează să apară imaginile în care este arătată zona unde s-a detectat fața și o imagine unde este arătată doar fața ;
subplot (1,2,1) – fereastra în care vor apărea imaginile unde a fost detectată fața va consta din două părți ;
imshow(IFaces) – în prima parte vor fi selectate fețele detectate de aplicație ;
title('Fața selectată') – titlul imaginii în care a fost depistată fața, amplasat deasupra imaginii respective ;
subplot (1,2,2) – în a doua parte va fi imaginea doar cu fața decupată ;
imshow(PozaTest) – este reprezentată imaginea feței decupate ;
title('Fața decupată') – titlul imaginii feței, amplasat deasupra imaginii respective ;
IFaces = insertObjectAnnotation(X, 'rectangle', BB, 'Face'); – selectează fața/fețele cu o fereastră, în poza de intrare.
Rezultatele aplicației
Figura 5.2 Imagine de intrare, prezența obiectului perturbator (șapca)
Figura 5.3 Uniformizarea și filtrarea imaginii de intrare
Figura 5.4 Detecția și decuparea feței din imaginea de intrare
Observăm că aplicația a detectat corect fața persoanei din imagine. Prezența obiectului perturbator (șapca) nu a afectat în mod deosebit selecția feței. Prezența bărbiei de culoare neagră a dus la faptul că fereastra de selecție a decupat fața până la bărbie, excluzând astfel din fereastra de decupare prezența părului facial.
Figura 5.5 Imagine de intrare (mâna ridicată la nivelul capului)
Figura 5.6 Detecția și decuparea feței din imaginea de intrare
Observăm că mâna ridicată la nivelul frunții nu a afectat nici într-un fel detectarea și selecția feței. Avem aceeași situație ca și în cazul precedent (Figura 5.2).
Figura 5.7 Imagine de intrare (mâna ridicată la nivelul gurii)
Figura 5.8 Uniformizarea și filtrarea imaginii de intrare
Figura 5.9 Detecția și decuparea feței din imaginea de intrare
Mâna dusă la față nu a afectat în mod esențial detecția facială. Limita de jos a ferestrei de selecție cel mai probabil este la nivelul dat, fiindcă a perceput drept contur diferența dintre ”culoarea” degetelor mare și arătător și culoarea feței.
Figura 5.10 Imagine de intrare, predomină culorile întunecate
Figura 5.11 Uniformizarea și filtrarea imaginii de intrare
Figura 5.12 Detecția și decuparea feței din imaginea de intrare
În imaginea de intrare predomină culorile întunecate, iar luminozitatea este slabă. Însă aceste condiții nu au afectat foarte mult detecția corectă a feței. În imaginea de intrare putem observa că partea din stânga a feței este mai întunecată, deoarece persoana este luminată artificial din partea dreaptă de sus, respectiv dimensiunile ferestrei de selecție variază puțin, și nu acoperă în întregime toată fața.
Figura 5.13 Imagine de intrare, 3 maturi și un copil
Figura 5.14 Uniformizarea și filtrarea imaginii de intrare
Figura 5.15 Detecția și decuparea fețelor din imaginea de intrare
În imaginea de intrare sunt prezente 3 persoane mature și un copil. Aplicația nu a detectat fața copilului. În general, detecția facială a unui copil este mai complicată decât în cazul persoanelor mature. Acest lucru se datorează trăsăturilor mai mici, neaccentuate ale feței, în afară de aceasta, detecția și recunoașterea facială la copii este mai dificilă din cauza asemănării trăsăturilor feței cu trăsăturile faciale ale altor copii.
Figura 5.16 Imagine de intrare, lipsa detecției faciale
În cazul imaginii de mai sus, fața nu a fost detectată. Acest lucru se datorează prezenței obiectelor perturbatoare cum ar fi : ochelarii de soare, paharul de cafea, mâna ridicată la nivelul feței, fața întoarsă sub un unghi față de obiectivul camerei.
Figura 5.17 Imagine de intrare, lipsa detecției faciale
La fel ca și în cazul de mai sus, fața în imaginea dată nu a fost detectată. Acest lucru se datorează prezenței obiectului perturbator (cana).
Figura 5.18 Imagine de intrare cu mai multe persoane
Figura 5.19 Uniformizarea și filtrarea imaginii de intrare
Figura 5.20 Detecția și decuparea fețelor din imaginea de intrare
Observăm că nu toate fețele persoanelor din imagine au fost detectate. Acest lucru are la bază următoarele cauze : fața este întoarsă sub un unghi prea mare pentru a mai fi posibilă detecția feței, capul este înclinat la un unghi mai mare de 15°, fața nu este vizibilă în întregime.
Figura 5.21 Imagine de intrare, 3 copii
Figura 5.22 Uniformizarea și filtrarea imaginii de intrare
Figura 5.23 Detecția și decuparea fețelor copiilor din imaginea de intrare
Observăm că fețele care sunt lizibile au fost detectate, însă fața copilului din dreapta nu a fost detectată, trăsăturile faciale ale acestuia nu sunt văzute în întregime.
Figura 5.24 Imagine de intrare, 2 persoane (ochelari)
Figura 5.25 Uniformizarea și filtrarea imaginii de intrare
Figura 5.26 Detecția și decuparea fețelor din imaginea de intrare
În imaginea de intrare sunt prezente două persoane. Ambele fețe au asupra lor obiecte perturbatoare (ochelari), însă fereastra de selecție a feței este mai mare în cazul persoanei din dreapta. Acest lucru se datorează faptului că trăsăturile faciale sunt mai evidente, poziția capului este aproape complet verticală, acest lucru simplificând și mai mult detecția.
Concluzii
În această lucrare au fost examinate sistemele moderne de detectare a feței și au fost identificate deficiențe care reduc probabilitatea de detectare corectă. Am încercat să identific un algoritm care să rezolve problema detecției faciale indiferent de rezoluția scăzută a imaginii, de un fundal complex și de zgomotul present în imagine. În acest scop, au fost luați în considerare algoritmii pentru selectarea unei fețe într-o imagine utilizând diferite abordări, cum ar fi analiza conturului, filtrarea potrivită și pre-formarea. De asemenea, se face o prezentare generală a algoritmilor de recunoaștere existenți. Pentru a dezvolta un astfel de algoritm, trebuie de analizat comparativ toate metodele de mai sus pentru selecție și detectare, precum este și necesar de a efectua o analiză comparativă a tuturor algoritmilor de extracție și de recunoaștere pe eșantionul de imagini.
Am încercat să fac o prezentare succintă a celor mai principale abordări în domeniul detecției faciale și să le descriu pe fiecare în parte, dar mai mult m-am axat pe metoda Viola-Jones. Detecția facială din imagini digitale sau fluxuri video face parte din viața noastră de zi cu zi, ne confruntăm cu acest ”proces” tot mai des : atunci când încărcăm poze pe rețelele de socializare, atunci când facem o poză sau filmăm un video cu telefonul nostru mobil, etc. Aplicațiile de detecție și recunoaștere facial sunt incluse în sistemele de securitate, controlul accesului, verificarea identității, gaming, interacțiune evoluată om-calculator, ș.a.m.d.
Problema detecției feței în cazul oamenilor în imagini nu este una tocmai trivială, mai ales că este o varietate foarte mare de moduri în care ele pot fi percepute de un sensor 2D, luând în considerație trăsăturile faciale, particularitățile fizionomice, culoarea pielii, dimensiunea trăsăturilor/elementelor faciale, poziției, fundalul complex, luminozitatea variabilă din cauza amplasării diferite a surselor de lumină, zonele de umbră, etc. Algoritmii și sistemele nou-create încearcă să facă față respectivelor probleme, și desigur acest lucru să se producă în timp real, or sistemele de detecție facială sunt evaluate și în dependență de viteză de reacție, rata fals-pozitivă (raportări eronate ale fețelor când de fapt fețele nu sunt prezente în imagine), rata fals-negativă (atunci când aplicația nu detectează fața în imagine), care ar trebui să fie cât mai reduse, în ideal – nule. Metodele utilizate, indifent de ce tip sunt, se bazează fie pe o antrenare minuțioasă a unor clasificatoare, fie pe niște cunoștințe umane codate în listing-ul soft-urilor, fie pe o combinație între aceste 2 abordări.
Metoda Viola-Jones, începând cu anul 2001 a reprezentat o evoluție excepțională în sistemele de detectare facială, considerată ingenioasă, apreciată pentru performanță și viteza de lucru. În comparație cu alte metode, Viola-Jones nu abordează piramidal prin scalare a imaginii de intrare cu diverși factori, și nici la o analiză clasică a valorilor de intensitate a pixelilor imaginii. Metoda analizează caracteristicile locale din imagine (caracteristicile Haar), care reprezintă niște dreptunghiuri adiacente deschise și închise la culoare, având formă și dimensiuni identice între ele. Altă inovație a fost imaginea integrală care a ajutat la optimizarea lucrului procesoarelor. Viola-Jones utilizează un clasificator AdaBoost; metoda selectează cele mai discriminante caracteristici, combinate în mai multe nivele, cascade de filtru, clasificatoare AdaBoost mai puțin performante. Primele nivele include puține caracteristici, respectiv are nevoie de mai puțin timp de calcul, și elimină rapid sub-ferestrele ce nu conțin fața.
Nivelele următoare fiind mai complexe și având mai multe caracteristici analizează mai profund sub-ferestrele rămase, pentru a hotărî dacă este prezentă fața sau nu. Antrenamentul algoritmului Viola-Jones a durat săptămâni și a folosit 5000 exemple de față și 10000 exemple non-față. Învățarea propriu-zisă durează, detecția facială însă este destul de rapidă. Metoda Viola-Jones are rezultate destul de bune, fiind suficient de rapid și nu solicită prea mult puterea de calcul care este limitată, a camerelor digitale de clasă medie, astfel încât acestea să poată face față.
Bibliografie
[1] Metode de prelucrare secundară și recunoașterea imaginilor //URL: https://books.ifmo.ru/file/pdf/1798.pdf
[2] FaceVACS-DBScan //URL: http://www.cognitec.com/facevacs-dbscan-le.html
[3] FaceVACS Features //URL: http://www.cognitec.com/facevacs-videoscan.html
[4] VeriLook SDK //URL: http://www.neurotechnology.com/verilook.html
[5] Face Recognition //URL: http://www.nec.com
[6] NEC’s Neo Face Strenghts // URL: https://www.nec.com/en/global/solutions/safety/face_recognition/index.html
[7] VisionLabs //URL: https://visionlabs.ai/
[8] Face recognition // URL: https://venturebeat.com/2018/02/15/inside-chinas-growing-use-of-facial-recognition-technology/
[9] Dr Qaim Mehdi Rizvi, A Review on Face Detection Methods.
[10] G. Yang, T.S. Huang, Human Faces Detecting in complex background.
[11] C. Kotropoulos, I. Pitas, Rule-based face detection in frontal views, URL: https://pdfs.semanticscholar.org/8007/e8c4826616bbd08a15c620e660d2372778b2.pdf
[12] Рафаэл С. Гонсалес, Ричард Е. Вудс, Цифровая обработка изображений, 2012. p. 1105. Available at //URL: https://www.twirpx.com/file/2344473/
[13] Красильников Н. Н., Цифровая обработка 2D и 3D изображений, 2011. p. 599
Available at //URL: https://www.twirpx.com/file/1468497/
[14] Кухарев, Г. А., Биометрические системы : Методы и средства идентификации личности человека. – СПб: Политехника, 2001. p. 240
[15] Paul Viola, Michael J. Jones, Robust real-time face detection. Kluwer Academic Publishers, May 2004. Volume 57, Issue 2., p. 137 – 154
[16] Татаренков Дмитрий Александрович, Анализ методов обнаружения лиц на изображении. – Молодой ученый, № 4(84), 2015, Часть 3. p. 270 – 276. Available at //URL: https://moluch.ru/archive/84/
[17] Paul Viola, Michael J. Jones, Rapid Object Detection using a Boosted Cascade of Simple Features, 2001. p. 511 – 518.
[18] Вязовых М.В., Зайцев К.И., Мухортов М.В., Перов А.Н., Обнаружение лиц на цветном растровом изображении с применением модифицированного метода Виолы-Джонса,//URL:http://docplayer.ru/25925486-Obnaruzhenie-lic-na-cvetnom-rastrovom-izobrazhenii-s-primeneniem-modificirovannogo-metoda-violy-dzhonsa.html
[19] Yoav Freund, Robert E. Schapire, A Short Introduction to Boosting, Journal of Japanese Society for Artificial Intelligence, 1999, Volum 14, Issue 5, p. 771 – 780.
[20] Jan Sochman, Jiri Matas, AdaBoost. //URL: http://cmp.felk.cvut.cz/~sochmj1/adaboost_talk.pdf
[21] Face Detection of African Origin People and Newborn Infants // URL: http://www.ijcttjournal.org/2017/Volume51/number-2/IJCTT-V51P112.pdf
[22] А.А. Лукьяница, А.Г. Шишкин, Цифровая обработка видеоизображений, Издательство «Ай-Эс-Эс Пресс», Москва 2009, p.519 //URL: https://www.twirpx.com/file/662337/grant/
[23] Clasificarea și regresia folosind metoda arborilor de decizie //URL: https://habr.com/post/116385/
[24] Приоров А. Л., Цифровая обработка изображений : учебное пособие, Ярославль:ЯрГу, 2007, p. 235. //URL: https://www.twirpx.com/file/1099863/
[25] YUV Colorspace //URL: http://softpixel.com/~cwright/programming/colorspace/yuv/
[26] Conversion to/from RGB // URL: https://en.wikipedia.org/wiki/YUV#Conversion_to/from_RGB
ANEXA 1
>> clear all
>> TestDatabasePath = uigetdir('D:\image', 'Alege folder-ul');
>> prompt = {'Alege poza :'};
>> dlg_title = 'Imaginea originală';
>> num_lines= 1;
>> def = {'11'};
>> Poza = inputdlg(prompt,dlg_title,num_lines,def);
>> Poza = strcat(TestDatabasePath,'\',char(Poza),'.jpg');
>> X = imread(Poza);
>> [m, n, r] = size(X); % m – înălțimea n – lățimea
>> X_2 = imresize (X, [480 640]);
>> if(size(X_2,3)>1)
for i=1:size(X_2,1)
for j=1:size(X_2,2)
GrayImg(i,j)=0.2989*X_2(i,j,1)+0.5870*X_2(i,j,2)+0.1140*X_2(i,j,3);
end
end
end
>> figure(1)
>> subplot(1,2,1)
>> imshow(X)
>> title ('Imaginea de intrare')
>> subplot(1,2,2)
>> imshow(GrayImg)
>> title('Imaginea bitonală')
>> Noise = imnoise(GrayImg, 'gaussian',0,0.0008 );
>> Med = medfilt2(Noise,[3 3]);% Filtrul median
>> Y = double(Med)/255;
>> Y = Y+0.03*randn(size(Y));
>> Y(Y<0) = 0; Y(Y>1) = 1;
>> z = 5; % semi-lățime
>> sigma = [2 0.1]; % deviație standard
>> bfltfilter = bfilter2(Y,z,sigma);
>> Gamma = histeq(bfltfilter,20);
>> figure(2)
>> subplot(1,3,1)
>> imshow (Noise)
>> title ('Imaginea cu zgomot')
>> subplot(1,3,2)
>> imshow(bfltfilter)
>> title ('Imaginea filtrată')
>> subplot(1,3,3)
>> imshow (Gamma)
>> title ('Corecție Gamma')
>> poza=uint8(round(Gamma*255));
>> FaceDetect = vision.CascadeObjectDetector('FrontalFaceCART');
>> BB = step(FaceDetect,poza);
>> IFaces = insertObjectAnnotation(poza, 'rectangle', BB, 'Face');
>> figure(3)
>> imshow(IFaces)
>> Face = imcrop (poza,BB);
>> PozaTest = imresize (Face, [200 180]);
>> figure(4)
>> subplot(1,2,1)
>> imshow(IFaces)
>> title('Fața selectată')
>> subplot(1,2,2)
>> imshow(PozaTest)
>> title('Fața decupată')
>> FaceDetect = vision.CascadeObjectDetector('FrontalFaceCART');
>> BB=step(FaceDetect,X);
>> IFaces = insertObjectAnnotation(X, 'rectangle', BB, 'Face');
>> figure(5)
>> imshow(IFaces)
>> title('Selectarea feței/fețelor din poza de intrare')
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: Procesul de recunoaștere facială dintr-o imagine [305279] (ID: 305279)
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.
