SPECIALIZAREA: Calculatoare și Tehnologia Informației Aplicație pentru recunoaștere facială Coordonator științific, Ș.I. dr. Marian Viorel Crăciun… [302997]
PROIECT DE DIPLOMĂ
Îndrumător proiect,
Ș.I. dr. Marian Viorel Crăciun
Absolvent: [anonimizat]
2018
SPECIALIZAREA: Calculatoare și Tehnologia Informației
Aplicație pentru recunoaștere facială
Coordonator științific,
Ș.I. dr. Marian Viorel Crăciun
Absolvent: [anonimizat]
2018
Cuprins
1. Introducere
1.1. Motivația lucrării
Legătura dintre om și tehnologie a [anonimizat] v-a aduce un impact semnificativ în societatea umană.
O [anonimizat] o viață mai bună.
[anonimizat], [anonimizat].
[anonimizat] a fi îmbunătățit mereu cu ajutor extern.
[anonimizat] a putut sa utilizeze o [anonimizat], a avut ocazia de a [anonimizat], [anonimizat] o porțiune din imagine e [anonimizat].
Această metodă de localizare a [anonimizat] o [anonimizat] a punctelor faciale ale omului din imagine cu o bază de date conținând o sumedenie de informații și poze pentru fiecare persoană în parte.
[anonimizat], deoarece în ultima vreme se confrunt cu atacuri cibernetice.
Hackerii pot intra în sistem chiar cu ajutorul unor date furate/[anonimizat].
Un străin care vrea sa intre într-o clădire folosind datele altcuiva pentru a intra, asemenea programe care o [anonimizat], aeroporturi, penitenciare, [anonimizat].
Ideea de a [anonimizat] o notă de mare importanță pentru dezvoltare și securitate.
1.2. Starea actuală
Identificarea unei persoane în momentul actual se face pe baza unui cont și o [anonimizat]-n act de identitate ce poate fi falsificat la rândul lui în administrații publice sau private.
[anonimizat] a [anonimizat], să identifice acea persoană în urma unei decizii proprii.
Cu timpul fața unei persoane se schimbă și implementând o metodă prin care după ce-l [anonimizat] a [anonimizat]-ul învață singur în continuare de câte ori omul respectiv este recunoscut.
1.3. [anonimizat]ind o camera web și un dispozitiv cum ar fi calculatorul, având o utilizare în creștere atât în marile companii cât și în instituții publice sau companii private a multor țări.
Fiind capabil să detecteze și să recunoască fețele oamenilor pentru siguranță reprezentând un factor important în ziua de azi.
Pentru accesul într-o clădire când angajatul dorește să intre unde-și are locul de muncă .
În școli, unde elevii pot primi prezențe doar când ajung la ore și eliminarea sistemului cu cardul, pentru că unii dintre ei mai uită sa folosească cardul și din această cauză primeau absență degeaba.
Mulți părinți doresc ca copiii lor să fie în siguranță, deoarece într-o bucătărie când sunt aproape de un aragaz sau de un cuptor de microunde își pot pune viața în pericol, atunci sistemul de recunoaștere îi poate atenționa pe părinți că copiii sunt în preajmă de acele obiecte care le pun viața în pericol.
1.4 Istoric
Primul sistem pentru recunoașterea facială a fost dezvoltat de Woodrow Wilson Bledsoe în perioada anilor 1960-1962, ce putea clasifica pozele ale fețelor cu ajutorul celui care administra programul, care erau localizate trăsăturile faciale cum ar fi (nasul,gura,ochii,fruntea), fiind înregistrate manual coordonatele, ca apoi să fie comparată fața individului cu cele deja învățate.
În 1970 s-a dezvolvat un program numit Creșterea acurateței cu 21 markeri faciali de Goldstein, Harmon și Lesk ce au putu reuși să implementeze o precizie destul de ridicată pentru un sistem de recunoaștere a feței,ce au folosit 21 markeri specifici ce includeau culoarea parului și a ochilor,grosimea buzelor, mărimea urechilor, pentru identificarea automată a feței.
În 1988, Kirby și Sirovich au pus în practică analiza componentelor principale, aplicând algebra liniară pentru problema care apărea la recunoașterea facială, cei doi au reușit să demonstreze că o colecție de imagini cu fețe ar putea persoana dorită.
În 1991, Pentland și Turk au descoperit când foloseau eigenfaces, o eroare ce au putut utiliza pentru detectarea feței în poze, acest lucru s-a putut introduce în primele cazuri de recunoaștere automată a feței, dar a fost limitată datorită tehnologiei de atunci.
În 2002, la Super Bowl ,primul soft care a captat imagini cu ajutorul camerelor de supraveghere și le-a comparat cu o baza de date găzduită cu fețele oamenilor luate din camere.
Din 2010 până-n prezent marile companii, mai ales site-urile de socializare precum Facebook, Twitter sau Instagram dezvoltă aplicații pentru recunoașterea facială. În ultima vreme tot apar conturi multiple create rău intenționat pentru răspândirea știrilor false, prin introducerea detectării și recunoașterii faciale, ar combate lucrurile care nu respectă politicile site-urilor și așa utilizatorii ar putea interacționa fără să aibă dubii cine ar fi în spatele monitorului.
În 2017, Apple a lansat Iphone X, în care dezvoltatorii au introdus recunoașterea feței pentru fiecare proprietar care deținea un astfel de telefon, când utilizatorul dorea să intre pe telefon mai întâi îi era scanată fața și apoi era recunoscută, dacă altcineva dorea să intre fără știrea proprietarului, din acel moment telefonul se închidea de tot.
2. Cerințe și specificații
2.1 Stabilirea obiectivelor de proiectare
Acest proiect își propune realizarea unei aplicații desktop pentru detectare și recunoaștere facială implementând EmguCV fiind o platformă transversală .NET utilizat în limbajul de programare C#, pentru biblioteca open-source numit OpenCv folosit la procesarea imaginilor.
Metoda folosită care fiind Viola&Jones pentru detectare bazându-se pe Cascadele Haar cu fișiere XML având clasificatorii deja calculați pentru față (ochi, nas, gură, frunte și obraz).
Pentru învățare făcând diferența dintre și recunoaștere folosind algoritmul analiza componentelor principale ,ce extrage pozele filtrate în alb și negru din baza de date pentru a compara persoana.
Totodată ca să putem face acest lucru e nevoie de un dispozitiv desktop și o camera web în figura 1 prezentată.
Figura 1. Camera web
3. Detecție și recunoaștere facială
3.1 Detecția facială
Detecția fețelor este o metodă care se ocupă cu calcularea distanței, localizării și dimensiunii feței în diferite fotografii, ce ignoră alte obiecte care nu au nicio legătură cu fizionomia umană.
Poate fi privită ca un caz special al detecției ce se concentrează pe imagini cu figuri care privesc din față, pentru că reprezintă o metodă detectabilă ușor aplicabilă.
Pentru a reuși să realizăm recunoașterea facială într-un mod precis și clar, mai întâi trebuie ca detecția facială sa fie una corectă din punct de vedere optim, fără a avea erori sau confuzii, ce poate fi văzut ca un caz elaborat pentru detecția clasă-obiect.
O abordare fiabilă de detectare a feței bazată pe algoritmul genetic și pe tehnica eigenfaces.
În primul rând, zonele posibile ale ochilor umani sunt detectate prin testarea tuturor regiunilor în imaginea de nivel gri. Apoi, algoritmul genetic este folosit pentru a genera toate posibilele regiuni ale feței care includ sprâncenele, irisul, nările și colțurile gurii.
Fiecare posibil candidat al feței este normalizat pentru a reduce atât efectul fulgerului, care este cauzat de iluminarea neuniformă și efectul de șiret, care se datorează mișcării capului. Valoarea a fiecărui candidat este măsurată pe baza proiecției sale pe eigenfaces.
După o serie de iterații, toți candidații cu o valoare ridicată sunt selectați pentru verificare ulterioară. În acest stadiu, simetria feței este măsurată, iar existența diferitelor trăsături faciale este verificată pentru fiecare candidat.
Captură de mișcare a feței este procesul de conversie electronică a mișcărilor feței persoanei într-o bază de date digitală utilizând camere sau scanere laser.
În Marketing ,detecția feței este un lucru benefic pentru vânzători, o cameră web poate fi integrată într-un televizor și poate detecta orice față care trece. Sistemul calculează apoi rasa, sexul și vârsta feței. Odată ce informațiile sunt colectate, se pot juca o serie de anunțuri care sunt specifice rasei , sexului, vârstei detectate.
Fotografia este folosită deoarece detectarea feței este folosită în biometrie, adesea ca parte a sistemului de recunoaștere a feței. De asemenea, este utilizat în supravegherea video și gestionarea bazei de date a imaginilor.
3.2 Recunoașterea facială
Sistemul de recunoaștere facială este o mai mult o tehnologie ce poate verifica și identifica fața unei persoane dintr-o imagine sau video în timp real, metoda cea mai eficientă de a recunoaște o persoană este de a avea o gamă largă de imagini cu acele persoane învățate într-o bază de date, ca apoi să compare datele cu omul respectiv.
Dea lungul anilor s-au implementat diverse metode sau tehnici în recunoaștere facială.
Metoda tradițională identifică caracteristicile faciale extrăgând repere sau caracteristici dintr-o imagine a feței subiectului. De exemplu, un algoritm poate analiza poziția, mărimea și/sau forma relativă a ochilor, nasului și gurii. Aceste caracteristici sunt apoi utilizate pentru a căuta alte imagini cu caracteristici de potrivire.
Camere termice este o altă formă de luare a datelor de intrare pentru recunoașterea feței este folosirea camerelor termice, prin această procedură aparatele de fotografiat vor detecta doar forma capului și vor ignora accesoriile de pe subiect cum ar fi ochelarii, pălăriile sau machiajul. O problemă cu utilizarea imaginilor termale pentru recunoașterea feței este că bazele de date pentru recunoaștere sunt limitate.
Recunoașterea tridimensională, această tehnică utilizează senzori 3D pentru a capta informații despre forma unei fețe. Această informație este apoi utilizată pentru a identifica caracteristicile distinctive pe suprafața unei fețe, cum ar fi conturul ochilor, nas și bărbie.
Sisteme biometrice, având un avantaj cheie al unui sistem de recunoaștere a feței pe care îl poate identifica în masă. Sistemele bine concepute instalate în aeroporturi, penitenciare și alte locuri publice pot identifica indivizii printre mulțimi.
Cu toate acestea, în comparație cu alte tehnici biometrice, recunoașterea feței poate să nu fie cea mai fiabilă și mai eficientă.
Măsurile de calitate sunt foarte importante în sistemele de recunoaștere facială, deoarece în imaginile ale unei fețe sunt posibile grade mari de variații. Factori precum iluminarea, exprimarea, posesia și zgomotul în timpul capturii feței pot afecta performanța sistemelor de recunoaștere facială.
Între toate sistemele biometrice, recunoașterea facială are cele mai ridicate rate de acceptare și respingere, astfel că au fost ridicate întrebări cu privire la eficacitatea software-ului de recunoaștere a feței în cazurile de securitate feroviară și pentru aeroporturi.
Recunoașterea feței este mai puțin eficientă dacă variază expresia feței. Un zâmbet mare poate face sistemul mai puțin eficient. De exemplu: Canada, în 2009, a permis doar expresii faciale neutre în fotografiile cu pașaport.
Cercetătorii pot folosi oriunde de la mai mulți subiecți și câteva sute de imagini până la mii de imagini. Este important ca cercetătorii să pună la dispoziție seturile de date pe care le-au folosit reciproc sau să aibă cel puțin un set de date standard.
Confidențialitatea datelor este principala preocupare în ceea ce privește stocarea datelor biometrice în companii. Stocarea de date despre față sau biometrie poate fi accesată de o terță în parte dacă nu este stocată corect și pot fi atacate ușor de către hackeri.
Un experiment în 2002 al departamentului local de poliție din orașul Tampa, Florida, a avut rezultate nu chiar bune pentru recunoașterea infractorilor.
Un sistem de la Aeroportul Logan din Boston a fost oprit în 2003, după ce nu a reușit să facă niciun traseu pe parcursul unei perioade de testare de doi ani.
În 2014, Facebook a declarat că au reușit un test standardizat de recunoaștere facială cu două opțiuni, sistemul său online a obținut 97,25% precizie, comparativ cu reperul uman de 97,5%.
În 2018, un raport al organizației de libertăți civile și drepturile omului Big Brother Watch a arătat că instituțiile de poliție din Marea Britanie, Poliția de Sud a Țării Galilor și Poliția Metropolitană au recunoscut recunoașterea facială la evenimentele publice și în spațiile publice. Raportul lor a vizat, de asemenea, despre potențiale încălcări semnificative ale drepturilor omului. Acest raport a fost mascat de mass-media din Marea Britanie.
Sistemele sunt adesea anunțate ca având o precizie de aproape 100%, acest lucru este înșelător, deoarece studiile folosesc de multe ori dimensiuni mult mai mici ale eșantioanelor decât ar fi necesare pentru aplicații la scară largă. Deoarece recunoașterea facială nu este complet corectă, ea creează o listă de potriviri potențiale.
4. Algortim pentru detecția facială
4.1 Cascadele Haar
Cascadele Haar sunt caracteristicile imaginii digitale utilizate în recunoașterea obiectelor. Ei își datorează numele în similitudinea lor intuitivă cu wavelet-urile Haar și au fost folosite în primul detector de față în timp real.
Din punct de vedere istoric, lucrul cu intensități ale imaginii (adică valorile pixelilor RGB la fiecare pixel al imaginii) a făcut ca sarcina de calcul a caracteristicilor să fie computațional scumpă.
O publicație de Papageorgiou și colaboratorii săi, au discutat despre setul de funcții alternative bazat pe cascadele Haar în loc de intensitățile obișnuite ale imaginii.
Viola și Jones au adaptat ideea de utilizare a wavelet-urilor Haar și au dezvoltat așa-numitele caracteristici de tip Haar. O caracteristică asemănătoare cu Haar consideră regiunile dreptunghiulare adiacente într-o locație specifică într-o fereastră de detecție, ce însumează intensitățile pixelilor din fiecare regiune și calculează diferența dintre aceste sume.
Această diferență este apoi utilizată pentru a clasifica subsecțiunile unei imagini. De exemplu, să spunem că avem o bază de date cu chipuri umane. Este o observație obișnuită că între toate fețele regiunea ochilor este mai întunecată decât regiunea obrajilor.
Prin urmare, o caracteristică comună Haar pentru detectarea feței este un set de două dreptunghiuri adiacente care se află deasupra ochiului și a regiunii obrazului.
Poziția acestor dreptunghiuri este definită în raport cu o fereastră de detecție care acționează ca o casetă de legare la obiectul țintă (fața în acest caz).
În faza de detecție a cadrului de detectare a obiectelor Viola-Jones, o fereastră a dimensiunii țintă este deplasată peste imaginea de intrare, iar pentru fiecare subsecțiune a imaginii se calculează caracteristica Haar. Această diferență este apoi comparată cu un set deja învățat care separă non-obiectele de obiecte.
O astfel de caracteristică Haar este doar un clasificator slab (calitatea sa de detecție este puțin mai bună decât ghicirea aleatoare), un număr mare de caracteristici asemănătoare lui Haar sunt necesare pentru a descrie un obiect cu o precizie suficientă. În cadrul de detectare a obiectelor Viola-Jones, caracteristicile Haar sunt astfel organizate în ceva numit cascadă de clasificatori pentru a forma un cursant puternic sau un clasificator.
Folosim trei tipuri de caracteristici. Valoarea a două elemente dreptunghiulare este diferența dintre suma pixelilor din două regiuni dreptunghiulare. Regiunile au aceeași dimensiune și sunt adiacente orizontal sau vertical în figura 2.
O caracteristică cu trei dreptunghiuri calculează suma în interiorul a două dreptunghiuri exterioare scăzute din suma într-un dreptunghi central.
În general, fiecare valoare calculată reprezintă o trăsătură obținută din diferența dintre suma pixelilor din dreptunghiul negru și suma pixelilor din dreptunghiul alb.
Figura 2. Trăsături folosite de Viola & Jones.
Imaginea de intrare este transformată într-o imagine integrală, ce este obținut prin schimbarea valorii pixelului, așadar este egal cu suma tuturor pixelilor de deasupra lui și pixelilor din stânga acestuia, rezultând calcularea sumei la orice dreptunghi ce folosește 4 valori ca exemplu în figura 3.
Figura 3. Calcularea caracteristicilor dreptunghiului.
Imaginea integrală este definită ca în formula de mai jos.
în care:
ii(x,y) – este imaginea integrală;
i(x’,y’) – este intensitatea imaginii originale.
Unde imaginea integrală poate fi calculată o singură dată folosind următoarele recurențe de mai jos.
În care s(x ,y) este suma rândului cumulativ și cu următoarele cazuri pe care le avem s(x, -1)=0 și ii(-1,y)=0, utilizând imaginea integrală.
Fiecare trăsătură poate fi calculată în timp constant, unde suma pentru fiecare dreptunghi poate fi calculată și aflată în numai cele 4 referințe de memorii.
Figura 4. ii(i,j) este suma intensității imaginii în zona gri.
Dar caracteristicile cascadelor Haar utilizează dreptunghiuri care partajează colțurile, numărul de referințe totale ale memoriei necesare pentru a calcula o caracteristică ce poate fi redus mai departe.
Într-o sub-fereastră aleasă, un set de caracteristici este destul de mare, pentru că sunt peste 160.000 de funcții în fiecare fereastră dată de 24 x 24 pixeli folosind numai funcții de 2, 3 și 4 dreptunghiuri, rezultând că setul este prea mare decât numărul de pixeli în fereastra cutare și de multe ori nu este completă.
Viola și Jones au descoperit că un număr foarte mic din caracteristici poate fi format într-un clasificator eficient, iar pentru selectarea de aceste și folosind un set de date de învățare în mod manual și un set de caracteristici posibile, diferite tehnici de învățare pot fi utilizate pentru a forma o funcție de clasificare.
Metoda Viola și Jones utilizează algoritmul AdaBoost pentru a prelua un set mic de caracteristici pentru a crea un clasificator eficient, setul de învățare trebuie să fie variat pentru a se adapta la condițiile ce vor apărea, indiferent de abordarea folosită pentru a instrui un clasificator.
Lista din antrenamente conțin diverse fețe ce având o gamă largă de condiții de lumină și umbre, culoare pielii și variații ale feței, adică părul, mărimea și culoarea ochilor.
Trebuie stabilită o limită, deoarece la detectare fața trebuie mereu sa fie dreaptă din cadrul setului de date pentru obținerea unor rezultate bune, doar în cazul când se dorește și fețe rotite, putem trage o concluzie că se poate realiza un nou clasificator pe un set antrenat, atâta timp cât se află într-un anumit interval.
În OpenCV se găsesc mulți clasificatori diferiți antrenate pentru detectarea fețelor din profil și din partea frontală, punctul cheie este acela că, pentru ca un clasificator să fie eficient, setul pe care este instruit trebuie să conțină o gamă largă de variații faciale, însă orientarea și poziționarea fețelor trebuie să fie destul de stabilă.
Nici o caracteristică unică nu poate fi utilizată ca o funcție de clasificare eficientă. Combinarea mai multor caracteristici produce un clasificator mai bun, dar este încă instabil și, prin urmare, o sa fie un clasificator slab.
Algoritmul AdaBoost creează clasificatori mai puternici, căutând setul de combinații de clasificatori slabi și selectând cele mai reușite combinații.
Clasificatorul puternic nou obținut este combinat cu pragul optim care îi permite să separe cele mai bune fețe de la cele care nu sunt fețe, dar timpul de verificare este mereu constant chiar dacă mărimea datelor poate fi mare și în cadrul unei singure poze cu un număr mare de sub-ferestre care sunt negative.
Deci un singur clasificator destul de puternic nu este eficient și este neapărat nevoie de cascade de clasificatori, este construită din stagii ce au fiecare câte un clasificator puternic, fiecare stagiu au scopul de a defini dacă o sub-fereastră este o față sau nu.
Algoritmul AdaBoost întărește clasificatorii pe care îi creează prin reevaluarea în mod repetat a setului de test pentru a pune în evidență favorizarea cazurilor de testare care au fost clasificate incorect în ultima rundă de antrenament, deci are ca rezultat o serie de seturi de caracteristici mici cu varietate semnificativă.
Cea mai importantă inovație descoperită la metoda Viola și Jones este punerea în evidență a cascadelor atenționale.
Ideea este să se concentreze mai întâi pe eliminarea regiunilor negative ale imaginii, incluzând aproape toate cele pozitive. O versiune simplă a acestei idei a fost pusă în aplicare de Rowley în 1998.
Metoda a realizat două rețele neuronale, o rețea complexă axat pe regiunile mici ale imaginii și fețele detectate cu o rată scăzută fals pozitivă și o rețea mai simplă, mai rapidă care s-a concentrat pe regiuni mai mari, dar a avut rate mai ridicate ale ratei pozitive.
Algoritmul utilizează mai întâi rețeaua neuronală mai rapidă pentru a selecta regiuni de interes înainte de a rula rețeaua mai lentă și mai complexă pentru a alege fețele.
Etapele inițiale sunt compuse din mai puține caracteristici simple și sunt create cu ajutorul algoritmului AdaBoost prin ajustarea lui pentru a maximiza ratele de detecție.
Etapele ulterioare ale cascadei folosesc clasificatori mai complecși pentru a reduce în continuare ratele fals-pozitive generale.
Sub-ferestrele imaginii sunt acceptate doar dacă sunt fețe și dacă au trecut de fiecare etapă a cascadei, executarea cascadei în această ordine crescătoare specifică permite ca multe regiuni să fie aruncate la începutul cascadei, astfel încât acestea nu vor necesita o prelucrare ulterioară.
Important este faptul că atunci când se găsește ce nu este fața omului, sub-fereastra este ignorată și aruncată, dar atunci când sub-fereastra e clasificată ca față, este trecută la următorul stagiu din cascadă, exemplu în figura 5 de mai jos.
Figura 5. Sub-ferestre clasificate în cascadă.
În proiect s-a folosit pur și simplu clasificatori deja creați pentru biblioteca OpenCV, dar există câteva rezultate remarcabile și bune datorită metodei Viola și Jones pe care se demonstrează eficacitatea prin abordarea acesteia.
În primul rând experimentele inițiale au demonstrat că ar putea fi un clasificator eficient doar folosind numai 200 de caracteristici. Acest clasificator simplu a dat o rată de detecție de 95%, dar nu suficient de eficace.
În al doilea rând, trăsăturile inițiale alese de algoritm sunt interpretate cu ușurință prin observație simplă. Acestea se concentrează pe cele două proprietăți simple ale feței, diferența de luminozitate dintre nas și ochi și diferența de luminozitate dintre ochi și obraji.
Prima caracteristică măsoară diferența în intensitate între regiunea ochilor și o regiune de-a lungul obrajilor. Caracteristica captează pe regiunea ochiului pentru că este adesea mai închisă decât obrajii.
A doua caracteristică compară intensitățile în regiunile ochiului până la intensitatea de-a lungul frunții.
Figura 6. Caracteristici alese de AdaBoost.
Presupunem că învățarea este completă și a fost creată o cascadă de clasificatori cu proprietăți dorite.
Se scanează toate sub-ferestrele posibile ale unei imagini la un interval de timp, care rulează cascada pe fiecare fereastră.
Dacă o sub-fereastră ajunge la stadiul final din cascadă, atunci sub-fereastra conține probabil o față. Este important ca detecția să fie neschimbată pentru mici modificări la locația fiecărei trăsături în parte , astfel încât adesea vor fi multe scăpări centrate în jurul fiecărei fețe.
Pentru a filtra aceste rezultate duplicate, se pot obține o medie a rezultatelor suprapuse pentru a forma o singură detectare.
În mod evident, rularea cascadei pe fiecare sub-fereastră posibilă este costisitoare, astfel, cantitatea pe care o reglează scala și poziția dintre sub-ferestre testate(factorul de scanare) trebuie ajustat pentru a obține un echilibru între viteză și precizie.
Viola și Jones au obținut cele mai bune rezultate utilizând un coeficient de scalare de 1,25 și un factor de scanare proporțional cu scala actuală.
4.2 Implementarea practică
Există câțiva pași în care trebuie să se producă normalizarea.
În primul rând, intensitățile imaginilor pentru antrenamente și imagini de testare trebuie să fie normalizate la aceeași scală.
În al doilea rând, atunci când se rulează cascada pe sub-ferestre scalate, sumele dreptunghiului din fiecare caracteristică trebuie să fie scalate corespunzător.
În cele din urmă, datorită diferitelor condiții de iluminare, instruirea ar trebui făcută pe imagini normalizate de variație și prin urmare, ferestrele de testare trebuie să fie și ele normalizate.
Imaginea integrală a imaginii este din nou utilă aici, deoarece media poate fi ușor de calculat din imaginea originală și a doua imagine integrală, care deține sume de intensități ale imaginii ce poate fi creată pentru a fi utilizată în partea de sinteză a ecuației de variație.
Mai mult, normalizarea varianței poate fi obținută eficient printr-o singură multiplicare cu suma caracteristică în locul operării pe fiecare pixel.
Variația poate fi calculată folosind următoarea ecuație:
în care:
σ – este deviația standard;
m – este media;
N – este aria ferestrei;
x – este fiecare intensitate a imaginii pixelilor.
4.3 Optimizarea
Metoda Viola și Jones este destul de rapidă și precisă, deoarece sistemele de putere și procesare sunt reduse, cum ar fi dispozitivele mobile, care au acces la camerele de luat vederi, trebuie făcute alte optimizări de viteză pentru a realiza detectarea în timp real.
Pentru a face aceste optimizări fără a pierde acuratețea, trebuie simplificată problemele care apar.
Se va pune în evidență pe optimizările care pot fi făcute pentru detectarea feței într-o setare a camerei web, de regulă unitățile centrale sunt optimizate bine, dar majoritatea lor sunt făcute din piese în funcție după placul clientului și atunci majoritatea camerelor web când sunt conectate sunt bine configurate din fabrică.
Problema care apare ar fi laptopurile deoarece majoritatea sunt încorporate cu camera web și nu sunt atât de eficiente din cauza clarității și acurateții , așadar trebuiesc configurate și conectate la o camera web bună.
Cu alte cuvinte ne oferă o imagine datorită camerei în raport cu omul și ne permite să facem o presupunere despre localizarea fețelor din cadrul imaginii.
Există cu siguranță o limită a modului în care o față poate fi într-o imagine bazată pe locul în care un utilizator poate fi în relație cu o cameră web, folosind în mod confortabil calculator sau laptopul.
În plus, persoana este cel mai probabil să privească direct către camera web și cu capul în poziție verticală. Acest fapt justifică folosirea unui clasificator instruit pe imagini ale fețelor frontale, în poziție verticală.
În cazul în care capul utilizatorului este orientat altfel, probabil că se uită departe de ecran și detectarea ar fi astfel neimportantă.
Așa cum s-a menționat mai sus, detecția este neschimbată pentru mici modificări în dimensiune și locația trăsăturilor.
În metoda Viola-Jones, această problemă poate fi rezolvată prin medierea locațiilor într-o detectare unică și mai precisă.
Evident, cu cât este mai mic factorul de scanare, cu atât va fi mai precisă și bine făcută detectarea finală.
Cu toate acestea, în cadrul îmbunătățirilor propuse, este vital ca prelucrarea să se poate opri după ce găsește o singură față la persoana respectivă. Acest lucru duce la rezultate mai rapide, dar mai puțin consecvente.
5. Analiza componentelor principale în recunoașterea facială
Pentru recunoașterea facială este utilizată algoritmul numit analiza componentelor principale ce este folosit pentru compresia datelor.
Această metodă a fost creată de Karl Pearlson în anul 1901, dar mai târziu în anul 1988, această tehnică a fost introdusă de Kirby și Sirivich.
Tehnica extrage trăsăturile dintr-un set de date, fiind o procedură statistică care utilizează o transformare ortogonală pentru a transforma un set de observații ale variabilelor posibil corelate într-un set de valori ale variabilelor liniar necorelate, numite componente principale, utilizată pentru recunoașterea obiectelor.
Figura 7. Schema pentru recunoașterea facială
Analiza componentelor principale este cea mai simplă dintre analizele multi variate bazate pe vectorii eigen(proprii), utilizate frecvent pentru a pune în evidență structura internă a datelor într-un mod care să descrie cel mai bine caracteristicile majore ale datelor.
Este necesară ca fața să fie completă pentru a obține o recunoaștere destul de bună, dar singurul avantaj al acestei metode este de a face identificarea unui om trebuie să reducă cererile din setul de date.
Figura 8. Exemplu de eigenfaces.
Dacă un set de imagini este vizualizat ca un set de coordonate într-un spațiu de date cu dimensiuni mari, atunci analiza componentelor principale poate furniza utilizatorului o imagine cu dimensiuni reduse, o umbră a acestui set atunci când este văzută din punctul său de vedere cel mai informativ.
Pentru identificarea componentelor principale din afișarea fețelor sau eigenfaces de la matricea de covarianță din baza de date unde sunt stocate imaginile învățate.
Vectorii proprii pot fi de-asemenea văzute ca niște seturi de caracteristici prin care se poate face diferența între imagini.
Metoda analizei componentelor principale consideră fiecare pixel într-o imagine ca este o dimensiune separată.
Pentru a reuși o recunoaștere bună se folosesc doar fețele proprii (eigenfaces) cele mai bune.
Eigenface este un set de vectori proprii ce sunt utilizate în recunoașterea facială, deci pentru recunoaștere este nevoie să antrenăm baza de date cu fețe care au fost fotografiate. Cel mai important lucru ca toate imaginile trebuie să aibă exact aceleași dimensiuni.
Analiza componentelor principale este o procedură matematică care folosește o transformare ortogonală pentru a converti un set de imagini cu fața M într-un set de variabile K necorelate numite eigenfaces.
Regula importantă este că numărul de eigenfaces trebuiesc să fie întotdeauna mai mic sau egal cu numărul de imagini antrenate, unde K<M și prin urmare, reducerea numărului de valori (de la M la K) necesită identificarea unei fețe necunoscute.
Figura 9. Un set de antrenament format din imagini totale M
Apoi urmează o transformare prin selectarea K eigenfaces pentru a reprezenta setul de antrenament, unde K<M.
Figura 10. K, Eigenfaces
Această transformare este definită astfel încât primul eigenface să prezinte trăsăturile cele mai dominante ale setului de antrenament de imagini și fiecare eigenface prezintă la rândul său următoarele caracteristici dominante posibile, sub constrângerea că aceasta nu este corelată cu eigenface-ul precedent
Pentru a reduce calculele necesare pentru găsirea acestor fețe proprii, dimensiunile setului original de antrenament sunt reduse înainte de a calcula eigenfaces.
Există o relație foarte strânsă între PCA și recunoașterea facială, deoarece convertește baza de date a imaginilor M într-o listă a variabilei K numite eigenfaces, unde K<M și prima componentă principală sunt cele mai dominante componente succesive care arată cel mai dominant.
Afișarea fețelor proprii, prima imagine are aproape caracteristici ale imaginilor de antrenament și scade pe măsură ce se mută la imaginea următoare ca-n figura 11 de mai jos.
Figura 11. Eigenface-uri afișate.
5.1 Procesul de calcul al metodei PCA.
Procesul de calcul are următoarele etape.
Se încarcă setul de imagini deja învățate.
Figura 12. Setul de date cu imagini antrenate.
Se reduce valoare medie a datelor din fiecare variabilă din setul de date cu imagini.
Figura 13. Media imaginii a feței.
Se calculează matricea de covarianță pentru tot setul de de date, este întotdeauna măsurată între două dimensiuni.
Ecuația covarianței pentru calcularea datelor cu două dimensiuni:
Dacă avem mai mult de două dimensiuni și există mai mult de o măsurătoare de covarianță care poate fi calculată, deci pentru un set de date cu 3 dimensiuni, unde (dimensiunile x, y ,z) pot fi calculate ca cov(x ,y), cov(x, z) și cov (y, z).
Pentru a obține toate valorile posibile de covarianță între dimensiunile diferite este de a le calcula pe toate și să fie adăugate într-o matrice.
Formula matricei de covarianță este mai jos.
Unde este matricea cu n rânduri și n coloane, este dimensiunea x.Deci dacă este un set de date cu n dimensiuni , atunci matricea are n rânduri și n coloane și intrarea în matrice este rezultatul al calculului de covarianță a dintre două dimensiuni separate.
Calcularea a matricei de covarianță conduce la crearea unei matrice x unde N = dimensiunea (50×50 pixeli), deci rezultă ca dimensiune de 2500 x 2500. Aceasta determină încetinirea drastică a sistemului. Așadar, reducem regiunea de zgomot a interfețelor.
Figura 14. Reducerea dimensiunilor.
Un exemplu de calcularea unui set de date cu 3 dimensiuni, ce având dimenisiunile x , y și z, rezultând că matricea va avea 3 rânduri și 3 coloane, numind-o matricea cu 3 dimensiuni.
În diagonala principală, se observă că valoarea covarianței se află între una dintre dimensiuni și ea însăși.
Calcularea unui set de date pentru 3 dimensiuni:
Deoarece elementele non-diagonale din această matrice covarianță sunt pozitive, ar trebui să ne așteptăm ca atât x cât și y să crească împreună.
Se generează vectorii proprii, unde valorile proprii multiplică două matrici împreună cu condiția de avea aceleași mărimi și să fie compatibile, unde vectorii proprii sunt un caz special pentru acest lucru și se găsesc prin multipli ai matricei de covarianță de către un vector în două spații de dimensiuni.
Vectorii proprii rezultă că matricea de covarianță este echivalentul unei matrici de transformare.
Matricea de transformare se află prin înmulțirea matricei de covarianță cu vectorii proprii:
==
Mai jos este exact de 4 ori vectorul cu care s-a început, deci acesta este un vector în două spații dimensionale.
Cu alte cuvinte vectorii proprii pot fi scalați prin care jumătate din vector vor produce același tip de rezultate în continuare, deci rezultă că vectorul este o direcție și aceasta nu se va schimba, dar în schimb scala trebuie schimbată.
==
Pentru a afla vectorii proprii, trebuie ca aceștia să aibă lungimea exact 1, deoarece lungimea unui vector nu afectează dacă este vorba de un vector propriu sau nu.
În timp ce direcția are loc, de câte ori se găsește un vector, are lungimea de 1, astfel încât toți vectorii trebuie să aibă aceeași lungime.
Valorile proprii sunt legate de vectorii proprii utilizate și sunt valoarea căreia vectorul original a fost scalat.
Se calculează vectorii proprii și valorile proprii ale matricei de covarianță, de obicei. În cele mai multe cazuri, rezultatele furnizate sunt scalate la o lungime de 1.
Așadar matricea de covarianță este de forma unui pătrat, se pot calcula valorile proprii și vectorii proprii al acestei matrici.
Odată ce se găsesc vectori proprii din matricea de covarianță, următorul pas este să le ordonăm de eigenvalues (valorile proprii), de la cea mai mare la cea mai mică. Acest lucru vă oferă componentele în ordinea crescătoare.
Aici datele pot fi comprimate și vectorii mai slabi sunt îndepărtați, producând o metodă de comprimare a pierderilor, datele pierdute sunt considerate nesemnificative.
Acum cel mai important lucru este de a crea un vector caracteristic, se poate face prin a lua vectorii proprii pe care le vrem și să fie păstrate din lista vectorilor proprii și formând o matrice cu acești vectori proprii în coloane.
Putem forma fie un vector caracteristic cu ambele vectori proprii, exemplu în figura 15.
Figura 15. cu ambele vectori proprii.
Poate fi scos o componentă mică, mai puțin semnificativă și să avem doar o singură coloană exemplu în figura 16.
Figura 16. Un singur vector propriu.
Ultima etapă finală în analiza componentelor principale este derivarea noilor date ce constă prin alegerea componentelor adică vectori proprii pe care dorim să le păstrăm în datele noastre și formăm un vector caracteristic.
Luăm transpunerea vectorului și îl înmulțim în stânga setului de date original transpus. Adică data finală este egal cu vectorii caracteristici de rând înmulțit cu datele medii de rând zero.
Vectorul caracteristic de rând este matricea cu vectorii proprii din coloanele transpuse, astfel încât vectorii proprii sunt acum în rânduri, cu cel mai semnificativ vector propriu din partea superioară.
Datele medii de rând zero reprezintă elementele de date ce sunt în fiecare coloană, fiecare rând având o dimensiune separată.
Pentru reconstrucția datelor originale, dacă se reduce dimensiunea evident când se reconstruiesc datele se vor pierde acele dimensiuni pe care s-au ales.
Figura 17. Funcționarea PCA-ului.
6. Tehnologii și limbaje de programare folosite.
Am ales să folosesc în acest proiect limbajul de programare C#, împreună tu tehnologiile EmguCV și OpenCV și cu fișierele XML cu clasificatorii pentru față și ochi pentru detectare și recunoaștere facială.
6.1. Limbajul de programare C#
Limbajul de programare C# ce a fost dezvoltat de o echipă de la Microsoft la sfârșitul anilor 90 ,este un limbaj orientat pe obiecte, simplu, modern, ce permite dezvoltarea programelor de lungă durată.
Limbajul C# a moștenit de la limbajul de programare C sintaxa, cuvinte cheie și operatori și-n plus de asta, este înrudit cu limbajul Java. C# oferă suport pentru componente software și implementează elemente ce alcătuiesc componenetele software, cum ar fi: metode, proprietăți și evenimente.
Fiind un limbaj orientat pe obiecte are ca principii de bază urmatoarele proprietăți: moștenire, polimorfism și încapsulare.
Între arhitectura .NET și limbajul de programare C# exită o strânsă legătură, deoarece C# a fost creat pentru generarea codului pentru arhitectura .NET și bibliotecile ale framework-ului .NET sunt utilizate de C#.
6.2. Arhitectura .NET
Arhitectura .NET este un mediu de dezvoltare a aplicațiilor pentru sistemele de operare Windows, ce permite rularea aplicațiilor independete de platformă și dispune o colecție de clase structurare în biblioteci, în care le folosește limbajul de programare C#.
Framework-ul .NET dispune de două entități importante:
Mediu de execuție al programelor, ea se ocupă cu administrarea și executarea codului scris în .NET, dar oferă servicii de securitate pentru aplicații, administrarea memoriei și tratarea excepțiilor
Biblioteca de clase .NET ce conține o gamă largă de nevoi pentru programare, având conectarea la baza de date pentru a avea acces la date, interfață grafică pentru utilizator, aplicații web, rețele și multe altele, are în memorie de regulă niște metode, pe care utilizatorul le poate apela din propriul program, dar acele metode aparțin unor clase și clasele la rândul lor sunt structurare și separate cu ajutorul spațiilor având numele de namespaces.
6.3. OpenCV
OpenCV este o bibliotecă de funcții de programare, creat inițial de Intel la începutul anilor 2000, se bazează prin procesarea de imagini în timp real.
Poate fi folosit pentru detecția obiectelor, face capturi în timp real și aplică filtre pe imagini.
Această bibliotecă are interfețe pentru multe limbaje de programare cum ar fi: C, C++, Java, Python și multe altele, dar poate fi rulat pe orice sistem de operare, cum ar fi: Windows, Linux, Mac și altele.
6.4. EmguCV
EmguCV este o platformă transversală .NET și scris în întregime în C# și utilizat în biblioteca OpenCV, ce poate folosi funcțiile din bibliotecă compatibile pentru limbajele de programare C#, C++ și Java și poate fi compilat în Visual Studio, Unity și Xamarin Studio.
6.5. XML
XML este un meta-limbaj de marcare folosit ca model de stocare structurată a informației, datele XML pot fi folosite în HTML fiind un limbaj pentru site-uri web, permite o recunoaștere rapidă a informațiilor cu ajutorul motoarelor de căutare și-și poate crea propriile tag-uri.
XML dispune de următoarele avantaje:
Verifică dacă datele sunt structurate bine
Este simplu și accesibil
Ușor de modificat folosind un editor
XML conține și dezavantaje precum:
Flexibilitate
Este mai strict decât HTML
Regulile nu sunt scrise în XML
Pentru detecția facială, s-a folosit fișiere XML cu clasificatorii deja calculați pentru față(ochi,nas,gură,frunte,obraz).
7. Aplicația
Aplicația este o platformă dezvoltată în limbajul C#, fiind ușor de utilizat.
Dispune pentru utilizatori doar partea de detectare și recunoaștere, dar în schimb administratorul are rolul de a adăuga persoane noi în baza de date, doar după ce s-a logat.
L-a pornirea aplicației, camera web se auto conectează și începe procesul de detectare și recunoaștere.
Dacă o persoană se află în fața camerei, va fi doar detectată și poreclită “Necunoscut” ,dar nu va fi și recunoscută, nu poate avea acces de exemplu în camera respectivă și va afișa mesajul “Acces nepermis” ,în cazul dacă vroia să intre.
Figura 18. S-a detectat o persoană nerecunoscută.
În cazul în care administratorul vrea să adauge o persoană în baza de date, ca apoi să aibă acces, trebuie doar să dea click pe butonul “Administrație”, unde vor apărea câmpurile necesare pentru a se putea loga cu datele respective.
Figura 19. Accesul către administrație.
După ce s-a logat, are posibilitatea de a scrie numele acelei persoane, ca ulterior să fie introdusă în baza de date, dând click pe butonul “Adaugă”. Fotografia va fi salvată în baza de date odată cu numele acesteia și afișând mesajul “Adăugat cu succes”.
Procesul de adăugare a unei singure persoane necesită între 5 și 10 fotografii cu poziții diferite ale feței, pentru o recunoaștere reușită.
Figura 19. Persoana adăugată cu succes.
De regulă recunoașterea feței în totalitate se face doar atunci când fața cu trăsăturile ei (nas, gură, frunte) și separat ochii, ele trebuiesc să fie detectate toate, dacă ochii nu sunt detectați, atunci persoana este recunoscută parțial.
Figura 20. Statut acces parțial datorită ochilor nedetectați.
Când fața a fost detectată cu succes cu toate trăsăturile ei, atunci persoana este recunoscută în totalitate.
Figura 21. Statut acces stabilit datorită ochilor detectați.
Cu timpul omul îmbătrânește și fața acestuia se schimbă și am da bătăi de cap administratorului.
Pentru a adăuga noi persoane în baza de date care nu au fost niciodată adăugate până-n prezent nu constituie o problemă, după ce au fost introdu-se o să apară probleme de recunoaștere.
S-a implementat o funcție prin care se face auto învățarea.
Când respectivul ajunge la cameră și este recunoscut, atunci programul îi face o captură și este adăugată o poză nouă în baza de date odată cu numele acestuia.
În figura 22 este prezentat mesajul “Învățat cu succes”.
Figura 22. Programul a învățat cu succes persoana.
Când sunt cel puțin două persoane sau mai multe detectate la camera web, programul o să afișeze mesajul “Vă rugam sa fiți doar o singură persoană în fața camerei”.
Din acel moment aplicația nu o să învețe din cauza că sunt cel puțin două persoane detectate sau chiar recunoscute.
Figura 23. Restricție datorită ca sunt detectate cel puțin două persoane.
În cazul când cineva dorește să încerce sa folosească o fotografie a unui necunoscut, care nu se află în baza de date, dar fața e detectată, ochii sunt detectați, apare și porecla “Necunoscut”, atunci soft-ul nu o să-l învețe automat și știind că este fals.
Figura 24. Persoană din poză detectată și nu o să fie învățat de soft.
8. Testarea
Testarea este un lucru important înainte de a da un produs spre piață, mai întâi, trebuie trecut printr-o serie de teste pentru a vedea ce funcționează bine și ce nu.
Este important ca aplicația să reușească să detecteze o față a unei persoane, ca apoi să fie recunoscută în cazul dacă este înregistrată în baza de date.
8.1 Testarea detectării și recunoașterea facială
În figura 25 este reprezentată detectarea și recunoașterea persoanei cu succes.
Figura 25. Fața a fost detectată și recunoscută
8.2 Testarea detectării și recunoașterea facială cu ochelari
În timp persoana respectivă poate-și pune ochelari,baza de date nu-i are fața înregistrată cu niște ochelari obișnuiți, dar totuși poate fi recunoscută datorită detecției ochilor, care sunt separați si din fericire oglinzile sunt transparente.
Figura 26. Fața a fost detectată și recunoscută cu ochelari.
8.3 Testarea detectării și recunoașterea facială cu ochelari de soare
În cazul în care persoana poartă ochelari de soare ochii și sunt acoperiți 100%, dar totuși cu ajutorul nasului, gurii, obrajilor și frunții poate fi recunoscută parțial.
Figura 27. Fața detectată și recunoscută parțial cu ochelari de soare.
8.4 Testarea detectării și recunoașterea facială având un creion ce acoperă o parte din ochi, gură și nas
Aici se poate observa că creionul acoperă un ochi, gura și nasul și persoana respectivă nu poate fi recunoscută din cauză că acele zone acoperite nu pot fi detectate.
Figura 28. Fața nu a fost detectată și recunoscută datorită creionului
8.5 Testarea detectării și recunoașterea facială având un creion ce acoperă un singur ochi
În acest caz se poate observa că fața este recunoscută în ciuda faptului că creionul a acoperit un ochi, aici se datorează faptului că se utilizează două fișiere xml unul pentru față și unul pentru ochi.
Figura 29. Fața a fost recunoscută cu-n singur ochi
Concluzii
Aplicația este capabilă să detecteze și să recunoască fețele persoanelor care au fost introdu-se în baza de date și având o acuratețe pentru recunoașterea facială destul de bună, unde s-au implementat 2 algoritmi:
Algoritmul Viola și Jones a fost folosit pentru detecția facială, poate face diferența dintre imaginile pozitive și cele negative, detectarea se face în timp real.
Analiza componentelor principale care a fost folosit pentru recunoașterea facială, este eficientă de a lua trăsăturile dintr-un set de date și des utilizată în recunoașterea obiectelor.
O etapă importantă implementată în aplicație a fost la detectarea separată a ochilor, pentru că majoritatea pozelor de pe cărțile de identitate sunt mici, aici constituie un avantaj că ochii nu pot fi detectați și așa dă o notă de securitate în plus.
Pe viitor, îmi propun să dezvolt aplicația să poată cere persoanei să clipească înainte de a intra într-o clădire atunci când o recunoaște.
Bibliografie
https://en.wikipedia.org/wiki/OpenCV
http://www.emgu.com/wiki/index.php/Main_Page
https://en.wikipedia.org/wiki/Face_detection
https://en.wikipedia.org/wiki/Haar-like_feature
https://memememememememe.me/post/training-haar-cascades/
https://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html
https://en.wikipedia.org/wiki/Principal_component_analysis
https://link.springer.com/article/10.1023%2FB%3AVISI.0000013087.49260.fb
https://cs.nyu.edu/~eugenew/publications/viola-facedet04-talk.pdf
https://en.wikipedia.org/wiki/Viola%E2%80%93Jones_object_detection_framework
Face Recognition Using An Embedded HMM (1999)
Robust Real-Time Face Detection (2004)
https://en.wikipedia.org/wiki/Digital_image_processing
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: SPECIALIZAREA: Calculatoare și Tehnologia Informației Aplicație pentru recunoaștere facială Coordonator științific, Ș.I. dr. Marian Viorel Crăciun… [302997] (ID: 302997)
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.
