SPECIALIZAREA INGINERIE ECONOMICĂ ÎN DOMENIUL ELECTRIC, ELECTRONIC ȘI ENERGETIC [307818]

[anonimizat], ELECTRONIC ȘI ENERGETIC

Proiect de diplomă

Dezvoltarea și promovarea unui sistem automat de detecție a [anonimizat]. Ruxandra ȚAPU

Conf. Dr. Ec. Corina DUMITRESCU

Student: [anonimizat]

2018

Introducere

Capitolul 1. Inițiere în detecția facială

1.1. Biometria

Biometria reprezintă o ramură a biologiei care se ocupă cu studiul metodelor necesare recunoașterii unice a persoanelor pe baza anumitor caracteristici. Potrivit opiniei Grupului de Lucru pentru protecția datelor din Articolul 29, Avizul 4/2007 [anonimizat], [anonimizat], atât trăsături cât și/[anonimizat] a acestora implică un anumit grad de probabilitate.

Biometria s-a dezvoltat în principal cu rolul de a [anonimizat], recunoașterea irisului/retinei, [anonimizat] a feței necesar pentru recunoașterea facială.

1.2. [anonimizat]. Prima funcție are rolul de a autentifica utilizatorii legitimi în faza de incipit cu ajutorul unor instrumente (smartcard, username, ID number etc.), iar cea de-a doua are rolul de a autentifica utilizatorii cu ajutorul datelor biometrice comparate cu informațiile deja existente în baza de date. În acest ultim caz utilizatorul este acceptat în sistem dacă este îndeplinită o [anonimizat].

Implementarea unui sistem biometric cu o potrivire de 100% la fiecare comparare între datele biometrice prezente și informațiile de referință ce sunt stocate în baza de date nu este posibilă din cauza faptului că rezultatele măsurărilor parametrilor obținuți din procesarea datelor biometrice nu sunt niciodată aceleași. Dacă ar exista o acuratețe de 100%, prin urmare ar însemna că utilizatorii ar fi respinși tot timpul. Din acest motiv este permisă o variabilitate cuprinsă între 0,1% și 1% tocmai pentru a nu se întâmpla cazul anterior. Cu cât este permisă o [anonimizat]. Astfel, [anonimizat].

Astfel, detecția automată a [anonimizat], o [anonimizat]-calculator. [anonimizat] în imagine a persoanelor asupra cărora a fost îndreptat obiectivul camerei respective. Aceast lucru se întâmplă pentru că localizarea automată permite o încadrare și o stabilire automată a parametrilor de focalizare mai bună. Din acest motiv fețele persoanelor respective prezintă o expunere corectă prin comparație cu restul cadrului.

Deși pare ușor pentru ochiul uman să detecteze fețele umane, pentru sistemul automat de detecție a fețelor intervin mai multe elemente și astfel este o sarcină mai dificilă deoarece există moduri infinite în care pot fi surprinse figurile umane în imagini și nu din pricina trăsăturilor fizionomice variate de la caz la caz, ci mai ales din cauza varietății acestora în modul în care sunt percepute în 2D. Pot exista influențe datorate poziției efective în imagine, dar și a efectelor provocate de poziția luminii și a umbrelor.

Performanța sistemelor de detectare facială este atinsă de două componente: rata fals-pozitivelor (probabilitatea ca sistemul să declare o reușită de potrivire a fețelor în cazul în care în imaginea analizată nu erau prezente aceleași caracteristici biometrice ca în baza de date) și rata fals-negativelor (probabilitatea ca sistemul să nu declare o reușită de potrivire a fețelor deși în imaginea analizată erau prezente aceleași caracteristici biometrice ca în baza de date). Este de preferat ca aceste componente să tindă spre zero pentru ca sistemul de detecție să fie cât mai fiabil și robust.

Așa cum ființele umane se pot înșela cu privire la existența într-o imagine 2D a unei figuri umane care în realitate nu este prezentă acolo, la fel și algoritmii metodelor de detectare facială pot transmite erori în anumite condiții. Fenomenul acesta este numit pareidolia și presupune recunoașterea cu un ritm alert de către creierul uman a unor chipuri sau trupuri umane, acestea fiind doar o iluzie, neexistând în realitate. Deci, există o probabilitate ca și sistemele de detecție facială să fie păcălite de astfel de situații, motiv pentru care se justifică, așa cum am mai relatat, existența ratei fals-pozitivelor.

Trebuie menționat faptul că dificultatea detectării faciale în imagini se poate datora și trăsăturilor fizionomice (aflate în proces de modificare odată cu trecerea timpului), culorii, poziției în cadrul imaginii, fundalului complex, dar și zonelor de lumină și umbră determinate de poziția sursei/surselor de lumină, știindu-se că fețele au trăsături complexe și prezintă caracteristici diferite de la o față la alta. Din acest motiv își pot face prezența mai multe sau mai puține erori. Sistemul implementat prezintă astfel o acuratețe ce depinde direct proporțional de toate influențele apărute. De exemplu, formatul video definește rezoluția camerelor de supraveghere, ceea ce admite detalii de o calitate mai bună dacă rezoluția camerei este superioară. În caz contrar, pierderea anumitor detalii poate duce la ratarea unor descriptori vizuali decisivi pentru detectarea facială a unei persoane. Un alt exemplu îl constituie unghiul din care este capturată imaginea persoanei analizate deoarece cea mai bună detecție este realizată din plan frontal. În acest mod nu pot interacționa și alte influențe precum umbrele apărute ca efect al unei iluminări laterale, dar pot exista erori dacă fundalul este mult prea complex și cu mai multe surse de lumină. Astfel, toți acești factori prezintă un rol decisiv în dificultatea funcționării sistemului de detecție facială.

Cu toate că biometria este înglobată în soluții de securitate națională, ea este prezentă și în alte domenii care conturează un avantaj pentru o identificare corectă și utilă. Se poate spori în acest sens și siguranța personală deoarece datele biometrice nu pot fi copiate la fel de ușor ca, de exemplu, un cod PIN. Deși cadrul tehnic nu se află într-o stare perfectă, înțelegerea și acceptarea acestui sistem de detecție facială exprimă o utilitate atât pentru subiecții umani, cât și pentru organizații, întocmind baza unui progres prompt spre îndeplinirea așteptărilor societății.

Capitolul 2. Domeniul detecției faciale

2.1. Tehnici de detecție facială

Un sistem de analiză facială automată are întotdeauna ca primă etapă detecția facială, motiv pentru care este necesar ca acesta să fie implementat cât mai corect și concret, întrucât o eroare în prima etapă se va propaga de-a lungul întregului proces.

Tehnicile de detecție a fețelor umane sunt următoarele [1]:

Găsirea fețelor în imagini cu fundal controlat, în cadrul căreia sunt utilizate numai imagini cu fundal monocolor sau cu fundal static predefinit. Încadrarea feței este asigurată cu succes dacă fundalul se află în plan depărtat;

Găsirea fețelor după culoare, în cadrul căreia se regăsesc atât avantaje, cât și dezavantaje. În cazul în care baza de date cuprinde imagini color, segmentele feței pot fi detectate cu ajutorul culorii definitorii a pielii. Metoda aceasta nu este potrivită pentru toate nuanțele de piele și nu este suficient de puternică dacă lumina variază, fapt ce este considerat un dezavantaj. Pe de altă parte, orientarea și dimensiunea fețelor nu presupune limitări, ceea ce este considerat un avantaj deoarece algoritmul poate tolera fundalurile complexe;

Găsirea fețelor după mișcare, ce presupune calculul zonei de mișcare pentru aflarea segmentului de față vizat. Datorită faptului că dinamismul este continuu mereu, detecția fețelor se realizează în timp real. O acțiune caracteristică a feței este clipitul. Identificarea unui tipar de clipiri într-o serie de imagini ajută la detectarea prezenței unei fețe, datorită faptului că ochii sunt dispuși simetric, amândoi executând acțiunea de clipire simultan. Astfel, fiecare imagine este scăzută din cea precedentă determinându-se limitele pixelilor deplasați;

Utilizarea unei combinații între tehnicile de mai sus, ce presupune atingerea unui rezultat mai bun prin combinarea mai multor tehnici. De exemplu se poate utiliza găsirea fețelor după culoare în imagini cu fundal controlat pentru o precizie și mai mare cu privire la detecția facială;

Găsirea fețelor în medii necondiționate, ce presupune existența celei mai complicate metode datorită detecției fețelor umane în orice mediu.

2.2. Metode de detecție facială

Metodele de detecție facială sunt împărțite pe categorii după cum urmează, în Tabelul 2.1. fiind prezentate [2]:

Metodă bazată pe cunoștințe, ce presupune analizarea caracteristicilor locale ale feței, precum nasul, ochii, gura și dispunerea spațială dintre acestea. Sunt astfel utilizate dimensiunea, dar și poziția relativă a componentelor importante ale imaginilor. Această abordare nu este eficientă deoarece dacă normele propuse sunt prea stricte, sistemul nu va permite detectarea fețelor care nu trec aceste norme, iar dacă normele sunt prea vagi, descrise la modul general, rata fals-pozitiv va avea o valoarea prea mare. Nu funcționează la parametri mari pentru că pe de o parte pot varia condițiile de iluminare, iar pe de altă parte poate varia și unghiul din care este capturată imaginea, ceea ce presupune că sistemul nu va detecta fețele în mod corect;

Metoda caracteristicilor invariabile, ce presupune detectarea caracteristicilor structurale comune indiferent de iluminare sau poziția capului subiectului în imagine. Metodele bazate pe această abordare funcționează după Analiza Componentelor Principale (PCA). De exemplu, pentru imaginile color este recomandată utilizarea culorii pielii ca un prim element de detecție a posibililor subiecți deoarece se realizează mai rapid și corect la schimbarea orientării capului subiectului, umbrire sau fundal complex. Nu este eficientă această abordare în momentul în care imaginea analizată prezintă artefacte proeminente;

Metoda potrivirii șabloanelor, ce presupune combinația de puncte de caracter (ochii, nasul, gura) și chiar întreaga caracteristică. Astfel, caracteristicile faciale umane au un rol foarte important în recunoașterea feței. Cele mai importante astfel de caracteristici sunt ochii, nasul și gura. Această abordare este sensibilă la scalare și la variația formei și poziției în imagine;

Metoda bazată pe aspect, ce presupune utilizarea unor modele ce conțin diferite tipuri de variații utile pentru detectarea unei fețe sau non-fețe. Cele mai utilizate metode ce utilizează această abordare sunt: eigenfaces, Analiza Discriminatorie Liniară (LDA – Linear Discriminant Analysis), Modelele Markov Ascunse (HMM – Hidden Markov Model ), dar și rețelele neurale.

Tabelul 2.1. Clasificarea metodelor pentru detectarea feței într-o singură imagine

Sursa: “Detecting Faces in Images: A Survey”, pagina 3

2.3. Mod de funcționare a detecției faciale

Identificarea unei ființe umane se realizează nu numai prin actele de identitate oficiale pe care le deține, ci și printr-un set de caracteristici intrinseci utile pentru implementarea sistemelor biometrice capabile să recunoască sau să valideze existența certă a identității unei ființe umane. Astfel, metodele biometrice dispun de mai multe avantaje printre care și imposibilitatea transferului de date personale altor ființe umane, deoarece caracteristicile biometrice sunt în strânsă legătură cu deținătorul, comparativ cu momentul în care o parolă sau cod este comunicată unei alte persoane pentru ca aceasta să poată utiliza parola respectivă în același mod ca și proprietarul de drept.

În prezent este necesară existența unui cod PIN (Personal Identification Number) pentru a avea acces la un ATM (Automated Teller Machine) ce permite utilizatorilor să efectueze anumite tipuri de operațiuni financiare, o parolă pentru autentificarea la un computer, o parolă pentru utilizarea internetului, a conturilor personale, a e-mailurilor [20]. Toate acestea reprezintă un cod ce are caracter confidențial pentru accesarea unui sistem sau serviciu de către ființele umane. Aceste coduri, dar și identificarea personală biometrică prin analiza amprentelor digitale sau scanarea retinei sau a irisului presupun cooperarea participantului, pe când realizarea detectării fețelor în timp real are loc, în principiu, fără luarea la cunoștință a ființelor umane, deci fără o cooperare a acestora.

Este impresionantă capacitatea umană de a recunoaște chiar și după mulți ani o multitudine de fețe învățate de-a lungul vieții. Conform studiilor de reamintire a feței, oamenii se axează mai repede pe caracteristici mai puțin obișnuite, cum ar fi un nas strâmb, urechi de dimensiuni mai mari, ochi mai proeminenți, bărbie ascuțită, păr colorat neobișnuit etc. Din acest motiv rolul esteticului este deosebit de important, deoarece cu cât sunt mai frumoase sau atractive fețele, cu atât există o rată de recunoaștere mai mare a acestora de către celelalte persoane.

Domeniul detecției faciale cuprinde o arie destul de largă de acțiune. În pofida informațiilor restricționate și a faptului că nu s-au realizat extrem de multe descoperiri ca în alte domenii, detecția facială reprezintă un apogeu, un punct de plecare spre rezolvarea unor probleme posibil apărute din neant. De exemplu, organele de poliție își pot îndeplini misiunea prinderii infractorilor cu un plus de ajutor dat de detecția facială, deoarece, așa cum se relatează și în anumite filme, părțile negative încearcă să își ascundă identitatea. În cazul de față, detecția facială presupune recunoașterea fețelor umane chiar dacă acestea și-au modificat culoarea sau lungimea părului, întocmirea unui act fals neajutând infractorul care este, cel mai probabil, urmărit pe camerele de supraveghere.

Cu pași mici dar siguri, detecția facială a început să acapareze piața și în zilele noastre prin introducerea acesteia în dispozitivele utilizate cel mai des de populație (laptopuri, tablete, telefoane etc.) tocmai pentru a începe să se ramifice. Această ramificare denotă faptul că tehnologia evoluează din ce în ce mai repede și așa cum plata POS încă se poate face prin ambele modalități, se urmărește stabilirea doar a părții biometrice, la fel și biometria începe să fie cât mai prezentă zi de zi. Astfel, se poate ajunge la momentul în care plățile efectuate cu un card bancar să fie realizate doar prin detecție facială pentru a se diminua infracțiunile, așa cum deja s-a implementat în China. Deoarece se preferă o securitate a datelor cât mai crescută în ultimul timp, biometria și, implicit, detecția facială, sunt o metodă eficientă pentru acest scop deoarece datele biometrice sunt unice și netransmisibile.

Astfel, pentru un sistem automat de detecție facială, după ce este detectată o față, sarcina de extracție a descriptorilor vizuali se realizează pentru a obține caracteristici introduse într-un sistem de clasificare. În funcție de tipul sistemului, caracteristicile pot fi caracteristici locale precum detaliile fine ale feței sau caracteristici faciale precum nasul, ochii, urechile, gura etc. Dacă imaginile analizate poartă o calitate scăzută sunt afectate informațiile spațiale, acest lucru putând duce la o detecție incorectă a fețelor umane.

Detectarea feței este declarată reușită doar dacă prezența și localizarea unei fețe sunt identificate corect. Dacă locațiile caracteristicilor faciale cheie precum nasul, ochii sau gura nu sunt suficient de clare de la bun început, este vizibilă o degradare în performanța recunoașterii.

Mai jos, în Figura 2.1.a, este prezentat un exemplu de detecție facială realizată incorect deoarece fața nu este încadrată în totalitate în cadranul roșu, ci doar o parte, în comparație în Figura 2.1.b detecția facială este realizată corect deoarece a fost încadrată toată fața în cadranul roșu, motiv pentru care nu pot să apară erori.

a. Detecție facială incorectă b. Detecție facială corectă

Figura 2.1. Modul de realizare al detecției faciale incorectă (a) și corectă (b)

2.4. Metoda Viola-Jones

De-a lungul timpului au fost dezvoltate numeroase tehnici de detecție facială cu diverse grade de complexitate, cea mai cunoscută și utilizată metodă fiind Viola-Jones, utilizată și în cadrul lucrării de față.

Metoda Viola-Jones a fost publicată în anul 2001 de către Paul Viola și Michael Jones și este primul algoritm de detecție facială în timp real, algoritmul dezvoltat de aceștia numindu-se Haar Clasifiers pentru o detecție mai accelerată a fețelor umane, aceștia introducând conceptul inovativ prin care nu se încearcă analizarea directă a imaginii în sine, ci anumite “caracteristici” dreptunghiulare cu tentă închisă și deschisă, de formă și dimensiuni identice între ele, metoda oferind astfel o viteză remarcabilă și o rată de până la 95% de acuratețe.

Metoda utilizează caracteristici de tip Haar și algoritmul de învățare AdaBoost (Adaptive Boosting) cu ajutorul căruia detaliile sunt restrânse doar la o singură caracteristică pentru o implementare mai ușoară și cu efecte ridicate. În acest mod, algoritmul AdaBoost este util pentru îmbunătățirea performanței, fiind adaptabil în sensul că optimizează situațiile mai puțin favorabile în care clasificatorii au fost identificați în mod incorect. Cu toate acestea, este destul de sensibil dacă apar valori mult prea mari și situații echivoce.

2.4.1. Clasificatori de tip cascadă bazați pe caracteristici Haar

Caracteristicile Haar, ce au primit denumirea matematicianului ungur Alfred Haar, sunt funcții puternice care diferențiază regimurile învecinate și au proprietatea conform căreia valoarea funcției este neschimbată cu modificarea dimensiunii. Acestea se calculează ținând cont de variațiile sumelor valorilor pixelilor în raport cu un dreptunghi învecinat.

Pentru început, dacă imaginea analizată este una color, ea este transformată într-o imagine cu niveluri de gri unde se regăsesc doar nivelurile de luminanță (ce codează intensitatea luminoasă pentru fiecare pixel) dar nu și cele de crominanță deoarece informația cu privire la culoare este neglijată. Acest lucru atribuie metodei o generalitate, relația utilizată pentru fiecare pixel de forma al imaginii fiind:

(2.1.)

,unde valorile R, G, B sunt componentele ce corespund celor trei culori primare de roșu, verde și albastru ale valorii respectivului pixel în spațiul RGB utilizat frecvent în reprezentarea digitală a imaginilor color, valorile fiind cuprinse între 0 și 255, deoarece fiecare componentă este cuantizată pe opt biți. La o scală mică pentru identificarea unei fețe (24×24 pixeli) este prezent un set de 160.000 de trăsături dreptunghiulare.

Tipurile de caracteristici utilizate sunt prezentate în Figura 2.2. unde regăsim caracteristici cu două dreptunghiuri (A) și (B), o caracteristică cu trei dreptunghiuri (C) și o caracteristică cu 4 dreptunghiuri (D) prezentate în raport cu fereastra de detectare.

Figura 2.2. Tipuri de caracteristici Haar folosite de Viola-Jones

Blocurile au aceeași dimensiune și formă și sunt adiacente orizontal sau vertical. Suma pixelilor care se află în interiorul dreptunghiurilor albe sunt scăzute din suma pixelilor din dreptunghiurile cu tentă mai întunecată. Astfel, valoarea unei caracteristici cu două dreptunghiuri este diferența dintre suma pixelilor din interiorul a două blocuri ce compun caracteristica respectivă. Valoarea unei caracteristici cu trei dreptunghiuri este suma pixelilor din două dreptunghiuri exterioare scăzute din suma pixelilor din dreptunghiul central. Pentru aceste caracteristici cu trei dreptunghiuri suma pixelilor din dreptunghiul cu tentă mai întunecată este înmulțită cu 2 pentru a exprima de două ori mai mulți pixeli calitativi. Valoarea unei caracteristici cu patru dreptunghiuri este dată de diferența dintre perechile diagonale de dreptunghiuri. [21][22]

Aceste caracteristici efectuează căutări succesive de-a lungul subferestrelor imaginii originale calculând o valoare utilă pentru identificarea unei fețe umane. Scopul tuturor caracteristicilor prezentate este ca în final să producă un lot de trăsături capabile să detecteze fețe umane.

2.4.2. Clasificatori de tip cascadă bazați pe caracteristici LBP

Pe lângă caracteristicile Haar prezentate mai există și caracteristicile LBP (Local Binary Pattern) ce sunt incluse în librăria OpenCv, dar nu sunt dezvoltate tot de către Viola-Jones. Algoritmul de extragere efectivă a trăsăturilor LBP constă în împărțirea imaginii analizate în mai multe cadre, fiind parcurși toți pixelii din cadrul respectiv cu scopul de a dobândi valoarea pixelilor acestora. Unele dintre aceste caracteristici conțin mai multe informații decât celelalte.

De exemplu 00000000 și 11111111 conțin 0 tranziții, în timp ce 00000110 și 01111110 conțin 2 tranziții și așa mai departe. O acumulare de mai mult de 2 tranziții într-un singur lot produce o caracteristică LBP.

Pentru fiecare pixel analizat se cercetează valorile pixelilor vecini pentru a se putea atribui valoarea 1 în cazul în care valoarea pixelului vecin este mai mare decât pixelul analizat sau valoarea 0 dacă valoarea pixelului vecin este mai mică decât pixelul analizat. Examinarea pixelilor vecini se realizează ori în sensul acelor de ceasornic, ori în sensul invers al acestora, rezultând o succesiune de 8 elemente convertite ulterior într-un număr zecimal ce redă noua valoare a pixelului central. [23] Un exemplu de astfel de proces este elaborat în Figura 2.3.

(10000101)2 = 133

Model Prag Tipar

Figura 2.3. Proces extragere trăsături LBP

După cum se poate observa în modelul din Figura 2.3. pixelul supus analizei este cel central. Astfel, pixelii vecini sunt comparați cu pixelul central. În urma comparației, fiecărui pixel i se atribuie câte o valoare ce este înregistrată în tabelul aferent pragului, rezultând în cele din urmă valoarea binară și zecimală pentru tipar.

Proprietățile cele mai importante ale caracteristicilor LBP sunt reprezentate de toleranța lor față de schimbările de iluminare monotonă și ușurința implementării acestora.

LBPH (Local Binary Patterns Histograms), așa cum sugerează și numele, este bazat pe realizarea de tipuri de histograme. Aceastea sunt formate din trei dimensiuni: înălțime, coordonata x și coordonata y localizată, imaginea fiind descrisă pe 3 niveluri:

Primul nivel cuprinde informațiile la nivel de pixel care sunt ulterior cumulate la nivel de regiune;

Al doilea nivel cuprinde informația regională descoperită la primul nivel;

Al treilea nivel cuprinde informația globală asupra imaginii cu privire la histogramele pe regiuni conexate.

Se analizează intensitatea pixelilor vecini pe un anumit spațiu pentru fiecare pixel din imagine cu scopul de a determina cât de strălucitori sau întunecați sunt aceștia. [23]

Fiecare pas prezentat mai sus are ca urmare crearea unei histograme pentru ca la final, după ce au fost analizate toate cadrele, toate histogramele din fiecare rezultat să fie conexate, informația necesară unei viitoare clasificări fiind integrată doar într-o histogramă spațială cumulativă cu o caracteristică mai precisă. Această histogramă cumulativă are rolul de a descrie forma generală a unei fețe în imaginea cercetată. LBPH este utilizat în special pentru că susține actualizările în timp real.

Comparativ cu metoda caracteristicilor Haar, LBP este o metodă foarte rapidă, fără o cantitate complexă și multiplă de calcule, însă prezintă o acuratețe mai scăzută decât cea a caracteristicilor Haar.

2.4.3. Imaginea integrală

Paul Viola și Michael Jones au mai introdus noțiunea de imagine integrală, pentru a se putea extrage trăsăturile dintr-o anumită regiune și nu din toată imaginea (ROI- Region Of Interest). Imaginea de intrare este transformată într-o imagine integrală, fiecare punct primind valoarea sumei tuturor pixelilor din imaginea originală situați deasupra și la stânga coordonatelor punctului respectiv. Acest lucru reduce volumul de operații deoarece se utilizează doar patru puncte de referință (cele din colțurile figurii) pentru o singură regiune dreptunghiulară, așa cum se observă și în Figura 2.4. [24]

Figura 2.4. Calculul sumei dintr-o regiune dreptunghiulară a imaginii originale utilizându-se valorile punctelor din imaginea integrală

Sursa: “Rapid object detection using a boosted cascade of simple features”, pagina 3

Suma pixelilor din cadrul dreptunghiului D este calculată, așa cum am amintit mai sus, doar cu ajutorul a patru puncte de referință. Astfel, valoarea imaginii integrate în punctul 1 este suma pixelilor din dreptunghiul A, valoarea imaginii integrate în punctul 2 este reprezentată de suma A+B, valoarea imaginii integrate în punctul 3 este reprezentată de suma A+C, iar valoarea imaginii integrate în locația 4 este reprezentată de suma A+B+C+D [21]. În concluzie, suma pixelilor din cadrul dreptunghiului D poate fi calculată ca 4+1-(2+3) după cum urmează:

(2.2.)

Formula ce stă la baza acestui concept este următoarea:

(2.3.)

, unde este imaginea integrală, iar reprezintă imaginea originală.

(2.4.)

(2.5.)

, unde este suma rândului cumulativ, cu convențiile și .

Pentru calcularea sumei tuturor pixelilor din dreptunghiul ABCD din imaginea originală se utilizează numai valorile punctelor A, B, C și D corespondente din imaginea integrală, astfel: [24]

(2.6.)

2.4.4. Algoritmul AdaBoost

Algoritmul AdaBoost reprezintă o tehnică de Inteligență Artificială (I.A.) prin intermediul căreia orice algoritm de clasificare slab poate fi transformat într-un clasificator puternic. Inițial se primește un set de antrenament de imagini negative și pozitive și trăsături pe baza cărora se clădește un clasificator puternic datorită clasificatorilor slabi și se emit ponderi. Ponderile mici sunt reprezentate de clasificatorii slabi, pe când ponderile mari sunt reprezentate de clasificatorii puternici. Astfel, după efectuarea calculelor aferente se decide dacă imaginea detectată conține o față sau o non-față. Întrucât orice trăsătură este considerată a fi un potențial clasificator slab, aceasta este redat matematic conform formulei de mai jos:

(2.7.)

,unde x este o subfereastră de 24×24 pixeli, f este trăsătura aplicată, p este polaritatea, iar este pragul care decide dacă x este pozitiv sau negativ. [21]

Implementarea acestui algoritm are rolul benefic de a elimina elementele nefolositoare (non-fețele) și a utiliza doar un clasificator ce poate recunoaște fețele umane până la o proporție de 100%.

2.4.5. Cascada de clasificatori Viola-Jones

Deoarece un singur clasificator pentru detecția facială ar avea nevoie de o cantitate mare de caracteristici, Viola și Jones au sesizat că acest lucru ar încetini procesul efectuat în timp real, motiv pentru care au propus așa numita “cascadă atențională” de clasificatori pentru a eficientiza procesul, cascadă detaliată în Figura 2.5..

Non-față

Față

Subfereastră

analizată Non-față

Față

Non-față

Față

Non-față

Față

Figura 2.5. Schema de funcționare a cascadei de clasificatori Viola-Jones

Dacă se trece cu succes de primul clasificator al subferestrei imaginii orginale, atunci se testează și cel de-al doilea și așa mai departe. În caz contrar, dacă nu se trece de un anumit nivel în cadrul unui test, fereastra este respinsă și nu poate fi identificată o față. Începând cu cel de-al doilea clasificator timpul de execuție crește considerabil deoarece există mai multe caracteristici identificându-se un grad de complexitate ridicat. Eficientizarea își face locul în ideea conform căreia ferestrele respinse nu mai sunt luate în considerare, clasificatorii ce succed aceste etape ocupându-se doar de imaginile din lanț ce pot conduce la identificarea unei fețe umane. [21][22]

Sunt puse în prim-plan două componente decisive pentru existența unor sisteme de detecție susceptibile de un randament ridicat, și anume rata fals-pozitivelor ce ilustrează raportările false cu privire la prezența unor fețe ce nu există în realitate în cadrul regiunilor din imaginile vizate și rata fals- negativelor ce cuprinde eșecurile cu privire la regiunile imaginilor ce conțineau în realitate o față, dar au fost omise.

Toate acestea au rolul ca la final să se realizeze o optimizare prin care timpul de calcul este redus considerabil, iar rezultatele permit o detecție facială mai precisă.

Cascada de clasificatori prezentată este destul de ușor de descifrat și de înțeles, fiind suficient de omogenă în structură, strategie ce exprimă decizia conform căreia este prezentă sau nu o față în imaginea analizată.

Această metodă produce rezultate foarte bune, suficient de rapid, în condițiile în care învățarea este lentă, dar detecția este foarte rapidă.

Impedimentele ce pot apărea în cadrul implementării unei astfel de metode sunt strâns legate de poziția efectivă în imagine a persoanei, acoperirea parțială a feței, fundalul complex, elementele ce pot apărea imprevizibil, dar și intensitatea luminii și a umbrelor determinate de poziția sursei/surselor de lumină.

Detecția feței este puternic influențată de expresie, de prezența sau absența elementelor structurale precum ochelari, mustață, barbă, dar și de transformările apărute în timp și marcate de efectul de îmbătrânire, fapt ce presupune un efort în plus pentru sistemul implementat și o viteză de operare mai mare.

2.5. Mod de funcționare a recunoașterii faciale

Recunoașterea facială este o tehnică biometrică care se ocupă cu determinarea locației și a dimensiunilor fețelor umane în diferite imagini, ignorând orice altceva, cum ar fi copaci, clădiri sau corpuri.

În comparație cu alte tehnici biometrice, recunoașterea facială deține privilegiul de a fi o metodă ce nu este agresivă, informațiile necesare implementării putând fi procurate fără un contact direct cu persoana implicată în analiză.

Un sistem de recunoaștere facială poate fi privit ca un sistem bazat pe imaginea statică a feței unui individ (o fotografie) care este un set de pixeli ordonați după un anumit model, pixelul fiind cea mai mică unitate ce reprezintă digital imaginea. [25]

Sistemul de recunoaștere facială nu percepe chipul unui individ asemenea oamenilor, ci îl percepe ca pe o mulțime de pixeli alăturați. Un astfel de sistem este detaliat în Figura 2.6.

Detecție Recunoaștere

facială facială

“Baciu Mirela”

Figura 2.6. Procesul de identificare a fețelor umane

Denumirea de pixel provine din combinația cuvintelor PICture ELements. Un pixel este de altfel și o combinație de roșu, verde și albastru, culori cu ajutorul cărora putem reprezenta toate culorile. Un număr mare de pixeli mici determină o claritate mult mai mare a imaginii și aproape de realitate pentru percepția ochiului uman. [26]

Informațiile biometrice nu pot fi uitate, pierdute sau furate, așa cum s-ar putea întâmpla cu documentele oficiale sau alte lucruri personale pe care persoana în cauză le poate deține. Acestea sunt diferite de la individ la individ, neexistând două persoane cu informații biometrice identice, fapt ce este benefic de exemplu în momentul autentificării la un ATM cu recunoaștere facială pentru o securitate de nivel înalt a posesorilor de carduri.

Câteva aplicații specifice de recunoaștere a feței se identifică în mai multe domenii, precum securitatea informațiilor (conectarea la dispozitivul personal, securitatea aplicațiilor, criptarea fișierelor, securitatea bazei de date), securitatea și aplicarea legii (supraveghere video avansată, control CCTV (Closed-Circuit Television), răpirea persoanelor, urmărirea și investigarea suspecților), divertismentul (jocuri video, interacțiunea om-robot, interacțiunea om-calculator). [20]

În zilele noastre recunoașterea facială este utilizată în domenii cu aplicații vaste, una dintre acestea fiind Snapchat, o aplicație mobilă de divertisment ce folosește recunoașterea facială pentru detectarea feței unei persoane. Astfel pot avea loc modificări ale imaginilor datorită filtrelor existente cu ajutorul cărora două persoane își pot schimba fețele sau pot crea diverse filmulețe sau poze cu filtre aplicate în timp real. O altă aplicație ce utilizează recunoașterea facială este renumita rețea de socializare Facebook ce sugerează în momentul încărcării unei poze pe această rețea posibilele nume de persoane din fotografie datorită acestui sistem de recunoaștere facială.

Recunoașterea facială se efectuează prin utilizarea unei baze de date în cadrul căreia se regăsesc disponibile informații privind rasa, vârsta, sexul sau expresia facială a subiecților. Sistemul analizează un număr mic de caracteristici vizuale critice dintr-o mulțime de caracteristici potențiale și verifică caracteristicile feței detectate având rolul de a confirma sau infirma identitatea declarată la intrare.

De la începutul anilor 1990, interesul cercetării în FRT (Facial Recognition Test) a crescut considerabil, în ultimii 15 ani cercetarea axându-se pe modul de recunoaștere a feței prin sisteme automate ce localizează fața într-o imagine sau clip video și extrage caracteristici aferente precum ochii, nasul, gura etc.

2.6. Algoritmi de recunoaștere facială

2.6.1. PCA

Analiza Componentelor Principale (PCA- Principal Component Analysis) a fost introdusă de Kirby și Sirivich în 1988 și reprezintă o metodă utilizată pentru reducerea dimensionalității datelor cu ajutorul căreia sunt extrase trăsăturile dintr-o serie de date pentru a se realiza recunoașterea subiecților fără a utiliza potriviri geometrice precum distanța dintre ochi sau sprâncene sau chiar dimensiunea gurii pentru a clasa o față.

Astfel, analiza unei succesiuni de fețe umane se face prin tehnica PCA pentru a stabili aportul ridicat al unei variabile la diversitatea dintre imaginile din succesiunea respectivă. Variabilele respective sunt denumite eigenfaces, deoarece acestea seamănă cu fizionomia umană într-o proporție foarte mare. [27][28]

În Figura 2.7. aceste variabile sunt prezentate succint pentru o privire de ansamblu a modului în care sunt vizibile.

Figura 2.7. Eigenfaces

Se utilizează mijloace de compresie a datelor pentru a selecta structura tiparelor faciale cea mai eficientă și mai mică din punct de vedere al dimensiunii. Acest fapt îi atribuie tehnicii PCA o calitate superioară pentru comprimarea și transpunerea datelor într-un spațiu mai mic.

Acuratețea acestei metode este în declin în momentul în care se produce analiza în zone ce nu sunt controlate din punct de vedere al poziției sau iluminării, motiv pentru care performanțe pentru PCA se obțin doar dacă fețele umane sunt prezentate în format frontal și integral.

În cele din urmă, metoda PCA a prezentat o sensibilitate la variații precum scalarea, iluminarea, rotația sau translația, cu un grad ridicat de reînvățare completă a datelor de antrenare pentru a se putea adăuga noi subiecți în baza de date.

Efectul produs de PCA este concentrarea a cât mai multe date în primele componente principale ce pot fi folosite la reducerea dimensionalității, în timp ce componentele principale de ordin superior pot fi dominate de zgomot, putând fi eliminate fără a se pierde foarte multă informație.

Pentru stabilirea componentelor principale, algoritmul PCA implică respectarea următorilor pași: [27]

Se încarcă datele inițiale sub formă matriceală (mxn);

Se calculează media pentru fiecare set de date;

Se scade media din matricea datelor inițiale;

Se calculează matricea de covarianță (media produșilor termenilor corespondenți a două variabile corelate);

Se determină cele n valori proprii ale matricei ca soluții ale ecuației:

;

(2.8.)

Pentru fiecare valoare proprie se determină vectorul propriu atașat , cu condiția că ;

Se determină forma noilor variabile conform formulelor

,unde j=1,…,n ;

(2.9.)

Dintre se rețin k componente principale.

2.6.2. LDA

Cu toate că metoda PCA reprezintă o modalitate puternică prin care sunt reprezentate datele, aceasta nu pune accent pe clase, ceea ce presupune o risipă de informații discriminatorii. Clasificarea devine imposibilă tocmai din pricina faptului că eșantioanele proiectate sunt șterse împreună.

Analiza Discriminatorie Liniară (LDA – Linear Discriminant Analysis) realizează o reducere a dimensiunilor specifice clasei, ea fiind inventată de R.A. Fisher. Metoda care îi poartă și numele, Fisherfaces, utilizează o matrice de transformare specifică unei clase, în acest mod diferențiindu-se de metoda Eigenfaces deoarece nu recepționează lumina foarte clar. Cu ajutorul acestei metode caracteristicile faciale sunt recepționate în mod corespunzător, însă performanța Fisherfaces depinde în mare măsură și de datele introduse.

Pe scurt, LDA este utilă pentru depistarea combinațiilor liniare disponibile între proprietățile care caracterizează sau separă două sau mai multe clase de obiecte sau evenimente. În acest mod se separă variabilele independente și variabilele dependente.

Cu toate că diferențele sunt subtile pentru ochiul uman, acestea se pot observa dacă se acordă o atenție deosebită pentru Figura 2.8., unde vectorii prezentați definesc direcții de maximă discriminabilitate.

Figura 2.8. Fisherfaces

2.6.3. EBGM

Toate chipurile umane sunt reprezentate de o structură topologică similară, fețele fiind simbolizate cu ajutorul graficelor, cu noduri poziționate în puncte cheie. Fiecare nod conține un set de 40 de coeficienți de undă Gabor complecși la scări și orientări diferite.

Potrivirea prin graficul legăturii elastice (Elastic Bunch Graph Matching – EBGM) constituie un algoritm pentru recunoașterea obiectelor sau claselor de obiecte într-o imagine bazată pe o reprezentare grafică extrasă din alte imagini. Acest algoritm este utilizat frecvent pentru recunoașterea și analiza feței, dar și pentru gesturi și alte clase de obiecte.

Dificultățile sunt mai pronunțate în momentul în care se experimentează recunoașterea chipurilor în poziții diferite. Pentru o implementare corectă a algoritmului, se parcurg următorii pași [31]:

Se construiește un grafic al feței pentru a se cunoaște de la început locațiile exacte ale nodurilor, precum marginile ochilor sau gurii, centrul ochilor etc.;

Se construiește un graf de fețe în mod manual pentru a nu se ivi erori cu privire la locația exactă a nodurilor;

Se construiește galeria modelului de grafic ce conține toate imaginile ce se doresc a fi analizate;

Se construiește graficul de probă pentru a avea o referință în elaborarea ulterioară;

Se realizează o comparație cu toate graficele modelului pentru a se afla similitudinea;

Se realizează recunoașterea propriu-zisă prin detectarea graficului model care prezintă cea mai mare asemănare cu graficul de imagine.

2.7. Etapele recunoașterii faciale

Pentru implementarea sistemului de recunoaștere facială se poate utiliza oricare dintre metodele prezentate anterior (PCA, LDA, EBGM). Cu toate că în prezenta lucrare s-a pus accent pe modul de implementare a detecției faciale, este bine de știut că indiferent de metoda aleasă pentru realizarea recunoașterii faciale, trebuie să se parcurgă în mod riguros următorii 4 pași:

1.Detectarea și extragerea caracteristicilor formei feței dintr-o imagine statică sau dinamică.

2.Standardizarea feței (normalizarea) pentru a se putea realiza comparația cu elementele existente în șablonul din baza de date.

3.Extragerea parametrilor faciali unici care se stochează în baza de date sub forma unui vector sau matrice.

4.Recunoașterea facială propriu-zisă, etapă în cadrul căreia se compară rezultatele dobândite la pasul 3 cu informațiile existente deja în baza de date, ținându-se cont și de pragul de securitate ce se poate stabili așa cum s-a detaliat în capitolul 1.

Dacă etapele anterioare sunt urmate în mod corect, sistemul implementat trebuie să funcționeze în parametri normali.

Capitolul 3. Limbajul de programare și tehnologia software utilizată în proiect

3.1. Limbajul de programare utilizat

Am ales să utilizez limbajul de programare C++ deoarece este cel mai renumit și eficient limbaj de programare pentru scrierea de software de sistem, lucrând în strânsă legătură cu hardware-ul.

Limbajul C++ face parte din clasa de limbaje de programare de nivel mediu bazate pe compilatoare. El a fost elaborat de către Bjarane Stroustrup „în anul 1980 în laboratoarele Bell din Murray Hill, New Jersey.” Conform inginerilor software cu experiență, limbajul de programare C++ este cel mai portabil mediu pentru conceperea unui program. Prin portabilitate se înțelege calitatea unui limbaj de programare, scris pentru o anumită mașină, de a putea fi funcțional pe o altă mașină, adică procesul de adaptare al unui software. [30]

Principiile de bază ale acestui limbaj orientat pe obiecte sunt următoarele:

Abstractizarea – are rolul de a se concentrează asupra esențialului și a omite anumite aspect de incipit.

Încapsularea – este acțiunea prin care obiectele nu pot schimba starea internă a altor obiecte în mod direct.

Polimorfismul – este reprezentat de capacitatea de a prelucra obiectele în mod diferit, în funcție de tipul sau de clasa lor.

Moștenirea – se ocupă în mod deosebit cu folosirea caracteristicilor și funcțiilor unui alt obiect dintr-o clasă definită anterior.

3.2. Tehnologia software OpenCV

Implementarea în lucrarea de față este realizată cu ajutorul OpenCV (Open Source Computer Vision Library). Această bibliotecă a fost inițial dezvoltată și menținută de Intel, aceasta fiind disponibilă gratis sub licență de tip open source pentru mai multe platforme. Este posibilă introducerea unor funcții și structuri cu ajutorul cărora poate fi implementată metoda Viola-Jones pentru diverse aplicații.

Biblioteca OpenCv este o bibliotecă de tip multiplatformă (cross-platform) ce cuprinde clasificatori antrenați, fișierele salvate în urma experimentelor fiind de tip XML. Biblioteca are interfețe pentru C/C++, Matlab, Java și rulează pe Windows, Linux și Mac OS X. Tehnologia aceasta se bazează în special pe procesarea imaginilor în timp continuu, suportând capturi în timp real, detecția obiectelor, dar și aplicarea filtrelor simple pe imagini. [31]

Am utilizat această bibliotecă OpenCV în proiectul de diplomă pentru a eficientiza procesul de detecție facială prin implementarea metodei Viola-Jones.

3.3. Funcționarea sistemului

Modul în care funcționează sistemul este detaliat în schema logică următoare:

Figura 3.1. Organigrama sistemului

După încărcarea bibliotecilor utile pentru program, funcția main este cea care deține controlul și se ocupă de buna funcționare a programului. Apelând funcția main, are loc începerea programului.

Inițial este creată cascada de clasificatori cu ajutorul căreia, pe baza clasificatorilor pe care îi deține, se analizează o anumită regiune de interes (ROI) pentru imaginea integrală conform metodei Viola-Jones până în momentul în care subiectul este respins sau până când sunt validate toate etapele. Astfel, subiecții sunt analizați din patru puncte de vedere și anume face_cascade, eyes_cascade, nose_cascade și mouth_cascade, adică față, ochi, nas și gură, linia de cod ilustrativă fiind:

Clasificatorul utilizat în acest program încarcă pentru fiecare tip de analiză câte un fișier xml care deține date preantrenate din biblioteca OpenCV, efectuând și o verificare a existenței acestor fișiere, un exemplu concludent fiind prezentat mai jos:

Astfel, sunt disponibile patru funcții generale pentru încărcarea datelor din fișiere: face_cascade.load(), eyes_cascade.load(), nose_cascade.load() și mouth_cascade.load().

CapturaVideo.open(0) deschide camera video pentru începerea procesului de detecție, având parametrul 0 deoarece există o singură cameră conectată. Ulterior, este verificată disponibilitatea inițializării capturii cadru cu cadru (frame by frame) prin CapturaVideo.isOpened().

Mat CadruTonGri este o structură care păstrează caracteristicile imaginii și anume rândurile și coloanele. Este creată o fereastră pentru a prezenta rezultatele cu ajutorul funcției namedWindow care are doi parametri: DetectieFataOchiNasGuraVideo – reprezintă numele ferestrei afișate și CV_WINDOW_AUTOSIZE – semnifică faptul că dimensiunea ferestrei este ajustată automat. În continuare se realizează o matrice vectorială pentru a putea fi stocată fața descoperită, urmată de elementele intermediare precum ochi, nas și gură.

În cazul buclei while(true) are loc întregul proces de detecție facială în care se capturează și se găsesc fețe, dar și ochi, nas și gură. Se începe cu o captare a unui nou cadru de imagine, iar imaginea este convertită în tonuri de gri pentru a se realiza egalizarea de histogramă.

Este necesară realizarea conversiei din spațiul de culoare RGB în nuanțe de gri deoarece multe operații în OpenCV sunt efectuate în tonuri de gri din motive de performanță. În acest scop, cvtColor este o funcție OpenCV care permite conversia imaginilor în spații de culoare diferite. Funcția cvtColor utilizată în program deține trei parametri: CapturaCadru – imaginea sursă, CadruTonGri – imaginea destinație în care se salvează imaginea deja convertită și CV_BGR2GRAY – parametru suplimentar pentru indicarea modului de transformare efectuată (în acest caz din spațiul RGB în tonuri de gri).

Cu ajutorul histogramei se pot detecta obiecte în cadrul video, parcurgând pixel cu pixel imaginea analizată. Histograma are rolul de a exprima cum sunt repartizate nivelurile de gri din imagine, însă pentru a obține o histogramă uniformă se apelează în cele din urmă la egalizarea histogramei, ceea ce înseamnă că se dorește o îmbunătățire a contrastului imaginii analizate. Primul parametru al funcției equalizeHist reprezintă imaginea sursă, iar cel de-al doilea imaginea destinație.

În continuare începe procesul de detecție a fețelor care se realizează cu ajutorul funcției detectMultiScale. Astfel, detectMultiScale ajută la detectarea feței din fluxul analizat fiind o funcție generală de detectare. Parametri acestei funcții sunt următorii: CadruTonGri – imaginea în tonuri de gri, 1.1 – factor de scală care compensează o percepție falsă în dimensiune, de exemplu atunci când o față pare a fi mai mare decât cealaltă doar pentru că este mai aproape de cameră (valori mari înseamnă mai puțină precizie), 2 – parametru care specifică numărul de vecini pe care trebuie să îl aibă fiecare fereastră în mișcare ce ajută la realizarea detecției (valori mari înseamnă mai puțină acuratețe, dar mai multă fiabilitate), Size(60,60) – scala la care va fi identificată fața în imagine.

După detectarea feței, în bucla for se execută porțiunea analizată de i<fataV.size() ori. Astfel, se desenează un dreptunghi pentru a afișa locația detectată a feței. Numărul de repetiții în buclă depinde de numărul de fețe detectate. Sunt calculate două puncte, Point p1 și Point p2 deoarece este nevoie de două puncte pentru a putea fi realizat dreptunghiul. Cele trei valori ale vectorului cvScalar reprezintă nivelul acestora în RGB corespunzător culorii, acestea fiind relatate în ordinea (B, G, R).

Parametrii funcției rectangle care este o funcție utilizată pentru trasarea dreptunghiului, sunt următorii: CapturaCadru – imaginea în cadrul căreia trebuie trasat dreptunghiul, p1 – punctul calculat pentru colțul din dreapta jos al dreptunghiului, p2 – punctul calculat pentru colțul din stânga sus al dreptunghiului, cvScalar(0, 255, 0) – definește culoarea pe care o va avea dreptunghiul (în acest caz verde), 1 – grosimea liniilor care alcătuiesc dreptunghiul, 8 – tipul liniei (linie continuă).

Se poate observa în Figura 3.2 realizarea detecției faciale prin intermediul unui dreptunghi verde, detecția funcționând indiferent de distanța față de camera video. S-a realizat o captare a feței de aproape (3.2.a) și de departe (3.2.b).

a. aproape

b. departe

Figura 3.2. Detecție față cameră video (vizionare din program)

Într-o altă matrice vectorială se memorează regiunea de interes (ROI) a feței (secvența utilizată este prezentată mai jos) în cadrul căreia se vor căuta ochii, nasul și gura. Astfel, în fiecare față este detectat nasul, gura și ochii cu aceleași funcții utilizate la detectarea feței, diferența o face faptul că unii parametri sunt modificați, de exemplu pentru a folosi culori sau forme diferite ale figurilor de încadrare a obiectelor analizate pentru fiecare detecție în parte.

Pentru detecția nasului a fost mărit factorul de scală și numărul de vecini deoarece au avut un randament mai ridicat în urma experimentelor realizate. După calculul celor două puncte necesare desenării dreptunghiului, a fost trasat chenarul de încadrare a nasului, însă de această dată într-o altă culoare (cvScalar (0, 0, 0, 255) care îi corespunde culorii negru) și o grosime puțin mai mare (2) a liniei trasate. Este prezentată mai jos secvența de cod utilizată. Această detecție este realizată și de aproape (3.3.a) și de departe (3.3.b), fiind prezentată în Figura 3.3.

a. aproape

b. departe

Figura 3.3. Detecție față și nas cameră video (vizionare din program)

La fel ca în cazul detecției nasului, și la detecția gurii a fost mărit factorul de scală și numărul de vecini la aceleași valori, diferența constând în modul de calcul al punctelor necesare dreptunghiului (gura este situată mai jos decât nasul, deci în raport cu fața se găsește în alt loc, ceea ce implică o înălțime și lățime diferită) și culoarea dreptunghiului trasat (cvScalar (0, 0, 255) care îi corespunde culorii roșu). Mai jos este prezentată secvența de cod utilizată cu modificările aferente. Și această detecție este realizată de aproape (3.4.a) și de departe (3.4.b), fiind prezentată în Figura 3.4.

a. aproape

b. departe

Figura 3.4. Detecție față și gură cameră video (vizionare din program)

Detecția ochilor s-a realizat într-un mod diferit comparativ cu detecțiile anterioare. Pentru detectarea ochilor a fost înlocuit clasificatorul inițial cu o detectare a ochilor în cascadă. Este obținut centrul ochiului, raza, iar apoi se desenează cercul în jurul ochilor detectați. Deoarece ochii sunt o parte a feței, deci ocupă un spațiu mai mic decât o față, identificarea lor se realizează în cadrul unei ferestre de dimensiuni mai mici. Mențiunea în acest caz este că și ochii sunt situați în alt loc pe fața umană decât gura sau nasul, ceea ce implică o diferență față de cazurile precedente. Culoarea cercului este diferită și de această dată (cvScalar(0, 255, 0) care corespunde culorii albastru). Este prezentată în continuare secvența de cod utilizată în acest caz. În Figura 3.5. este prezentată detecția ochilor de aproape (3.5.a) și de departe (3.5.b).

a.aproape

b.departe

Figura 3.5. Detecție față și ochi cameră video (vizionare din program)

Capitolul 4. Rezultate experimentale

4.1. Implementarea programului

Implementarea programului s-a realizat prin utilizarea mediului de dezvoltare Microsoft Visual Studio, librăria OpenCV și limbajul de programare C++.

Prezentul proiect este structurat pe două părți: o parte de detecție a fețelor umane și o parte de recunoaștere a fețelor umane. Din cauza faptului că acest proces este unul laborios, s-a urmărit un flux de descriptori cu ajutorul cărora proiectul se axează în mod special numai pe partea de detecție facială. Ulterior, dacă există un interes profund pentru acest subiect venit din exterior și se dorește și realizarea recunoașterii faciale este oferită posibilitatea de contopire a întregului sistem prin obținerea output-ului din implementarea realizată în proiectul de față.

Cunosc întregul proces ce se utilizează la nivelul recunoașterii faciale, însă m-am preocupat din punct de vedere practic doar de partea de detecție facială cu ajutorul căreia am detectat fețele persoanelor, precum și poziția ochilor, a nasului și a gurii.

Detecția fețelor a fost realizată prin utilizarea algoritmului Viola-Jones fiind implementat de biblioteca Open Source OpenCV.

Programul începe să ruleze cu etapa de inițializare prin care se fac inițializările necesare și se încarcă o imagine, iar detecția facială pentru aceasta se realizează în timp util.

După ce au fost încărcați clasificatorii în memorie, se configurează fișierele imagine utilizate în procesul de captare și se citește fișierul cu ajutorul funcției imread. CV_LOAD_IMAGE_COLOR este parametrul conform căruia imaginea încărcată este o imagine color ce are trei canale (RGB). Când se încarcă o imagine utilizând OpenCV, aceasta se încarcă în spațiul de culoare RGB în mod implicit. Spațiul de culoare RGB (Red Green Blue) are rolul de a sprijini procesul prin care este descrisă culoarea. Este bine cunoscut faptul că acest spațiu de culoare ajută la obținerea tuturor culorilor posibile cu ajutorul celor trei lumini colorate roșu, verde și albastru.

Este realizată și o verificare în cazul unui input care nu este valid pentru a nu exista o propagare a unei posibile erori în întregul program.

Fața descoperită este stocată într-o matrice vectorială, se realizează conversia imaginii la tonuri de gri și se face egalizare de histogramă. Se găsește fața și se păstrează în matricea vectorială, iar apoi se trasează un dreptunghi pentru fața găsită în matricea vectorială. În continuare, waitKey(0) afișează fereastra la infinit până la apăsarea unei taste.

Figura 4.1. Detecție facială imagine (vizionare din program)

Ulterior pornește camera video și începe etapa de detecție în cadrul căreia se încarcă detectorul de față și se examinează prezența feței unei persoane în câmpul vizual al camerei video. După ce s-a realizat detectarea unei fețe, urmează alte etape în care se mai examinează și prezența ochilor, a nasului și a gurii unei persoane, înlăturând detecțiile incorecte.

Se afișează fluxul cu ajutorul funției imshow ce cuprinde parametri pentru numele ferestrei (DetectieFataOchiNasGuraVideo) și pentru imaginea care urmează să fie afișată (CapturaCadru). Astfel, se afișează imaginea în fereastra specificată, fiind prezentată în Figura 4.2.

Figura 4.2. Detecție facială, ochi, nas și gură cameră video (vizionare din program)

În Figura 4.3. (4.3.a și 4.3.b) este prezentată implementarea programului care funcționează doar pe ființe umane în comparație cu ființele patrupede.

a. Pisică

b. Câine

Figura 4.3. Detecție facială, ochi, nas și gură comparativ cu patrupede cameră video (vizionare din program)

4.2. Testare

În modul experimental s-a avut în vedere specificarea performanțelor algoritmului de detecție. Buna desfășurare a programului s-a realizat pe un laptop Asus K551L cu procesor Intel i5-4200U 2,3GHz, capacitate memorie RAM 8GB, având instalat sistemul de operare Windows 10 Pro pe 64 de biți. Camera video solicitată pentru captarea imaginilor este de tipul Microsoft USB2.0 UVC HD.

Programul funcționează pentru diferite tipuri de intrări, respectiv pentru încărcarea unei imagini sau a unui video, dar și pentru detecția în timp real în cadrul pornirii unei camere video. Imaginea examinată poate fi atât color, cât și alb-negru. Algoritmul execută prin iterații repetate detectarea fețelor prezente în fluxul video analizat.

Fluxul video este o succesiune de imagini relatate cadru cu cadru (frame by frame), unele fețe putând fi mai aproape de cameră decât altele. Astfel, pot exista fețe care nu se văd complet, adică pot să nu fie perpendiculare sau să fie afișate din profil.

Testarea programului s-a realizat pentru început cu aflarea numărului de fețe detectate în cadrul a 15 fluxuri video a câte 20 de subiecți.

A fost parcurs filmul cadru cu cadru, fețele au apărut în x cadre, însă au fost detectate corect în y cazuri. Nu s-au detectat fețe în z cazuri, iar alarmele false identificate au fost în număr de w. Toate aceste detalii sunt relatate pentru fiecare filmare în parte în Tabelul a.

Pentru compararea rezultatelor am utilizat parametri: Precision, Recall și F1 Score. Parametrul Precision (sau Precizie, numită și valoare predictivă pozitivă) analizează de fapt alinierile corecte depistate în totalul alinierilor găsite, pe când parametrul Recall (cunoscut și sub denumirea de sensibilitate) analizează alinierile corecte găsite în totalul alinierilor corecte. Parametrul F1 Score este de fapt o combinație între ceilalți doi parametri deoarece permite măsurarea preciziei și urmărește stabilirea unui echilibru între aceștia prin intermediul mediei armonice ponderate aplicate.

(4.1.)

(4.2.)

(4.3.)

,unde TP (True Positive) este numărul de date clasificate corect ca aparținând clasei de interes, FP (False Positive) este numărul de date clasificate incorect ca aparținând clasei de interes și FN (False Negative) este numărul de date clasificate incorect ca neaparținând clasei de interes.

Capitolul 5. Cercetare de piață

5.1. Cererea pieței

Programul implementat în lucrarea de față începe cu încărcarea unei imagini, iar ulterior este pornit un video. Prin intermediul acestora am realizat detecția facială propriu-zisă care poate fi extinsă prin implementarea pe sistemul de recunoaștere facială pentru a se detecta cu exactitate identitatea persoanei analizate.

Prin intermediul economiei se identifică preferințele și nevoile indivizilor pentru a urmări obținerea unei strategii de tip win-win și a relata modul în care aceștia utilizează resursele disponibile în cantități limitate cum este și cazul programului dezvoltat în lucrarea prezentă.

În continuare este realizată o analiză de piață care are ca prim-plan identificarea potențialilor clienți în vederea vânzării acestui software prezentat, dar și a concurenților.

Sistemul de detecție facială presupune o monitorizare și o asigurare a unei mai bune funcționalități pentru companiile ce dețin acest serviciu. În urma analizei de piață realizată s-a constatat că cererea este suficient de ridicată pentru obținerea unui program în domeniul detecției faciale deoarece perspectivele de viitor pentru acest domeniu sunt ridicate și se dorește o evoluție accentuată a tehnologiei. Consumatorii sunt doritori de noutate, ceea ce determină firmele să inoveze sau să aducă pe piață produse cu elemente noi, fapt ce a luat amploare în ultimul timp deoarece din ce în ce mai multe firme de telefonie mobilă au implementat recunoașterea facială în cadrul ultimelor telefoane mobile lansate. De exemplu, serviciul de detecție facială poate ajuta și marile branduri să monitorizeze mai bine rezultatele din vânzări și să fie mai eficienți, deoarece pot afla și cauza, nu doar efectul. Efectul îl află din rezultatele vânzărilor, dar cauza o pot afla cu ajutorul detecției faciale, determinând la ce produs a staționat mai mult un client.

Fiind o metodă de securitate pentru cetățeni, au apelat la acest serviciu mai multe companii, instituții publice, site-uri de autentificare, firme responsabile cu monitorizarea în gări sau aeroporturi, dar și SRI (Serviciul Român de Informații).

Concomitent, sistemul de detecție facială prezentat este implementat printr-un limbaj de programare de nivel superior, ceea ce atrage avantaje precum versatilitatea și ușurința efectuării dezvoltărilor suplimentare. Din acest motiv cumpărarea acestui program va ajuta foarte mult și pentru realizarea recunoașterii faciale. Răspunsul este prompt pentru cerințele clientului deoarece piața se cunoaște foarte bine, iar canalul de distribuție este unul scurt, neexistând intermediari și realizându-se contactul direct cu clientul.

Concurenții în acest domeniu sunt reprezentați de Dialogica și Wave Division care au lansat Shopper Reality Mining (serviciu de detecție facială), compania Face.com, dar și Cosmin Nicula și Bogdan Bocșe care au implementat VisageCloud.

În principiu, analiza cost beneficiu oferă un rezultat bun în cazul în care beneficiile sunt mai mari decât costurile

5.2. Rolul și obiectivele cercetării

Cercetarea prezentă deține un rol esențial pentru consemnarea situației existente cu privire la programul implementat. Se urmărește în mod principal determinarea nivelului de interes al oamenilor pentru sistemul de detecție facială efectuat.

Obiectivele ce se doresc atinse în urma acestei cercetări sunt:

Stabilirea și recunoașterea elementului care declanșează interesul sau dezinteresul oamenilor pentru sistemul implementat

Utilizarea unui chestionar pe un număr cât mai mare de respondenți pentru a se putea identifica cu o precizie ridicată nevoia acestora

Efectuarea unei analize asupra rezultatelor prin interpretarea acestora și definirea concluziilor aferente

Întocmirea unui plan util pentru instrumentele viitoare necesare evoluării programului în urma rezultatelor dobândite

5.3. Respondenții

5.4. Instrumentul de cercetare

Pentru întocmirea acestei cercetări a fost utilizată metoda statistică pe baza unui chestionar (Anexa 2), deoarece se dorește aflarea nivelului de interes al respondenților cu privire la programul realizat. Chestionarul a fost creat cu ajutorul platformei online http://www.isondaje.ro/, fiind distribuit sub formă electronică. Rezultatele au fost stabilite pe baza răspunsurilor celor 150 de persoane, indiferent de sex sau vârstă. A fost utilizată această metodă de identificare a nevoilor pentru a eficientiza timpii de completare și interpretare a rezultatelor.

Întrebările din cadrul chestionarului sunt în număr de 20, fiecare întrebare având un anumit obiectiv, după cum urmează:

Convingerea că respondentul cunoaște domeniul detecției faciale: întrebările 1, 2, 3;

Nivelul de interes pentru programul realizat: întrebările 4, 5;

Înțelegerea programulului de detecție: întrebările 6, 7, 8;

Părerea respondenților cu privire la modul de efectuare a detecției faciale: întrebările 9, 10, 11, 12;

Satisfacția față de serviciul oferit: întrebările 13, 14;

Atracția pentru noutate: întrebările 15, 16;

Detalii despre respondent: întrebările 17, 18, 19, 20.

Concluzii

Anexa 1 Programul

#include <cv.h>

#include <cxcore.h>

#include <highgui.h>

#include "iostream"

#include <stdio.h>

#include <math.h>

#include "opencv2\highgui\highgui.hpp"

#include "opencv2\objdetect\objdetect.hpp"

#include "opencv2\imgproc\imgproc.hpp"

#include <vector>

using namespace cv;

using namespace std;

int main( int argc, const char** argv )

{

CascadeClassifier face_cascade, eyes_cascade, nose_cascade, mouth_cascade;

if(! face_cascade.load("haarcascade_frontalface_alt.xml")){

cout<<"Eroare la incarcarea fisierului cascada pentru fata!"<<endl;

};

if(! eyes_cascade.load("haarcascade_eye_tree_eyeglasses.xml")){

cout<<"Eroare la incarcarea fisierului cascada pentru ochi!"<<endl;

};

if(! nose_cascade.load("haarcascade_mcs_nose.xml")){

cout<<"Eroare la incarcarea fisierului cascada pentru nas!"<<endl;

};

if(! mouth_cascade.load("haarcascade_mcs_mouth.xml")){

cout<<"Eroare la incarcarea fisierului cascada pentru gura!"<<endl;

};

Mat CapturaCadru;

Mat imagine;

imagine = cv::imread("IMG_0478h.jpg", CV_LOAD_IMAGE_COLOR);

if(! imagine.data )

{

cout << "Nu s-a putut deschide sau gasi imaginea!" << std::endl ;

return -1;

}

resize(imagine, imagine, Size(512, 512));

std::vector<Rect> fataI;

Mat TonGri;

cvtColor(imagine, TonGri, CV_BGR2GRAY);

equalizeHist(TonGri, TonGri);

face_cascade.detectMultiScale(TonGri, fataI, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(60, 60));

cout<<fataI.size()<<endl;

for(int ic=0; ic< fataI.size(); ic++)

{

Point p1((fataI[ic].x + fataI[ic].height), (fataI[ic].y + fataI[ic].width));

Point p2(fataI[ic].x, fataI[ic].y);

rectangle(imagine, p1, p2, cvScalar(0, 255, 0), 2, 8, 0);

imshow( "DetectieFataImagine", imagine );

waitKey(0);

}

VideoCapture CapturaVideo;

CapturaVideo.open(0);

if (!CapturaVideo.isOpened())

{

cout << "Nu s-a putut deschide sau gasi dispozitivul video!" << endl;

return -1;

}

Mat CadruTonGri;

namedWindow("DetectieFataOchiNasGuraVideo", CV_WINDOW_AUTOSIZE);

std::vector<Rect> fataV, ochi, nas, gura;

while(true)

{

CapturaVideo>>CapturaCadru;

cvtColor(CapturaCadru, CadruTonGri, CV_BGR2GRAY);

equalizeHist(CadruTonGri, CadruTonGri);

face_cascade.detectMultiScale(CadruTonGri, fataV, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(60,60));

cout<<fataV.size()<<endl;

for(int i=0; i< fataV.size(); i++)

{

Point pt1(fataV[i].x + fataV[i].width, fataV[i].y + fataV[i].height);

Point pt2(fataV[i].x, fataV[i].y);

Mat fataVROI = CadruTonGri (fataV[i]);

nose_cascade.detectMultiScale(fataVROI, nas, 2, 2);

cout<<nas.size()<<endl;

for(int k=0; k< nas.size(); k++)

{

Point n1(nas[k].x + fataV[i].x , nas[k].y + fataV[i].y);

Point n2(n1.x + nas[k].width, n1.y + nas[k].height);

rectangle(CapturaCadru, n1, n2, cvScalar (0,0,0,255), 2, 8, 0);

}

Rect nasROI((int)fataV[i].width/4, (int)(fataV[i].height/2), (int)fataV[i].width/2, (int)fataV[i].height/4);

imshow("DetectieNas", fataVROI(nasROI));

mouth_cascade.detectMultiScale(fataVROI, gura, 2, 2);

cout<<gura.size()<<endl;

for(int m=0; m< gura.size(); m++)

{

Point m1(gura[m].x + fataV[i].x , gura[m].y + fataV[i].y);

Point m2(m1.x + gura[m].width, m1.y + gura[m].height);

rectangle(CapturaCadru, m1, m2, cvScalar (0,0,255), 2, 8, 0);

}

Rect guraROI((int)fataV[i].width/4, (int)(fataV[i].height/4)*2.9, (int)fataV[i].width/2, (int)fataV[i].height/5);

imshow("DetectieGura", fataVROI(guraROI));

eyes_cascade.detectMultiScale(fataVROI, ochi, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30,30));

cout<<ochi.size()<<endl;

for(int j=0; j< ochi.size(); j++)

{

Point eye_center(fataV[i].x + ochi[j].x + ochi[j].width/2, fataV[i].y + ochi[j].y + ochi[j].height/2);

int radius = cvRound((ochi[j].width + ochi[j].height)* 0.25);

circle(CapturaCadru, eye_center, radius, cvScalar (255,0,0), 2, 8, 0);

}

rectangle(CapturaCadru, pt1, pt2, cvScalar(0, 255, 0), 1, 8, 0);

}

imshow("DetectieFataOchiNasGuraVideo", CapturaCadru);

waitKey(33);

}

return 0;

}

Anexa 2 Chestionarul

Bună ziua!

Mă numesc Baciu Mirela, sunt studentă în anul IV la Facultatea de Antreprenoriat, Ingineria și Managementul Afacerilor și efectuez o cercetare despre sistemul automat de detecție facială implementat de către mine. Acuratețea acestui studiu de caz se bazează pe răspunsul sincer al dumneavoastră, rezultatele cercetării fiind analizate în cadrul lucrării de diplomă. Răspunsurile dumneavostră vor fi prelucrate doar statistic, fiind asigurată confidențialitatea datelor. Vă mulțumesc pentru cooperare!

1. Ce metode biometrice de identificare cunoașteți?

a. Amprenta digitală

b. Recunoașterea facială

c. Recunoașterea retinei/irisului

d. Recunoașterea vocii

e. Geometria mâinii

f. Altele

2. Utilizați deja un program de detecție facială?

a. Da

b. Nu

3. Care ar fi cauzele pentru care ați evita să apelați la un asemenea serviciu?

a. Afectarea anumitor părți ale feței

b. Îngrijorare pentru stocarea fără consimțământ a datelor biometrice detectate

c. Erori multiple ale programului

d. Altele

4. Cât de utilă considerați că este utilizarea detecției faciale în viața cotidiană?

a. Foarte utilă

b. Utilă

c. Deloc utilă

5. La ce credeți că este folosită detecția fețelor umane?

a. Detectarea infractorilor

b. Metode de autentificare

c. Statistici

d. Altele

6. Pentru o captare ideală a feței umane pe imaginea surprinsă pe camera de supraveghere este nevoie de:

a. Mai puțin de 25% din față

b. Cel puțin 25% din față

b. Toată fața

7. Sunteți familiarizați cu etapele procesului de detecție facială?

a. Da

b. Nu

8. Detecția facială se poate realiza concomitent cu elementele intermediare precum ochii, nasul sau gura (exemplificare mai jos). Ați mai întâlnit acest concept?

a. Da

b. Nu

9. Care sunt elementele ce pot afecta realizarea corectă a detecției faciale?

a. Calitatea scăzută a imaginii analizate

b. Poziția efectivă în imagine

c. Efecte provocate de poziția luminii și a umbrelor

d. Altele

10. Acordați o notă de la 1 la 5 (1-foarte slab, 5-foarte bun) modului în care a fost detectată fața din imaginea originală, ținând cont și de calitatea imaginii rezultate.

Imagine originală

Rezultat detecție facială

11. Care dintre detecțiile faciale următoare credeți că este realizată corect (ținând cont de calitatea imaginii rezultate)?

12. Există erori la detectarea facială în cadrul următoarei imagini?

a. Da, există erori, deoarece trebuia detectată și fața patrupedului

b. Nu există erori, fața umană are alte caracteristici decât patrupedele

c. Nu știu

13. Credeți că detecția facială poate fi considerată o metodă de securitate?

a. Da

b. Nu

14. Cine considerați că ar trebui să dispună de un asemenea program?

a. Poliția

b. Site-urile de autentificare

c. Firmele de pază din gări/aeroporturi

d. Altele

15. Pe ce dispozitive vă doriți să fie implementat un asemenea program?

a. Laptop

b. Tabletă

c. Telefon

d. Altele

16. Pe viitor intenționați să achiziționați un produs ce are încorporat acest program de detecție facială?

a. Da

b. Nu

c. Probabil

17. Sunteți o persoană de gen:

a. Feminin

b. Masculin

18. Care este vârsta dumneavoastră?

<20 ani

20-35 ani

36-50 ani

peste 50 ani

19. Precizați mediul în care locuiți:

a. Urban

b. Rural

Bottom of Form

20. Ce ocupație aveți?

Elev

Student

Salariat

Pensionar

Altceva

Bibliografie

[1] Face Detection & Recognition Homepage, disponibil online: https://facedetection.com/algorithms/

[2] Ming-Hsuan Yang, Member, IEEE, David J. Kriegman, Seior Member, IEEE, and Narendra Ahuja, Fellow: „Detecting Faces in Images: A Survey”, IEEE Transactions on Pattern Analysis and Machine Intelligence, vol.24, no.1, 2002, disponibil online: https://vision.cornell.edu/se3/wp-content/uploads/2014/09/pami02.pdf

[3] G. Yang și T.S. Huang, „Human Face Detection in Complex Background”, Pattern Recognition, vol. 27, no. 1, pp. 53-63, 1994, disponibil online: https://www.researchgate.net/publication/223244629_Human_face_detection_in_complex_background

[4] T.K. Leung, M.C. Burl și P. Perona, „Finding Faces in Cluttered Scenes Using Random Labeled Graph Matching”, Proc. Fifth IEEE Int’l Conf. Computer Vision, pp. 637-644, 1995, disponibil online: https://authors.library.caltech.edu/29351/1/LEUiccv95.pdf

[5] K.C. Yow și R. Cipolla, „Feature-Based Human Face Detection”, Image and Vision Computing, vol. 15, no. 9, pp. 713-735, 1997, disponibil online: https://mi.eng.cam.ac.uk/~cipolla/publications/article/1997-IVC-face-detection.pdf

[6] Y. Dai și Y. Nakano, „Face-Texture Model Based on SGLD and Its Application in Face Detection in a Color Scene”, Pattern Recognition, vol. 29, no. 6, pp. 1007-1017, 1996, disponibil online: https://www.sciencedirect.com/science/article/pii/0031320395001395

[7] J. Yang și A. Waibel, „A Real-Time Face Tracker”, Proc. Third Workshop Applications of Computer Vision, pp. 142-147, 1996, disponibil online: https://www.semanticscholar.org/paper/A-real-time-face-tracker-Yang-Waibel/002aaf4412f91d0828b79511f35c0863a1a32c47

[8] S. McKenna, S. Gong și Y. Raja, „Modelling Facial Colour and Identity with Gaussian Mixtures”, Pattern Recognition, vol. 31, no. 12, pp.1883-1892, 1998, disponibil online: https://discovery.dundee.ac.uk/en/publications/modelling-facial-colour-and-identity-with-gaussian-mixtures

[9] R. Kjeldsen și J. Kender, „Finding Skin in Color Images”, Proc. Second Int’l Conf. Automatic Face and Gesture Recognition, pp. 312-317, 1996, disponibil online: https://ieeexplore.ieee.org/document/557283/

[10] I. Craw, D. Tock și A. Bennett, „Finding Face Features”, Proc. Second European Conf. Computer Vision, pp. 92-96, 1992, disponibil online: https://pdfs.semanticscholar.org/e2e6/bc4db498566a9f95f122970fb4488eaf3392.pdf

[11] A. Lanitis, C.J. Taylor și T.F. Cootes, „An Automatic Face Identification System Using Flexible Appearance Models”, Image and Vision Computing, vol. 13, no.5, pp. 393-401, 1995, disponibil online: http://www.bmva.org/bmvc/1994/bmvc-94-006.pdf

[12] M. Turk și A. Pentland, „Eigenfaces for Recognition”, J. Cognitive Neuroscience, vol. 3, no. 1, pp. 71-86, 1991, disponibil online: https://s3.amazonaws.com/academia.edu.documents/30894770/jcn.pdf?AWSAccessKeyId=AKIAIWOWYYGZ2Y53UL3A&Expires=1528685722&Signature=gLiAJ25ZlM9YwrJZVvJi%2Bt%2FZVTI%3D&response-content-disposition=inline%3B%20filename%3DEigenfaces_for_Recognition.pdf

[13] K.-K. Sung și T. Poggio, „Example-Based Learning for View-Based Human Face Detection”, IEEE Trans. Pattern Analysis and Machine Intelligence, vol. 20, no. 1, pp. 39-51, Ian 1998, disponibil online: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.8633&rep=rep1&type=pdf

[14] H. Rowley, S. Baluja și T. Kanade, „Neural Network-Based Face Detection”, IEEE Trans. Pattern Analysis and Machine Intelligence, vol. 20, no. 1, pp. 23-38, Ian. 1998, disponibil online: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.69.7992&rep=rep1&type=pdf

[15] E. Osuna, R. Freund și F. Girosi, „Training Support Vector Machines: An Application to Face Detection”, Proc. IEEE Conf. Computer Vision and Pattern Recognition, pp. 130-136, 1997, disponibil online: http://mitsloan.mit.edu/shared/ods/documents/?DocumentID=2508

[16] H. Schneiderman și T. Kanade „Probabilistic Modeling of Local Appearance and Spatial Relationships for Object Recognition”, Proc. IEEE Conf. Computer Vision and Pattern Recognition, pp. 45-51, 1998, disponibil online: https://ieeexplore.ieee.org/document/698586/

[17] A. Rajagopalan, K. Kumar, J. Karlekar, R. Manivasakan, M. Patil, U. Desai, P. Poonacha și S. Chaudhuri, „Finding Faces in Photographs”, Proc. Sixth IEEE Int’l Conf. Computer Vision, pp. 640-645, 1998, disponibil online: http://www.ee.iitm.ac.in/~raju/conf/c11.pdf

[18] M.S. Lew, „Information Theoretic View-Based and Modular Face Detection”, Proc. Second Int’l Conf. Automatic Face and Gesture Recognition, pp. 198-203, 1996, disponibil online: https://ieeexplore.ieee.org/document/557264/

[19] A.J. Colmenarez și T.S. Huang, „Face Detection with Information-Based Maximum Discrimination”, Proc. IEEE Conf. Computer Vision and Pattern Recognition, pp. 782-787, 1997, disponibil online: https://pdfs.semanticscholar.org/3b75/c8c3087f999556a7c9219a766883d59cde6c.pdf

[20] W.Zhao, et al., „Face recognition: A literature survey”, ACM Computing Surveys, pp. 399-458, 2003, disponibil online: http://mplab.ucsd.edu/~marni/Igert/Zhao_2003.pdf

[21] P.A. Viola and M.J. Jones, „Robust Real-Time Face Detection” Int’l J. Computer Vision. Vol.57, no.2, pp. 137-154, 2004, disponibil online: https://www.cs.cmu.edu/~efros/courses/LBMV07/Papers/viola-IJCV-01.pdf

[22] P.A. Viola, M.J. Jones, and D. Snow, „Detecting Pedestrians Using Patterns of Motion and appearance”, Int’l J. Computer Vision, vol. 63, no. 2, pp. 153-161, 2005, disponibil online: http://www.merl.com/publications/docs/TR2003-90.pdf

[23] Jo Chang-yeon, „Face Detection using LBP features”, CS 229 Final Project Report December 12, 2008, disponibil online: http://cs229.stanford.edu/proj2008/Jo-FaceDetectionUsingLBPfeatures.pdf

[24] P. Viola și M. Jones, „Rapid object detection using a boosted cascade of simple features”, Proceedings of the 2001 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. CVPR 2001, vol. 1, pp.511-518, 2001, disponibil online: https://www.cs.cmu.edu/~efros/courses/LBMV07/Papers/viola-cvpr-01.pdf

[25] Prof.dr. Maria Boldea, asist. Dr. Costin Radu Boldea, Universitatea de Vest din Timișoara, „Identificarea biometrică”, disponibil online: https://alldocs.net/philosophy-on-money.html?utm_source=identificarea-biometrica-qb2a6VD

[26] https://ro.wikipedia.org/wiki/Pixel

[27] J. Shlens, „A TUTORIAL ON PRINCIPAL COMPONENT ANALYSIS,” 2003, disponibil online: https://www.cs.cmu.edu/~elaw/papers/pca.pdf

[28] P. N. Belhumeur, J. P. Hespanha și D. J. Kriegman, „Eigenfaces vs. Fisherfaces: Recognition Using Class Specific Linear Projection,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 19, nr. 7, pp. 711-720, 1997, disponibil online: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.880.5339&rep=rep1&type=pdf

[29] http://www.scholarpedia.org/article/Elastic_Bunch_Graph_Matching

[30] Felicia Ionescu, “Elemente de Programare Orientată pe Obiecte; Aplicații în Limbajul C++”, pp. 2-5, București, 2000, disponibil online: http://www.euroqual.pub.ro/admitere-master-universitar-ingineria-calitatii-si-sigurantei-in-functionare-in-electronica-si-telecomunicatii-icsfet-2016/

[31] Documentație OpenCV, disponibil online: https://opencv.org/

Similar Posts