Recunoas terea semnelor de circulat ie [609360]
Ministerul Educat ¸iei Nat ¸ionale
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 4
1.1 Setul de date folosit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Algoritmi de clasificare 6
2.1 Algoritmi de tip cel mai apropiat “vecin” . . . . . . . . . . . . . . . . . . . 6
2.1.1 Rezultatele test ˘arii algoritmului . . . . . . . . . . . . . . . . . . . 7
2.2 Algoritmul Eigenfaces “fet ¸e proprii”) . . . . . . . . . . . . . . . . . . . . 7
2.2.1 Analiza Componentelor Principale (PCA) . . . . . . . . . . . . . . 7
2.2.2 Descrierea algoritmului . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.3 Rezultatele test ˘arii algoritmului . . . . . . . . . . . . . . . . . . . 9
2.3 Algoritmul Lanczos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.1 Descrierea algoritmului . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.2 Rezultatele test ˘arii algoritmului . . . . . . . . . . . . . . . . . . . 10
2.4 COD (Customized Orthogonalization via Deflation) . . . . . . . . . . . . . 10
2.4.1 Rezultatele test ˘arii algoritmului . . . . . . . . . . . . . . . . . . . 11
3 Solut ¸ia propus ˘a 12
3.1 Preprocesare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
i
Cuprins Cuprins
3.1.1 Egalizarea histogramei ˆın spat ¸iul de culoare HSV (Hue, Saturation,
Value) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.2 One-Hot Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Ret ¸ele neuronale artificiale . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.1 Neuronul artificial . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 Ret ¸ele neuronale convolut ¸ionale . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.1 Arhitectura general ˘a . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4 Algoritmi de optimizare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4.1 Gradient Descent . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.2 Optimizare bazat ˘a pe moment (Momentum optimization) . . . . . . 21
3.4.3 Stochastic Gradient Descent (SGD) . . . . . . . . . . . . . . . . . 22
3.4.4 Nesterov Accelerated Gradient (NAG) . . . . . . . . . . . . . . . . 22
3.4.5 Adam optimization . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5 Funct ¸ii de activare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.5.1 ReLU (Rectified Linear Unit) . . . . . . . . . . . . . . . . . . . . 24
3.5.2 Softmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.6 Filtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.6.1 Filtrul Sobel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.6.2 Filtrul Robert’s (Robert’s cross operator) . . . . . . . . . . . . . . 25
3.6.3 Filtrul Prewitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.6.4 Filtrul Gaussian . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.7 Funct ¸ii obiectiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.8 Indici de performant ¸ ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4 Prezentarea aplicat ¸iei 29
4.1 TensorFlow s ¸i Keras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2 Preprocesare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3 Arhitectura ret ¸elei 1 (Modelul 1) . . . . . . . . . . . . . . . . . . . . . . . 31
ii
Cuprins Cuprins
4.4 Antrenarea s ¸i testarea modelului 1 . . . . . . . . . . . . . . . . . . . . . . 32
4.4.1 Antrenarea cu procesorul (CPU) . . . . . . . . . . . . . . . . . . . 33
4.4.2 Antrenarea cu procesorul grafic (GPU) . . . . . . . . . . . . . . . 35
4.4.3 ˆImbun ˘at˘at ¸irea ratei de recunoas ¸tere la testare . . . . . . . . . . . . 38
4.5 Arhitectura ret ¸elei 2 (Modelul 2) . . . . . . . . . . . . . . . . . . . . . . . 40
4.6 Antrenarea s ¸i testarea modelului 2 . . . . . . . . . . . . . . . . . . . . . . 42
4.7 Testarea modelelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.8 Analiza SWOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5 Concluzii 50
5.1 Lucru pe viitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Referint ¸e bibliografice 52
iii
Lista Figurilor
1.1 Semnele prezente ˆın setul de date grupate pe categorii . . . . . . . . . . . . . . 4
1.2 Exemple de imagini din setul GTSRB . . . . . . . . . . . . . . . . . . . . . . 5
2.1 Rezultate Cel mai apropiat vecin . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Rezultate Eigenfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Rezultate Lanczos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 COD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1 Poza s ¸i histograma pe canalul V . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Poza s ¸i histograma pe canalul V dup ˘a egalizare . . . . . . . . . . . . . . . . . 13
3.3 Valori nominale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4 One hot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.5 Neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.6 Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.7 Filtru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.8 Exemplu de filtrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.9 Arhitectura general ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.10 Max Pooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.11 Gradient Descent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.12 a) Learning rate prea mic b) Learning rate prea mare . . . . . . . . . . . . . . 20
3.13 Problemele Gradient Descent . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.14 Stochastic Gradient Descent . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.15 Comparat ¸ie Momentum optimization cu Nesterov . . . . . . . . . . . . . . . . 23
3.16 ReLu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
iv
Lista Figurilor Lista Figurilor
3.17 Filtre Sobel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.18 Filtre Robert’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.19 Filtre Prewitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.1 ˆInainte s ¸i dup ˘a histogram equalization (exemplu din setul de date) . . . . . . . 30
4.2 ˆInainte s ¸i dup ˘a preprocesare (exemplu din setul de date) . . . . . . . . . . . . . 30
4.3 Exemplu de retea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4 ˆInceputul antren ˘arii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.5 Final de epoc ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.6 Rezultat Adam – CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.7 Grafice Adam – CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.8 Rezultat Adam – CPU 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.9 Grafice Adam – GPU 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.10 Rezultat SGD+NAG – CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.11 Timpi epoc ˘a Adam – GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.12 Rezultat Adam – GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.13 Grafice Adam – GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.14 Rezultat Adam + validare – GPU . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.15 Grafice Adam + validare – GPU . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.16 Rezultat SGD+NAG – GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.17 Grafice SGD+NAG – GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.18 Rezultat loturi de 421 de poze . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.19 Grafice loturi de 421 de poze . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.20 Rezultat prima antrenare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.21 Grafice prima antrenare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.22 Rezultat a doua antrenare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.23 Grafice a doua antrenare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.24 Arhitectura ret ¸elei 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
v
Lista Figurilor Lista Figurilor
4.25 Rezultat ret ¸eaua 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.26 Grafice ret ¸eaua 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.27 Rezultate ret ¸eaua 2, a doua antrenare . . . . . . . . . . . . . . . . . . . . . . . 43
4.28 Grafice ret ¸eaua 2, a doua antrenare . . . . . . . . . . . . . . . . . . . . . . . . 43
4.29 Final de testare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.30 Rezultat clasificare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.31 Exemplu de interfat ¸ ˘a cu utilizatorul 1 . . . . . . . . . . . . . . . . . . . . . . . 45
4.32 Exemplu de interfat ¸ ˘a cu utilizatorul 2 . . . . . . . . . . . . . . . . . . . . . . . 45
4.33 Exemplu de interfat ¸ ˘a cu utilizatorul 3 . . . . . . . . . . . . . . . . . . . . . . . 46
4.34 Exemplu de interfat ¸ ˘a cu utilizatorul 4 . . . . . . . . . . . . . . . . . . . . . . . 46
4.35 Exemplu de interfat ¸ ˘a cu utilizatorul 5 . . . . . . . . . . . . . . . . . . . . . . . 47
4.36 Exemplu de interfat ¸ ˘a cu utilizatorul 6 . . . . . . . . . . . . . . . . . . . . . . . 47
4.37 Exemplu de interfat ¸ ˘a cu utilizatorul 7 . . . . . . . . . . . . . . . . . . . . . . . 48
4.38 Exemplu de interfat ¸ ˘a cu utilizatorul 8 . . . . . . . . . . . . . . . . . . . . . . . 48
4.39 Analiza SWOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.1 Exemplu de mas ¸inut ¸ ˘a electric ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1
Introducere
Inteligent ¸a artificial ˘a este un concept care desemneaz ˘a capacitatea mas ¸inilor (calcula-
toare, robot ¸i) de a simula inteligent ¸a uman ˘a.Machine Learning (ˆınv˘at ¸are automat ˘a) este
o subdiviziune a inteligent ¸ei artificiale s ¸i se refer ˘a la abilitatea mas ¸inilor de a ˆınv˘at ¸a s ˘a
rezolve probleme. Programele bazate pe machine learning pot ˆınv˘at ¸a, de exemplu, s ˘a re-
cunoasc ˘a diverse forme (tipare, s ¸abloane – pattern) s ¸i s ˘a realizeze predict ¸ii pe baza acestor
informat ¸ii. Problemele de machine learning sunt ˆımp˘art ¸ite ˆın mai multe categorii: probleme
deˆınv˘at ¸are supervizat ˘a (supervised learning), probleme de ˆınv˘at ¸are nesupervizat ˘a (unsuper-
vised learning), ˆınv˘at ¸are cu recompense (reinforcement learning), ˆınv˘at ¸are semi-supervizat ˘a
(semi-supervised learning).
Problemele de recunoas ¸tere a formelor sunt din clasa ˆı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. ˆInˆınv˘at ¸area supervizat ˘a avem dou ˘a
clase mari: probleme de clasificare s ¸i probleme de regresie.
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 presupune ˆın prealabil detect ¸ia acestora apoi intervine procesul efectiv
de recunoas ¸tere. Detect ¸ia reprezint ˘a localizarea semnelor ˆıntr-o imagine sau ˆıntr-o filmare,
daca vorbim de sisteme ˆın timp real, iar recunoas ¸terea 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 abordeaz ˘a problema recunoas ¸terii semnelor de circulat ¸ie s ¸i este structurat ˘a pe
5 capitole. Primul capitol este o introducere ˆın problema de ˆınv˘at ¸are supervizat ˘aˆın care se
pune accent pe clasificare si o descriere a setului de date folosit. Al doilea capitol se axeaz ˘a
pe implementarea s ¸i testarea unor algoritmi de clasificare specifici zonei de recunoas ¸tere a
formelor (cel mai apropiat vecin, Eigenfaces, Lanczos s ¸i COD). Al treilea capitol se refer ˘a la
solut ¸ia propus ˘a pentru a rezolva problema recunoas ¸terii semnelor de circulat ¸ie ˆıncep ˆand cu
modul de preprocesare al setului de date s ¸i codificarea claselor, continu ˆand cu o introducere
ˆın domeniul ret ¸elelor neuronale, aprofund ˆand domeniul ret ¸elelor neuronale convolut ¸ionale
s ¸i finaliz ˆandu-se cu algoritmii de optimizare, funct ¸iile de activare, filtre, funct ¸ii obiectiv s ¸i
indici de performant ¸ ˘a. Prezentarea aplicat ¸iei din capitolul patru debuteaz ˘a cu o prezentare
succint ˘a a principalelor tehnologii folosite urmat ˘a de descrierea act ¸iunilor de preprocesare a
setului de date s ¸i arhitecturilor pe care le-am creat. Tot ˆın capitolul patru se vorbes ¸te despre
procesul de antrenare a ret ¸elelor create fiind descris ˆın detaliu fiecare ˆıncercare efectuat ˘a. La
finalul acestui capitol se vorbes ¸te despre testarea modelului, tot aici fiind realizat ˘a analiza
2
Introducere Introducere
SWOT a aplicat ¸iei. ˆIn ultimul capitol sunt prezentate concluziile.
Privind ˆınapoi la ultimii ani c ˆand termenii care descriau conceptul de “self-driving car”
se rezumau la o posibil ˘a realitate, progresul tehnologiei a f ˘acut ca acest concept s ˘a devin ˘a
realitate. Recunoas ¸terea semnelor de circulat ¸ie reprezint ˘a o caracteristic ˘a vital ˘a pentru au-
tovehiculele autonome care al ˘aturi de alte sisteme la fel de importante poate contribui la
reducerea substant ¸ial ˘a a accidentelor s ¸i pierderii de viet ¸i omenes ¸ti. Lucrarea este rezultatul
pasiunii pentru autovehicule s ¸i visului de a contribui pe viitor la dezvoltarea autovehiculelor
autonome. Scopul lucr ˘arii este atingerea unei capacit ˘at ¸i de a recunoas ¸te semne de circulat ¸ie
asem ˘an˘atoare cu cea uman ˘a.
3
Capitolul 1
Prezentarea problemei
O subcategorie important ˘a a domeniului de 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 clasi-
ficare. Predict ¸ia pret ¸urilor imobiliare ˆın funct ¸ie de suprafat ¸a imobilelor 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 o etichet ˘a corespunz ˘atoare uneia din
cele 43 de clase [1].
1.1 Setul de date folosit
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
Setul de date cont ¸ine 39209 poze de antrenament s ¸i 12630 poze de testare, de diferite
rezolut ¸ii, cuprinse ˆıntre 15×15 s ¸i 250×250 pixeli, iar formatul imaginilor este PPM (Portable
1http://benchmark.ini.rub.de/?section=gtsrb&subsection=dataset
4
Prezentarea problemei Setul de date folosit
Pixmap, P6). Formatul PPM a fost creat pentru a servi ca format intermediar ˆın dezvoltarea
sistemelor de conversie a formatelor imaginilor, acesta fiind unul dintre cele mai simple,
ˆımp˘art˘as ¸ind caracteristici comune cu multe alte formate. P6 indic ˘a faptul c ˘a imaginile sunt
color. 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 fiind ˆınregistrate ˆıntr-un fis ¸ier csv. Fiecare
poz˘a cont ¸ine un singur semn de circulat ¸ie ˆınconjurat de un chenar care reprezint ˘a aproxima-
tiv 10% din dimensiunea pozei.
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 reorganizare
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 ˆın 43
de clase, fiecare clas ˘a avˆand 30 de poze. Aceast ˘a reorganizare a fost necesar ˘a pentru a putea
verifica rezultatele algoritmilor (etichetare corect ˘a sau incorect ˘a).
Figura 1.2 : Exemple de imagini din setul GTSRB
5
Capitolul 2
Algoritmi de clasificare
ˆIn acest capitol au fost implementat ¸i c ˆat ¸iva algoritmi din zona de recunoas ¸tere a formelor
(de tip proiect ¸ie) pentru a verifica eficient ¸a lor ˆın ceea ce prives ¸te recunoas ¸terea semnelor de
circulat ¸ie. Compararea algoritmilor 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 efectuat. 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.
Pentru a clasifica poza c ˘autat ˘a se pot folosi diverse metrici (distant ¸e):
. dL2(x;y) =kx yk2(norma euclidian ˘a)
. dL1(x;y) =kx yk1(norma 1 sau City-block)
. dL1(x;y) =kx yk1(norma infinit)
. dcos(x;y) = 1 <x;y>
kxk2kyk2
Pentru urm ˘atorii algoritmi s-a utilizat norma euclidian ˘a.
2.1 Algoritmi de tip cel mai apropiat “vecin”
Cea mai simpl ˘a metod ˘a care se poate folosi ˆın recunoas ¸terea formelor 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 datef 1; 2;:::; Ngde poza respectiv ˘a. Algoritmul Nearest Neighbour compar ˘a
poza cu fiecare ipentru a g ˘asi un indice i0astfel ˆıncat:
k i0k=min
16i6Nk ik (2.1)
Indicelei0ne va da poza aflat ˘a la cea mai mic ˘a distant ¸a fat ¸ ˘a de poza c ˘autat ˘a.
6
Algoritmi de clasificare Algoritmul Eigenfaces “fet ¸e proprii”)
2.1.1 Rezultatele test ˘arii algoritmului
Timpul ˆın care algoritmul a fost aplicat pentru fiecare din cele 1290 de poze de testare a
fost de 3 minute si 10 secunde. ˆIn urma verific ˘arilor repetate s-a obt ¸inut rata de recunoas ¸tere
de maxim 78.99%, ceea ce nu este destul de bine pentru a 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 formelor. “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 formelor. 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
[3].
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
7
Algoritmi de clasificare Algoritmul Eigenfaces “fet ¸e proprii”)
C= (cij)i;j=1;navem:
cij=cov(coli;colj); (2.2)
unde
cov(x;y) =nP
i=1(xi x)(yi y)
n 1; (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=1 i
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 ˘a pe 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.[4]
8
Algoritmi de clasificare Algoritmul Lanczos
2.2.3 Rezultatele test ˘arii algoritmului
Pentru acest algoritm s-a 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 s-a 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 Algoritmul 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 funct ¸ia 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
66666412
223
………
k 1k 1k
kk3
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/
9
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
Fie1= 0;q0= 0
fori= 1;:::;k
!i=A(ATqi) iqi 1
i= (!i;qi)
!i=!i iqi
i+1=k!ik2qi+1=!i
i+1end
2.3.2 Rezultatele test ˘arii algoritmului
Timpul necesar preproces ˘arii a fost de 5 secunde. Timpul total fiind de 12 de secunde.
ˆIn urma verific ˘arilor repetate s-a 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
10
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 ˘am ca
T= [!1;!2;:::;!k]
7. Se caut ˘ai021;:::;k care satisfacek
i0k=min
16i6Nk
ik. Practic se aplic ˘a
cel mai apropiat vecin.[5]
2.4.1 Rezultatele test ˘arii algoritmului
Timpul necesar preproces ˘arii a fost de 10 secunde. Timpul total fiind de 16 de secunde.
ˆIn urma verific ˘arilor repetate s-a 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 suficient de bune. De aceea, am abordat o solut ¸ie folosind deep learning.
3http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html
11
Capitolul 3
Solut ¸ia propus ˘a
Anaconda4este 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. Folosind Anaconda am creat dou ˘a medii
virtuale (environment), 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 Tensor-
Flow: TensorFlow cu suport doar pentru procesor (CPU) s ¸i TensorFlow cu suport s ¸i pentru
procesorul grafic (placa grafic ˘a – GPU).
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.
.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 255. 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 255,
unde 0 ˆınseamn ˘a negru s ¸i 255 cel mai luminos5
4https://www.anaconda.org
5https://www.learnopencv.com/color-spaces-in-opencv-cpp-python/
12
Solut ¸ia propus ˘a Preprocesare
Figura 3.1 : Poza s ¸i histograma pe canalul V
Figura 3.2 : Poza s ¸i histograma pe canalul V dup ˘a egalizare
3.1.2 One-Hot Encoding
One-Hot encoding este un termen des ˆıntˆalnit ˆın machine learning. Acesta este un pro-
ces prin care variabilele sunt aduse la o form ˘a cu care algoritmii de machine learning pot
face predict ¸ii mai bune.
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 3.3, dar din perspectiva machine
learning, nu ar avea nicio logic ˘a.
13
Solut ¸ia propus ˘a Preprocesare
Figura 3.3 : Valori nominale
ˆIn schimb vom genera o coloan ˘a de tip boolean pentru fiecare categorie. Doar una
din valorile acestei coloane ar putea lua valoarea 1 pentru fiecare clas ˘a, de aici si termenul
de ”one-hot”.
Etichetele trebuie codificate pentru c ˘a numerele lor nu au nicio leg ˘atur˘a unul cu cel ˘alalt.
F˘ar˘a codificare dac ˘a ar exista clase cu caracteristici similare dar cu numere diferite, 1 s ¸i 5 de
exemplu, ret ¸eaua le-ar putea “confunda” iar rezultatul nu va mai fi clasa 1 sau 5 ci o medie a
acestor clase rezult ˆand o clasificare gres ¸it ˘a. Fiecare rezultat va reprezenta probabilitatea de
a apart ¸ine unei clase. Pe scurt: pentru a putea decide corect c ˘arei clase ˆıi apart ¸ine poza, este
necesar ˘a crearea unui vector “one-hot”.6
Figura 3.4 : One hot
6https://www.quora.com/What-is-one-hot-encoding-and-when%
2is-it-used-in-data-science
14
Solut ¸ia propus ˘a Ret ¸ele neuronale artificiale
3.2 Ret ¸ele neuronale artificiale
Ret ¸elele neuronale artificiale sunt inspirate de ret ¸elele neuronale naturale. Acestea sunt
formate din elemente de procesare interconectate care lucreaz ˘aˆımpreuna pentru a rezolva o
problema (neuroni). La fel cum oamenii ˆınvat ¸ ˘a urm ˘arind exemple s ¸i o ret ¸ea neuronal ˘a artifi-
cial˘a poate ˆınv˘at ¸aˆın acest mod fiind configurate pentru o problem ˘a specific ˘a (recunoas ¸terea
formelor de exemplu).
3.2.1 Neuronul artificial
Neuronii artificiali, sunt format ¸i din:
.una sau mai multe conexiuni de intrare care au rolul de a colecta date de intrare de la
alt ¸i neuroni, fiecare conexiune av ˆand c ˆate o pondere.
.una sau mai multe conexiuni de ies ¸ire care au rolul de a face leg ˘atura cu conexiunile
de intrare ale altor neuroni.
.o funct ¸ie de activare care determin ˘a valoarea datelor de ies ¸ire
Figura 3.5 : Neuron7
x1;x2;:::;xNreprezint ˘a datele de intrare, w1;w2;:::;wNreprezint ˘a ponderile, w0reprezint ˘a
ponderea auxiliar ˘a (bias),Peste funct ¸ia de transfer, f este funct ¸ia de activare iar y reprezint ˘a
rezultatul funct ¸iei de activare (datele de ies ¸ire).
Procesul de ˆınv˘at ¸are al unei ret ¸ele neuronale artificiale este de fapt un proces iterativ de
optimizare a ponderilor. Ponderile sunt optimizate pe baza performant ¸elor ret ¸elei pe un set de
7AhmedMenshawyGiancarloZacone,Md.RezaulKarim.DeepLearningwithTensorflow.
PacktPublishing,2017.
15
Solut ¸ia propus ˘a Ret ¸ele neuronale convolut ¸ionale
exemple (set de date de antrenare) ale c ˘aror clase sunt cunoscute. Scopul este minimizarea
unei funct ¸ii obiectiv ( loss). Optimizare se face prin backpropagation, eroarea se propag ˘a
de la ultimul strat c ˘atre primul, optimiz ˆandu-se ponderile pentru a reduce eroarea s ¸i pentru
a optimiza funct ¸ia obiectiv. Performant ¸ele ret ¸elei sunt apoi verificate pe un set de date de
testare compus din date care nu au f ˘acut parte din setul de antrenare [6][7]. Optimizarea
ponderilor va fi discutat ˘a pe larg ˆın sect ¸iunea 3.4.
3.3 Ret ¸ele neuronale convolut ¸ionale
Ret ¸elele neuronale convolut ¸ionale au fost create special pentru recunoas ¸terea de forme.
Principalul scop al convolut ¸iei este de a extrage caracteristicile unei imagini de intrare (input)
cu ajutorul unor filtre. Fiecare imagine este reprezentat ˘a de o matrice care cont ¸ine valorile
pixelilor. Consider ˘am o imagine de dimensiunea 5×5 ai c ˘arei pixeli au doar valorile 0 s ¸i 1.
Figura 3.6 :8
De asemenea consider ˘am o alt ˘a matrice de 3×3 (filtrul)
Figura 3.7 :9
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 sau atribute” (Feature Map) . Fil-
trele funct ¸ioneaz ˘a ca niste detectoare de caracteristici.
16
Solut ¸ia propus ˘a Ret ¸ele neuronale convolut ¸ionale
Figura 3.8 :10
La ret ¸elele neuronale convolut ¸ionale filtrele nu sunt definite de utilizator, acestea fiind
init ¸ializate aleator, modelul ˆınv˘at ¸ˆand ce filtre sunt potrivite pentru datele de intrare oferite,
cu ajutorul back propagation. Filtrele au o ˆın˘alt ¸ime s ¸i o l ˘at ¸ime (de obicei 2×2 sau 3×3 pixeli).
Acestea sunt folosite ca date de intrare pentru urm ˘atorul nivel de neuroni. Dac ˘a primul nivel
are 8 filtre iar al doilea nivel are 32 de filtre, vom obt ¸ine 328feature maps.
ˆ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
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. Bordarea cu 0 (Zero-Padding) reprezint ˘a crearea unui chenar de 0 ˆın jurul imaginii.
8;9;10https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/
17
Solut ¸ia propus ˘a Ret ¸ele neuronale convolut ¸ionale
3.3.1 Arhitectura general ˘a
Figura 3.9 :11
ˆIn figura 3.9 este reprezentat ˘a arhitectura general ˘a a unei ret ¸ele neuronale convolut ¸ionale.
Aceasta este ˆımp˘art ¸it˘aˆın blocuri. Un bloc este format din unul sau mai multe niveluri
convolut ¸ionale fiecare urmate de o funct ¸ie de activare. La finalul blocului se aplic ˘a o re-
ducere a dimensiunii imaginii (pool). Uneori se adaug ˘a cˆate un nivel de Dropout . Acest ˘a
practic ˘a este considerat ˘a un artificiu de regularizare a ret ¸elei, fort ¸ ˆand-o 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 overfitting-ul
ret ¸elei.
Nivelul final al ret ¸elei este un nivel cu neuroni conectat ¸i total ( fully connected ). La
aceste niveluri fiecare neuron este conectat cu tot ¸i neuronii nivelului anterior s ¸i au scopul 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. Pentru a putea conecta un nivel convolut ¸ional cu
unul conectat total, este necesar ˘a d˘augarea unui nivel Flatten. Nivelul Flatten remodeleaz ˘a
output-ul nivelului convolut ¸ional. Funct ¸ia de activare a ret ¸elei este Softmax care formeaz ˘a
un vector de distribut ¸ie a probabilit ˘at ¸ilor, iar rezultatul s ˘au este valoarea celei mai mari pro-
babilit ˘at ¸i [8][9].
Funct ¸iile de activare decid valoarea final ˘a a neuronilor. Una dintre cele mai folosite
funct ¸ii este ReLU (Rectified Linear Unit) . Aceast ˘a funct ¸ie ˆınlocuieste tot ¸i pixelii cu valori
11http://cs231n.github.io/convolutional-networks/#overview
18
Solut ¸ia propus ˘a Algoritmi de optimizare
negative din Feature Map cu valoarea zero.
Output =Max (0;Input ) (3.1)
Max Pooling 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.10 : Max Pooling12
Funct ¸iile de activare vor fi abordate pe larg ˆın sect ¸iunea 3.5 iar filtrele ˆın sect ¸iunea 3.6.
3.4 Algoritmi de optimizare
Algoritmii de optimizare ajut ˘a la minimizarea (sau maximizarea) unei funct ¸ii obiectiv
(de obicei eroare). Aceasta este o funct ¸ie matematic ˘a dependent ˘a de parametrii modelu-
lui folosit ¸i ˆın calcularea valorilor t ¸int ˘a (clasele sau categoriile) din setul de date folosit de
model. Valorile ponderilor (weights) s ¸iponderii auxiliare (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 ˆandfunct ¸ia cost
(loss) a procesului de antrenare, juc ˆand un rol important ˆın procesul de antrenare a ret ¸elei
neuronale.13
12https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/
13https://towardsdatascience.com/types-of-optimization-algorithms%
2Dused-in-neural-networks-and-ways-to-optimize-gradient-95ae5d39529f
19
Solut ¸ia propus ˘a Algoritmi de optimizare
3.4.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 obiectiv.
Figura 3.11 : Gradient Descent14
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 obiectiv cu privire la vectorul de parametri s ¸i se deplaseaz ˘aˆın direct ¸ia gradien-
tului 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 obiectiv, p ˆan˘a algoritmul ajunge la punctul de minim.
Un parametru important este m ˘arimea pasilor de cobor ˆare, determinat ˘a de rata de ˆınv˘at ¸are
(learning rate). Rata de ˆınv˘at ¸are este reprezentat ˘a de valoarea cu care se ˆınmult ¸este gradien-
tul. 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 omit ˘a punctul de minim.
Figura 3.12 : a) Learning rate prea mic b) Learning rate prea mare15
20
Solut ¸ia propus ˘a Algoritmi de optimizare
Nu toate funct ¸iile au un minim usor de atins, multe sunt de tipul din figura 3.12. 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.13 : Problemele Gradient Descent16
3.4.2 Optimizare bazat ˘a pe moment (Momentum optimiza-
tion)
O minge care se rostogoles ¸te pe o pant ˘a cu o suprafat ¸ ˘a neted ˘a aceasta 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 op-
timization ajung ˆand s ˘a fie de 10 ori mai rapid dec ˆat algoritmul Gradient Descent. Momentum
optimization coboar ˘a din ce ˆın ce mai repede p ˆan˘a atinge minimul (optimul) [10][11].
14 ;15;16Aur´elien G ´eron. Hands-On Machine Learning with Scikit-Learn and TensorFlow. OReilly, 2017.
21
Solut ¸ia propus ˘a Algoritmi de optimizare
3.4.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.
Figura 3.14 : Stochastic Gradient Descent17
3.4.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 obiectiv 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)
17 ;18Aur´elien G ´eron. Hands-On Machine Learning with Scikit-Learn and TensorFlow. OReilly, 2017.
22
Solut ¸ia propus ˘a Algoritmi de optimizare
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.[10][12]
Figura 3.15 : Comparat ¸ie Momentum optimization cu Nesterov18
3.4.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 [13][14].
1.mt=1mt 1+ (1 1)rJ()
2.vt=2vt 1+ (1 2)(rJ())2
3. ^mt=mt
1 t
1
4. ^vt=vt
1 t
2
5.t+1=t p^vt+^mt
Pasul 1 s ¸i 2 reprezint ˘a calculul gradient ¸ilor anteriori. mts ¸ivtsunt init ¸ializat ¸i cu 0.
La pas ¸ii init ¸iali ponderea auxiliar ˘a are tendint ¸a de a devia spre 0, aceasta fiind corectat ˘a la
pas ¸ii 3 s ¸i 4. Pasul 5 reprezint ˘a actualizarea parametrilor. Hiperparametrul de sc ˘adere a mo-
mentului1este de obicei init ¸ializat la 0.9, cel de sc ˘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 fi10 8[10].
23
Solut ¸ia propus ˘a Funct ¸ii de activare
3.5 Funct ¸ii de activare
3.5.1 ReLU (Rectified Linear Unit)
Funct ¸ia ReLU ˆınlocuies ¸te valorile negative ale pixelilor cu valoarea zero.
f(x) =max(x;0) (3.4)
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 ca 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
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.19
Figura 3.16 : ReLu20
3.5.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 de a apart ¸ine fiec ˘arei clase. Ecuat ¸ia softmax de
calcul a scorului pentru clasa k este:
sk(x) =T
kx (3.5)
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
19https://github.com/Kulbear/deep-learning-nano-foundation/wiki/
ReLU-and-Softmax-Activation-Functions
20https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/
24
Solut ¸ia propus ˘a Filtre
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.6)
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.7)
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.
3.6 Filtre
Filtrele au o ˆın˘alt ¸ime s ¸i o l ˘at ¸ime (de obicei 2×2 sau 3×3 pixeli). Cu ajutorul acestora
sunt formate h ˘art ¸ile de caracteristici ce sunt folosite ca date de intrare pentru urm ˘atorul nivel
de neuroni. Exist ˘a o mult ¸ime de filtre s ¸i de aceea vor fi prezentate doar c ˆateva.
3.6.1 Filtrul Sobel
Operatorul Sobel sau filtrul Sobel const ˘aˆın dou ˘a filtre convolut ¸ionale (fig 3.17). Al
doilea filtru este primul rotit cu 90.
Figura 3.17 : Filtre Sobel21
Filtrele sunt create pentru a identifica muchii (edges) verticale (Gx) s ¸i orizontale (Gy).
Filtrele pot fi aplicate separat sau pot fi combinate.
3.6.2 Filtrul Robert’s (Robert’s cross operator)
Filtrul Robert’s efectueaz ˘a o simpl ˘a s ¸i rapid de calculat m ˘asur˘atoare a gradientului
spat ¸ial 2D pe o imagine. Valorile pixelilor rezultatului reprezint ˘a magnitudinea absolut ˘a
25
Solut ¸ia propus ˘a Filtre
estimat ˘a a gradientului spat ¸ial al imaginii de intrare. Acesta este compus din dou ˘a filtre
convolut ¸ionale, al doilea fiind primul rotit cu 90.
Figura 3.18 : Filtre Robert’s22
Aceste filtre au fost concepute pentru a identifica contururi ce cont ¸in unghiuri de 45.
Sunt asem ˘an˘atoare cu filtrele Sobel s ¸i pot fi folosite separat s ¸i ˆımpreun ˘a.
3.6.3 Filtrul Prewitt
Este asem ˘an˘ator cu filtrul Sobel s ¸i este folosit tot pentru detectarea contururilor verticale
s ¸i orizontale.
Figura 3.19 : Filtre Prewitt23
3.6.4 Filtrul Gaussian
Filtrul Gaussian este folosit pentru a ˆıncet ¸os ¸a (blur) imaginea s ¸i pentru a elimina zgo-
motul.
G(x;y) =1p
22e x2+y2
22 (3.8)
Acest filtru este circular simetric, muschiile s ¸i liniile ˆın direct ¸ii diferite sunt tratate la fel
[15][16].
2122;23Dr. Himanshu Aggarwal Raman Maini. Study and comparison of various image edge detection
techniques. International Journal of Image Processing (IJIP), 3(1):1015, 2016.
26
Solut ¸ia propus ˘a Funct ¸ii obiectiv
3.7 Funct ¸ii obiectiv
Funct ¸iile obiectiv arat ˘a cˆat de departe sunt rezultatele ret ¸elei neuronale de adev ˘ar. Ret ¸eaua
este antrenat ˘a pentru a minimiza aceast ˘a funct ¸ie obiectiv (ajustarea parametrilor). Unele din-
tre cele mai folosite funt ¸ii cost pentru problemele de clasificare sunt cross entropy s ¸i eroarea
medie a p ˘atratelor (mean squared error).
Eroarea medie a p ˘atratelor are ca rezultat valoarea medie a distant ¸ei p ˘atrate dintre rezul-
tatul ret ¸elei neuronale s ¸i valoarea adev ˘arat˘a.
L(y;^y) =1
nnX
i=1(yi ^yi)2(3.9)
Cross entropy s ¸i categorical cross entropy sunt folosite ˆın general pentru a cuantifica
diferent ¸a dintre dou ˘a probabilit ˘at ¸i. Aceast ˘a funct ¸ie calculeaz ˘a similarit ˘at ¸iˆıntre distribut ¸ii.
H(p;q) = X
xp(x)logq(x) (3.10)
ˆIn general, pentru probleme de clasificare cu mai multe clase (rezultatul ret ¸elei neu-
ronale fiind dat de softmax) se recomand ˘a folosirea funct ¸iei cross entropy.
3.8 Indici de performant ¸ ˘a
Indicii de performant ¸ ˘a sunt unelte cu ajutorul c ˘arora se poate interpreta performant ¸a
clasificatorului, definit ¸i prin urm ˘atoarele formule de calcul:
Acurate t ¸e=TP+FP
TP+FP+TN+FN(3.11)
Senzitivitate (Recall ) =TP
TP+FN(3.12)
Specificitate =TN
TN+FP(3.13)
Precizie =TP
TP+FP[17][18][19] (3.14)
Acronimele au urm ˘atoarele semnificat ¸ii:
.TP = True Pozitive; modelul detecteaz ˘a condit ¸ia atunci c ˆand codit ¸ia este prezent ˘a
.FP = False Pozitive; modelul detecteaz ˘a condit ¸ia atunci c ˆand condit ¸ia este absent ˘a
.TN = True Negative; modelul nu detecteaz ˘a condit ¸ia atunci c ˆand condit ¸ia este absent ˘a
.FN = False Negative; modelul nu detecteaz ˘a condit ¸ia atunci c ˆand condit ¸ia este prezent ˘a
O alt ˘a modalitate de a cuantifica performant ¸a modelului este scorul F2. Acesta este dat
27
Solut ¸ia propus ˘a Indici de performant ¸ ˘a
de media ponderat ˘a a preciziei s ¸i recall-ului:
F2 = 5precizierecall
4precizie +recall24(3.15)
Pentru problema de recunoas ¸tere a semnelor de circulat ¸ie se poate calcula doar pre-
cizia deoarece ˆın urma clasific ˘arii rezult ˘a doar rezultate true pozitive sau false pozitive, toate
pozele fiind clasificate.
24https://clusteval.sdu.dk/1/clustering_quality_measures/5
28
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. Pentru recunoas ¸terea semnelor de circulat ¸ie s-au creat s ¸i s-au efectuat teste cu
dou˘a arhitecturi diferite. Modelele create cont ¸in niveluri convolut ¸ionale, dropout s ¸i niveluri
de neuroni conectat ¸i total.
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 pen-
tru inteligent ¸ ˘a artificial ˘a de la Google. TensorFlow ofer ˘a suport pentru Machine Learning
s ¸i Deep Learning.25TensorFlow foloses ¸te grafuri (data flow graphs). Nodurile grafurilor
reprezint ˘a operat ¸ii matematice iar muchiile reprezint ˘a tablouri multidimensionale (tensori)
[20].
Keras este un API (Application Programming Interface) de nivel ˆınalt pentru ret ¸ele
neuronale, scris ˆın Python, care funct ¸ioneaz ˘a ca o ˆınvelitoare (wrapper) pentru paradigma
(framework) TensorFlow,26iar din ianuarie 2017, Keras a fost ˆıncorporat oficial ˆın Tensor-
Flow ca o libr ˘arie de nivel ˆınalt, Keras devenind API-ul implicit pentru TensorFlow.27Struc-
tura de date principal ˘a din Keras este modelul , acesta reprezent ˘and modul de organizare a
nivelurilor (layer) ret ¸elei neuronale.
25https://www.tensorflow.org
26https://keras.io
27http://www.fast.ai/2017/01/03/keras/
29
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 eliminarea chenarului ˆın care este ˆıncadrat semnul de circulat ¸ie pen-
tru 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.
30
Prezentarea aplicat ¸iei Arhitectura ret ¸elei 1 (Modelul 1)
4.3 Arhitectura ret ¸elei 1 (Modelul 1)
.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 dou ˘a niveluri convolut ¸ionale, fiecare a c ˆate 64 de filtre, acti-
vate de funct ¸ia ReLU, urmate de un nivel maxpooling s ¸i un nivel dropout de 20 %.
.Blocul 3 este format din dou ˘a niveluri convolut ¸ionale a c ˆate 128 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 50 %, iar ultimul nivel este un nivel cu 43 de
neuroni conectat ¸i total.
Figura 4.3 : Exemplu de retea
31
Prezentarea aplicat ¸iei Antrenarea s ¸i testarea modelului 1
ˆInainte de antrenare este necesar ˘a configurarea s ¸i compilarea modelului. Pentru compi-
lare sunt necesari 3 parametri:
.loss : reprezint ˘a funct ¸ia cost care trebuie optimizat ˘a. Aici s-a folosit “categorical
crossentropy”. ˆIn Keras, funct ¸ia cost la final de epoc ˘a reprezint ˘a media valorilor
funct ¸iei pe fiecare lot.
.algoritm de optimizare : au fost folositi algoritmul Adam s ¸i algoritmul Stochastic
Gradient Descent ˆın combinat ¸ie cu Nesterov Accelerated Gradient.
.metrica : pentru c ˘a avem de-a face cu o problem ˘a de clasificare, am folosit precizia (ac-
curacy). ˆIn Keras, metrica este o funct ¸ie asem ˘an˘atoare funct ¸iei obiectiv dar rezultatele
evalu ˘arii acesteia nu sunt folosite ˆın procesul de antrenare.
Aceast ˘a arhitectur ˘a a fost folosit ˘aˆın special pentru identificarea alogritmului potrivit
pentru problema de recunoas ¸tere a semnelor de circulat ¸ie s ¸i pentru testarea diferitelor metode
deˆımbun ˘at˘at ¸ire a ratei de recunoas ¸tere la testare.
4.4 Antrenarea s ¸i testarea modelului 1
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 s ¸i verific ˘arii, modelul va procesa 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 ( learning rate scheduler ), acest planificator va sc ˘adea rata
deˆınv˘at ¸are de la o epoc ˘a la alta. Learning rate scheduler este implementat ˆın Keras.
Init ¸ial modelul a fost antrenat pe parcursul a 30 de epoci pe ˆıntreg setul de antrenare cu
ajutorul procesorului (CPU) (prezentat pe larg ˆın sect ¸iunea 4.4.1). Antrenarea s-a efectuat pe
loturi a c ˆate 32 de poze (fig 4.4).
Figura 4.4 :ˆInceputul antren ˘arii
32
Prezentarea aplicat ¸iei Antrenarea s ¸i testarea modelului 1
Figura 4.5 : Final de epoc ˘a
4.4.1 Antrenarea cu procesorul (CPU)
4.4.1.1 Adam
Antrenarea s-a efectuat pe ˆıntreg setul de date cu optimizatorul Adam cu urm ˘atorii
parametri:
.rata de ˆınv˘at ¸are: 0.01
.momentul1: 0.9
. 2: 0.999
Antrenarea a durat 7 ore 47 de minute s ¸i 28 de secunde. Adun ˆand acest timp cu timpul de
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 la testare a fost de 96.96 %.
Figura 4.6 :
Figura 4.7 :
33
Prezentarea aplicat ¸iei Antrenarea s ¸i testarea modelului 1
Precizia pentru antrenare a fost de 98.88 % iar valoarea funct ¸iei obiectiv de 0.06.
Avˆandˆın vedere natura stochastic ˘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
reproduceri 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 cost 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 la testare 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.
Figura 4.8 :
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 obiectiv nu a ˆınregistrat ˆımbun ˘at˘at ¸iri iar la epoca 10 antrenarea s-a
oprit.
Figura 4.9 :
34
Prezentarea aplicat ¸iei Antrenarea s ¸i testarea modelului 1
4.4.1.2 SGD ˆın combinat ¸ie cu NAG
Avˆandˆın vedere rezultatul obt ¸inut cu algoritmul de optimizare Adam, s-a ˆıncercat s ¸i
antrenarea cu alt tip de optimizare, s ¸i anume Stochastic Gradient Descent ˆın combinat ¸ie cu
Nesterov Accelerated Gradient cu urm ˘atorii parametri:
.rat˘a de ˆınv˘at ¸are: 0.01, mics ¸orat ˘a cu ajutorul Learning rate scheduler la fiecare epoc ˘a
dup˘a formula: rat ˘aˆınv˘at ¸are(0:1nr:epoca
10)
.momentul1: 0.9
.sc˘adere (decay): 10 8
Antrenarea s-a efectuat pe parcursul a 26 de epoci, oprindu-se prin EarlyStopping,
rezult ˆand o rat ˘a de recunoas ¸tere la testare de 97.56%, cu 1 procent mai mare dec ˆat cea
obt ¸inut ˘a cu Adam.
Figura 4.10 :
4.4.2 Antrenarea cu procesorul grafic (GPU)
Antrenarea cu ajutorul procesorului grafic a produs o scurtare drastic ˘a a timpului de
antrenare, de la aproximativ 15 minute/epoc ˘a la sub 1 minut/epoc ˘a. Folosirea procesorului
grafic a introdus noi elemente stocastice. Aceste elemente sunt reprezentate de algoritmii de
natur ˘a stocastic ˘a din spatele tehnologiei nVIDIA CUDA28.
4.4.2.1 Adam
Antrenarea s-a efectuat cu aceias ¸i parametri ca la antrenarea cu CPU. Cele peste 7 ore
reduc ˆandu-se la 7 minute s ¸i 57 secunde, adic ˘aˆın jur de 37 de secunde/epoc ˘a s ¸i 1 milisecund ˘a
pe fiecare poz ˘a (fig. 4.11), 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 20-24 de
minute. Rata de recunoas ¸tere la testare fiind de 96.53 %.
Figura 4.11 :
28https://developer.nvidia.com/about-cuda
35
Prezentarea aplicat ¸iei Antrenarea s ¸i testarea modelului 1
Figura 4.12 :
Precizia pentru antrenare a fost de 98.72 % iar valoarea funct ¸iei obiectiv de 0.04656.
Figura 4.13 :
Pentru anumite probleme s-a constantat c ˘a antrenarea cu set de validare a dat rezultate
mai bune dec ˆat antrenarea pe ˆıntreg setul de date de antrenare. Setul de validare este folosit
pentru a estima calitatea antren ˘arii la finalul fiec ˘arei epoci s ¸i reprezint ˘a 20% din setul de
antrenare. Antrenarea s-a efectuat cu aceias ¸i parametri s ¸i s-a obt ¸inut un timp de antrenare de
15 minute s ¸i 55 de secunde. Rata de recunoas ¸tere la testare fiind 96.62 %.
Figura 4.14 :
Precizia pentru antrenare a fost de 98.97 % iar valoarea funct ¸iei cost de 0.04479. Pentru
validare s-a obt ¸inut precizia valid ˘arii de 97.5% si valoarea de 0.15419 pentru funct ¸ia obiectiv.
36
Prezentarea aplicat ¸iei Antrenarea s ¸i testarea modelului 1
Figura 4.15 :
4.4.2.2 SGD ˆın combinat ¸ie cu NAG
Antrenarea s-a efectuat cu aceias ¸i parametri ca la antrenarea cu CPU. S ¸i de aceast ˘a dat ˘a
am obt ¸inut rezultate mult mai bune fat ¸ ˘a de optimizatorul Adam. Rata de recunoas ¸tere la
testare a fost de 97.45 %.
Figura 4.16 :
Figura 4.17 :
37
Prezentarea aplicat ¸iei Antrenarea s ¸i testarea modelului 1
Valoarea funct ¸iei obiectiv a fost 0.00563 iar precizia antren ˘arii a fost de 99.84%.
4.4.3 ˆImbun ˘at˘at ¸irea ratei de recunoas ¸tere la testare
4.4.3.1 M ˘arirea dimensiunii loturilor de poze la testare
ˆIn rezolvarea diferitelor clase de probleme s-a constatat c ˘a m˘arirea dimensiunii loturilor
de poze la testarea ret ¸elei neuronale a ajutat la obt ¸inerea unei rate de recunoas ¸tere mai bune.
Init ¸ial, dimensiunea loturilor la testare a fost de 32 de poze/lot. Dup ˘a mai multe ˆıncerc ˘ari
cu diferite dimensiuni de loturi, s-a constatat c ˘a testarea pe loturi de c ˆate 421 de poze a dus
la o cres ¸tere a ratei de recunoas ¸tere la testare la 97.73 %. Dimensiunea loturilor pentru
antrenarea a r ˘amas 32 de poze/lot.
Figura 4.18 :
Figura 4.19 :
Valoarea funct ¸iei obiectiv a fost 0.0054 iar precizia antren ˘arii a fost de 99.83 %.
38
Prezentarea aplicat ¸iei Antrenarea s ¸i testarea modelului 1
4.4.3.2 Antrenarea multipl ˘a a modelului
Antrenarea multipl ˘a a modelului implic ˘a antrenarea s ¸i salvarea modelului (model pre-
antrenat), apoi se efectueaz ˘a o nou ˘a antrenare av ˆand ca punct de start modelul preantrenat.
Figura 4.20 : Rezultat prima antrenare
Dup˘a 24 de epoci valoarea funct ¸iei obiectiv a fost 0.00765 iar precizia antren ˘arii a fost
de 99.76 %. Rata de recunoas ¸tere la testare fiind 96.55%.
Figura 4.21 :
Rezultatele din figuri reprezint ˘a antrenarea cu algoritmul de optimizare Adam pentru c ˘a
acesta a avut o cres ¸tere notabil ˘aˆın urma celei de-a doua antren ˘ari care a dus la cres ¸terea ratei
de recunoas ¸tere la testare la 97.60 %. Antrenarea a avut loc pe parcursul a 26 de epoci.
Figura 4.22 : Rezultat a doua antrenare
39
Prezentarea aplicat ¸iei Arhitectura ret ¸elei 2 (Modelul 2)
Valoarea funct ¸iei obiectiv a sc ˘azut la 0.00598 iar precizia antren ˘arii s-a ˆımbun ˘at˘at ¸it
nesemnificativ, acesta fiind la 99.80 %.
Figura 4.23 :
Cres ¸terea ratei de recunoas ¸tere a dus la ˆıncercarea unei a treia antren ˘ari a modelului
(rezultatele celei de-a doua antren ˘ari fiind punct de start), antrenare care a avut efecte nega-
tive duc ˆand la overfit s ¸i rata de recunoas ¸tere sc ˘azˆand.
4.5 Arhitectura ret ¸elei 2 (Modelul 2)
Metodele anterioare au dat rezultate mai bune, dar nu suficient de bune. Acest lucru a
dus la ad ˘augarea unor niveluri modelului. Cea mai bun ˘a metod ˘a cunoscut ˘a pentru crearea de
noi arhitecturi este trial and error. 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.
40
Prezentarea aplicat ¸iei Arhitectura ret ¸elei 2 (Modelul 2)
Figura 4.24 : Arhitectura ret ¸elei 2
41
Prezentarea aplicat ¸iei Antrenarea s ¸i testarea modelului 2
4.6 Antrenarea s ¸i testarea modelului 2
Antrenarea s-a efectuat pe parcursul a 26 de epoci cu optimizatorul Stochastic Gra-
dient Descent ˆın combinat ¸ie cu Nesterov Accelerated Gradient cu acieas ¸i parametri de la
antrenarea cu CPU, 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 %, peste nivelul maxim pe care l-am
obt ¸inut cu arhitectura anterioara.
Figura 4.25 :
Valoarea funct ¸iei obiectiv a fost de 0.00563 iar precizia antren ˘arii a fost de 99.84 %.
Aceste valori nu au avut parte de ˆımbun ˘at˘at ¸iri semnificative.
Figura 4.26 :
Urm ˆand exemplul reus ¸itei anterioare s-a efectuat si pentru acest nou model cea de-a
doua antrenare. Rezultatele nu au suferit ˆımbun ˘at˘at ¸iri importante, aceast ˘aˆıncercare fiind un
es ¸ec.
S-aˆıncercat o nou ˘a antrenare a ret ¸elei neuronale preantrenate cu SGD ˆın combinat ¸ie cu
NAG, de aceast ˘a dat ˘a a fost folosit algoritmul de optimizare Adam cu aceias ¸i parametri ca la
antrenarea cu CPU. Aceast ˘a abordare 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].
42
Prezentarea aplicat ¸iei Testarea modelelor
Figura 4.27 :
Antrenarea a avut loc pe parcursul a 23 de epoci, valoarea funct ¸iei obiectiv a sc ˘azut la
0.00078, aceasta fiind o ˆımbun ˘at˘at ¸ire notabil ˘a, iar precizia 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.7 Testarea modelelor
Testarea s-a efectuat pe toate cele 12.630 de poze din setul de date de testare, acestea
fiind testate pe loturi de c ˆate 421 de poze. Pentru a verifica dac ˘a predict ¸ia modelului este
corect ˘a sau nu, clasele c ˘arora apart ¸in pozele sunt salvate ˆıntr-un fis ¸ier csv. Timpul necesar
pentru testarea pozelor este aproximativ de 2.5 – 3 minute, acesta fiind timpul total incluz ˆand
timpul de ˆınc˘arcare a pozelor ˆın memorie. 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.
43
Prezentarea aplicat ¸iei Testarea modelelor
Figura 4.29 : Final de testare
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).
Figura 4.30 : Rezultat clasificare
44
Prezentarea aplicat ¸iei Testarea modelelor
Pentru a se putea verifica recunoas ¸terea semnelor de circulat ¸ie s-a creat o interfat ¸ ˘a cu
utilizatorul din care se pot ˆınc˘arca s ¸i testa semne. Pentru exemplificare s-au utilizat semne
pozate cu telefonul de la distant ¸e diferite (majoritatea de la bordul unei mas ¸ini).
Butonul “ ˆInc˘arcare semn de circulat ¸ie” deschide fereastra ˆın care se pot c ˘auta s ¸i des-
chide pozele cu semnele de circulat ¸ie, semnul ales fiind afis ¸at ˆın partea st ˆang˘a. Sub imagine
este afis ¸at ˘a s ¸i denumirea semnului de circulat ¸ie selectat iar ˆın partea dreapt ˘a, dup ˘a ap˘asarea
butonului “Testare semn”, se afis ¸eaz ˘a rezultatul oferit de ret ¸eaua neuronal ˘a convolut ¸ional ˘a.
Figura 4.31 : Exemplu de interfat ¸ ˘a cu utilizatorul
Figura 4.32 : Exemplu de interfat ¸ ˘a cu utilizatorul
45
Prezentarea aplicat ¸iei Testarea modelelor
Figura 4.33 : Exemplu de interfat ¸ ˘a cu utilizatorul
Figura 4.34 : Exemplu de interfat ¸ ˘a cu utilizatorul
46
Prezentarea aplicat ¸iei Testarea modelelor
Figura 4.35 : Exemplu de interfat ¸ ˘a cu utilizatorul
Figura 4.36 : Exemplu de interfat ¸ ˘a cu utilizatorul
47
Prezentarea aplicat ¸iei Testarea modelelor
Figura 4.37 : Exemplu de interfat ¸ ˘a cu utilizatorul
Figura 4.38 : Exemplu de interfat ¸ ˘a cu utilizatorul
48
Prezentarea aplicat ¸iei Analiza SWOT
4.8 Analiza SWOT
Figura 4.39 : Analiza SWOT
49
Capitolul 5
Concluzii
Ideea din spatele conceptului de “self driving car” este sperant ¸a ca acestea s ˘a fie im-
plicate ˆın mai put ¸ine, sau s ˘a nu fie implicate deloc, ˆın accidente ce au ca rezultat victime s ¸i
decese, ˆın comparat ¸ie cu autovehiculele conduse de om, considerat a fi principala cauz ˘a a ac-
cidentelor rutiere. Acest concept era considerat doar o posibilitate ˆın viitorul ˆındep ˘artat, iar
progresul tehnologiei a contribuit la aducerea “viitorului ˆındep ˘artat” mai aproape de prezent,
f˘acˆand autovehiculul autonom s ˘a devin ˘a fezabil s ¸i de actualitate. Progresul ˆın domeniul
inteligent ¸ei artificiale s ¸i machine learning reprezint ˘a o unealt ˘a puternic ˘a pentru echipele cre-
ate de gigant ¸ii auto pentru a dezvolta s ¸i face realitate autovehiculele autonome. Rezolvarea
problemei de recunoas ¸tere a semnelor de circulat ¸ie reprezint ˘a un punct esent ¸ial, al ˘aturi de
pozit ¸ionarea GPS, informat ¸iile ˆın timp real din trafic, identificarea corect ˘a a c ˘aii de rulare
etc, pentru ca autovehiculele autonome s ˘a funct ¸ioneze corect s ¸i ˆın condit ¸ii de sigurant ¸ ˘a atˆat
pentru pasageri c ˆat s ¸i pentru pietoni. Pentru implementarea unui astfel de sistem este nece-
sar˘a atingerea perfect ¸iunii. Doar ˆın acest mod sistemul va avea parte de ˆıncrederea total ˘a a
pasagerilor s ¸i pietonilor c ˘a va funct ¸iona corect, f ˘ara loc de erori ale c ˘aror consecint ¸e ar putea
fi dezastruoase.
ˆIn urma testelor efectuate cu algoritmii de clasificare din zona de computer vision, s-a
ajuns la concluzia 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. Algoritmii
Lanczos si COD, des ¸i s-au descurcat destul de bine la recunoas ¸terea 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 computat ¸ionale 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. Chiar dac ˘a antrenarea ret ¸elei neuronale convolut ¸ionale dureaz ˘a, acest lucru se face o
singur ˘a dat ˘aˆın momentul ˆın care este g ˘asit˘a arhitectura perfect ˘a. Modelul fiind salvat cu tot ¸i
parametrii optimizat ¸i, testarea pozelor fiind oric ˆand posibil ˘a, iar testarea se efectuaz ˘aˆıntr-un
timp foarte scurt.
Utiliz ˆand ret ¸elele neuronale s ¸i combinat ¸ii de tehnici de optimizare s-a reus ¸it atingerea
50
Concluzii Lucru pe viitor
unei rate de recunoas ¸tere de 98.21 %, o rat ˘a bun ˘a dac ˘a lu˘amˆın considerare rata de recunoas ¸tere
medie uman ˘a de 98.84 % pentru acest set de date [2]. Rezultatul a fost obt ¸inut prin antrenarea
modelului cu optimizatorul Adam, av ˆand ca punct de start modelul preantrenat cu opti-
mizatorul Stochastic Gradient Descent ˆın combinat ¸ie cu Nesterov Accelerated Gradient. ˆIn
urma rezultatului s-a tras concluzia c ˘a algoritmul de optimizare SGD ˆın combinat ¸ie cu NAG
este foarte bun pentru antrenarea rapid ˘a, evitarea punctelor de minim local s ¸i apropierea de
minum global al funct ¸iei cost. Des ¸i optimizatorul Adam nu d ˘a rezultate la fel de bune, atunci
cˆand este folosit pe un model preantrenat, acesta reus ¸es ¸te s ˘a ating ˘a performant ¸e foarte bune.
Algoritmul de optimizare Adam s-a comportat ca un algoritm de reglare fin ˘a (fine tuning)
a ret ¸elei. Setul de date este un set dur, care pune probleme serioase chiar s ¸i oamenilor,
ajung ˆand destul de aproape de realitate. Datorit ˘a celor enumerate mai sus s-a considerat c ˘a
rata de recunoas ¸tere de 98.21 este o reus ¸it ˘a.
5.1 Lucru pe viitor
La acest moment am implementat o ret ¸ea neuronal ˘a convolut ¸ional ˘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
abordarea problemei de detect ¸ie a semnelor de circulat ¸ie s ¸i implementarea pe o mas ¸inut ˘a
electric ˘a construit ˘a cu o plac ˘a de dezvoltare (arduino29sau raspberry pi30), care s ˘a react ¸ioneze
ˆın timp real la diferitele semne de circulat ¸ie pe care le poate ˆıntˆalni.
Figura 5.1 : Exemplu de mas ¸inut ¸ ˘a electric ˘a construit ˘a cu arduino
ˆImbun ˘at˘at ¸irea ratei de recunoas ¸tere ar fi un mare avantaj. Pentru acest lucru s-ar putea
luaˆın considerare m ˘arirea setului de date de antrenare, ad ˘augˆand noi semne de circulat ¸ie.
29https://www.arduino.cc
30https://www.raspberrypi.org
51
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):323–332,
2012.
[3] Turk M. Pentland A. Eigenfaces for recognition. Journal for Cognitive Neuroscience ,
(1):71–86, 1991.
[4] E. Pelican. Algoritmi de calcul s ¸tiint ¸ific. Recunoas ¸terea formelor (fet ¸e s ¸i cifre) . Suport
de curs, 2017.
[5] L. Lit ¸ ˘a E. Pelican. Algorithms for Face Recognition . MatrixRom, 2015.
[6] Ahmed Menshawy Giancarlo Zacone, Md. Rezaul Karim. Deep Learning with Tensor-
flow. Packt Publishing, 2017.
[7] Nick McClure. TensorFlow Machine Learning Cookbook . Packt Publishing, 2017.
[8] Itay Lieder Tom Hope, Yehezkel S. Resheff. Learning TensorFlow. A Guide to Building
Deep Learning Systems . O’Reilly, 2017.
[9] Valentino Zocca Gianmario Spacagna Daniel Slater Peter Roelants. Python Deep
Learning . Packt Publishing, 2017.
[10] Aur ´elien G ´eron. Hands-On Machine Learning with Scikit-Learn and TensorFlow .
O’Reilly, 2017.
[11] Jan Erik Solem. Programming Computer Vision with Python . O’Reilly, 2012.
[12] E.R. Davies. Computer Vision: Principles, Algorithms, Applications, Learning .
APress, 2017.
[13] Jimmy Ba Diederik P. Kingma. Adam: A Method for Stochastic Optimization . 3rd
International Conference for Learning Representations, San Diego, 2015.
[14] Tushar Sharma Dipanjan Sarkar, Raghav Bali. Practical Machine Learning with
Python . APress, 2017.
[15] Dr. Himanshu Aggarwal Raman Maini. Study and comparison of various image edge
detection techniques. International Journal of Image Processing (IJIP) , 3(1):10–15,
2016.
52
Referint ¸e bibliografice Referint ¸e bibliografice
[16] Tarek Gaber Aboul Ella Hassanien. Handbook of Research on Machine Learning In-
novations and Trends . IGI Global, 2017.
[17] Stephen Marsland. Machine Learning. An algorithmic perspective . CRC Press. Taylor
and Francis Group, 2015.
[18] Matthew Kirk. Thoughtful Machine Learning with Python: A Test-Driven Approach .
O’Reilly, 2017.
[19] Neeraj Shukla B. K. Das Prachi Dewan, Rekha Vig. An overview of traffic signs recog-
nition methods. International Journal of Computer Applications , 168(11):1–5, 2017.
[20] Rodolfo Bonnin. Building Machine Learning Projects with TensorFlow . Packt Pub-
lishing, 2016.
53
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Recunoas terea semnelor de circulat ie [609360] (ID: 609360)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
