Programul de Licenă: Automatică i Informatică [624424]

Facultatea de Automatică ܈i Calculatoare
Programul de Licen܊ă: Automatică ܈i Informatică
Aplicată

– Autentificare bazata pe recunoastere faciala –
Proiect de diplomă

Coordonatori: Candidat: [anonimizat]. Adriana ALBU Paul NOVAC
As.univ. Cristian ZIMBRU

2018

2

Cuprins

Capitolul 1. Introducere ……………………………………………………………………………………………………. 1

1.1. Context ……………………………………………………………………………………………………………………. 1

1.2. Tema proiectului ………………………………………………………………………………………………………. 2

1.3. Python – Prezentare Generala …………………………………………………………………………………….. 2

1.4. Retele Neuronale ………………………………………………………………………………………………………. 2

Capitolul 2. Sisteme ܈i tehnologii folosite ………………………………………………………………………….. 4

2.1. Python ……………………………………………………………………………………………………………………… 4

2.1.1 Dezvoltare …………………………………………………………………………………………………………. 20

2.1.2 Python Dlib ………………………………………………………………………………………………………… 20

2.1.2.1 Introducere ………………………………………………………………………………………………………. 20

2.1.2.2 Mod de functionare …………………………………………………………………………………………… 20

2.1.3 Speech to Text ……………………………………………………………………………………………………. 13

2.2. SQLite Data Base ……………………………………………………………………………………………………… 8

2.3. Facebook API and Access Tokens …………………………………………………………………………….. 20

4 Capitolul 3. Prezentarea Aplica܊iei …………………………………………………………………………………… 22

3.1. Scopul aplica܊iei ……………………………………………………………………………………………………… 22

3.2 Prezentarea modulelor ………………………………………………………………………………………………. 23

3.2.1. Captura de Imagini – ‘ImageCapture ’ ……………………………………………………………………… 34

3.2.2. DataBase ……………………………………………………………………………………………………………… 34

3.2.3. Face Recognition & Neural Network Training …………………………………………………………. 34

3.2.4. Speech2Text ………………………………………………………………………………………………………… 34

3.2.5. Text2Speech ………………………………………………………………………………………………………… 34

3.3. Implementarea aplica܊iei ………………………………………………………………………………………….. 34

3.3.1. Implementarea generală ………………………………………………………………………………………… 34

3.3.2. Implementarea în detaliu ……………………………………………………………………………………….. 36

3.4. Aplica܊ii existente ……………………………………………………………………………………………………. 39

Capitolul 4. Directii de continuare a dezvoltarii ……………………………………………………………….. 45

Capitolul 5. Concluzii ……………………………………………………………………………………………………. 45

Capitolul 6. Bibliografie …………………………………………………………………………………………………. 46

5 Figura 1. Logo-ul Python. ……………………………………………………………………………………………………………………… 9
Figura 2. Straturile de baza ale unei retele neuronale. ……………………………………………………………………………… 10
Figura 3. Mostra de imagine care contine o fata. …………………………………………………………………………………….. 14
Figura 4. Detectarea fetei din imagine. ………………………………………………………………………………………………….. 15
Figura 5. Analiza caracteristicilor faciale din imagine. …………………………………………………………………………….. 15
Figura 6. Compararea fetei detectatea, cu cea din baza de date. ………………………………………………………………… 15
Figura 7. Predictia pentru imaginea curenta. …………………………………………………………………………………………… 16
Figura 8. Transformarea imaginii color in alb-negru. ………………………………………………………………………………. 17
Figura 9. Analiza caracteristicilor faciale. ………………………………………………………………………………………………. 17
Figura 10. Fluxul de la lumina la intuneric, pentru intreaga imagine. ………………………………………………………… 18
Figura 11. Identificarea celor 68 de repere faciale. ………………………………………………………………………………….. 19
Figura 12. Detectarea fetei, identificarea reperelor faciale, extragerea reperelor si forfecar ea imaginii. ………….. 20
Figura 13. Logo-ul pachetului Dlib. ………………………………………………………………………………………………………. 24
Figura 14. Reprezentarea caracteristicilor faciale. …………………………………………………………………………………… 26
Figura 15. Indicii celor 68 de repere faciale. …………………………………………………………………………………………… 27
Figura 16. Structura bazei de date. ………………………………………………………………………………………………………… 29
Figura 17. Schitarea posibilitatii de utilizare a aplicatiei. ………………………………………………………………………….. 30
Figura 18. Arhitectura sistemului. …………………………………………………………………………………………………………. 33
Figura 19. Interfata grafica a aplicatiei. ………………………………………………………………………………………………….. 34
Figura 20. Design-ul implementarii butonului de pornire a aplicatiei. ………………………………………………………. . 35
Figura 21. Predictia retelei neuronale. …………………………………………………………………………………………………… 36
Figura 22. Interfata grafica, pentru accesul permis. ………………………………………………………………………………… 36
Figura 23. Etichetare specifica persoanelor care nu fac parte din baza de date. …………………………………………. 37
Figura 24. Interfata grafica de adaugare nume utilizator. ………………………………………………………………………… 38
Figura 25. Design-ul implementarii butonului de inserare a unui nou u tilizator. …………………………………………. 38
Figura 26. Structura de foldere a bazei de date. ……………………………………………………………………………………… 39
Figura 27. Design-ul pentru stergerea unui utilizator. ……………………………………………………………………………… 39
Figura 28. Interfata grafica pentru introducerea parolei de administrator. ………………………………………………… 40
Figura 29. Design-ul implementarii pentru reantrenarea retelei neuronale. ………………………………………………. 40
Figura 30. Detectia utilizand aplicatia Kairos . …………………………………………………………………………………………. 41
Figura 31. Logo-ul aplicatiei AiCure. ………………………………………………………………………………………………………. 42
Figura 32. Logo-ul Walmart. …………………………………………………………………………………………………………………. 42

6

7 Capitolul 1. Introducere

1.1. Context
In Romania si chiar la nivel European, dezvoltarea aplicatiilor desktop este inca la putere, in
era vitezei pentru a multumirea clientul apare nevoie de a tine pasul anual cu noile te ndinte
din sfera tehnologica.

Recunoasterea faciala reprezinta in prezent o zona foarte cercetata in stiinta calcula toarelor.
Securitatea prin utilizarea solutiilor de recunoastere faciala este valul viitorului. Utilizatorii
pot accesa conturi, pot primi acces in diferite institutii si toate acestea cu un singur “selfie ”.

Autentificarea prin recunoastere faciala functioneaza in felul urmator, un simplu “selfie ”
realizat cu o camera de fotografiat (fie ca este vorba de o camera de telefon sau o cameer a
web), creeaza un sablon biometric, foarte precis si securizat, al fetei unui utilizator folosind
algoritmi sofisticati de invatare automata.

Viteza se obtine evitand indelungatul proces de creare unui cont, pentru acest lucru
utilizatorul poate alege logarea cu facebook-ul sau poate opta pentru o serie de fotografii
facute pe loc, cu o camera web pentru a face parte din baza de date.

Baza de date este folosita de o retea neuronala bine antrenata, pentru ca recunoasterea faciala
sa aiba loc in cel mai rapid si eficient mod cu putinta. Confirmarea persoanei in cauza cu una
existenta in baza de date, ii va permite accesul persoanei respective spre exemplu intr-o
companie, confirmarea se face printr-un mesaj audio.

8 1.2. Tema proiectului

Limbajul de programare pentru aplicatia curenta este Python, fiind o aplicatie desktop pentru
sistemul de operare Windows, aceasta foloseste un API de la Facebook pentru popularea
bazei de date SQLite.

Baza de date este populata, fie cu ajutorul API-ului de la Facebook, care prin autentificare l a
contul personal de facebook, descarca toate pozele de profil ale persoanei in cauza, fie
utilizatorului i se vor face pe loc poze din diferite unghiuri cu ajutorul unei camere web, poze
care vor fii salvate in baza de date, iar mai api vor fi folosite de reteaua neuronala, in prim a
faza pentru antrenare, iar mai apoi pentru a acordarea accesului in cladire.

Acordarea accesului se face prin confirmarea persoanei detectate de catre o camera d in sistem
cu una deja existenta in baza de date, in cazul in care persoana in cauza nu exista in baz a de
date, se va trimite un mail de instiintare catre administratorul aplicatiei (IT-ul – in cazul
companiilor), acesta avand ulterior posibilitatea de a adauga noua persoana in baza de date.
Dupa confirmarea persoanei cu una existenta in baza de date, utilizatorului in cauza i se va
permite accesul in locatia in care aplicatia activeaza. Intreg sistemul functioneaza si pe baza
de comenzi vocale, sistem care la randul lui va putea informa utilizatorul cu un mesaj audio
corespunzator situatiei curente (exemplu: “Accesul este permis. ”). Datorita acestei interactiuni
biunivoce, sistemul este foarte usor de gestionat si de intretinut.

Intreaga aplicatie va rula pe un singur sistem de calcul, pe care se va regasi baza de da te cu
persoanele cu drept de acces si fisierul responsabil cu datele antrenate pentru reteaua
neuronala.

9 1.3. Python – Prezentare Generala

Python este un limbaj de programare dinamic, a fost dezvoltat in 1989 de catre un
programator de origine olandeza Guido van Rossum. O multitudine de companii folosesc
Python ca si limbaj de programare, cateva dintre acestea ar fii: Google sau Yahoo! folosit
pentru programarea aplicatiilor web. Python poate fii folosit si pentru crearea unor aplicatii
stiintifice sau de divertisment, aplicatii care pot fii programate fie partial fie in intregime in
Python.
Datorita popularitatii si puterii foarte ridicate, limbajul de programare este foarte apreciat in
randul programatorilor specializati, fiind un instrument foarte apreciat in cadrul mediilor
universitare. Accentul este pus pe curatenia si simplitatea codului, sintaxa le permite
dezvoltatorilor sa isi exprime ideile programatice intr-o maniera mult mai clara si mai concisa
spre deosebire de alte limbaje de programare.

Figura 1. Logo-ul Python.

Aplicatia care face subiectul acestei lucrari a fost dezvoltata in Python 3.6, versiune lansata in
anul 2016, acest lucru insemnand ca toate imbunatatirile recente ale bibliotecilor, sunt
disponiibile in mod implicit numai in Python 3.x.

10 1.4. Retele Neuronale

Retelele neuronale reprezinta acea ramura a stiintei inteligentei artificiale si constituie
totodata, un instrument de cercetare pentru neuroinformatica. Retelele neuronale artificiale se
caracterizeaza ca fiind elemente simple de procesare, fiind puternic interconectate si para lel
operationale, avand ca rol interactiunea cu mediul inconjurator intr-o maniera asemanatoare
creierelor biologice, prezentand o capacitate avansata de invatare.

Retelele neuronale sunt compuse din neuroni artificiali, fiind parte a inteligentei artificiale,
avand conceptional originea ca si neuroni artificiali, in biologie. Retelele neuronale pot fii
definite ca fiind retele de elemente simple, dar puternic interconectate prin intermediul unor
legaturi, care poarta denumirea de interconexiuni, prin care se propaga informatie numerica.

Figura 2. Straturile de baza ale unei retele neuronale.

11 Principala trasatura a acestor retele este capacitatea de invatare pe baza unor exemple,
utilizand experienta precedenta in scopul imbunatatirii rezultatelor.

Desi asemanarea cu creierul uman, atunci cand vine vorba de functionare este destul de mare,
retelele neuronale se diferenteaza ca si structura fata de creierul uman. Reteaua neuronala este
mult simplificata in comparatie cu corespondentul sau uman, insa la fel ca si creierul uman, se
compune din unitati puternice cu capacitate de calcul, cu toate acestea sunt mult inferioare
neuronului.

Retelele neuronale artificiale sunt caracterizate pe baza a 3 elemente:
 Modelul utilizat pentru procesarea individuala
 Arhitectura
 Mecanisme de invatare

Exista mai multe moduri de a clasifica modelele neuronului elementar, acestea implica:
domeniul definitiilor pentru semnalele folosite, natura datelor utiliizate, tipul functiei apelate
si prezenta memoriei.

La nivel macro se pot identifica doua clase de arhitecturi:
 Cele care propaga informatia doar dinspre intrare spre iesire
 Retele cu reac tie

Retelele neuronala au deasemenea cateva dezavantaje, aceste dezavantaje sunt reprezentate de
lipsa teoriei care este responsabila pentru precizarea tipului retelei si a numarului de neuroni
elementari, precum si modalitatile de interconectare.

12 Exista mai multe deosebiri intre retelele neuronale si sistemele electronice de prelucrare a
informatiilor, insa principala diferenta este reprezentata de capacitatea de invatare, care se
desfasoara in urma interactiunii cu mediul inconjurator si imbunatatirea continua a
performantelor.

Reprezentarea corecta a informatiilor, cu scopul de a permite interpretarea, predictia si
raspunsul sistemului la stimuli externi, pot permite retelei neuronale sa dezvolte un model
propriu al procesului in cauza, astfel acest model, in cele din urma va putea raspunde unor
stimuli care nu au fost utilizati in procesul anterior de invatare a retelei. Informatiile folosite
in cadrul procesului de invatare, pot fi: informatii care se cunosc dinainte sauu perechi de
intrare-iesire (cu rol in stabilirea relatiei de tip cauza-efect), modul de reprezentare inte rna,
urmand un set de reguli foarte bine documentate.

Conceptele re܊elelor neuronale ne permite să extragem o gamă largă de caracteristici din
imagini. Extragerea caracteristicilor pentru recunoa܈terea faciala se foloseste de aceasta idee.

Invatarea profunda, este zona incipientă a informaticii care revolu܊ionează inteligen܊a
artificială, permi܊ându -ne să construim ma܈ini ܈i sisteme ale viitorului. De܈i învă܊area
profundă u܈urează via܊a, în܊elegerea modului în care func܊ionează poate fi dificilă.

Invă܊area automată este o zonă a Inteligen܊ei Artificiale (AI) care le permite calculatoarelor să
"înve܊e". În mod tradi܊ional, întotdeauna am folosit computere le pentru a face lucruri, oferind
un set strict de instruc܊iuni (de exemplu, programe de calculator). Învă܊area cu ma܈ini
utilizează o abordare foarte diferită. În loc sa oferim computerului un set de instruc܊iuni
despre cum să facem ceva, îi oferim instruc܊iuni despre cum să înve܊i să faci ceva.

Oferindu- i date ܈i programând pentru a folosi diferite modele matematice ܈i statistice care să
convingă datele ܈i să înve܊e să ia decizii bazate pe acestea. Aceasta abordare nu face altc eva

13 decat sa invete algoritmul sa urmareasca diferentele de aspect daca vorbim de imagini. Acest
lucru se poate face folosind o serie de a lgoritmi diferi܊i.

In acest fel, computerul "înva܊ă" singur, în loc să fie programat în mod specific să facă o
anumită sarcină. Procesul de predare a cal culatorului (adică oferirea datelor de învă܊are )
poarta denumirea de antrenament.

Învă܊area profundă, a܈a cum sugerează ܈i numele, reprezinta un subdomeniu a învă܊ării
ma܈inilor. Învă܊area în profunzime implică, în cea mai mare parte, utilizarea unor re܊ele
neuronale profunde (algoritmi / modele computa܊i onale) pentru a aborda problemele de
învă܊are mecanică.

Uneori folosirea algoritmilor de luare a decizi ilor ܈i / sau a altor algoritmi de învă܊are a
ma܈inilor poate fi, de asemenea, numită învă܊are profundă, dar, în cea mai mare parte,
învă܊area profundă implică utilizarea re܊elelor neuronale.

Recunoa܈terea faciala presupune bineinteles rezolvarea catorva probleme:
In prim pas, avem nevoie de cel putin o imagine in care sa gasim, cel putin o fata, in cazul in
care imaginea contine mai multe fete, acestea trebuiesc detectate.

În pasul doi, algoritmul trebuie să se concentreze pe fiecare fa܊ă ܈i să poată în܊elege că si
atunci cand o fa܊ă este într- o direc܊ie ciudată sau într -o iluminare proastă, ea este încă aceea܈i
persoană.

În al treilea rând, trebuie sa existe o disponibilitate de a alege trasaturile faciale unice, care pot
fi folosi pentru a face distinctia intre oameni, cum ar fi: cat de mari sunt ochii, cat de alungita

14 este fata, etc. În cele din urmă, compara܊i caracteristicile unice ale acelei fe܊e cu to܊i oamenii
pe care deja îi cunoa܈te܊i , pentru a determina numele persoanei.

Ca om, creierul este legat să facă toate acestea automat ܈i instantaneu. De fapt, oamenii sunt
prea buni la recunoa܈terea fe܊elor ܈i ajung să vadă fe܊e în obiectele obi܈nuite. Computerele nu
sunt capabile de acest gen de generaliza re la nivel înalt (cel pu܊in nu încă), a܈a că trebuie să le
învă܊ăm cum să facă fiecare pas în acest proces separat.

Trebuie să construim o conductă în care să rezolvăm separat fiecare pas de recunoa܈tere a
fe܊ei ܈i să trecem rezultatul etapei curente la pasul următor. Cu alte cuvinte, vom alătura
împreună mai mul܊i algoritmi de învă܊are a ma܈inilor:
Pasii pentru recunoasterea faciala sunt descrisi in cele ce urmeaza:

1. Avem nevoie de o imagine care sa contina cel putin o fata.

Figura 3. Mostra de imagine care contine o fata.

15
2. Cat timp avem cel putin o fata in imaginea, aceasta fata va trebui detectata.

Figura 4. Detectarea fetei din imagine.

3. Dupa ce detectia a avut loc, se vor analiza caracteristicile faciale, ale subiectului in cauza.

Figura 5. Analiza caracteristicilor faciale din imagine.

4. Se va compara fata gasita in imagine cu toate fetele care se gasesc in baza de date.

Figura 6. Compararea fetei detectatea, cu cea din baza de d ate.

16
5. Dupa care se va face o predictie.

Figura 7. Predictia pentru imaginea curenta.

In cele ce urmeaza abordarea problemei se va face pas cu pas, pentru fiecare pas se va fa ce
cunoscut in linii mari algoritmul de invatare al masinilor.

Pasul 1 – Gasirea tuturor fetelor:
Primul pas în conducta noastră este detectarea fe܊ei. Evident, trebuie să găsim fe܊ele într -o
fotografie înainte de a incepe analiza caracteristicilor faciale.

Detectarea fe܊ei a fost integrată la începutul anilor 2000, când Paul Viola ܈i Michael Jones au
inventat o modalitate de a detecta fe܊e, metoda care era destul de repida pentru a rula pe
camere ieftine. Cu toate acestea, există solu܊ii mult mai fiabile acum. Vom folosi o metodă
inventată în 2005 numită Histogramă de gradien܊i orienta܊i – sau doar HOG pe scurt.
Pentru a găsi fe܊e într -o imagine, vom începe prin a transforma imaginea noastră intr-o
imagine alb-negru, deoarece nu avem nevoie de date de spre culoare pentru a găsi fe܊e:

17

Figura 8. Transformarea imaginii color in alb-negru.

Dupa care ne vom uita la fiecare pixel din imaginea noastră unul câte unul. Pentru fiecare
pixel, dorim să privim pixelii care îl înconjoară:

Figura 9. Analiza caracteristicilor faciale.

Scopul este acela de a ne da seama cât de întunecat este pixelul curent in comparatie cu pixelii
care îl î nconjoară. Apoi vrem să desenam o săgeată care să arate în ce direc܊ie imaginea
devine mai întun ecată. Dacă acest proces este repetat pentru fiecare pixel din imagine,in cele
din urma o sa avem fiecare pixel înlocuit de o săgeată. Aceste săge܊i sunt numite gradien܊i ܈i
arată fluxul de la lumină la întuneric pe întreaga imagine:

18

Figura 10. Fluxul de la lumina la intuneric, pentru intreaga imagine.
Pentru a găsi chipuri în această imagine HOG, tot ce trebuie să facem este să găsim ac ea parte
a imaginii care arată cel mai asemănător cu un model HOG cunoscut care a fost extras dintr -o
grămadă de alte fe܊e de antrenament. Folosind aceasta teehnica, gasirea fetelor in fiecare
imagine este mult mai simpla.

Pasul 2 – Pozitionarea si proiectarea fetelor:

Dupa ce am izolat toate fetele dintr-o imagine, ne vom confrunta cu faptul ca acele fete ca re
sunt orientate in diferite directii, arata complet diferit pentru un computer. Pentru a ܊ine cont
de acest lucru, vom încerca să denaturam fiecare imagine, astfel încât ochii ܈i buzele să fie
întotdeauna în locul unde e܈antionul este în imagine. Acest lucru va face mult mai u܈ora
compararea fe܊elor în etapele următoare.

Pentru a face acest lucru, vom folosi un algoritm numit estimarea caracteristicilor facial e (face
landmark estimation) . Există multe modalită܊i de a face acest lucru, dar vom folosi abordarea
inventată în 2014 de Vahid Kazemi ܈i Josephine Sullivan.

Ideea de bază este că vom veni cu 68 de puncte specifice (numite repere) care e xistă pe
fiecare fa܊ă – partea superioară a bărbiei, marginea exterioară a fiecărui ochi, marginea
interioară a fiecărei sprâncene etc. Apoi vom pregăti algoritmul ma܈inii de învă܊are pentru a
putea găsi aceste 68 de puncte specifice pe orice fa܊ă:

Figura 11. Identificarea celor 68 de repere faciale.

Acum, că ܈tim unde sunt ochii ܈i gura, vom roti pur ܈i simplu, vom scala ܈i vom forfeca
imaginea, astfel încât ochii ܈i gura să fie centrate cât mai bine posibil. Vom folosi doar
transformări de bază ale imaginii, cum ar fi rota܊ia ܈i scalarea, care păstrează liniile pa ralele
(numite transformări afine):

Figura 12. Detectarea fetei, identificarea reperelor faciale, extragerea r eperelor si forfecarea imaginii.

Indiferent de modul în care se roteste fa܊a, algoritmul este capabili să centreze ochii ܈i gura în
aproximativ aceea܈i pozi܊ie ca si în imagine. Acest lucru va face următorul pas mult mai
precis.

Pasul 3 – Codificarea fetei:

Cea mai simplă abordare a recunoa܈terii faciale este aceea de a compara direct fa܊a
necun oscută găsită în pasul 2 cu toate imaginile pe care le avem ale persoanelor care au fost
deja etichetate. Când găsim o fa܊ă marcată anterior, care arată foarte asemănătoare cu fa ܊a
necunoscută, trebuie să fie aceea܈i persoană, insa acest proces este foarte greoi si incet.

Avem nevoie de o modalitate de a extrage câteva măsurători de bază de la fiecare fa܊ă. Apoi
am putea măsura fa܊a necunoscută în acela܈i fel ܈i am găsi fa܊a cunoscută cu cele mai
apropiate măsurători. De exemplu, am putea măsura dimensiunea fiecărei urechi, distan܊a
dintre ochi, lungimea nasului etc.

Se pare că măsurătorile care ni se par evidente oamenilor (cum ar fi culoarea ochilor) nu au
sens cu adevărat pentru un calculator care prive܈te la pixelii individuali dintr -o imagine.
Cercetătorii au descoperit că cea mai corectă abordare este aceea de a permite c omputerului
să-܈i dea seama ce măsurători sa colectează. Învă܊area profundă face o treabă mai bună decât
cea a oamenilor în a determina care păr܊i ale fe܊ei sunt importante pentru măsurare.

Pasul 4 – Gasirea numelui persoanei codificate:

Ultimul pas este, de fapt, cel mai simplu pas în întregul proces. Tot ce trebuie să facem este să
găsim persoana din baza noastră de date a unor oameni cunoscu܊i care au cele mai apropiate
măsurători imaginii testului nostru. Acest lucru se obtine folosind orice algoritm de bază de
clasificare a învă܊ării ma܈inilor.

Capitolul 2. Sisteme ܈i tehnologii fo losite

2.1 Python

Python este un limbaj de programare, interpretor , orientat pe obiecte, cu semantică dinamică.
Structurile de date construite la nivel înalt, combinate cu tastarea dinamică ܈i legarea
dinamică, îl fac foarte atractiv pentru dezvoltarea rapidă a aplica܊iilor, precum ܈i pentru
utilizarea ca limbaj de scripting sau lipire pentru a conecta împreună componentele existente.
Sintaxa simplă ܈i u܈or de învă܊at a lui Python accentuează lizibilitatea ܈i prin urmare, reduce
costu l între܊inerii programelor. Python acceptă module ܈i pachete, ceea ce încurajează
modularitatea programelor ܈i reutilizarea codului . Interpretul Python ܈i biblioteca extensivă
standard sunt disponibile atat în formă sursă cat si in forma binară .

2.1.1 Dezvoltare

Limbajul de programare Python a fost conceput la sfâr܈itul anilor 1980, insa implementarea sa
a fos t ini܊iată în decembrie 1989 de Guido van Rossum in ܉ările de Jos, fiind capabil de
tratarea excep܊iilor. Van Rossum este autorul principal al limbajului de programare Python,
iar principalul sau rol este de a continua să decidă direc܊ia limbajului de programare Python.

Python 2.0 a fost lansat pe 16 octombrie 2000, cu multe caracteristici noi, inclusiv un colector
de gunoi care detectează cicluri (în plus fa܊ă de numărarea referin܊elor) pentru gestionarea
memoriei ܈i suport pentru Unicode. Cu toate acestea, cea mai importantă schimbare a fost
procesul de dezvoltare în sine, cu trecerea la un proces mai transparent ܈i mai bine sus܊inut de
comunitate.

Python 3.0 este o versiune majoră, incompatibilă cu versiunile anterioare, a fost lansată pe 3
decembrie 2008 după o perioadă lungă de testare. Multe dintre caracteristicile sale majore au
fost, de asemenea, returnate la versiunile anterior compatibile cu Python 2.6 ܈i 2.7 .

Pentru dezvoltarea aplicatiei Python au fost necesare:
 PyCharm IDE
 Putty-0.67
 CMake
 Active Python DataBase
 DB Browser for SQLite

Cateva din pachetele Python instalate:
 dlib v19.13.0 – pachetul pentru retele neuronale si masini autonome
 face-recognition – pachetul pentru recunoastere faciala
 Py-Audio – pachetul pentru semnale audio
 pypiwin32 – pachetul pentru accesarea API-urilor
 pyspeech – pachetul pentru comenzi vocale
 pyttsx – pachetul pentru convertire sir caractere in semnal audio
 SpeechRecognition – pachetul pentru recunoastere vocala

Pentru a utiliza fiecare functionalitate a aplicatiei este necesara o conexiune la interne t,
deoarece apelarea API-ului Google cere acest lucru. In cazul in care nu exista o cone xiune la
internet, utilizatorul va fi informat. Modulul responsabil de transformarea comenzi vocale
date de utilizator in mesaj text, foloseste API-ul de la Google, acest lucru facand conexiunea
la internet o necesitate.

2.1.2. Python Dlib

2.1.2.1 Introducere

Dlib este o bibliotecă software generală cu multiple platforme , scrisă în lim bajul de
programare C ++ si folosita pentru rezolvarea problemelor reale. In primul rând, reprezinta un
set de componente software independente. Este un software open- source lansat sub licen܊a
Boost Software License.
Davis King a fost autorul principal al bibliotecii dlib inca de la începutul dezvoltării sale în
2002, aceasta a crescut pentru a include o mare varietate de instrumente. Începând cu anul
2016, aceasta biblioteca, con܊ine componente software pentru rezolvarea problemelor legate
de re܊ea, fire, interfe܊e grafice, structuri de date, algebră liniară, învă܊are automată, prelucrare
de imagini, extragere de date, parsarea textului, optimizare numerică, re܊ele bayesiene ܈i
multe alte sarcini.

Figura 13. Logo-ul pachetului Dlib.

În ultimii ani, o mare parte a dezvoltării a fost axată pe crearea unui set larg de instrumente
statistice de învă܊are a ma܈inilor . Cu toate acestea, dlib rămâne o bibliotecă cu scop general ܈i
salută contribu܊iile unor componente software de înaltă ca litate, utile în orice domeniu.
Este folosit atât în industrie, cât ܈i în mediul academic într -o gamă largă de domenii, inclusiv
robotică, dispozitive încorporate, telefoane mobile ܈i medii mari de calcul de înaltă
performan܊ă. Licen܊a Dlib open source vă permite să o utiliza܊i în orice aplica܊ie, gratuit.
Spre deosebire de o multitudine de proiecte open source, aceasta oferă o documenta܊ie
completă ܈i precisă pentru fiecare clasă ܈i func܊ie. Există, de asemenea, moduri de depanare
care verifică precondi܊iile documentate pentru func܊ii. Când acest lucru este activat, va prinde

marea majoritate a erorilor c auzate de func܊iile de apelare incorectă sau de utilizarea
obiectelor într-un mod incorect.
Corelarea cu filozofia de dezvoltare a bibliotecii dlib este o dedica܊ie pentru portabilitate ܈i
u܈urin܊ă în utili zare. Prin urmare, tot codul bibliotecii este con ceput astfel încât să fie cât mai
portabil posibil ܈i, în mod similar, să nu necesite ca utilizatorul să configureze sau să instaleze
ceva. Pentru a realiza acest lucru, codul specific platformei este limitat în ambalajele API.
Orice altceva este fie stratificat pe partea de sus a acestor ambalaje, fie este scris în standard
ISO standard C ++. În prezent, biblioteca este cunoscută pentru a lucra pe OS X, MS
Windows, Linux, Solaris.

2.1.2.2 Mod de functionare

Detectarea reperelor faciale este un subgrup al problemei de predic܊ie a formei. Având o
imagine de intrare (܈i în mod norma l o regiune de interest care specifică subiectul), un
predictor de formă încearcă să localizeze punctele cheie de interes de -a lungul
formei.Reperele faciale sunt folosite cu succes pentru alinierea fe܊ei, pentru postura c apului,
pentru schimbarea fe܊ei si pentru detectarea intermitentă.

În contextul reperelor faciale, scopul nostru este de a detecta structuri faciale importante pe
fa܊a, folosind metode de predic܊ie a formei. Repere reale sunt folosite pentru a localiza ܈i
reprezenta regiunile vizibile ale fe܊ei, cum ar fi:
 ochii
 sprâncenele
 nasul
 gura
 conturul fetei
Detectarea reperelor faciale este deci un proces în două etape:
Pasul 1: Localiza܊i fa܊a în imagine.
Pasul 2: Detecta܊i structurile faciale cheie pe ROI fa܊ă.

In urma pasului #1, ob܊inem o caseta de limitare a fe܊ei (adică, coordonatele (x, y) ale fe܊ei din
imagine):
Având în vedere regiunea fe܊ei, putem aplica apoi Pasul #2 si anume, detectarea structurilor
faciale cheie în regiunea fe܊ei. Există o varietate de detectori de reper faciali, dar toate
metodele înce arcă, în esen܊ă, să localizeze ܈i să eticheteze următoarele regiuni faciale: gura,
spranceana dreapta, spranceana stângă, ochiul drept, ochiul stang, nasul si falca.
Detectorul de repere faciale inclus în biblioteca dlib, are rolul de a eticheta imaginile in care
se gasesc structuri faciale. Aceste imagini sunt marcate manual, specificând coordonatele (x,
y) ale regiunilor care înconjoară fiecare structură facială.
Având în vedere aceste date de antrenament, un ansamblu de arbori de regresie este instruit să
estimeze pozi܊iile reperului facial direct din intensită܊ile pixelilor (adică nu are loc o
"extragere a caracteristicilor").

Figura 14. Reprezentarea caracteristicilor faciale.
Rezultatul final este un detector de repere faciale care poate fi folosit pentru a detecta repe rele
faciale în timp real, cu predic܊ii de înaltă calitate.
Detectorul de repere faciale pre-instruit, din interiorul bibliotecii dlib este utilizat pentru a
estima loca܊ia a 68 de coordonate (x, y), care sunt mapate pe structura fetei. Indicii celor 68 de
coordonate pot fi vizualizati in imaginea de mai jos:

Figura 15. Indicii celor 68 de repere faciale.

Indiferent de setul de date care se utilizează, acela܈i cadru se poate folosi pentru a forma un
predictor de formă pe datele de antrenament de intrare – acest lucru este util dacă dori܊i să
pregăti܊i detectori de reper facial sau predictori personaliza܊i pentru forma proprie.

2.1.3. Speech to Text

Recunoa܈terea vorbirii este un sub- câmp interdisciplinar al lingvisticii computa܊ionale care
dezvoltă metodologii ܈i tehnologii care permit recunoa܈terea ܈i traducerea limbii vorbite în
text de către calculatoare.
Google are un API de recunoa܈tere a l vorbirii, a cest API converte܈te intrarea audio, intrare
care poate sa provina de la un microfon în text

2.2. SQLite Data Base

Folosirea unei baze de date este importanta, deoarece gestioneaza eficient datele si permite
administratorilor sa efectueze cu usurinta mai multe sarcini, cateva din avantajele folosirii
unei baze de date sunt:
 Reduce redundanta datelor
 Imbunatatirea accesului la date pentru administratori
 Securitatea imbunatatita a datelor
 Dezvoltarea facila a programului de aplicatii noi

SQLite este un sistem de gestionare a bazelor de date relationale, scris in limbajul de
programare C. Spre deosebire de multe alte sisteme de gestionare a bazelor de date, SQLite nu
este un motor de cautare intr-o baza de date de tip client-server, ci mai degraba fa ce parte din
programul final.

Foloseste o sintaxa dinamica de tip SQL, care nu garanteaza integritatea domeniului, fiind o
alegere populara pentru bazele de date incorporate si pentru stocarea locala in aplicatii
software cum ar fi browserele web.

In ziua de astazi este probabil cel mai raspandit motor de baze de date, folosit de mai multe
browsere, sisteme de operare si sisteme incorporate. SQLite are legaturi cu multe limbaje de
programare.

Baza de date pe care aplicatia o foloseste este alcatuita din urmatoarele campuri:
 ID – Indexare Automata, contabilizeaza numarul de persoane din baza de date
 PICTURE – Tipul de data este BLOB(Binary Large Object), stocheaza fotografiile
persoanelor din baza de date

 TYPE – Tipul de data este Text, contine informatii cu privire la extensia cu care fotografia
a fost salvata
 FILE_NAME – Tipul de data este Text, contine numele imaginii salvate in baza de date si
totodata numele persoanei din fotografia respectiva.

Figura 16. Structura bazei de date.

Capitolul 3. Prezentarea Aplicatiei

3.1. Scopul aplicatiei
Aplicatia care face tema acestei lucrari reprezinta un sistem de autentificare si validare bazat
pe recunoastere faciala, procesare de imagini, fiind o aplicatie capabila sa interacti oneze cu
utilizatorul prin intermediul sistemului audio.

Aceasta aplicatie are rolul de a asigura accesul utilizatorului(angajatului) in cladirea in c are
acesta lucreaza, prin intermediul unei camere web instalate deasupra turnichetului de la
intrarea in cladire, de asemenea odata cu accesul in cladire se va face si pontajul de intrare,
respectiv iesire in functie de caz.

Figura 17. Schitarea posibilitatii de utilizare a aplicatiei.

Sistemul de fata scoate din ecuatie nevoie unui card de acces, pe care angajatul ar tre bui sa il
aibe zilnic in posesie, pentru a putea intra in cladire si a se putea ponta, astfel in cazul in care
acest card este uitat acasa sau este pierdut nu va influenta cu nimic prezenta la servici,
deoarece sistemul se bazeaza pe detectia faciala a angajatului.
Accesul in cladire este restrictionat doar la persoanele care sunt autorizate, persoanele noi
angajate vor fi adaugate in baza de date, optiunea de adaugare in baza de date va fi atribuita
unui administrator, deeoarece acest lucru presupune reantrenarea retelei neuronale.

3.2. Prezentarea modulelor

3.2.1. Captura de Imagini – ‘ImageCapture ’

Modulul responsabil cu captura imaginilor, acest modul va fi apelat numai in cazul in care
utilizatorul nu doreste sa se autentifice cu contul de Facebook. Este responsabil cu pornirea
camerei la care aplicatia este legata si va cere utilizatorului in primul rand sa isi introduca
numele complet, ( posibil si alte date personale ), dupa care mai multe poze i se vor face din
unghiuri diferite, pentru ca ulterior detectia pe care reteaua neuronala o va face sa fie mai
precisa.

3.2.2. DataBase

Acest modul implementeaza baza de date de care aplicatia se foloseste, fiind vorba de o baza
de date locala, in aceasta baza de date se vor introduce poze cu angajatii cu drept de acces in
cladire. Introducerea in baza de date se va face fie in urma utilizarii API-ului de la Facebook
fie prin apelarea modulului ‘ImageCapture ’.

3.2.3. FaceRecognition & Neural Network Training

Dupa cum ii spune si numele, modulul va fii responsabil cu recunoasterea faciala, pentru ca
procesul sa fie rapid si eficient am apelat la o retea neuronala antrenata in acest scop.
Recunoasterea faciala se face prin compararea fiecarei persoane detectate in cadrul flux ului
video cu cele deja existente in baza de date, in cazul in care persoana nu exista in baza de da te
se va instiinta administratorul despre acest lucru, tot administratorul are obligatia sa
reantreneze reteaua neuronala dupa ce o persoana noua a fost adaugata in baza de date, acest
lucru ii va permite accesul in cladire.

3.2.5. Speech2Text

Prin implementarea acestui modul utilizatorul va putea interactiona cu aplicatia prin
intermediul sistemului audio. Utilizand un microfon, utilizatorul va putea raspunde
sistemului. Raspunsul dat sistemului va fii convertit intr-un sir de caractere, folosind Google
API, sirul de caractere va avea drept scop stabilirea directiei aplicatiei, cu alte cuvinte va
hotara daca umeaza o captura de ecran sau descarcarea pozelor sale de profil de pe Facebook.

3.2.6. Text2Speech

Acest modul va converti un sir de caractere intr-o comanda audio, comanda pe care sistemul o
va reda utilizatorului folosind un difuzor(boxele laptop-ului). Acest modul este mult mai
simplist decat cel de Speech2Text, deoarece redarea audio se face folosind biblioteci python.

3.2. Implementarea modulelor:

Aplicatia a fost dezvoltata pe baza modulelor mai sus descrise. Modulele comunica intre ele,
dupa cum urmeaza, atunci cand pornim aplicatia, adica functionalitatea de baza, aceasta fiind
detectia si recunoasterea faciala, o instanta a camerei web este pornita, in spate este rulat
algoritmul retelei neuronale, algoritm responsabil cu detectia faciala in prima instanta. Atunci
cand detectie este confirmata in captura de imagine, captura va fi redimensionata, ramana nd
doar fata persoanei in cauza, dupa care i se vor extrage caracteristicile faciale, caracteristici
care mai apoi vor fi comparate cu cele deja existente in fisierul antrenat. Fisierul antrenat nu
este altceva, decat un fisier in care se gasesc caracteristicile faciale ale tuturor persoanelor din
baza de date locala. In cazul in care persoana face parte din baza de date, un c henar rosu va
aparea peste fata acesteia, iar in partea de jos a chenarului se afla o eticheta cu numele
persoanei in cauza.

3.3.1. Implementarea generala:
Sistemul este impartit in trei module mari:
 Modulul Audio
 Modulul Video
 Baza de Date

Figura 18. Arhitectura sistemului.

Modulul audio, este reprezentat de submodulele: ‘Speech2Text ’ si ‘Text2Speech ’,
responsabile de convertirea semnalului audio intr-un sir de caractere, respectiv convertirea
unui sir de caractere intr-un semnal audio. Submodulul ‘Speech2Text ’ are rolul de a oferi
utilizatorului, ocazia de a interactiona cu aplicatia folosind comenzi vocale, comenzi pe care
API-ul Google sa le transforme intr-un sir de caractere, ca mai apoi acest sir de caractere s a
constituie o comanda pentru aplicatia de fata.

Modulul v ideo, este alcatuit din urmatoarele submodule: ‘ImageCapture ’, ‘WebCamDeploy ’
si ‘NeuralNetwork ’. Cand comanda vocala data de utilizator a fost procesata, submodulul
‘WebCamDeploy ’ va intra in actiune, pornind o instanta a camerei web integrate a laptopului,
dupa care submodulul ‘ImageCapture ’, va face trei capturi de ecran, din trei unghiuri diferite,
utilizatorul fiind informat cu ajutorul submodulului ‘Text2Speech ’, referitor la schimbarea
pozitiei fetei. Submodulul ‘NeuralNetwork ’ va reantrena reteaua ori de cate ori un nou
utilizator este adaugat in baza de date, acest submodul mai este responsabil si de confirmarea
sau infirmarea apartenentei unui utilizator in baza de date.

Baza de date, este una locala, stocata pe laptop si contine informatii cu privire la utilizatori.
Acest modul interactioneaza cu modulul Video, prin faptul ca atunci cand o noua persoana
este introdusa sau stearsa, baza de date este responsabila cu aceasta sarcina.

3.3.2. Implementare in detaliu:

In acest subcapitol se va face o descriere amanuntita referitoare la design-ul aplicatiei si
anume ce se imtampla in spate, atunci cand apasam un buton din design-ul grafic al interfetei
aplicatiei.

Figura 19. Interfata grafica a aplicatiei.

Aplicatia contine patru butoane:
 Start Aplicatie
 Inserati Persoana
 Antrenare Retea
 Inchide Aplicatia

Butonul Start Aplicatie:

Figura 20. Design-ul implementarii butonului de pornire a aplicatiei.

La apasarea acestui buton, se vor intampla urmatoarele: o noua instanta a camerei web a
laptopului va porni, fiecare cadru din noua instanta va fi trimis catre reteaua neuronala si va fi

procesat, cu alte cuvinte in cazul in care apare o fata in cadrul curent, se vor extrage
caracteristicile faciale si se vor compara cu cele deja existente in fisierul deja antrenat
(trained_knn_model.clf). In cazul in care persoana exista in baza de date, se va face o
predictie conturandu-se fata persoanei din cadrul curent, iar in partea de jos a conturului se va
gasi o eticheta cu numele persoanei respective.

Figura 21. Predictia retelei neuronale.

In cazul in care vor fi sapte detectii consecutive confirmate ale aceleiasi persoane, accesul ii
va fi permis.

Figura 22. Interfata grafica, pentru accesul permis.

Daca persoana nu se afla in baza de date, i se va contura fata si va fi etichetat ca necunoscut.

Figura 23. Etichetare specifica persoanelor care nu fac parte din baza de date.

Dupa ce accesul persoanei in cauza a fost permis, se va face o reintoarcere catre meniul
principal.

Butonul Inserati Persoana:
Urmatorul buton din meniul aplicatiei este ‘Inserati Persoana ’. Dupa apasarea acestui buton
utilizatorul va fi atentionat printr-un mesaj vocal cu ajutorul submodulului ‘Text2Speech ’ cu
privire la faptul ca va trebui sa se pozitioneaza in fata camerei web a laptopului si sa
foloseasca o comanda vocala ‘take a photo ’, comanda care va fi procesata de API-ul Google
si va avea ca efect pornirea unei noi instante a camerei web. Dupa pornirea instantei
utilizatorul are sarcina de a privi in camera web si a astepta pret de cateva secunde
declansarea automata a acesteia, dupa ce poza a fost facuta, utilizatorul va trebui sa isi
introduca numele in interfata grafica care ii va aparea pe ecran (este de prefe rat sa se
introduca mai intai prenumele urmat de nume, in urmatoarea forma: Prenume_NUME), dupa
care acesta va trebui sa apese pe butonul ‘Adauga ’ din noua interfata, urmand sa fie informat

cu privire la faptul ca va trebui sa isi mute privirea putin inspre stanga, urmand sa i se faca o
noua poza, iar mai apoi inspre drepta pentru acceasi actiune.

Figura 24. Interfata grafica de adaugare nume utilizator.

Aceste poze vor fi adaugate in baza de date, in total se vor gasi minim trei poze pentru fiecare
utilizator. Instanta camerei se va inchide automat si se va reveni la meniul principal.

Figura 25. Design-ul implementarii butonului de inserare a unui nou utilizator.

Stergerea unei persoane din baza de date:
Pentru a sterge o persoana din baza de date, este necesara o navigare in structura d e foldere
stocata local, se va cauta folderul cu numele persoanei, care se doreste a fi sters, se va sterge
intreg directorul, iar apoi se va reantrena reteaua neuronala din interfata grafica a aplicatiei.

Figura 26. Structura de foldere a bazei de date.

Figura 27. Design-ul pentru stergerea unui utilizator.

Butonul Antrenare Retea:
Pentru antrenarea retelei, trebuie introdusa o parola pentru evitarea adaugarii in baza de da te a
utilizatorilor noi veniti, de catre persoane neautorizate.

Figura 28. Interfata grafica pentru introducerea parolei de administrator.

Folosindu-se pozele persoanelor din baza de date, reteaua va fi reantrenata, iar datele de
antrenare vor fi salvate in urmatorul fisier: ‘trained_knn_model.clf ’, dupa care administratorul
va fi informat vocal cu privire la faptul ca persoana face parte din baza de date, revenindu-se
la meniul principal.

Figura 29. Design-ul implementarii pentru reantrenarea retelei neuronale.

3.4. Aplicatii existente:

Tehnologia de recunoa܈tere faciala a fost asociată în mod tradi܊ional cu sectorul de securitate,
dar astăzi există o expansiune activă în alt e industrii, inclusiv în marketing ܈i sănătate.
Majoritatea cazurilor de utilizare a recunoa܈terii faciale se încadreze în trei categorii majore:

Securitate: Companiile pregătesc algoritmi de învă܊are profundă pentru a recunoa܈te
detectarea fraudei, pentru a reduce nevoia de parole tradi܊ionale ܈i pentru a îmbunătă܊i
capacitatea de a face distinc܊ia între o fa܊ă umană ܈i o fotografie.

1. Aplicatia Kairos – pentru detectarea fraudei:
În mod evident, una dintre companiile mai mari din spa܊iul de recunoa܈tere facială a
inteligentei artificiale , Kairos utilizează învă܊area automata ܈i viziunea pe computer pentru a –
܈i executa suita de instrumente care includ caracteristici de recunoa܈tere facială standard ܈i
alte op܊iuni, cum ar fi detectarea sexului, vârstei ܈i etniei.

Figura 30. Detectia utilizand aplicatia Kairos .

Asisten܊a medicală: învă܊area automata este combinată cu viziunea computerului pentru a
urmări cu mai multă acurate܊e consumul de medicamente pentru pacient ܈i pentru a sprijini
procedurile de gestionare a durerii.

2. AiCure – Aderare la medica܊ie
Medicamentul non-aderat sau in neconformitate, apare atunci când un pacient nu reu܈e܈te să –
܈i ia medicamentele a܈a cum este prescris de medicul său. Aceasta este o provocare majoră ,
care apare în aproximativ 50% dintre pacien܊ ii care primesc prescr ip܊ii de medicamente.
Fondată în 2010, AiCure este o companie care utilizează tehnologia de recunoa܈tere a fe܊ei ܈i
viziunea pe computer pentru a îmbunătă܊i practicile de aderare la medica܊ie.

Figura 31. Logo-ul aplicatiei AiCure.

Marketing: Bogat în considerente etice, este un domeniu cu o mare cre܈tere in inova܊ia
recunoa܈terii faciale.

3. Walmart – prevenire furt
În sectorul comer܊ului cu amănuntul, principalii comercian܊i par să exploreze tehnologia de
recunoa܈tere a fe܊ei în scopuri de securitate. Cu toate acestea, s -au înregistrat unele eforturi cu
privire la preocupările privind confiden܊ialitatea consumatorilor .

În 2015, Walmart a început să testeze recunoa܈terea facială în unele magazine, într-un efort de
identificare a uciga܈ilor, dar ulterior a încetat utilizarea acestuia.

Figura 32. Logo-ul Walmart.
Capitolul 4. Directii de continuare a dezvoltarii

Pentru a eficientiza procesul de verificare si al imbunatati, dupa ce utilizatorului i se fac cele
trei poze, mai intai se va verifica faptul ca exista o fata in fiecare poza, dupa care se va
confirma faptul ca aceasi persoana se afla in cele trei poze, in caz contrar, procesul trebuie
reluat.

Implementarea unei baze de date, care sa tina evidenta orei de venire, respectiv plec are pentru
fiecare angajat, extinde aplicatia, ajutand departamentele de resurse umane. Posibilitatea
implementarii unui raport la nivel de organizatie, ajuta managementul la o mai buna urmarire
a situatiei fiecarui angajat si totodata este in avantajul angajatului care nu mai are nevoie de
card de acces, pontarea manuala astfel devine istorie.

Instiintarea departamentului de IT printr-un mail, atunci cand sistemul detecteaza o persoana
fara drept de acces, este o functionalitate extrem de folositoare.

Pentru o mai buna predictie a retelei neuronale, este necesara o baza de date ca t mai mare, cu
alte cuvinte este necesar ca pentru fiecare utilizator sa avem cat mai multe poze, din unghiuri
diferite. Acest lucru se poate realiza foarte usor, folosind pozele de profil de pe Facebook ale
acestuia. Pentru acest lucru vom avea nevoie ca utilizatorul sa se autentifice cu contul de
Facebook, urmand a fi generat un jeton de acces, pentru a descarca pozele sale de profil.

In programarea pe calculator, o interfata de programare a plicatiilor (API) e ste un set de
definitii, protocoale si instrumente de subrutina pentru construirea de software de aplicatii. In
termeni generali, este un set de metode clar definite de comunicare intre diferitele
componente sofware.

Un API bun face mai usoara dezvoltarea unei aplicatii desktop, prin furnizarea tuturor
blocurilor de constructie, care sunt mai apoi asamblate de catre programator.

Specificatiile API pot lua mai multe forme, dar adesea sunt incluse specificatii pentru rutine,
structuri de date, clase de obiecte, variabile sau apeluri la distanta. Documentatia pentu API
este furnizata de obicei pentru a facilita utilizarea si implementarea.

La fel ca o interfata grafica, faciliteaza utilizarea programelor de catr e dezvoltatori. Prin
abstractizarea implementarii care sta la baza si prin expunerea obiectelor sau actiunilor de
care dezvoltatorul are nevoie, un API simplifica programarea. In timp ce o interfata grafica
pentru un client email ar putea oferi utilizatorului un buton care sa indeplineasca toti pasii
necesari pentru preluarea si evidentierea mesajelor noi, un API pentru intrarea sau iesirea
fisierelor ar putea oferi dezvoltatorului o functie care copiaza un fisier de la o locatie la alta
fara o solicitare din partea programatorului prin care acesta ar trebui sa inteleaga operatiil e
sistemului de fisiere, proces care are loc in spatele sistemului.

Un jeton de acces contine un identificator de securitate(SID) pentru utiilizator, toate SID-urile
pentru grupurile carora le apartine si privilegiile utilizatorului. Un token de acces reprezinta
un obiect incapsulannd identitatea de securitate a unui proces sau a unui fir. Un jeton este
folosit pentru a lua deciziile de securitate si pentru a stoca informatii despre o entitate a
sistemului. În timp ce un token este utilizat în general pentru a reprezenta numai informa܊ii de
securitate, el este capabil să de܊ină date suplimentare de formă liberă care pot fi ata܈ate înca
din timpul creeari token-ului.

Ori de cate ori un fir sau un proces interactioneaza cu un obiect securizat sau incearca s a
efectueze o sarcina de sisteem care necesita privilegii, sistemul de operare verifica eficacita tea
accesului efectiv pentru a determina nivelul sau de autorizare.

Atunci cand cineva doreste sa se conecteze cu o aplicatie folosind Facebook Login, iar
solicitarea ii este aprobata pentru permisiunile bifate, aplicatia obtine un indicativ de accee s
temporar.

Un token de acces este un sir de caractere opac care identifica un utilizator, o aplicatie sau o
pagina si poate fi folosit de aplicatie pentru a efectua apeluri API grafice. Jetoanele de a cces
sunt obtinute printr-un numar de metode. Indicativul contine informatii despre momentul
expirarii token-ului si a aplicatiei care a generat token-ul. Din cauza controalelor de

confidentialitate, majoritatea apelurilor API pe Facebook trebuie sa includa un jeton de acces.
Exista diferite tipuri de jetoane de acces pentru a sprijini diferite cazuri de utilizare:

 Token pentru accesul catre user, utilizat ori de cate ori aplicatia solicita ca API-ul sa
citeasca, modifice sau sa scrie date ale unei anumite persoane pe Facebook in numele lor.
 Token pentru accesul aplicatiilor, necesar pentru a modifica si citi setarile aplicatiei.

 Token pentru accesul unei pagini, aceste tipuri de jetoane sunt similare cu cele de acces
din partea user-ului, cu exceptia faptului ca ofera permisiunea API-urilor care citesc, scriu
sau modifica datele apartinand unei pagini Facebook.

Pentru a genera jeton cu acces pentru pagina, un administrator al paginii trebuie sa acorde o
permisiune extinsa numita ‘manage_pages ’. Odata ce aceasta permisiune a fost acordata,
token-ul de acces la pagina poate fii preluat.

Desi fiecare platforma genereaza token-uri de acces prin API-uri diferite, toate platformele
respecta strategia de baza pentru a obtine un jeton de utilizator:

Atunci cand un nou utilizator (angajat) este adaugat in baza de date, acesta trebuie sa s e
autentifice cu contul de Facebook (in cazul in care nu doreste acest lucru, cu o camera web
sau orice alt tip de camera i se vor face 5 poze din unghiuri diferite, poze care vor fii adauga te
in baza de date), pentru ca generarea de token sa aiba loc, generare care ii va permite
sistemului sa acceseze pozele sale de profil. Aceste poze vor fi adaugate in baza locala de
date, insa pentru a avea acces in cladire, sistemul trebuie sa valideze persoana in cauza cu una
existenta in baza de date, acest lucru va fi posibil numai dupa ce administratorul sistemului,
va reantrena reteaua neuronala.
Toate jetoanele de acces trebuie sa fie reinnoite la fiecare 90 de zile, cu acordul persoanei care
utilizeaza aplicatia. Acest lucru nu blocheaza sistemul, deoarece odata ce jetonul a fost primit ,
pozele de profil sunt salvate local in baza de date, astfel utilizatorul trebuie sa faca o singura
autentificare pentru a face parte din sistem.

Capitolul 5. Concluzii

In aceasta lucrare se prezinta o aplicatie Desktop pentru autentificare, folosind recunoastere
faciala, dezvoltata in limbajul de programare Python, care utilizeaza Google API pentru
procesarea comenzii vocale a utilizatorului.

Aplicatia este foarte usor de utilizat datorita unui design grafic intuitiv si datorita posibilitatii
de a interactiona cu aceasta aplicatie, folosind comenzi vocale. Autentificarea este rapida si
eficienta, inregistrarea in baza de date si autentificarea se realizeaza in trei pasi simpli,
introducerea in baza de date a utilizatorului, antrenarea retelei neuronale si in final
autentificarea. Aplicatia aduce in prim plan tehnologii noi, care sunt din ce in ce mai folosite
si vor avea un impact urias asupra omenirii.

Directiile de dezvoltare se petrec in sfera eficientizarii si securitatii, dar si in zona de
management prin implementarea si generarea unor rapoarte.

Capitolul 6. Bibliografie

[1]–[12]
[1] T. Rashid and E. B. July, ‘A Gentle Introduction to Neural Networks ’, p. 85.
[2] X. Huang and L. Deng, ‘An Overview of Modern Speech Recognition ’, p. 29.
[3] I. N. da Silva, D. Hernane Spatti, R. Andrade Flauzino, L. H. B. Liboni, and S. F. dos
Reis Alves, ‘Artificial Neural Network Architectures and Training Processes ’, in
Artificial Neural Networks , Cham: Springer International Publishing, 2017, pp. 21 –28.
[4] Z. Uibo, ‘Comparison of Face Recognition Neural Networks ’, p. 23.
[5] F. Chollet, Deep learning with Python . Shelter Island, New York: Manning Publications
Co, 2018.
[6] M. Dodoo, ‘Facebook SDK for Python Documentation ’, p. 18.
[7] J. V. Guttag, Introduction to Computation and Programming Using Python: With
Application to Understanding Data . MIT Press, 2016.
[8] D. Rocchesso, Introduction to sound processing . Firenze: Mondo estremo, 2003.
[9] R. L. Halterman, ‘LEARNING TO PROGRAM WITH PYTHON ’, p. 283, 2011.
[10] D. L. Poole and A. K. Mackworth, ‘Python code for Artificial Intelligence:
Foundations of Computational Agents ’, p. 221.
[11] C. R. Severance, ‘Python for Everybody ’, p. 243.
[12] M. Ambrožič et al. , The Digital Library of Slovenia development strategy –
dLib.si 2007-2010 . Ljubljana: National and University Library, 2007.
[13] https://github.com/
[14] https://stackoverflow.com/
[15] https://en.wikipedia.org

DECLARA ȚIE DE AUTENTICITATE A
LUCRĂRII DE FINALIZARE A STUDIILOR 

Subsemnatul ____________________________ _____________________________
____________________________________ ________________________________ ,
legitimat cu ________________seria _ _______nr. ___________________________,
CNP _____________________________ ___________________ ________________
autorul lucr ării __________________________ ______________________________
___________________________________ __________________________________
___________________________ __________________________
elaborată în vederea sus ținerii examenului de finalizare a studiilor de ______
______________________________________organizat de c ătre Facultatea
_______________________ ________ ______________________din cadrul
Universității “Politehnica” din Timi șoara, sesiunea ________ ____________ a anului
universitar __________________, luând în considerare con ținutul art. 39 din RODPI
– UPT, declar pe proprie r ăspundere, c ă această lucrare este rezultatul propriei
activități intelectuale, nu con ține porțiuni plagiate, iar sursele bibliografice au fost
folosite cu respectarea legisla ției române și a conven țiilor interna ționale privind
drepturile de autor.

Timișoara,

Data Semn ătura
_______________________ ______________________________

 Declarația se completeaz ă „de mână” și se insereaz ă în lucrarea de finalizare a studiilor, la sfâr șitul acesteia, ca parte integrant ă.

Similar Posts