Recunoas terea semnelor de circulat ie [609361]

Ministerul Educat ¸iei Nat ¸ionale s ¸i Cercet ˘arii S ¸tiint ¸ifice
Universitatea ”OVIDIUS” Din Constant ¸a
Facultatea de Matematic ˘a s ¸i Informatic ˘a
Specializarea Informatic ˘a
Recunoas ¸terea semnelor de circulat ¸ie
Lucrare de licent ¸ ˘a
Coordonator s ¸tiint ¸ific:
Conf. univ. dr. Pelican Elena
Absolvent: [anonimizat] ˘at˘alin
Constant ¸a
2018

Cuprins
Cuprins i
Lista Figurilor iv
Introducere 2
1 Prezentarea problemei 3
1.1 Setul de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Algoritmi de clasificare 5
2.1 Algoritmi de tip cel mai apropiat ”vecin” . . . . . . . . . . . . . . . . . . . 5
2.1.1 Verificarea algoritmului . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Algoritmul Eigenfaces (”fet ¸e proprii”) . . . . . . . . . . . . . . . . . . . . 6
2.2.1 Analiza Componentelor Principale (PCA) . . . . . . . . . . . . . . 6
2.2.2 Descrierea algoritmului . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.3 Verificarea algoritmului . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Lanczos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.1 Descrierea algoritmului . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.2 Verificarea algoritmului . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 COD (Customized Orthogonalization via Deflation) . . . . . . . . . . . . . 9
i

Cuprins Cuprins
2.4.1 Verificarea algoritmului . . . . . . . . . . . . . . . . . . . . . . . 10
3 Solut ¸ia propus ˘a 11
3.1 Preprocesare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.1 Egalizarea histogramei ˆın spat ¸iul de culoare HSV (Hue, Saturation,
Value) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.2 One-Hot Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Ret ¸ele neuronale convolut ¸ionale . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Algoritmi de optimizare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.1 Gradient Descent . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.2 Optimizare bazat ˘a pe moment (Momentum optimization) . . . . . . 19
3.3.3 Stochastic Gradient Descent (SGD) . . . . . . . . . . . . . . . . . 19
3.3.4 Nesterov Accelerated Gradient (NAG) . . . . . . . . . . . . . . . . 20
3.3.5 Adam optimization . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4 Funct ¸ii de activare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4.1 ReLU (Rectified Linear Units) . . . . . . . . . . . . . . . . . . . . 21
3.4.2 Softmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4 Prezentarea aplicat ¸iei 23
4.1 TensorFlow s ¸i Keras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2 Preprocesare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.3 Modelul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.4 Antrenarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.4.1 Antrenarea cu optimizatorul Adam . . . . . . . . . . . . . . . . . . 27
4.4.2 Antrenarea cu optimizatorul SGD + NAG . . . . . . . . . . . . . . 30
4.4.3 ˆImbun ˘at˘at ¸irea ratei de recunoas ¸tere . . . . . . . . . . . . . . . . . 31
4.5 Testarea modelului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.6 Analiza SWOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
ii

Cuprins Cuprins
5 Concluzii 39
5.1 Lucru pe viitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Referint ¸e bibliografice 41
iii

Lista Figurilor
1.1 Semnele prezente ˆın setul de date grupate pe categorii . . . . . . . . . . . . . . 3
1.2 Exemple de imagini din setul GTSRB . . . . . . . . . . . . . . . . . . . . . . 4
2.1 Rezultate Cel mai apropiat vecin . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Rezultate Eigenfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Rezultate Lanczos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 COD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1 Poza s ¸i histograma pe canalul V . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Poza s ¸i histograma pe canalul V dup ˘a egalizare . . . . . . . . . . . . . . . . . 12
3.3 Valori nominale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4 One hot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5 Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.6 Filtru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.7 Exemplu de filtrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.8 Aplicarea a 3 filtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.9 Max Pooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.10 Gradient Descent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.11 a) Learning rate prea mic b) Learning rate prea mare . . . . . . . . . . . . . . 18
3.12 Problemele Gradient Descent . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
iv

Lista Figurilor Lista Figurilor
3.13 Stochastic Gradient Descent . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.14 Comparat ¸ie Momentum optimization cu Nesterov . . . . . . . . . . . . . . . . 20
3.15 ReLu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.1 ˆInainte s ¸i dup ˘a histogram equalization (exemplu din setul de date) . . . . . . . 24
4.2 ˆInainte s ¸i dup ˘a preprocesare (exemplu din setul de date) . . . . . . . . . . . . . 24
4.3 Exemplu de retea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.4 ˆInceputul antren ˘arii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.5 Final de epoc ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.6 Rezultat Adam – CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.7 Grafice Adam – CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.8 Rezultat Adam – CPU 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.9 Grafice Adam – GPU 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.10 Timpi epoc ˘a Adam – GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.11 Rezultat Adam – GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.12 Grafice Adam – GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.13 Rezultat Adam + validare – GPU . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.14 Grafice Adam + validare – GPU . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.15 Rezultat SGD+NAG – CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.16 Rezultat SGD+NAG – GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.17 Grafice SGD+NAG – GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.18 Rezultat loturi de 421 de poze . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.19 Grafice loturi de 421 de poze . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.20 Rezultat prima antrenare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.21 Grafice prima antrenare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.22 Rezultat a doua antrenare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.23 Grafice a doua antrenare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.24 Arhitectura ret ¸elei 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
v

Lista Figurilor Lista Figurilor
4.25 Rezultat ret ¸eaua 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.26 Grafice ret ¸eaua 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.27 Rezultate ret ¸eaua 2, a doua antrenare . . . . . . . . . . . . . . . . . . . . . . . 36
4.28 Grafice ret ¸eaua 2, a doua antrenare . . . . . . . . . . . . . . . . . . . . . . . . 36
4.29 Final de testare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.30 Rezultat clasificare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.31 Analiza SWOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1

Introducere
Inteligent ¸a artificial ˘a este un concept ce desemneaz ˘a capacitatea mas ¸inilor (calculatoare,
robot ¸i) de a simula inteligent ¸a uman ˘a.Machine Learning (ˆınv˘at ¸are automat ˘a) este o subdi-
viziune a inteligent ¸ei artificiale s ¸i se refer ˘a la abilitatea mas ¸inilor de a ˆınv˘at ¸a pe cont propriu.
Programele bazate pe machine learning pot ˆınv˘at ¸a s˘a recunoasc ˘a diverse tipare s ¸i s ˘a realizeze
predict ¸ii pe baza acestor informat ¸ii. Problemele de machine learning sunt ˆımp˘art ¸ite ˆın dou ˘a
categorii: probleme de ˆınv˘at ¸are supervizat ˘a s ¸i probleme de ˆınv˘at ¸are nesupervizat ˘a.
Majoritatea problemelor de machine learning sunt de ˆınv˘at ¸are supervizat ˘a. Se numes ¸te
ˆınv˘at ¸are supervizat ˘a deoarece rezultatele corecte sunt cunoscute s ¸i se poate hot ˘arˆıˆın mod
concret dac ˘a predict ¸ia algoritmului este corect ˘a sau nu. ˆInv˘at ¸area supervizat ˘a se poate ˆımp˘art ¸i
ˆın clasificare sau regresie. O problem ˘a se numes ¸te de clasificare atunci c ˆand rezultatul
reprezint ˘a o categorie.
Recunoas ¸terea semnelor de circulat ¸ie a avut ˆın ultimii ani s ¸i ˆınc˘a are parte de un in-
teres considerabil. Acest interes a ap ˘arutˆın urma cererii de aplicat ¸ii inteligente cum ar fi
autovehiculele autonome, sisteme avansate de asistent ¸ ˘a a s ¸oferilor, etc. Recunoas ¸terea sem-
nelor de circulat ¸ie este ˆımp˘art ¸it˘aˆın dou ˘a etape: detect ¸ia semnelor de circulat ¸ie s ¸i clasificarea
(recunoas ¸terea propriu-zis ˘a) semnelor. Detect ¸ia reprezint ˘a localizarea semnelor ˆıntr-o imag-
ine, sau ˆıntr-o filmare, daca vorbim de sisteme ˆın timp real, iar recunoas ¸terea propriu-zis ˘a
reprezint ˘a identificarea categoriei din care face parte semnul, categorie care reprezint ˘a tipuri
specifice de semne de circulat ¸ie (stop, cedeaz ˘a trecerea, drum cu prioritate, etc).
Lucrarea se refer ˘a la recunoas ¸terea propriu-zis ˘a a semnelor de circulat ¸ie s ¸i este struc-
turat ˘a pe 5 capitole. Primul capitol este o introducere ˆın problema recunoas ¸terii semnelor de
circulat ¸ie s ¸i o descriere a setulului de date folosit. Al doilea capitol se axeaz ˘a pe aplicarea
unor algoritmi de clasificare specifici machine learning. Al treilea capitol explic ˘a modul de
preprocesare al setului de date, ret ¸elele neuronale convolut ¸ionale s ¸i algoritmii de optimizare
folosit ¸i. ˆIn capitolul patru este prezentat ˘a aplicat ¸ia creat ˘a cu ajutorul diferitelor tipuri de
ret ¸ele neuronale, testele efectuate s ¸i rezultatele obt ¸inute ˆın urma acestor teste. ˆIn ultimul
capitol sunt prezentate concluziile. Scopul lucr ˘arii este de a obt ¸ine o rat ˘a de recunoas ¸tere a
semnelor de circulat ¸ie c ˆat mai mare.
2

Capitolul 1
Prezentarea problemei
O subcategorie important ˘a a machine learning este inv ˘at ¸area supervizat ˘a.ˆIn acest tip de
ˆınv˘at ¸are se ˆıncearc ˘a antrenarea pe un set de date etichetat (organizat pe categorii sau clase),
ceea ce ˆınseamn ˘a c˘a fiecare exemplar din setul de date are o valoare t ¸int ˘a. Aceste valori t ¸int ˘a
ar putea corespunde output-ului (date de ies ¸ire) continuu al unei funct ¸ii sau unor categorii
discrete. Dac ˘a avem de-a face cu un output continuu, procesul se numes ¸te regresie iar dac ˘a
avem de-a face cu un output discret, procesul se numes ¸te clasificare. Predict ¸ia pret ¸urilor
imobiliare ˆın funct ¸ie de dimensiunea caselor este un exemplu de regresie iar predict ¸ia speciei
unor pes ¸ti ˆın funct ¸ie de culoare ar fi clasificare. ˆIn cazul nostru, recunoas ¸terea semnelor de
circulat ¸ie reprezint ˘a o problem ˘a de clasificare fiindc ˘a algoritmul trebuie s ˘a atribuie fiec ˘arui
semn de circulat ¸ie verificat una din cele 43 de clase .[1]
1.1 Setul de date
Imaginile folosite pentru antrenarea s ¸i testarea algoritmilor s ¸i modelelor de ret ¸ele neu-
ronale pe care le-am creat, apart ¸in setului de date GTSRB (German Traffic Sign Recognition
Benchmark)1. Setul de date este compus din 43 de semne de circulat ¸ie color (RGB), pozate
ˆın diferite condit ¸ii de luminozitate, ocluziune s ¸i dep ˘artare. Pozele sunt destul de aproape de
condit ¸iile reale pe care un autovehicul autonom le poate ˆıntalni.
[2]
Figura 1.1 : Semnele prezente ˆın setul de date grupate pe categorii
1http://benchmark.ini.rub.de/?section=gtsrb&subsection=dataset
3

Prezentarea problemei Setul de date
Setul de date cont ¸ine 39.209 poze de antrenament s ¸i 12.630 poze de testare, de diferite
rezolut ¸ii, cuprinse ˆıntre 15×15 s ¸i 250×250 pixeli, iar formatul imaginilor este PPM (Portable
Pixmap, P6). Imaginile de antrenare sunt ˆımp˘art ¸ite ˆın 43 de categorii sau clase, cu numar
inegal de imagini pentru fiecare clas ˘a, iar cele de testare nu sunt ˆımp˘art ¸ite pe clase, toate
imaginile afl ˆandu-se ˆın acelas ¸i director, clasele acestora afl ˆandu-se ˆıntr-un fis ¸ier csv.
Aceast ˘a problem ˘a fiind o problem ˘a de ˆınv˘at ¸are supervizat ˘a iar setul de date av ˆand o
distribut ¸ie inegal ˘a a pozelor, pentru algoritmii din capitolul doi a fost necesar ˘a o reconstruct ¸ie
a setului de date rezult ˆand astfel un set de date cu 7740 de imagini de antrenare, organizate
ˆın 43 de clase (fiecare clas ˘a avˆand 180 de poze) s ¸i 1290 de poze de testare, organizate s ¸i
acestea ˆın 43 de clase (fiecare clas ˘a avˆand 30 de poze). Aceast ˘a reconstruct ¸ie a fost necesar ˘a
pentru a putea verifica predict ¸iile algoritmilor.
Figura 1.2 : Exemple de imagini din setul GTSRB
4

Capitolul 2
Algoritmi de clasificare
ˆIn acest capitol am implementat c ˆat ¸iva algoritmi dedicat ¸i machine learning pentru a ver-
ifica eficient ¸a lor ˆın ceea ce prives ¸te recunoas ¸terea semnelor de circulat ¸ie. Compararea algo-
ritmilor se face cu ajutorul ratei de recunoas ¸tere exprimat ˘aˆın procente. Rata de recunoas ¸tere
reprezint ˘a raportul dintre num ˘arul de teste care dau r ˘aspuns corect s ¸i num ˘arul total de teste.
Verific ˘arile au fost efectuate pe setul de date cu 7740 de poze de antrenare s ¸i 1290 de poze de
testare, fiind verificate pe r ˆand fiecare poz ˘a din cele 1290. Fiecare poz ˘a a fost redimensionat ˘a
la 32×32 pixeli.
2.1 Algoritmi de tip cel mai apropiat ”vecin”
Cea mai simpl ˘a metod ˘a care se poate folosi ˆın recunoas ¸terea tiparelor este c ˘autarea
secvent ¸ial ˘a, adic ˘a g˘asirea celui mai apropiat ”vecin”. Algoritmul Nearest Neighbour (cel mai
apropiat vecin) este un algoritm de clasificare ce presupune g ˘asirea pozei care ”seam ˘an˘a” cel
mai bine cu semnul de circulat ¸ie c ˘autat.
Toate pozele sunt clasificate, adic ˘a apart ¸in unei clase. ˆIn cazul nostru, toate pozele
apart ¸in ˆand aceluias ¸i semn de circulat ¸ie formeaz ˘a o clas ˘a.
Pentru o poz ˘a(poza unui semn de circulat ¸ie) vrem s ˘a g˘asim cea mai apropiat ˘a poz ˘a
din baza de datef1;2;:::;Ngde poza respectiv ˘a. Algoritmul Nearest Neighbour compar ˘a
poza cu fiecare ipentru a g ˘asi un indice i0astfel ˆıncat:
ki0k=min
16i6Nkik (2.1)
Indicelei0ne va da poza aflat ˘a la cea mai mic ˘a distant ¸a fat ¸ ˘a de poza c ˘autat ˘a.
5

Algoritmi de clasificare Algoritmul Eigenfaces (”fet ¸e proprii”)
2.1.1 Verificarea algoritmului
Timpul ˆın care algoritmul a fost aplicat pentru fiecare din cele 1290 de poze de testare
a fost de trei minute si zece secunde. ˆIn urma verific ˘arilor repetate am obt ¸inut rata de
recunoas ¸tere de maxim 78,99%, ceea ce nu este ˆındeajuns pentru a ne atinge t ¸inta propus ˘a.
Figura 2.1 : Rezultatul obt ¸inut ˆın urma celor 1290 de teste
2.2 Algoritmul Eigenfaces (”fet ¸e proprii”)
Acest algoritm a fost dezvoltat init ¸ial pentru probleme de recunoas ¸tere facial ˘a dar s-a
dovedit a fi destul de eficient si pentru alte probleme de recunoas ¸tere a tiparelor. ”Fet ¸ele pro-
prii”, ˆın cazul nostru, sunt componentele principale ale unei mult ¸imi de semne de circulat ¸ie,
sau echivalent, vectorii proprii ai matricei de covariant ¸ ˘a a unei multimi de semne de circulat ¸ie.
Aces ¸ti vectori proprii sunt numit ¸i ”fet ¸e proprii” deoarece, ˆın cazul problemelor de recunoas ¸tere
facial ˘a, atunci c ˆand sunt reprezentat ¸i, seam ˘an˘a cu fet ¸ele umane. Acest termen a fost preluat
s ¸iˆın cazul altor probleme de recunoas ¸tere a tiparelor. O mult ¸ime de ”fet ¸e proprii” poate fi
obt ¸inut ˘a prin aplicarea unui procedeu matematic numit analiza componentelor principale ( ˆın
englez ˘a, PCA), pe o mult ¸ime de imagini de dimensiune mare. Vectorii proprii sunt ales ¸i ˆın
ordine descresc ˘atoare a important ¸ei lor, prima component ˘a avˆand cea mai mare semnificat ¸ie.
2.2.1 Analiza Componentelor Principale (PCA)
Analiza componentelor principale este un procedeu matematic prin care, dintr-un set
de date init ¸ial, de dimensiune mare, se obt ¸ine un alt set de date, de dimensiune mai mic ˘a,
cu anumite propriet ˘at ¸i. Aceste date au fost numite componente principale. Prima compo-
nent˘a principal ˘a obt ¸inut ˘a are cea mai mare ˆınsemn ˘atate t ¸in ˆandu-se seama ˆın acelas ¸i timp s ¸i
de restrict ¸ia ca fiecare component ˘a principal ˘a s˘a fie ortogonal ˘a pe toate componentele prece-
dente, deoarece aceste componente principale sunt, de fapt, vectori proprii ˆıntr-o matrice de
covariant ¸ ˘a.
Pentru determinarea componentelor principale se obt ¸ine mai ˆıntˆai matricea de covariant ¸ ˘a.
Aceasta este matricea al c ˘arei element de pe pozit ¸ia (i,j) reprezint ˘a covariant ¸a dintre coloana
i s ¸i coloana j din baza de date (adic ˘a dintre poza i s ¸i poza j). Pentru o matrice de covariant ¸ ˘a
C= (cij)i;j=1;navem:
6

Algoritmi de clasificare Algoritmul Eigenfaces (”fet ¸e proprii”)
cij=cov(coli;colj); (2.2)
unde
cov(x;y) =nP
i=1(xix)(yiy)
n1; (2.3)
cu media
x=nP
i=1xi
n(2.4)
Ce este relevant ˆın legatur ˘a cu covariant ¸a nu este valoarea ci semnul. Atunci c ˆand
covariant ¸a este pozitiv ˘a, vectorii pentru care a fost calculat ˘a depind unul de cel ˘alalt (dac ˘a
unul cres ¸te, cres ¸te s ¸i cel ˘alalt, iar dac ˘a unul scade, scade s ¸i cel ˘alalt). ˆIn cazul ˆın care covariant ¸a
este negativ ˘a, dac ˘a unul dintre vectori cres ¸te, cel ˘alalt scade, s ¸i invers. Cei doi vectori sunt
independent ¸i ˆın cazul in care covariant ¸a este zero.
2.2.2 Descrierea algoritmului
1.Toate pozele sunt transformate ˆın vectori: 1;2;:::; N.
2.Se calculeaz ˘a vectorul medie: =1
NNP
i=1i
3.Se scade vectorul medie din tot ¸i vectorii: 'i= i ;i=1;N
4.Se calculeaz ˘a matricea de covariant ¸ ˘a:C=1
NNP
i=1'i'T
i=1
NAAT
5.Se calculeaz ˘a vectorii proprii ui;i=1;Nai matricei C s ¸i se p ˘astreaz ˘a doar P vectori
corespunz ˘atori celor mai mari P valori proprii.
6.Se obt ¸ine vectorul:
T
i= [!i
1;!i
2;:::;!i
P]unde'i^'i=PP
j=1!i
juj.
7.Fiind dat ˘a o imagine , se normalizeaz ˘a:'= .
8.Se proiecteaz ˘ape spat ¸iul vectorilor proprii: ^'=PP
j=1!juj.
9.Se reprezint ˘a^'ca fiind
T= [!1;!2;:::;!P].
10.Se caut ˘ai021;:::;N care satisfacek

i0k=min
16i6Nk

ik. Practic se aplic ˘a
cel mai apropiat vecin.[3]
7

Algoritmi de clasificare Lanczos
2.2.3 Verificarea algoritmului
Pentru acest algoritm am verificat s ¸i timpul necesar preproces ˘arii. Timpul ˆın care algo-
ritmul a fost aplicat pentru fiecare din cele 1290 de poze de testare a fost 23 de secunde, mult
mai rapid dec ˆat cel mai apropiat vecin, rezult ˆand un timp total de 44 de secunde. ˆIn urma
verific ˘arilor repetate am obt ¸inut rata de recunoas ¸tere de maxim 80,85%, mai bun ˘a dec ˆat a
algoritmului anterior.
Figura 2.2 : Rezultatul obt ¸inut ˆın urma celor 1290 de teste
2.3 Lanczos
Cornelius Lanczos (matematician s ¸i fizician) a dezvoltat o serie de tehnici pentru calcule
matematice care utilizeaz ˘a calculatoare digitale:
.algoritmul Lanczos pentru aflarea valorilor proprii pentru o matrice simetric ˘a de di-
mensiuni mari
.aproximat ¸ia Lanczos pentru func tia gamma (funct ¸ie care extinde not ¸iunea de factorial
de la numerele ˆıntregi la numerele reale s ¸i complexe)
.metoda gradient ¸ilor conjugat ¸i pentru rezolvarea sistemelor liniare de ecuat ¸ii2
Pentru o matrice M2I Rnns ¸i un vector init ¸ial q1, aplic ˆand algoritmul Lanczos,
obt ¸inemQk= [q1;:::;qk]2I Rnnastfel ˆıncˆat :
QT
kMQk=Tk=2
666664 1 2
2 2 3
………
k1 k1 k
k k3
777775(2.5)
Cu ajutorul matricei Qk= [q1;:::;qk]2I Rnnse aproximeaz ˘a valorile s ¸i vectorii
proprii pentru matricea M. Dac ˘avieste vector propriu pentru matricea M, atuncivi=Qkuk
i,
undeuk
ieste vector propriu al matricei Tk.
2http://www.maths.manchester.ac.uk/about-us/history/cornelius-lanczos/
8

Algoritmi de clasificare COD (Customized Orthogonalization via Deflation)
2.3.1 Descrierea algoritmului
Date de intrare: A, q0;k
Date de ies ¸ire: q1;:::;qk+1
Fie 1= 0;q0= 0
fori= 1;:::;k
!i=A(ATqi) iqi1
i= (!i;qi)
!i=!i iqi
i+1=k!ik2qi+1=!i
i+1end
2.3.2 Verificarea algoritmului
Timpul necesar preproces ˘arii a fost de 5 secunde. Timpul total fiind de 12 de secunde.
ˆIn urma verific ˘arilor repetate am obt ¸inut rata de recunoas ¸tere de maxim 68,44%, mai mic ˘a
decˆat a algoritmilor anteriori.
Figura 2.3 : Rezultatul obt ¸inut ˆın urma celor 1290 de teste
2.4 COD (Customized Orthogonalization via De-
flation)
1. Init ¸ializ ˘am^u1=A(1;1;:::; 1)T;^u1=^u1
k^u1k;^v1=AT(1;1;:::; 1)T;
^v1=^v1
k^v1k;A1=A
2. Pentrui= 1;2;:::;k calcul ˘am:
~ui=Ai^vi
kAi^vik2
~vi=AT
i^ui
kAT
i^uik2
9

Algoritmi de clasificare COD (Customized Orthogonalization via Deflation)
~i=(kAi^vik2kAT
i^uik2)
^uT
iAi^vi
Ai+1=Ai~i~ui~vT
i
^ui+1=Ai+1(1;1;:::; 1)T;^ui+1=^ui+1
k^ui+1k
^vi+1=AT
i+1(1;1;:::; 1)T;^vi+1=^vi+1
k^vi+1k
3. FieU= [~u1~u2:::~uk]s ¸iB=Ak+1
4. Obt ¸inem
T
i= [!i
1;!i
2;:::;!i
k]undecoliA=kP
j=1!i
j~uj
5. Pentru o poz ˘a dat ˘a, obt ¸inem =kP
j=1!j~uj
6. Reprezent ˘amca
T= [!1;!2;:::;!k]
7. Se caut ˘ai021;:::;k care satisfacek

i0k=min
16i6Nk

ik. Practic se aplic ˘a
cel mai apropiat vecin.[4]
2.4.1 Verificarea algoritmului
Timpul necesar preproces ˘arii a fost de 10 secunde. Timpul total fiind de 16 de secunde.
ˆIn urma verific ˘arilor repetate am obt ¸inut rata de recunoas ¸tere de maxim 73,48%, mai mic ˘a
decˆat ratele primilor algoritmi, dar mai mare dec ˆat Lanczos.
Figura 2.4 : Rezultatul obt ¸inut ˆın urma celor 1290 de teste
Aces ¸ti algoritmi au dat rezultate foarte bune ˆın cazul problemei de recunoas ¸tere facial ˘a
pe setul de date AT&T,3dar pentru problema de recunoas ¸tere a semnelor de circulat ¸ie nu au
rezultate foarte bune.
3http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html
10

Capitolul 3
Solut ¸ia propus ˘a
Pentru recunoas ¸terea semnelor de circulat ¸ie am experimentat dou ˘a modele de ret ¸ele
neuronale. Modelele create cont ¸in niveluri convolut ¸ionale, dropout s ¸i niveluri de neuroni
conectat ¸i total.
Anaconda este o distribut ¸ie gratuit ˘a s ¸i open source de Python pentru procesarea de date
mari, analiz ˘a predictiv ˘a s ¸i calcule s ¸tiint ¸ifice, ˆın care am creat dou ˘a medii virtuale, fiecare
avˆand propria copie de Python cu fis ¸iere s ¸i directoare proprii, pentru a putea lucra cu libr ˘ariile
necesare f ˘ar˘a a afecta alte proiecte. Principalul motiv pentru care am creat aceste medii a
fost faptul c ˘a aveam nevoie de dou ˘a instal ˘ari diferite de TensorFlow: TensorFlow cu suport
doar pentru procesor s ¸i TensorFlow cu suport pentru procesorul grafic (placa grafic ˘a).
3.1 Preprocesare
3.1.1 Egalizarea histogramei ˆın spat ¸iul de culoare HSV (Hue,
Saturation, Value)
Egalizarea histogramei este procesul prin care este modificat ˘a intensitatea pixelilor pen-
tru a m ˘ari contrastul. ˆIn cazul nostru vom trece imaginile din spat ¸iul de culoare RGB ˆın HSV
apoi vom amplifica valoarea de pe canalul V , acesta fiind valoarea luminozit ˘at ¸ii.
Spre deosebire de RGB, HSV este definit similar cu modul ˆın care oamenii percep culo-
rile. Acest spat ¸iu de culoare descrie culorile (nuant ¸ ˘a sau tent ˘a)ˆın termeni de umbre (saturat ¸ia
sau cantitatea de gri) s ¸i luminozitate.
11

Solut ¸ia propus ˘a Preprocesare
.Nuant ¸a reprezint ˘a partea colorat ˘a a modelului cu valori ˆıntre 0 s ¸i 360.
Ros ¸u 0-60 Cyan 180-240
Galben 60-120 Albastru 240-300
Verde 120-180 Magenta 300-360
.Saturat ¸ia reprezint ˘a cantitatea de gri din culoare, cu valori ˆıntre 0 s ¸i 100. O valoare
mai aproape de 0 ˆınseamn ˘a mai mult gri.
.Valoarea luminozit ˘at ¸ii reprezint ˘a intensitatea culorii, cu valori cuprinse ˆıntre 0 s ¸i 100,
unde 0 ˆınseamn ˘a negru s ¸i 100 cel mai luminos4
Figura 3.1 : Poza s ¸i histograma pe canalul V
Figura 3.2 : Poza s ¸i histograma pe canalul V dup ˘a egalizare
4https://www.lifewire.com/what-is-hsv-in-design-1078068
12

Solut ¸ia propus ˘a Preprocesare
3.1.2 One-Hot Encoding
One-Hot encoding este un termen ˆıntˆalnit ˆın machine learning. Acesta este un proces
prin care variabilele sunt aduse la o form ˘a cu care algoritmii de machine learning pot face
predict ¸ii mai precise.
De exemplu avem 7 input-uri (date de intrare) care fac parte din patru categorii. Am
putea codifica aceste date cu valori nominale ca ˆın figura 4.3, dar din perspectiva machine
learning, nu ar avea nici o logic ˘a. Nu se poate preciza dac ˘a clasa ”Penguin” este mai mare
sau mai mic ˘a dec ˆat ”Human”.
Figura 3.3 : Valori nominale
ˆIn schimb vom genera o coloan ˘a de tip boolean pentru fiecare categorie. Doar una din
aceste coloane ar putea lua valoarea 1 pentru fiecare clas ˘a, de aici si termenul de ”one-hot”.
Figura 3.4 : One hot
Acest tip de codificare funct ¸ioneaz ˘a foarte bine cu majoritatea algoritmilor de machine
13

Solut ¸ia propus ˘a Ret ¸ele neuronale convolut ¸ionale
learning s ¸i este implementat ˘aˆın majoritatea libr ˘ariilor.5
3.2 Ret ¸ele neuronale convolut ¸ionale
Principalul scop al convolut ¸iei ˆın cazul ret ¸elelor neuronale convolut ¸ionale este de a ex-
trage caracteristicile unei imagini de intrare (input). Acestea folosesc filtre cu care filtreaza
imaginea de procesat Fiecare imagine este reprezentat ˘a de o matrice cu valorile pixelilor.
Consider ˘am o imagine de dimensiunea 5×5 ai c ˘arei pixeli au doar valorile 0 s ¸i 1.
Figura 3.5 :
De asemenea consider ˘am o alt ˘a matrice de 3×3 (filtrul)
Figura 3.6 :
Matricea de 3×3 se numes ¸te ”filtru” sau ”kernel” iar matricea format ˘a dupa ”m ˘aturarea”
matricei imaginii se numes ¸te ”hart ˘a de caracteristici” (Feature Map). Filtrele funct ¸ioneaz ˘a
ca niste detectoare de caracteristici.
5https://www.quora.com/What-is-one-hot-encoding-and-when%
2is-it-used-in-data-science
14

Solut ¸ia propus ˘a Ret ¸ele neuronale convolut ¸ionale
Figura 3.7 :
ˆIn practic ˘a ret ¸elele neuronale convolut ¸ionale ” ˆınvat ¸ ˘a” valorile acestor filtre ˆın timpul
procesului de antrenare. Cu c ˆat avem mai multe filtre, cu at ˆat mai multe caracteristici sunt
extrase. Dimensiunea Feature Map-ului este controlat ˘a de 3 parametri:
1. Ad ˆancimea (Depth) corespunde num ˘arului de filtre
Figura 3.8 : Aplicarea a 3 filtre6
2. Pasul (Stride) reprezint ˘a num ˘arul de pixeli cu care deplas ˘am filtrul peste imaginea de
input. Dac ˘a se foloses ¸te un pas mare vor rezulta Feature Map-uri mai mici.
3. Zero-Padding reprezint ˘a crearea unui chenar de 0 ˆın jurul imaginii.
Activatoarele sunt funct ¸ii care decid valoarea final ˘a a neuronilor. Cea mai folosit ˘a
15

Solut ¸ia propus ˘a Ret ¸ele neuronale convolut ¸ionale
funct ¸ie este ReLU (Rectified Linear Unit) . Aceast ˘a funct ¸ie ˆınlocuieste tot ¸i pixelii cu valori
negative din Feature Map cu valoarea zero.
Output =Max (0;Input ) (3.1)
Dup˘a activare se aplic ˘aMax Pooling , se formeaz ˘a regiuni de ˆın˘alt ¸imea h s ¸i l ˘at ¸imea l s ¸i se
alege maximul din fiecare regiune obt ¸in ˆandu-se o imagine mai mic ˘a.
Figura 3.9 : Max Pooling7
Din c ˆandˆın cˆand se adaug ˘a cˆate un nivel de Dropout . Acesta practic ˘a este considerat ˘a
un truc de regularizare a ret ¸elei. Aceasta este fort ¸at ˘a s˘a distribuie ceea ce a ˆınv˘at ¸at tuturor
neuronilor. Dropout ”opres ¸te” o fract ¸ie din unit ˘at ¸ile unui nivel, set ˆandu-le valorile 0 ˆın timpul
antren ˘arii. Dropout-ul mai este folosit si pentru a evita ”supraaglomerarea” (overfitting)
ret ¸elei.
Output-ul nivelurilor convolut ¸ionale s ¸i de pooling sunt caracteristici de nivel ˆınalt ale
imaginii init ¸iale. Scopul nivelurilor cu neuroni conectat ¸i total este acela de a folosi aceste
propriet ˘at ¸i pentru a clasifica imaginea de intrare ˆın diferite clase, clasificare bazat ˘a pe setul
de date de antrenament. Funct ¸ia de activare final ˘a a ret ¸elei este Softmax . Softmax formeaz ˘a
un vector de distribut ¸ie a probabilit ˘at ¸ilor iar output-ul s ˘au este valoarea celei mai mari pro-
babilit ˘at ¸i.[5]
6;7https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/
16

Solut ¸ia propus ˘a Algoritmi de optimizare
3.3 Algoritmi de optimizare
Algoritmii de optimizare ajut ˘a la minimizarea (sau maximizarea) unei funct ¸ii obiectiv
(eroare). Aceasta este o funct ¸ie matematic ˘a dependent ˘a de parametrii modelului folosit ¸i ˆın
calcularea valorilor t ¸int ˘a (clasele sau categoriile) din setul de date folosit de model. Valorile
ponderilor (weights) s ¸iunit˘at ¸ii de polarizare (bias) reprezint ˘a parametrii ce pot fi ˆınv˘at ¸at ¸i
de ret ¸eaua neuronal ˘a s ¸i sunt folosite pentru a genera valorile de ies ¸ire. Aces ¸ti parametri sunt
ˆınv˘at ¸at ¸i s ¸i actualizat ¸i ˆın direct ¸ia solut ¸iei optime, minimiz ˆandloss-ul procesului de antrenare,
jucˆand un rol important ˆın procesul de antrenare al ret ¸elei neuronale.8
3.3.1 Gradient Descent
Gradient Descent este unul dintre cei mai populari algoritmi de optimizare capabil s ˘a
g˘aseasc ˘a solut ¸iile optime pentru o gam ˘a variat ˘a de probleme. Ideea general ˘a a algoritmului
este aceea de a ”regla” parametrii iterativ pentru a minimiza o funct ¸ie cost.
Figura 3.10 : Gradient Descent9
S˘a presupunem c ˘a o persoan ˘a este r ˘at˘acit˘a pe un munte pe o vreme cu ceat ¸ ˘a dens ˘a, f˘ar˘a
vizibilitate. O strategie bun ˘a pentru a ajunge la baza muntelui este parcurgerea drumului cu
cea mai abrupt ˘aˆınclinat ¸ie. Acest lucru ˆıl face si Gradient Descent: m ˘asoar ˘a gradientul local
al funct ¸iei cost cu privire la vectorul de parametri s ¸i se deplaseaz ˘aˆın direct ¸ia gradientului
descendent, c ˆand gradientul a ajuns la 0, ˆınseamn ˘a c˘a am atins minimul. Se pornes ¸te prin
init ¸ializarea vectorului cu valori aleatoare care se actualizeaz ˘a pas cu pas ˆınˆıncercarea de
a sc˘adea funct ¸ia cost, p ˆan˘a algoritmul ajunge la punctul de minim.
8https://towardsdatascience.com/types-of-optimization-algorithms%
2Dused-in-neural-networks-and-ways-to-optimize-gradient-95ae5d39529f
17

Solut ¸ia propus ˘a Algoritmi de optimizare
Un parametru important este m ˘arimea pasilor, determinat ˘a de rata de ˆınv˘at ¸are (learning
rate). Dac ˘a rata de ˆınv˘at ¸are este prea mic ˘a, algoritmul va avea multe iterat ¸ii, av ˆand o durata
de timp lung ˘a, iar dac ˘a este prea mare, algoritmul ar putea s ˘a sar ˘a peste punctul minim.
Figura 3.11 : a) Learning rate prea mic b) Learning rate prea mare10
Nu toate funct ¸iile au un minim usor de atins, multe sunt de tipul din figura 3.10. Acest
tip de funct ¸ie arat ˘a problemele cu care se poate confrunta Gradient Descent: dac ˘a algoritmul
este init ¸ializat din partea st ˆang˘a, va converge la un punct de minim local, care nu este la fel
de bun ca cel de minim global, dac ˘a este init ¸ializat din dreapta, ˆıi va lua foarte mult timp s ˘a
ajung ˘a la punctul de minim global, iar dac ˘a este oprit prea devreme, nu va ajunge niciodat ˘a.
Figura 3.12 : Problemele Gradient Descent11
9;10;11Aur´elien G ´eron. Hands-On Machine Learning with Scikit-Learn and TensorFlow. OReilly, 2017.
18

Solut ¸ia propus ˘a Algoritmi de optimizare
3.3.2 Optimizare bazat ˘a pe moment (Momentum optimiza-
tion)
Imaginat ¸i-v ˘a o minge care se rostogoles ¸te pe o pant ˘a cu o suprafat ¸ ˘a neted ˘a: va ˆıncepe
ˆıncet dar va aduna repede moment, p ˆan˘a va atinge viteza maxim ˘a. Aceasta este ideea care
st˘aˆın spatele Momentum optimization, optimizare propus ˘a de Boris Polyak ˆın 1964.
Algoritmul Momentum optimization t ¸ine cont de cum au fost gradient ¸ii anteriori iar la
fiecare iterat ¸ie adaug ˘a gradientul local vectorului moment m(multiplicat cu rata de ˆınv˘at ¸are)
s ¸i actualizeaz ˘a ponderile cu ajutorul acestui vector. Cu alte cuvinte, gradientul este folosit
ca accelerator. Pentru a simula un mecanism cu frict ¸iune s ¸i pentru a ˆımpiedica momentul s ˘a
devin ˘a prea mare, algoritmul introduce hiperparametrul , numit moment , care are o valoare
ˆıntre 0 (cea mai mare frict ¸iune) s ¸i 1 (nu exist ˘a frict ¸iune). De obicei se foloses ¸te valoarea 0,9.
1: m! m+rJ()
2: !m(3.2)
Gradientul r ˘amˆane constant, viteza maxim ˘a (dimensiunea maxim ˘a a actualiz ˘arilor pon-
derilor) este egal ˘a cu gradientul ˆınmult ¸it cu rata de ˆınv˘at ¸are,ˆınmult ¸it cu1
1 . De exemplu,
dac˘a = 0:9, viteza maxim ˘a va fi 10gradientrata de ˆınv˘at ¸are, algoritmul Momentum
optimization ajung ˆand s ˘a fie de 10 ori mai rapid ˘a dec ˆat algoritmul Gradient Descent. Mo-
mentum optimization coboar ˘a din ce ˆın ce mai repede p ˆan˘a atinge minimul (optimul).[6]
3.3.3 Stochastic Gradient Descent (SGD)
Stochastic Gradient Descent alege aleator, la fiecare pas, instant ¸e ale setului de date de
antrenare s ¸i calculeaz ˘a gradient ¸ii pentru acea instant ¸ ˘a. Acest lucru face algoritmul mult mai
rapid pentru c ˘a are de manipulat putine date la fiecare iterat ¸ie. Tot din acest motiv poate
fi folosit pe seturi de date foarte mari, ˆın memorie fiind ˆınc˘arcat ˘a cˆate o instant ¸ ˘a la fiecare
iterat ¸ie.
Datorit ˘a naturii sale stocastice (aleatoare), ˆın loc s ˘a coboare lin c ˘atre minim, funct ¸ia
cost va sc ˘adea numai pe medie. Algoritmul va ajunge foarte aproape de minim, dar nu se
va opri niciodata, din aceast ˘a cauz ˘a, atunci c ˆand algoritmul se opres ¸te, valorile parametrilor
finali sunt bune, dar nu optime. Acest mode de operare ajut ˘a algoritmul ˆın cazul funct ¸iilor
de cost foarte neregulate.
Faptul c ˘a este aleator ajut ˘a algoritmul foarte mult s ˘a evite punctele de minim local, dar
este si un lucru r ˘auˆın acelas ¸i timp, deoarece algoritmul nu se poate stabiliza la un minim.
O solut ¸ie poate fi sc ˘aderea treptat ˘a a ratei de ˆınv˘at ¸are. Se ˆıncepe cu pas ¸i mari (se ˆınainteaz ˘a
rapid si se evit ˘a punctele de minim local), apoi devin din ce ˆın ce mai mici, permit ¸ ˆand
algoritmului s ˘a se stabilizeze. Dac ˘a rata de ˆınv˘at ¸are este redus ˘a prea rapid exist ˘a s ¸ansa de a
r˘amˆane blocat ˆıntr-un punct de minim local, dac ˘a este redus ˘a prea lent poate evita minimul
global mult timp.
19

Solut ¸ia propus ˘a Algoritmi de optimizare
Figura 3.13 : Stochastic Gradient Descent12
3.3.4 Nesterov Accelerated Gradient (NAG)
Algoritmul este o variant ˘a a Momentum optimization propus ˘a de Yurii Nesterov ˆın 1983
s ¸i este de cele mai multe ori mai rapid dec ˆat Momentum optimization. Ideea din spate
este de a m ˘asura gradientul funct ¸iei cost put ¸in mai ˆın fat ¸ ˘a dec ˆat pozit ¸ia local ˘a,ˆın direct ¸ia
momentului. Diferent ¸a este c ˘a gradientul este m ˘asurat la+ mˆın loc de.
1: m! m+rJ(+ m)
2: !m(3.3)
Acest lucru funct ¸ioneaz ˘a deoarece vectorul de moment, de obicei, este ˆındreptat ˆın
direct ¸ia corect ˘a. Cu Nesterov se ajunge ceva mai aproape de optim s ¸i este semnificativ mai
rapid dec ˆat Momentum optimization.[6]
Figura 3.14 : Comparat ¸ie Momentum optimization cu Nesterov13
12 ;13Aur´elien G ´eron. Hands-On Machine Learning with Scikit-Learn and TensorFlow. OReilly, 2017.
20

Solut ¸ia propus ˘a Funct ¸ii de activare
3.3.5 Adam optimization
O variat ¸ie a Gradient Descent este Adam (adaptive moment estimation). Aceast ˘a metod ˘a
calculeaz ˘a momentul gradientului pentru fiecare parametru s ¸i atunci c ˆand se actualizeaza o
variabil ˘a se t ¸ine cont de direct ¸ia ˆın care gradientul era orientat la iterat ¸iile anterioare, apoi
actualiz ˘am momentul gradientului lu ˆandˆın considerare direct ¸ia curent ˘a a gradientului pentru
variabila curent ˘a. [7]
1: m! m+ (1 1)rJ()
2: s! 2s+ (1 2)rJ()
rJ()
3: m!m
1 T
1
4: s!s
1 T
2
5: !m ps+(3.4)
Pasul 1 calculeaz ˘a mai degrab ˘a o medie degradat ˘a exponent ¸ial dec ˆat o sum ˘a degradat ˘a
exponent ¸ial, dar acestea sunt de fapt echivalente, cu except ¸ia unui factor constant (media
degradat ˘a exponent ¸ial este 1 1suma degradat ˘a exponent ¸ial). Pas ¸ii 3 s ¸i 4 sunt detalii
tehnice: m s ¸i s sunt init ¸ializate la 0, ele vor fi deviate spre 0 la ˆınceputul antren ˘arii. Hiper-
parametrul de dec ˘adere a momentului 1este de obicei init ¸ializat la 0,9, cel de dec ˘adere a
scal˘arii, 2, este init ¸ializat de obicei la 0,999. Termenul de netezire, este de obicei init ¸ializat
cu un num ˘ar foarte mic, cum ar fi 108.[6]
3.4 Funct ¸ii de activare
Funct ¸iile de activare sunt funct ¸ii care decid valoarea final ˘a a neuronilor.
3.4.1 ReLU (Rectified Linear Units)
Funct ¸ia ReLU ˆınlocuies ¸te valorile negative ale pixelilor cu valoarea zero.
f(x) =max(x;0) (3.5)
Acestea sunt cele mai simple funct ¸ii de activare neliniare. ReLU ajut ˘a la antrenarea mai
rapid ˘a a ret ¸elelor mari. Din p ˘acate, unit ˘at ¸ile ReLU sunt fragile s ¸i pot ”muri”. De exemplu,
dac˘a un gradient mare trece printr-un neuron ReLU poate face ponderile s ˘a se actualizeze
ˆın as ¸a fel ˆıncˆat nuronul s ˘a nu se activeze niciodat ˘a. Dac ˘a seˆıntˆampl ˘a acest lucru, gradientul
21

Solut ¸ia propus ˘a Funct ¸ii de activare
care trece prin acel neuron va fi mereu 0. Acest lucru se ˆıntˆampl ˘a de obicei dac ˘a rata de
ˆınv˘at ¸are este prea mare.14
Figura 3.15 : ReLu15
3.4.2 Softmax
Atunci c ˆand primes ¸te date de intrare, Softmax calculeaza mai ˆıntˆai un scor pentru fiecare
clas˘a, dup ˘a care estimeaz ˘a probabilitatea fiec ˘arei clase aplic ˆand funct ¸ia softmax acestor
scoruri. Ecuat ¸ia softmax de calcul a scorului pentru clasa k este:
sk(x) =T
kx (3.6)
Fiecare clas ˘a are propriul vector de parametri k. Tot ¸i aces ¸ti vectori sunt stocat ¸i ˆıntr-
o matrice de parametri. Dup ˘a ce au fost calculate scorurile se estimeaz ˘a probabilitatea
de a apart ¸ine clasei k: se calculeaz ˘a fiecare scor apoi se normalizeaz ˘a (ˆımpart ¸ind la suma
exponent ¸ialelor)
^pk=(s(x))k=exp(sk(x))
KP
j=1exp(sj(x))(3.7)
unde K este num ˘arul de clase , s(x) vectorul care cont ¸ine scorurile iar (s(x))keste proba-
bilitatea ca x s ˘a apart ¸in ˘a clasei k.
Softmax prezice clasa cu cea mai mare probabilitate estimat ˘a (cu cel mai mare scor).
^y=argmax
k(s(x))k=argmax
ks(x))k=argmax
k(T
kx) (3.8)
Operatorul argmax returneaz ˘a valoarea variabilei care maximizeaz ˘a funct ¸ia. Aici re-
turneaz ˘a valoarea lui k, care maximizeaz ˘a probabilitatea estimat ˘a(s(x))k.
14https://github.com/Kulbear/deep-learning-nano-foundation/wiki/
ReLU-and-Softmax-Activation-Functions
15https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/
22

Capitolul 4
Prezentarea aplicat ¸iei
Machine Learning este un domeniu relativ nou, cu un potent ¸ial imens. Crearea unui
model presupune parcurgerea a trei etape: Prima etap ˘a este reprezentat ˘a de compunerea se-
tului de date. Acesta trebuie s ˘a fie compus din date relevante pentru problema pe care o avem
de rezolvat s ¸i c ˆat mai aproape de realitatea pe care software-ul care va folosi modelul o va
ˆıntˆalniˆın ultilizare. A doua etap ˘a este antrenarea propriu-zis ˘a a modelului, etap ˘a care, de obi-
cei, din cauza seturilor de date de dimensiuni considerabile, necesit ˘a resurse computat ¸ionale
mari. Ultima etap ˘a este cea de integrare a modelului ˆın aplicat ¸ia propriu-zis ˘a, pentru care a
fost creat.
4.1 TensorFlow s ¸i Keras
TensorFlow este o libr ˘arie open source pentru calcule numerice de ˆınalt˘a performant ¸ ˘a,
care poate folosi ca unitate de procesare at ˆat procesorul (CPU) c ˆat s ¸i procesorul pl ˘acii
grafice (GPU). Arhitectura sa flexibil ˘a permite implementarea pe mai multe platforme. Init ¸ial
a fost dezvoltat de cercet ˘atori si ingineri din echipa Google Brain din organizat ¸ia pentru
inteligent ¸ ˘a artificial ˘a a Google. TensorFlow ofer ˘a suport pentru Machine Learning s ¸i Deep
Learning.16TensorFlow foloses ¸te grafuri de curgere a datelor (data flow graphs). Nodurile
grafurilor reprezint ˘a operat ¸ii matematice iar muchiile reprezint ˘a matrice multidimensionale
(tensori).[8]
Keras este un API (Application programming interface) de nivel ˆınalt pentru ret ¸ele neu-
ronale, scris ˆın Python, care funct ¸ioneaz ˘a ca o ˆınvelitoare (wrapper) pentru cadrul (frame-
work) TensorFlow,17iar din ianuarie 2017, Keras a fost ˆıncorporat oficial ˆın TensorFlow ca
o libr ˘arie de nivel ˆınalt, Keras devenind API-ul implicit pentru TensorFlow.18Structura de
date principal ˘a din Keras este modelul , acesta reprezent ˘and modul de organizare a nivelurilor
(layer) ret ¸elei neuronale.
16https://www.tensorflow.org
17https://keras.io
18http://www.fast.ai/2017/01/03/keras/
23

Prezentarea aplicat ¸iei Preprocesare
4.2 Preprocesare
Imaginile variaz ˘aˆın dimensiune s ¸i luminozitate. Din aceast ˘a cauz ˘a este necesar ˘a o pre-
procesare a pozelor. ˆIn aceast ˘a etap ˘a am aplicat egalizarea histogramei in spat ¸iul HSV(Hue,
Saturation, Value (Brightness)) pe canalul V (luminozitate) pentru c ˘aˆın general, semnele de
circulat ¸ie au culori puternice s ¸i se diferent ¸iaz ˘a destul de us ¸or de mediul ˆınconjur ˘ator.
Figura 4.1 :ˆInainte s ¸i dup ˘a histogram equalization (exemplu din setul de date)
Pasul urm ˘ator este ˆındep ˘artarea chenarului ˆın care este ˆıncadrat semnul de circulat ¸ie
pentru a p ˘astra doar informat ¸ia relevant ˘a. La final am redimensionat pozele la o dimensiune
standard de 48×48 de pixeli.
Figura 4.2 :ˆInainte s ¸i dup ˘a preprocesare (exemplu din setul de date)
Toate pozele sunt preprocesate ˆın momentul ˆınc˘arc˘ariiˆın memorie. Am preluat de
asemenea s ¸i clasele semnelor (categoriile) care, pentru setul de antrenare, sunt reprezen-
tate de numele folderului ˆın care se afl ˘a pozele. Lista claselor a fost transformat ˘aˆın forma
”one-hot”, form ˘a cerut ˘a de Keras.
24

Prezentarea aplicat ¸iei Modelul
4.3 Modelul
Pentru realizarea modelului am folosit 6 niveluri convolut ¸ionale urmate de un nivel
conectat total. ˆIntre ele am ad ˘augat niveluri dropout pentru a regulariza ret ¸eaua. Pentru a
putea conecta un nivel convolut ¸ional cu unul conectat total, este necesar ˘ad˘augarea unui nivel
Flatten. Nivelul Flatten remodeleaz ˘a output-ul nivelului convolut ¸ional.
Toate nivelurile sunt activate cu funct ¸ia ReLU ˆınafar ˘a de ultimul nivel, care este activat
de funct ¸ia Softmax, pentru a obt ¸ine probabilit ˘at ¸ile pentru fiecare clas ˘a. Pentru fiecare nivel
este necesar ˘a specificarea formei input-ului. ˆIn cazul nostru, am specificat forma doar pentru
primul nivel, celelalte obt ¸in ˆand forma automat.
ˆInainte de antrenare este necesar ˘a configurarea s ¸i compilarea modelului:
1.loss : reprezint ˘a funct ¸ia care trebuie optimizat ˘a. Aici am folosit ”categorical crossen-
tropy”
2.optimizator : am efectuat mai multe teste, cu dou ˘a optimizatoare: Adam s ¸i Stochastic
Gradient Descent cu Nesterov Accelerated Gradient.
3.metrica : pentru c ˘a avem de-a face cu o problem ˘a de clasificare, am folosit acuratet ¸ea
(accuracy)
Figura 4.3 : Exemplu de retea
Configurat ¸ia ret ¸elei cu 6 niveluri convolut ¸ionale funct ¸ioneaz ˘a destul de bine. Ret ¸eaua este
cea din figura 4.3. Aceast ˘a ret ¸ea are c ˆate 2 niveluri convolut ¸ionale cu num ˘ar identic de filtre
25

Prezentarea aplicat ¸iei Antrenarea
urmate de c ˆate un maxpooling (primul reduce imaginile la 23×23 pixeli,al doilea la 10×10
iar ultimul la 4×4 ). Dup ˘a fiecare maxpooling am introdus c ˆate un nivel de dropout, fiecare
sc˘azˆand 20% din num ˘arul de neuroni. La final se afl ˘a un nivel conectat total cu 512 neuroni
urmat de un dropout care reduce la jumatate acest num ˘ar. Din aceast ˘a configurat ¸ie au rezultat
1.358.155 de parametri de antrenament.
4.4 Antrenarea
Antrenarea a fost efectuat ˘a pe un sistem Windows 10 Home Edition cu procesor Intel
Core i7-7700 HQ de 2,80 GHz, 4 Core s ¸i 8 procesoare logice, 16 GB de memorie RAM s ¸i
plac˘a grafic ˘a nVIDIA GeForce GTX 1050 Ti cu 4 GB memorie.
ˆIn timpul antren ˘arii, modelul va imp ˘art ¸i setul de date ˆın loturi, fiecare lot av ˆand 32 de
poze. Actualizarea ponderilor pentru fiecare lot este efectuat ˘a automat de c ˘atre ret ¸ea. O
iterat ¸ie asupra ˆıntregului set de date se numes ¸te epoc ˘a. Am ad ˘augat ret ¸elei si un planificator
al ratei de ˆınv˘at ¸are, acest planificator va sc ˘adea rata de ˆınv˘at ¸are de la o epoc ˘a la alta. Learning
Rate Scheduler este implementat ˆın Keras.
Modelul a fost antrenat pe parcursul a 30 de epoci cu dou ˘a tipuri de antrenare: antrenare
peˆıntreg setul de date s ¸i antrenare pe acelas ¸i set de date ˆımp˘art ¸it ˆın 31.367 de poze de
antrenare s ¸i 7842 de poze de validare (20 %din setul de date). Pe pozele de validare se
evalueaz ˘a funct ¸ia obiectiv la finalul fiec ˘arei epoci. Aceste poze nu sunt folosite ˆın antrenarea
propriu-zis ˘a.
Figura 4.4 :ˆInceputul antren ˘arii
Figura 4.5 : Final de epoc ˘a
26

Prezentarea aplicat ¸iei Antrenarea
4.4.1 Antrenarea cu optimizatorul Adam
4.4.1.1 Antrenarea cu procesorul (CPU)
Antrenarea pe setul de date complet a durat 7 ore 47 de minute s ¸i 28 de secunde.
Adun ˆand acest timp cu timpul testare a pozelor s ¸i cu timpul de ˆınc˘arcare s ¸i preprocesare
a rezultat un timp final de 7 ore 59 de minute s ¸i 4 secunde. Rata de recunoas ¸tere a fost de
96,96 % pentru antrenarea pe ˆıntreg setul de date.
Figura 4.6 :
Acuratet ¸ea pentru antrenare a fost de 98,88 % iar valoarea funct ¸iei loss de 0,06.
Figura 4.7 :
Avˆandˆın vedere natura stocastic ˘a a algoritmului, acest rezultat nu a putut fi reprodus.
Din aceast ˘a cauz ˘a am optat pentru a salva cea mai bun ˘a configurat ¸ie a modelului pentru re-
produceri ulterioare ale rezultatului reduc ˆand totodat ˘a num ˘arul de epoci pentru antrenare prin
funct ¸ia EarlyStopping din Keras. Am setat aceast ˘a funct ¸ie ca dup ˘a 3 epoci ˆın care funct ¸ia
loss nu s-a ˆımbun ˘at˘at ¸it s ˘a opreasc ˘a antrenarea. La a doua antrenare a modelului cu aceias ¸i
parametri a rezultat o rat ˘a de recunoas ¸tere de 96,71 %. La rezultatul afis ¸at am ad ˘augat timpul
deˆınc˘arcare al pozelor de testare s ¸i num ˘arul de poze clasificate gres ¸it.
Din graficele din figura 4.9 rezult ˘a faptul c ˘a antrenarea a avut loc doar pentru 7 epoci.
De la a-7-a epoc ˘a funct ¸ia loss nu a ˆınregistrat ˆımbun ˘at˘at ¸ire iar la epoca 10 antrenarea s-a
27

Prezentarea aplicat ¸iei Antrenarea
Figura 4.8 :
Figura 4.9 :
oprit. Antren ˘arile cu set de validare a oferit rezultate mai slabe dec ˆat cea cu ˆıntregul set de
date sau asem ˘an˘atoare.
4.4.1.2 Antrenarea cu procesorul grafic (GPU)
Antrenarea cu ajutorul procesorului grafic a ˆınsemnat o scurtare drastic ˘a a timpului de
antrenare, cele peste 7 ore reduc ˆandu-se la 7 minute s ¸i 57 secunde, adic ˘aˆın jur de 37 de
secunde pe epoc ˘a s ¸i 1 milisecund ˘a pe fiecare poz ˘a, timpul total fiind de 15 de minute s ¸i 37 de
secunde. Acest timp a fost obt ¸inut si datorit ˘a faptului c ˘a funct ¸ia loss a ˆıncetat ˆımbun ˘at˘at ¸irea
la epoca 10, antrenarea oprindu-se la epoca 13. Dac ˘a ar fi rulat toate cele 30 de epoci ar fi
durat ˆın jur de 24-28 de minute. Rata de recunoas ¸tere fiind de 96,53 %.
Figura 4.10 :
Acuratet ¸ea pentru antrenare a fost de 98,72 % iar valoarea funct ¸iei loss de 0,04656.
28

Prezentarea aplicat ¸iei Antrenarea
Figura 4.11 :
Figura 4.12 :
ˆIn cazul antren ˘arii cu setul de validare am obt ¸inut un timp de antrenare de 24 de minute
si 38 de secunde, cu 15 minute s ¸i 55 de secunde pentru antrenarea propriu-zis ˘a, restul tim-
pului reprezent ˆandˆınc˘arcare pozelor (5 minute s ¸i 27 de secunde), timpul pentru validare s ¸i
timpul pentru testare. Rata de recunoas ¸tere fiind 96,62 %.
Figura 4.13 :
Acuratet ¸ea pentru antrenare a fost de 98,97 % iar valoarea funct ¸iei loss de 0,04479.
Pentru validare avem acuratet ¸ea valid ˘arii de 97,5% si valoarea de 0.15419 pentru funct ¸ia
loss.
29

Prezentarea aplicat ¸iei Antrenarea
Figura 4.14 :
4.4.2 Antrenarea cu optimizatorul SGD + NAG
4.4.2.1 Antrenarea cu procesorul (CPU)
Amˆıncercat s ¸i antrenarea cu alt tip de optimizare, s ¸i anume Stochastic Gradient Descent
cu Nesterov Accelerated Gradient. ˆIn urma antren ˘arii modelului cu aceast ˘a optimizare a
rezultat o rat ˘a de recunoas ¸tere mult mai bun ˘a fat ¸˘a de optimizatorul Adam, rezult ˆand o rat ˘a
de recunoas ¸tere de 97,56 %.
Figura 4.15 :
Valoarea funct ¸iei loss a fost de 0,00462 iar acuratet ¸ea antren ˘arii de 99,87 %.
4.4.2.2 Antrenarea cu procesorul grafic (GPU)
Pentru a accelera procesul de antrenare, am antrenat modelul cu acest optimizator s ¸i cu
procesorul grafic. S ¸i de aceast ˘a dat ˘a am obt ¸inut rezultate mult mai bune fat ¸ ˘a de optimizatorul
Adam. Rata de recunoas ¸tere a fost de 97,45 %.
30

Prezentarea aplicat ¸iei Antrenarea
Figura 4.16 :
Valoarea funct ¸iei loss a fost 0,00563 iar acuratet ¸ea la antrenare a fost de 99,84 %.
Figura 4.17 :
4.4.3 ˆImbun ˘at˘at ¸irea ratei de recunoas ¸tere
4.4.3.1 M ˘arirea dimensiunii loturilor de poze la testare
ˆIn diferite situat ¸ii s-a constatat c ˘a m˘arirea dimensiunii loturilor de poze a ajutat la
obt ¸inerea unei rate de recunoas ¸tere foarte bune.
Init ¸ial, dimensiunea loturilor de poze a fost de 32 de poze. Dup ˘a mai multe ˆıncerc ˘ari cu
diferite dimensiuni de loturi, am constatat c ˘a testarea pe loturi de c ˆate 421 de poze a dus la o
cres ¸tere a ratei de recunoas ¸tere la 97,73 %.
Valoarea funct ¸iei los a fost 0,0054 iar acuratet ¸ea la antrenare a fost de 99,83 %.
31

Prezentarea aplicat ¸iei Antrenarea
Figura 4.18 :
Figura 4.19 :
4.4.3.2 Antrenarea multipl ˘a a modelului
Antrenarea multipl ˘a a modelului implic ˘a antrenarea s ¸i salvarea modelului, apoi, mod-
elul salvat este supus unei noi antren ˘ari.
Figura 4.20 : Rezultat prima antrenare
Valoarea funct ¸iei loss a fost 0,00765 iar acuratet ¸ea la antrenare a fost de 99,76 %.
Exemplele din figuri sunt efectuate cu algoritmul de optimizare Adam pentru c ˘a acesta
32

Prezentarea aplicat ¸iei Antrenarea
Figura 4.21 :
a avut o cres ¸tere notabil ˘aˆın urma celei de-a doua antren ˘ari. A doua antrenare a dus la
cres ¸terea ratei de recunoas ¸tere la 97,60 %
Figura 4.22 : Rezultat a doua antrenare
Valoarea funct ¸iei loss a sc ˘azut la 0,00598 iar acuratet ¸ea la antrenare a crescut la 99,80
%.
Figura 4.23 :
33

Prezentarea aplicat ¸iei Antrenarea
Cres ¸terea ratei de recunoas ¸tere m-a f ˘acut s ˘aˆıncerc si a treia antrenare a modelului,
antrenare care a avut efecte negative, rata de recunoas ¸tere sc ˘azˆand.
4.4.3.3 Ad ˘augarea de niveluri modelului
Figura 4.24 : Arhitectura ret ¸elei 2
Metodele anterioare au dat rezultate mai bune, dar nu cu mult mai bune fat ¸ ˘a de ce
obt ¸inusem anterior. Acest lucru a dus la ad ˘augarea unor niveluri suplimentare modelului.
34

Prezentarea aplicat ¸iei Antrenarea
Astfel, modelul rezultat este format din patru blocuri de niveluri:
.Blocul 1 este format din dou ˘a niveluri convolut ¸ionale activate de funct ¸ia ReLU, fiecare
cu cˆate 32 de filtre, urmate de un nivel maxpooling s ¸i de un nivel dropout de 20 %.
.Blocul 2 este format din trei niveluri convolut ¸ionale, fiecare a c ˆate 64 de filtre, activate
de funct ¸ia ReLU, urmate de un nivel maxpooling s ¸i un nivel dropout de 20 %.
.Blocul 3 este format din trei niveluri convolut ¸ionale a c ˆate 128 de filtre s ¸i unul cu
256 de filtre, activate de funct ¸ia ReLU, urmate de un nivel maxpooling s ¸i de un nivel
dropout de 20 %.
.Ultimul bloc incepe cu nivelul Flatten care este necesar pentru conectarea unui nivel
convolut ¸ional cu unul cu neuroni conectat ¸i total, urmat de un nivel cu 512 neuroni
conectat ¸i total, un nivel dropout de 30 %, un nou nivel cu 512 neuroni conectat ¸i total,
un nivel dropout de 50 %, iar ultimul nivel este un nivel cu 43 de neuroni conectat ¸i
total.
Am antrenat aceas ˘a ret ¸ea cu optimizatorul Stochastic Gradient Descent cu Nesterov
Accelerated Gradient, iar testarea a fost executat ˘a pe loturi a c ˆate 421 de poze. Cu aceast ˘a
arhitectur ˘a am obt ¸inut o rat ˘a de recunoas ¸tere de 97,89 %.
Figura 4.25 :
Valoarea funct ¸iei loss a fost de 0,00563 iar acuratet ¸ea antren ˘arii a fost de 99,84 %
Figura 4.26 :
35

Prezentarea aplicat ¸iei Testarea modelului
Am efectuat de asemenea s ¸i a doua antrenare a modelului. Pentru prima antrenare am
folosit Stochastic Gradient Descent ˆımpreun ˘a cu Nesterov Accelerated Gradient iar pentru
cea de-a doua antrenare am folosit optimizatorul Adam, ceea ce a dus la cres ¸terea ratei de
recunoas ¸tere la 98,21 %. O putem considera o rat ˘a de recunoas ¸tere bun ˘a, dat fiind faptul c ˘a
rata de recunoas ¸tere uman ˘a medie pentru acest set de date este de 98,84 %. [2]
Figura 4.27 :
Valoarea funct ¸iei loss a sc ˘azut la 0,00078 iar acuratet ¸ea antren ˘arii a fost foarte aproape
de perfect ¸iune, aceasta fiind 99,97 %.
Figura 4.28 :
Pe parcursul antrenarilor efortul computat ¸ional a fost destul de ridicat. La antrenarea
cu procesorul, utilizarea sa a oscilat ˆıntre 80 s ¸i 100 %, toate cele 4 core-uri funct ¸ion ˆand
concomitent, iar consumul de memorie RAM s-a situat ˆıntre 7,5 s ¸i 9 GB. La antrenarea cu
ajutorul procesorului grafic consumul de memorie RAM s-a situat ˆıntre 8 s ¸i 12,5 GB iar
consumul de memorie a pl ˘acii video, la 3,2 GB.
4.5 Testarea modelului
Amˆınc˘arcat ˆın memorie pozele din setul de date de testare. Testarea este efectuat ˘a
pe toate cele 12.630 de poze. Pentru a verifica dac ˘a predict ¸ia modelului este corect ˘a sau
36

Prezentarea aplicat ¸iei Testarea modelului
nu, clasele c ˘arora apart ¸in pozele sunt salvate ˆıntr-un fis ¸ier csv. Acuratet ¸ea modelului (rata de
recunoas ¸tere) este dat ˘a de raportul dintre num ˘arul de teste care dau r ˘aspuns corect s ¸i num ˘arul
total de teste.
Figura 4.29 : Final de testare
Figura 4.30 : Rezultat clasificare
37

Prezentarea aplicat ¸iei Analiza SWOT
La finalul test ˘arii sunt alese aleator 10 poze pentru a fi afis ¸ate ˆımpreun ˘a cu clasa c ˘areia
apart ¸in si predict ¸ia ret ¸elei (Figura 4.30).
4.6 Analiza SWOT
Figura 4.31 : Analiza SWOT
38

Capitolul 5
Concluzii
Rezolvarea problemei de recunoas ¸tere a semnelor de circulat ¸ie este esent ¸ial ˘a pentru ca
autovehiculele autonome s ˘a funct ¸ioneze ˆın condit ¸ii de sigurant ¸ ˘a atˆat pentru pasageri c ˆat s ¸i
pentru pietoni. ˆIn ultimii ani s-au f ˘acut progrese impresionante ˆın acest domeniu dar pen-
tru a putea implementa un astfel de sistem ˆın condit ¸ii de sigurant ¸ ˘a este necesar ˘a atingerea
perfect ¸iunii.
Concluzia rezultat ˘aˆın urma testelor efectuate cu algoritmii de clasificare ”clasici” este
c˘a aces ¸tia nu sunt potrivit ¸i pentru problema de recunoas ¸tere a semnelor de circulat ¸ie. Des ¸i
cel mai apropiat vecin s ¸i Eigenfaces s-au descurcat onorabil, aces ¸tia nu sunt ˆındeajuns de
buni pentru probleme cu seturi de date mari sau pentru probleme ce ar trebui implementate
ˆın timp real, datorit ˘a timpului mare de rulare s ¸i a acuratet ¸ii sc ˘azute. Lanczos si COD, des ¸i
s-au descurcat destul de bine la recunoas ¸tere de fet ¸e pe un set de date cu 400 de poze, ˆın
cazul semnelor de circulat ¸ie au es ¸uat, oferind rate de recunoas ¸tere foarte mici.
Trecerea la ret ¸ele neuronale a fost impus ˘a de es ¸ecul algoritmilor anterior ment ¸ionat ¸i.
Des ¸i necesit ˘a capacit ˘at ¸i computationale peste medie, acestea dau rezultate foarte bune. Tim-
pul de antrenare reprezint ˘a cea mai mare problem ˘a dar odat ˘a cu folosirea procesoarelor
grafice acesta a fost redus considerabil, iar posibilitatea folosirii mai multor procesoare
grafice ˆın paralel ˆınseamn ˘a posibilitatea antren ˘arii pe seturi de date colosale ˆıntr-un timp
decent.
Utiliz ˆand ret ¸elele neuronale s ¸i combinat ¸ii de tehnici de optimizare am reus ¸it s ˘a at-
ing o rat ˘a de recunoas ¸tere de 98,21 %, o rat ˘a deloc rea dac ˘a lu˘amˆın considerare rata de
recunoas ¸tere medie uman ˘a de 98,84 % pentru acest set de date.[2] Setul de date este un set
destul de dur, care pune probleme destul de serioase, ajung ˆand destul de aproape de realitate.
Din aceast ˘a cauz ˘a, eu consider rata obt ¸inut ˘a o reus ¸it ˘a.
39

Concluzii Lucru pe viitor
5.1 Lucru pe viitor
La acest moment am implementat o ret ¸ea neuronal ˘a pentru recunoas ¸terea semnelor de
circulat ¸ie care a obt ¸inut o rat ˘a de recunoas ¸tere de 98,21%. Urm ˘atorul pas este reprezentat de
implementarea p ˘art ¸ii de detect ¸ie a semnelor de circulat ¸ie ˆın imagini surprinse de la bordul
unui autovehicul s ¸i chiar de detect ¸ie s ¸i recunoas ¸tere ˆın timp real. Ultimul pas ar fi reprezen-
tat de implementarea ˆıntregului sistem pe un autovehicul. Ar reprezenta un mare avantaj
atingerea unei rate c ˆat mai aproape de 100%.
40

Referint ¸e bibliografice
[1] Michael Beyeler. OpenCV with Python Blueprints . Packt Publishing, 2015.
[2] J. Stallkamp M. Schlipsing J. Salmen C.Igel. Man vs. Computer: Benchmarking Ma-
chine Learning Algorithms for Trafc Sign Recognition . Neural Networks 32, 2012.
[3] E. Pelican. Algoritmi de calcul s ¸tiint ¸ific. Recunoas ¸terea formelor (fet ¸e s ¸i cifre) . Suport
de curs, 2017.
[4] L. Lit ¸ ˘a E. Pelican. Algorithms for Face Recognition . MatrixRom, 2015.
[5] Itay Lieder Tom Hope, Yehezkel S. Resheff. Learning TensorFlow. A Guide to Building
Deep Learning Systems . O’Reilly, 2017.
[6] Aur ´elien G ´eron. Hands-On Machine Learning with Scikit-Learn and TensorFlow .
O’Reilly, 2017.
[7] Jimmy Ba Diederik P. Kingma. Adam: A Method for Stochastic Optimization . 3rd
International Conference for Learning Representations, San Diego, 2015.
[8] Rodolfo Bonnin. Building Machine Learning Projects with TensorFlow . Packt Pub-
lishing, 2016.
[9] Nick McClure. TensorFlow Machine Learning Cookbook . Packt Publishing, 2017.
[10] Daniel Slater Peter Roelants Valentino Zocca, Gianmario Spacagna. Python Deep
Learning . Packt Publishing, 2017.
41

Similar Posts