Tehnologiaavanseazădinceîncemaimultpezicetrece,lafelșisistemelede [627047]

1INTRODUCERE
Tehnologiaavanseazădinceîncemaimultpezicetrece,lafelșisistemelede
asistențăîntraficdestinateșoferilor.Scopullorestesăîlajutepeșofersăcirculecâtmai
însiguranțășifărăprobleme.
Obiectivulacesteilucrăriestecreareauneiaplicațiimobilecaresăutilizezeorețea
neuronalăpentruaidentificasemneledecirculațiedepecarosabilșinunumai.Pentru
realizareaacestuistudiusevafolosidoarcameratelefonuluișiaplicațiapropriu-zisă
instalatăpemobil.Realizareaacesteiaplicațiisevabazapeinteligențaartificială,ceea
ceimplicăfamiliarizareacudomeniul,algoritmi,tehnicile,principiileșibibliotecile
specializate.
Înprimapartealucrăriisuntprezentatecâtevaaspectegeneraleprivindrețelele
neuronale,tipurilederețeleexistenteșitehnicilecepotfiutilizate.Peparcursulacestui
studiuvafiprezentatășistructurarețeleipecareovomfolosipentruadetectasemnele
decirculație.
Vomvedeacumadecursantrenareașicaresuntrezultateleînurmătestăriipe
imaginicarenuaufostfolositelaantrenare.
Înultimapartesuntprezentatecaracteristicileaplicațieimobileșietapele
parcursedeaplicațiepentrurecunoștereasemnelordecirculațieîntimpreal.

2CAPITOLUL1.ANALIZAPROBLEMEI
Semneledecirculațiesuntoparteimportantăainfrastructuriirutiereceoferă
conducătorilorauto,darșipietonilordiferiteinformațiicuprivirelastareaactualăa
drumului,restricții,interdicții,avertismenteșialteinformațiivitaleutilizândcaractere
șisimboluridiferitepentruamenținesauaîmbunătățiisiguranțaîntrafic[1][2].
Siguranțaparticipanțilorlatrafic(conducătoriiauto,pietoni)reprezintăunaspect
foarteimportantpentrusocietatefaptceaduslacreareaunoraplicațiidedetecțieși
recunoaștereasemnelordecirculație(TSDR)[3].Aceastăaplicațieconstăînlocalizarea
exactăaindicatorilordecirculațiedarșirecunoaștereașiinterpretareaacestoraprin
atribuireauneianumitecategoriisausubcategoriispecificeutilizândocamerăde
recunoaștere[4].Aceastăaplicațieareroluldeaavertizașoferulcuprivirelalimitele
devitezăsaupericoleleposibile,cumarfilucrărirutiereaflateîndesfășuraresau
treceripietonale[5].
Existăînsășidificultățiîndetectareasemnelordecirculațiecumarfi:
luminacarediferăînfuncțiedeperioadazileișiesteinfluențatădecondițiile
meteo;
prezențaunorobstacole(altesemne,copaci,etc);
distanțapreamareîntrecameraderecunoștereșisemn;
graduldedeteriorarealeindicatoarelor[6].
ÎnultimaperioadăfirmeledeautomobilecumarfiBMW,Mercedez-Benz,Ford,etc
aumanifestatuninterescrescutfațădeaplicațiilededetecțieșirecunoașterea
semnelordecirculație(TSDR)șile-auinclusînsistemulavansatdeasistențăpentru
șoferi(ADAS-AdvancedDriverAssistanceSystems)[2].
AutomobileleprodusedefirmaAudisuntdotatecuunsistemTSDRce
funcționeazăpebazauneicamerefrontalecareafișeazăinformațiilecuprivirelasemne
decirculațieînclusteruldeinstrumentedepebordulmașinii.Sistemulrecunoaște
indicatoareledelimitareavitezei,indicatoareintersecțiecusensgiratoriu,indicatoare
deavertizare(curbestânga/dreapta,coborârepericuloasă)șiindicatoaredeorientare
(figura1).
Fig.1TSDRAudi

Capitolul1.Analizaproblemei
3https://www.audi-mediacenter.com/en/photos/detail/traffic-sign-recognition-42336,01-07-
2019
SistemulTSDRîncazulautomobilelordingamaMercedez-Benzrecunoaștedoar
semneledelimitareavitezei,indicatoareledeinterziceresaurestricție(intrare
interzisășidepășireinterzisă)șiindicatoarecesemnalizeazăsfârșitulrestricțiilorșile
afișeazăînbaredeinstrumente.Încazulîncălcăriiacestorsemnesistemulemiteun
sunetspecific[7].

4CAPITOLUL2.TEHNICIȘIALGORITMI
Rețeleleneuronalesuntsistemeflexibileșicomplexecareextragmodeledin
dateledeintrare,cuscopuldearecunoaștemaitârziuobiectelerespectiveEstesimilar
cuînvățareaunuicopilsărecunoascăobiecte.
Conceptulderețeaneuronalăesteasemănătorcreieruluiuman,acesttipderețele
fiindproiectarepeaceeașistructuracăacesta.Rețeauapoatefiprivităcăunansamblu
deneuronilegațiîntreei,similaruneistructuridetipgraforientat.
2.1.ConvolutionalNeuralNetworks(CNN)
ConvolutionalNeuralNetworks(CNN)suntuntipderețeaneuronală
unidirecționalăcaracterizatăprinstraturidetipfullyconected(fiecareneurondepe
stratuliestelegatcutoțineuroniidepestratuli+1)[9].
Fig.2ArhitecturăCNN
https://www.mathworks.com/videos/introduction-to-deep-learning-what-are-convolutional-
neural-networks–1489512765771.html,01-07-2019
AșacumsepoateobservăînFig2,structurarețeleiconvoluționaleestealcătuită
din2părți:
a.straturiledetipConvolutionșiPooling,careauroluldeaextrageformedin
imagini
b.straturileFullyConnectedcaresuntfolositepentruclasificare
ÎnarticolulluiRohithGandhi[12]rețeleledetipCNNsuntutileatâtpentru
clasificareaimaginilor,câtșipentrudetectareaobiectelorînimagini.Prezintăînsă
dezavantajulcăpotidentificadoarunobiect,întimpce,înrealitate,într-opozăpotfi
prezentemaimulteobiectecaretrebuieidentificate.
Oabordareposibilăarfisăseextragăregiunidinimagineșisăseaplicealgoritmul
CNN.Însăobiectelepotaveadimensiunidiferite,aspectediferite,ceeaceducelaun
numărfoartemarederegiunipecaretrebuieaplicatalgoritmul.
Pentrurezolvareaaceasteiproblemeaufostconstruiteunnoutipderețele,R-CNN,
careaucascopgăsireaobiectelorîntr-untimpcâtmaiscurt.

Capitolul2.Tehnicișialgoritmi
52.2.R-CNN
Înarticolulsău[12],RohithGandhifaceoscurtăprezentareatipurilorde
algoritmiR-CNN.
Fig.3ArhitecturăR-CNN
https://arxiv.org/pdf/1311.2524.pdf,1-07-2019
AlgoritmulR-CNNsebazeazăpepropunerealuiRossGirshicketal[13],aceeadea
selectaunnumărde2000regiunipropuse("regionproposals").Înlocsăsegenerezeun
numărfoartemarederegiuni,algoritmulselimiteazădoarlaacestnumăr.
Înurmaselectăriiregiunilorfolosindalgoritmuldecăutareselectivă,acesteasunt
deformateînpătrateșitrimisecătrerețeauaneuronalăCNN.Rețeauaîncearcăsă
extragătrăsăturidinregiunileprimiteșiscoatelaieșirecaracteristicilegăsite.Acestea
suntintroduseîntr-unSVM(SupportVectorMachine)carearecăscopclasificarea
regiunilorșiajustareadimensiunilorregiuni,pentrucăaceastăsăcuprindăîntreg
obiectul.
Chiarșiașa,algoritmularemiciinconveniente.Antrenareașitestareadurează
mult,deoareceavem2000deregiunideclasificat.Deasemenea,algoritmuldecăutare
selectivăestefix,nusepoatemodifica/antrenapentruageneracelemaibuneregiuni.
2.3FastR-CNN
Fig.4ArhitecturăFastR-CNN

Capitolul2.Tehnicișialgoritmi
6https://arxiv.org/pdf/1504.08083.pdf,1-07-2019
Totacelașiautor[14]prezintăoaltămodalitatedearezolvavopartedin
problemelerețelelorR-CNN.Abordareaestesimilară,însăregiunileselectatenusunt
introdusedirectînrețea,cisuntfolositepentruaconstruioimagine,numităhartăde
catacteristiciconvolutionale("convolutionalfeaturemap").Pebazahărții,seidentifica
regiunile,seredimensioneazășiseintroducîntr-unstratfullyconnected.Rezultatul
esteobținutfolosindunvectordecaracteristiciRoI("Regionofinterest")careneoferă
detaliidespreclasașioffset.
Aceastăabordareestemairapidă,deoarecenumaitrebuiesăalimentămrețeaua
cu2000deregiuni,cidoarcuoimagineșihartadecatacteristicigeneratădeaceastă.
Însă,chiarșiașa,generareaacestorregiunideinteresîncetineștealgoritmulși
necesităuntimpmaimaredeexecuție.
2.4FasterR-CNN
Fig.5ArhitecturăFasterR-CNN

Capitolul2.Tehnicișialgoritmi
7https://arxiv.org/pdf/1506.01497.pdf,1-07-2019
Ceidoialgoritmiprezentațimaisusfolosesccăutareaselectivăpentruaidentifica
regiuniledeinteres.Însăaceastămetodăesteconsumatoaredetimp.ShaoqingRenetal.
[15]auvenitcuoalternativălaaceastăproblema.Eiaupropusunalgoritmde
detectareaobiectelorcarepermiterețeleisăînvețedetectarearegiunilordeinteresfără
afinevoiesăutilizezeacelalgoritmdecăutareselectivă.
AlgoritmulfuncționeazăsimilarcuFastR-CNN,însă,înlocsăseutilizeze
algoritmuldecăutareselectivă,imagineaîntrăîntr-orețeaseparatăcareîncearcăsă
identificeregiuniledeinteres.Rezultatulesteintrodusîntr-unstratRoIcareseocupăde
detectareaobiectelorșioffset-ului.
2.5Transferlearning
Fig.6Transferlearning
https://medium.com/kansas-city-machine-learning-artificial-intelligen/an-introduction-to-
transfer-learning-in-machine-learning-7efd104b6026,1-07-2019
ScottMartin[10]spunecaTransferlearningesteotehnicădeînvățareprofundă
princareorețeaneuronalădezvoltatăanterioresteantrenatăpentruonouăsarcină.De
exemplu,dorimsăinstruimorețeaneuronalăcaresărecunoascăcaii,însănuexistă
algoritmidisponibilipentruașaceva.Totceavemdefăcutestesăluămorețea
neuronalăantrenatăpentrurecunoaștereaaltoranimaleșisăopunemlaantrenat
pentruarecunoaștecaii.
Moduldefuncționareestefoarteușor.Seeliminăultimulstratnumit"lossoutput"
careestestratulfinalcefaceprezicerea.Aceststratvafiînlocuitdeunnoustratde
ieșirecevaindentificanouăclasa.Totceeacemaiavemdefăcutestesăpunemsetulde
dateadnotatșisăpornimrecalibrarearețeleiastfelîncâtsăidentificeclasanoastră.
Aceastătehnicănuestedestinatădoarpentrurecunoaștereaimaginilor,ciși
pentrurecunoaștereavorbiriisaualterețeledetiprecurente(RNN-RecurrentNeural
Network).
Unavantajaltransferlearning-ului,fațădeantrenareauneirețeleneuronaledela
0,estetimpuldeantrenarecaresereduceconsiderabil.Deasemenea,aceastătefnica
esteindicatășiatuncicândaveminsuficientedate.

Capitolul2.Tehnicișialgoritmi
82.6.ResNet
ResNetesteoarhitecturăderețeaneuronalăfoarteimportantă,maialespentru
rețelelecumultestraturi,deoarecearezolvatproblema“vanishinggradient”(cucâto
rețeaestemaimare,cuatâtseantreneazămaigreu).Soluțiaafostintroducerea
blocurilor"reziduale":ieșireadintr-unbloccompusseuneștecuintrareaacestuia,
rezultatulreprezentândintrareaurmătoruluibloccompus[9].
ResNet-50esteuntipderețeaneuronalăconstruităpentrudetectareaformelorși
aavutopreciziefoartemareînrecunoaștereacâinilorșipisicilor.Rețeauaareîn
componentăeistraturipentruidentificareacontururilor,liniilor,curbelorcareofac
idicatapentrurecunoaștereaformelor[10].
ÎntabelulurmătoresteprezentatăarhitecturărețeleipreantrenateResNet-50[16]
dinMatlab.
Tabelul1ArhitecturarețeleiResNet-50
Nr.crt Nume Tip Activare Learnables
1.input_1 ImageInput 224×224×2 –
2. conv1 Convolution112×112×64Dimensiuni
7×7×3×64
Bias1×1×64
3.bn_conv1Batch
normalization112×112×64Offset1×1×64
Scala1×1×64
4.activation_1_relu ReLU 112×112×64 –
5.max_pooling2d_1 MaxPooling 55×55×64 –
6.res2a_branch2a Convolution 55×55×64Dimensiuni
1×1×64×64
Bias1×1×64
7.bn2a_branch2aBatch
normalization55×55×64Offset1×1×64
Scala1×1×64
8.activation_2_relu ReLU 55×55×64 –
9.res2a_branch2b Convolution 55×55×64Dimensiuni
3×3×64×64
Bias1×1×64
10.bn2a_branch2bBatch
normalization55×55×64Offset1×1×64
Scala1×1×64

Capitolul2.Tehnicișialgoritmi
9Nr.crt Nume Tip Activare Learnables
11.activation_3_relu ReLU 55×55×64 –
12.res2a_branch2c Convolution 55×55×256Dimensiuni
3×3×64×256
Bias1×1×256
13.res2a_branch1 Convolution 55×55×256Dimensiuni
3×3×64×256
Bias1×1×256
14.bn2a_branch2cBatch
normalization55×55×256Offset1×1×256
Scala1×1×256
15.bn2a_branch1Batch
normalization55×55×256Offset1×1×256
Scala1×1×256
16.add_1 Addition 55×55×256 –
17.activation_4_relu ReLU 55×55×64 –
18.res2b_branch2a Convolution 55×55×64Dimensiuni
1×1×256×64
Bias1×1×64
19.bn2b_branch2aBatch
normalization55×55×64Offset1×1×64
Scala1×1×64
20.activation_5_relu ReLU 55×55×64 –
21.res2b_branch2b Convolution 55×55×64Dimensiuni
3×3×64×64
Bias1×1×64
22.bn2b_branch2bBatch
normalization55×55×64Offset1×1×64
Scala1×1×64
23.activation_6_relu ReLU 55×55×64 –
24.res2b_branch2c Convolution 55×55×256Dimensiuni
3×3×64×256
Bias1×1×256

Capitolul2.Tehnicișialgoritmi
10Nr.crt Nume Tip Activare Learnables
25.bn2b_branch2cBatch
normalization55×55×256Offset1×1×256
Scala1×1×256
26.add_2 Addition 55×55×256-
27.activation_7_relu ReLU 55×55×256 –
28.res2c_branch2a Convolution 55×55×64Dimensiuni
1×1×256×64
Bias1×1×64
29.bn2c_branch2aBatch
normalization55×55×256Offset1×1×64
Scala1×1×64
30.activation_8_relu ReLU 55×55×64 –
31.res2c_branch2b Convolution 55×55×64Dimensiuni
3×3×64×64
Bias1×1×64
32.bn2c_branch2bBatch
normalization55×55×64Offset1×1×64
Scala1×1×64
33.activation_9_relu ReLU 55×55×64 –
34.res2c_branch2c Convolution 55×55×256Dimensiuni
3×3×64×256
Bias1×1×256
35.bn2c_branch2cBatch
normalization55×55×256Offset1×1×256
Scala1×1×256
36.add_3 Addition 55×55×256 –
37.activation_10_relu ReLU 55×55×256 –
38.res3a_branch2a Convolution 28×28×128Dimensiuni
1×1×256×128
Bias1×1×128
39.bn3a_branch2aBatch28×28×128 Offset1×1×128

Capitolul2.Tehnicișialgoritmi
11Nr.crt Nume Tip Activare Learnables
normalization Scala1×1×128
40.activation_11_relu ReLu 28×28×128 –
41.res3a_branch2b Convolution 28×28×128Dimensiuni
3×3×128×128
Bias1×1×128
42.bn3a_branch2bBatch
normalization28×28×128Offset1×1×128
Scala1×1×128
43.activation_12_relu ReLU 28×28×128 –
44.res3a_branch2c Convolution 28×28×512Dimensiuni
3×3×128×512
Bias1×1×512
45.res3a_branch1 Convolution 28×28×512Dimensiuni
3×3×256×512
Bias1×1×512
46.bn3a_branch2cBatch
normalization28×28×512Offset1×1×512
Scala1×1×512
47.bn3a_branch1Batch
normalization28×28×512Offset1×1×512
Scala1×1×512
48.add_4 Addition 28×28×512 –
49.activation_13_relu ReLU 28×28×512 –
50.res3b_branch2a Convolution 28×28×512Dimensiuni
3×3×512×128
Bias1×1×128
51.bn3b_branch2aBatch
normalization28×28×128Offset1×1×128
Scala1×1×128
52.activation_14_relu ReLU 28×28×128 –
53.res3b_branch2b Convolution 28×28×128Dimensiuni
3×3×128×128

Capitolul2.Tehnicișialgoritmi
12Nr.crt Nume Tip Activare Learnables
Bias1×1×128
54.bn3b_branch2bBatch
normalization28×28×128Offset1×1×128
Scala1×1×128
55.activation_15_relu ReLU 28×28×128 –
56.res3b_branch2c Convolution 28×28×512Dimensiuni
3×3×128×512
Bias1×1×512
57.bn3b_branch2cBatch
normalization28×28×512Offset1×1×512
Scala1×1×512
58.add_5 Addition 28×28×512 –
59.activation_16_relu ReLU 28×28×512 –
60.res3c_branch2a Convolution 28×28×128Dimensiuni
3×3×512×128
Bias1×1×128
61.bn3c_branch2aBatch
normalization28×28×128Offset1×1×128
Scala1×1×128
62.activation_17_relu ReLU 28×28×128 –
63.res3c_branch2b Convolution 28×28×128Dimensiuni
3×3×128×128
Bias1×1×128
64.bn3c_branch2bBatch
normalization28×28×128Offset1×1×128
Scala1×1×128
65.activation_18_relu ReLU 28×28×128 –
66.res3c_branch2c Convolution 28×28×512Dimensiuni
1×1×128×512
Bias1×1×512
67.bn3c_branch2cBatch
normalization28×28×512Offset1×1×512
Scala1×1×512

Capitolul2.Tehnicișialgoritmi
13Nr.crt Nume Tip Activare Learnables
68.add_6 Addition 28×28×512 –
69.activation_19_relu ReLU 28×28×512 –
70.res3d_branch2a Convolution 28×28×128Dimensiuni
1×1×512×128
Bias1×1×128
71.bn3d_branch2aBatch
normalization28×28×128Offset1×1×128
Scala1×1×128
72.activation_20_relu ReLU 28×28×128 –
73.res3d_branch2b Convolution 28×28×128Dimensiuni
3×3×128×128
Bias1×1×128
74.bn3d_branch2bBatch
normalization28×28×128Offset1×1×128
Scala1×1×128
75.activation_21_relu ReLU 28×28×128 –
76.res3d_branch2c Convolution 28×28×512Dimensiuni
1×1×128×512
Bias1×1×512
77.bn3d_branch2cBatch
normalization28×28×512Offset1×1×512
Scala1×1×512
78.add_7 Addition 28×28×512 –
79.activation_22_relu ReLU 28×28×512 –
80.res4a_branch2a Convolution 14×14×256Dimensiuni
1×1×512×256
Bias1×1×256
81.bn4a_branch2aBatch
normalization14×14×256Offset1×1×256
Scala1×1×256
82.activation_23_relu ReLU 28×28×512 –
83.res4a_branch2b Convolution 14×14×256Dimensiuni

Capitolul2.Tehnicișialgoritmi
14Nr.crt Nume Tip Activare Learnables
3×3×256×256
Bias1×1×256
84.bn4a_branch2bBatch
normalization14×14×256Offset1×1×256
Scala1×1×256
85.activation_24_relu ReLU 14×14×256 –
86.res4a_branch2c Convolution 14×14×1024Dimensiuni
1×1×256×1024
Bias1×1×1024
87.res4a_branch1 Convolution 14×14×1024Dimensiuni
1×1×256×1024
Bias1×1×1024
88.bn4a_branch2cBatch
normalization14×14×1024Offset1×1×1024
Scala1×1×1024
89.bn4a_branch1Batch
normalization14×14×1024Offset1×1×1024
Scala1×1×1024
90.add_8 Addition 14×14×1024 –
91.activation_25_relu ReLU 14×14×1024 –
92.res4b_branch2a Convolution 14×14×256Dimensiuni
1×1×1024×256
Bias1×1×256
93.bn4b_branch2aBatch
normalization14×14×256Offset1×1×256
Scala1×1×256
94.activation_26_relu ReLU 14×14×256 –
95.res4b_branch2b Convolution 14×14×256Dimensiuni
3×3×256×256
Bias1×1×256
96.bn4b_branch2bBatch
normalization14×14×256Offset1×1×256
Scala1×1×256

Capitolul2.Tehnicișialgoritmi
15Nr.crt Nume Tip Activare Learnables
97.activation_27_relu ReLU 14×14×256 –
98.res4b_branch2c Convolution 14×14×1024Dimensiuni
1×1×256×1024
Bias1×1×1024
99.bn4b_branch2cBatch
normalization14×14×1024Offset1×1×1024
Scala1×1×1024
100.add_9 Addition 14×14×1024 –
101.activation_28_relu ReLU 14×14×1024 –
102.res4c_branch2a Convolution 14×14×256Dimensiuni
1×1×1024×256
Bias1×1×256
103.bn4c_branch2aBatch
normalization14×14×256Offset1×1×256
Scala1×1×256
104.activation_29_relu ReLU 14×14×256 –
105.res4c_branch2b Convolution 14×14×256Dimensiuni
3×3×256×256
Bias1×1×256
106.bn4c_branch2bBatch
normalization14×14×256Offset1×1×256
Scala1×1×256
107.activation_30_relu ReLU 14×14×256 –
108.res4c_branch2c Convolution 14×14×1024Dimensiuni
1×1×256×1024
Bias1×1×1024
109.bn4c_branch2cBatch
normalization14×14×1024Offset1×1×1024
Scala1×1×1024
110.add_10 Addition 14×14×1024 –
111.activation_31_relu ReLU 14×14×1024 –
112.res4d_branch2a Convolution 14×14×256Dimensiuni

Capitolul2.Tehnicișialgoritmi
16Nr.crt Nume Tip Activare Learnables
1×1×1024×256
Bias1×1×256
113.bn4d_branch2aBatch
normalization14×14×256Offset1×1×256
Scala1×1×256
114.activation_32_relu ReLU 14×14×256 –
115.res4d_branch2b Convolution 14×14×256Dimensiuni
3×3×256×256
Bias1×1×256
116.bn4d_branch2bBatch
normalization14×14×256Offset1×1×256
Scala1×1×256
117.activation_33_relu ReLU 14×14×256 –
118.res4d_branch2c Convolution 14×14×1024Dimensiuni
1×1×256×1024
Bias1×1×1024
119.bn4d_branch2cBatch
normalization14×14×1024Offset1×1×1024
Scala1×1×1024
120.add_11 Addition 14×14×1024 –
121.activation_34_relu ReLU 14×14×1024 –
122.res4e_branch2a Convolution 14×14×256Dimensiuni
1×1×1024×256
Bias1×1×256
123.bn4e_branch2aBatch
normalization14×14×256Offset1×1×256
Scala1×1×256
124.activation_35_relu ReLU 14×14×256 –
125.res4e_branch2b Convolution 14×14×256Dimensiuni
3×3×256×256
Bias1×1×256
126.bn4e_branch2bBatch14×14×256 Offset1×1×256

Capitolul2.Tehnicișialgoritmi
17Nr.crt Nume Tip Activare Learnables
normalization Scala1×1×256
127.activation_36_relu ReLU 14×14×256 –
128.res4e_branch2c Convolution 14×14×1024Dimensiuni
1×1×256×1024
Bias1×1×256
129.bn4e_branch2cBatch
normalization14×14×1024Offset1×1×1024
Scala1×1×1024
130.add_12 Addition 14×14×1024 –
131.activation_37_relu ReLU 14×14×1024 –
132.res4f_branch2a Convolution 14×14×256Dimensiuni
1×1×1024×256
Bias1×1×256
133.bn4f_branch2aBatch
normalization14×14×256Offset1×1×256
Scala1×1×256
134.activation_38_relu ReLU 14×14×256 –
135.res4f_branch2b Convolution 14×14×256Dimensiuni
3×3×256×256
Bias1×1×256
136.bn4f_branch2bBatch
normalization14×14×256Offset1×1×256
Scala1×1×256
137.activation_39_relu ReLU 14×14×256 –
138.res4f_branch2c Convolution 14×14×1024Dimensiuni
1×1×256×1024
Bias1×1×1024
139.bn4f_branch2cBatch
normalization14×14×1024Offset1×1×1024
Scala1×1×1024
140.add_13 Addition 14×14×1024 –
141.activation_40_relu ReLU 14×14×1024 –

Capitolul2.Tehnicișialgoritmi
18Nr.crt Nume Tip Activare Learnables
142.rpnConv3×3 Convolution 14×14×1024Dimensiuni
3×3×1024×1024
Bias1×1×1024
143.rpnrelu ReLU 14×14×1024 –
144.rpnConv1×1BoxD
eltasConvolution 14×14×16Dimensiuni
1×1×1024×16
Bias1×1×16
145.rpnBoxDeltasBoxRegression
Output- –
146.rpnconv1×1clssco
resConvolution 14×14×8Dimensiuni
1×1×1024×8
Bias1×1×8
147.rpnSoftmax RPNSoftmax 196×4×2 –
148.rpnClassificationRPNClassification – –
149.regionProposal RegionProposal 1×5 –
150.roiPooling ROIMaxPooling 14×14×1024 –
151.res5a_branch2a Convolution 7×7×512Dimensiuni
1×1×1024×512
Bias1×1×512
152.bn5a_branch2aBatch
Normalization7×7×512Offset1×1×512
Scala1×1×512
153.activation_41_relu ReLU 7×7×512 –
154.res5a_branch2b Convolution 7×7×512Dimensiuni
3×3×512×512
Bias1×1×512
155.bn5a_branch2bBatch
Normalization7×7×512Offset1×1×512
Scala1×1×512
156.activation_42_relu ReLU 7×7×512 –
157.res5a_branch2c Convolution 7×7×2048Dimensiuni

Capitolul2.Tehnicișialgoritmi
19Nr.crt Nume Tip Activare Learnables
1×1×512×2048
Bias1×1×2048
158.res5a_branch1 Convolution 7×7×2048Dimensiuni
1×1×1024×2048
Bias1×1×2048
159.bn5a_branch2cBatch
Normalization7×7×2048Offset1×1×2048
Scala1×1×2048
160.bn5a_branch1Batch
Normalization7×7×2048Offset1×1×2048
Scala1×1×2048
161.add_14 Addition 7×7×2048 –
162.activation_43_relu ReLU 7×7×2048 –
163.res5b_branch2a Convolution 7×7×512Dimensiuni
1×1×2048×512
Bias1×1×512
164.bn5b_branch2aBatch
Normalization7×7×512Offset1×1×512
Scala1×1×512
165.activation_44_relu ReLU 7×7×512 –
166.res5b_branch2b Convolution 7×7×512Dimensiuni
3×3×512×512
Bias1×1×512
167.bn5a_branch2bBatch
Normalization7×7×512Offset1×1×512
Scala1×1×512
168.activation_45_relu ReLU 7×7×512 –
169.res5b_branch2c Convolution 7×7×2048Dimensiuni
1×1×512×2048
Bias1×1×2048
170.bn5a_branch2cBatch
Normalization7×7×2048Offset1×1×2048
Scala1×1×2048

Capitolul2.Tehnicișialgoritmi
20Nr.crt Nume Tip Activare Learnables
171.add_15 Addition 7×7×2048 –
172.activation_46_relu ReLU 7×7×2048 –
173.res5c_branch2a Convolution 7×7×512Dimensiuni
1×1×2048×512
Bias1×1×512
174.bn5c_branch2aBatch
Normalization7×7×512Offset1×1×512
Scala1×1×512
175.activation_47_relu ReLU 7×7×512 –
176.res5c_branch2b Convolution 7×7×512Dimensiuni
3×3×512×512
Bias1×1×512
177.bn5c_branch2bBatch
Normalization7×7×512Offset1×1×512
Scala1×1×512
178.activation_48_relu ReLU 7×7×512 –
179.res5c_branch2c Convolution 7×7×2048Dimensiuni
1×1×512×2048
Bias1×1×2048
180.bn5c_branch2cBatch
Normalization7×7×2048Offset1×1×2048
Scala1×1×2048
181.add_16 Addition 7×7×2048 –
182.activation_49_relu ReLU 7×7×2048 –
183.avg_pool AveragePooling 1×1×2048
184.rcnnFC FullyConnected 1×1×3Dimensiuni3×2048
Bias3×1
185.rcnnSoftmax Softmax 1×1×3 –
186.rcnClassificationClassification
Output- –
187.fcBoxDeltas FullyConnected 1×1×8 Dimensiuni8×2048

Capitolul2.Tehnicișialgoritmi
21Nr.crt Nume Tip Activare Learnables
Bias8×1
188.boxDeltasBoxRegression
Output- –

22CAPITOLUL3.IMPLEMENTAREREȚELEI
3.1Setuldedate
Primulșiunuldintrecelemaiimportantelucruri,cândvorbimdesprerețelele
neuronale,estesetuldedate.AmalessăfolosescsetuldedatepusladispozițiepeThe
GermanTrafficSignDetectionBenchmark(GTSDB)[17].
Acestsetdedateconține900deimaginiclasificateșiadnotateîn43declase
diferite.Întotal,avem1213semnedecirculatiereprezentateînacesteimagini.
Setuldedateafostconstruitținându-secontdeposibilitateauneiunei
luminozitațidiferite(puternică,slabăsaunormală)șideperformanțelecamereicare
poatescoateimaginilecuunușorefectdeblur.
Dincauzaresurselordecalcullimitate,amalessămărezumlaunnumarde4
clase/semnedecirculație:
Tabelul2Semnedecirculație
Numesemn Tipsemn Numărimagini Număradnotari
stop other 25 32
noovertaking prohibitory 36 41
priorityroad other 84 85
giveway other 67 83
Toateimaginileaudimensiunilede1360x800pixeli
3.2.Mediudedezvoltare
Pentruacestlucru,amalessăfolosescprogramulMatlab.Programulesteconceput
pentrucalculematematicecomplexeșiarenumeroasefuncțiipredefinitecareîlfacușor
deutilizat.Înceeacepriveșterețeleleneuronale,oferăfuncțiispecializatepentru
asemeneaoperații.
Matlab-ulesteutilinginerilorcaresuntdejafamiliarizațicuDeepLearningsă
construiascărețeleneuronale.Cuajutorullui,UniversitateadinAlbertaaconstruito
rețeaneuronalăcapabilăsădepistezecelulelecanceroaselanivelulprostatei[18].
Programulestedezvoltatșiîmbunătățitînfiecarezi.Lepuneladispoziție
dezvoltatorilorfuncțiișimodelepreantrenateutilepentruconcepereaunornoirețele
porninddela0saufolosindTransferLearning.
3.3.Antrenarearețelei
Primulpasesteconstruireadatelordeintrareînrețea.Acesteatrebuieprelucrate
subformăunuitabelîncareprimacoloanaestecaleacătreimagine,iarrestul

Capitolul3.Implementarearețelei
23coloanelorsuntcorespunzătoarefiecăreiclaseînparte.Maijosavemunexemplude
cumaratădatele.
Fig.7Tabelcudateledeintrare
Întabeluldemaijosputemvedeaîmpărțireaimaginilorînsetuldeantrenareși
testarecares-afăcutaleator.
Tabelul3Împărțireaimaginilor
ClasaAntrenare Testare
Imagini Adnotări Imagini Adnotări
stop 18 25 7 7
no_overtaking 33 37 3 4
priority_road 67 68 17 17
give_way 51 61 16 22
Maideparte,urmeazăsetareaopțiunilordeantrenare.Pentruaputeacompara
preciziaînfuncțiedenumăruldeepoci,amalessăantrenezpe15si50deepoci.
Fig.8Opțiunideantrenare(15si30deepoci)

Capitolul3.Implementarearețelei
24Urmeazăantrenareapropriu-zisă.Amalessăfolosesctransferlearning,pornind
delarețeauaResNet-50,pentrua-miușurasarcinașiareducetimpuldeantrenare.
Fig.9Funcțiadeantrenare
Totcene-amairămasestesătestămrețeauaantrenatășisăcalculămprecizia.
Fig.10Funcțiadecalculareapreciziei
Pentruavedeacums-audesfășuratantrenareacelor2rețele,aruncațioprivireîn
anexa1șiînanexa2pentruavedeamesajeledesistemgeneratedeMatlab.
3.4.Rezultate
Dupăceantrenareaiasfârșit,seiauperândfiecareimaginedinsetuldetestareși
seaplicădetectorul.Pebazaaceeacescoaterețeauașiarezultatelorașteptatese
calculeazăpreciziarețeleișisetraseazăungrafic.Maijosputemvizualizaimaginidela
testareșiimaginilecugraficeleșiprezicerilepentrufiecareclasaînparte.
Fig.11Rezultatpentruclasastop

Capitolul3.Implementarearețelei
25
Fig.12Graficuldepreciziealclaseistop(15epoci)
Fig.13Graficuldepreciziealclaseistop(50epoci)

Capitolul3.Implementarearețelei
26
Fig.14Rezultatpentruclasano_overtaking
Fig.15Graficuldepreciziealclaseino_overtaking(15epoci)

Capitolul3.Implementarearețelei
27
Fig.16Graficuldepreciziealclaseino_overtaking(50epoci)
Fig.17Rezultatpentruclasapriority_road

Capitolul3.Implementarearețelei
28
Fig.18Graficuldepreciziealclaseipriority_road(15epoci)
Fig.19Graficuldepreciziealclaseipriority_road(50epoci)

Capitolul3.Implementarearețelei
29
Fig.20Rezultatpentruclasagive_way
Fig.21Graficuldepreciziealclaseigive_way(15epoci)

Capitolul3.Implementarearețelei
30
Fig.22Graficuldepreciziealclaseigive_way(50epoci)
Fig.23Detectareadouăclaseînaceeașiimagine

Capitolul3.Implementarearețelei
31Dupăcumputemobservă,rețeauaestecapabilăsădetectezesemnedecirculație
înimagini,chiardacăacesteasuntîncețoșatesausuntfăcutecuoluminozitateproastă.
Deasemeni,poatedetectamaimultesemnedecirculațieînaceeașiimagine,deacelași
tipsaudetipdiferit(așacumputemobservaînfig.15).
Iatăopriviredeansambluasupraprecizieiînfuncțiedenumaruldeepoci:
Tabelul4Preciziainfuncțiedenumărulepocilor
NumărdeepociClasă
stop no_overtaking priority_road give_way
15 0.98 0.50 0.67 0.62
50 0.96 1.00 0.76 0.82
Cutoateacestea,rețeauamaidașirateuriuneori,detectanddoaropartedinsemn
saudetectandoregiunemaimaredecâtsemnul.Acestlucrusepoateremediaprin
adăugareamaimultorimaginișiprincreștereanumăruluideepocideantrenare.În
acestfel,rețeauaneuronalăpentrudetectarearegiunilordeinteresvaputeasă
identificezoneledeinteresmultmaibine.

32CAPITOLUL4.IMPLEMENTAREAAPLICAȚIEIMOBILE
Pentruafimaiușordeutilizat,amdecissăimplementezoaplicațiemobilă.
AplicațiaafostscrisăpentruAndroidșiamutilizatbibliotecaOpenCVpentru
prelucrareaimaginilor.
AndroidesteunsistemdeoperarebazatdeLinux,careruleazăpedispozitivele
mobile.Esteînsășioplatformădedezvoltarepentruaplicațiimobilecarepotfiscriseîn
JavasauKotlin.Încazulaplicațieimele,amaleslimbajulJava.
OpenCV[19]esteobibliotecascrisăînC/C++pentruprelucrareaimaginilorîn
timpreal.Estedesfolosităîncombinațiecudiferiterețeleneuronalecareopereazăcu
imagini.
4.1Schemaclaselor
Maijosavemoschemăamoduluiîncareesteconstruităaplicațiamobilă.Înfigură
suntreprezentateclaseleșimodulîncareseapeleazăunapealta.
Fig.24Diagramaclaselor
4.2.UtilizareOpenCV
Amfolositaceastăbibliotecăpentruapreluaimaginidelacamerafotoa
telefonuluișialeafișaînmodulPreview.Înacestfelamsimulatoarecum
funcționalitateacamereifotodepetelefonulmobil.
Însă,înaintesăfolosesccamera,atrebuitsăcerpermisiunipentruutilizareaei.
Fig.25Cererepermisiuni
Dupăacestpas,totcearămasafostsăsetezundevorfiafișateimaginiledupăce
suntpreluatedelacameră.
Bibliotecaesteutilămaialespentrufaptulcăarefoartemulteoperațiișifuncții
predefinite,așacădoartrebuiescutilizate.
4.3.Apelareaserviciilordepeserver
Pentruatrimitecererilecătreserver,amfolositlibrăriaVolleycareeste
specializatăpeoperațiilehttpdetipcerere-răspuns.Încazulnostru,ovomfolosipentru
atrimiteimagineacătreserverșiapreluarăspunsuldelaacesta.Maijosavemoparte
dincod.
MetodadetrimitereadatelorestePOST,deoareceimagineaareodimensiune
destuldemaresinuarputeafitrimisăprinGET.

Capitolul4.Denumireacapitolului
33Laprimirearăspunsului,seafișeazăunmesajdetipToastînaplicațieșiseîncepe
descărcareașiafișareaimaginicurezultatul.Acestlucruserealizeazăfolosindoclasade
descărcareasincronaimaginilor.Încazulîncareaapărutoeroareîntimpulexecuției,
aceastăvaapăreapeecransubformăunuimesajToast.
Fig.26CodVolley
4.4.ComunicarecumodeluldinMatlab
Matlab-uloferăobibliotecădefuncțiipentrucomunicareacudiferitelimbajede
programare,cumarfiJavașiPython.Astfelsepotexecutăcomenzisaufuncțiidin
interiorulscripturilor[20].
AmalessăfolosesclimbajulPythonpentruaridicăunserverweb,folosind
bibliotecaFlask[21].

Capitolul4.Denumireacapitolului
34
Fig.27SumarscriptPython
Primulserviciucareseapeleazădepeserverestefuncțiareturn_result(fig.26).
Aceastăprimeșteprinpostimagineaencodataînbase64,șiosalveazăfolosindfuncția
save_image(fig.27).Dupăceimagineaafostsalbatafizic,pemașină,seapeleazăfuncția
execute_matlab(fig.28)careseconecteazălasesiuneaMatlabdeschisășiexecută
funcțiadedetectareasemnelordecirculațiedinimagine.
Fig.28Funcțiareturn_result
Fig.29Funcțiasave_image

Capitolul4.Denumireacapitolului
35Pentruaapeladetectoruldinmatlabamfolositbibliotecaengineoferitădeceide
laMatlab[22].
Fig.30Funcțiaexecute_matlab
Dupăces-aterminatexecuțiasepoateapelafuncțiacarereturneazărezultatul
prezisderețeauaneuronală.
Fig.31Funcțiecarereturneazaimagineacurezultatul

36CAPITOLUL5.DESCRIEREAAPLICAȚIEIMOBILE
Urmeazasaexplicfunctionareaaplicatiepascupas,dinpunctdevedereal
utilizatorului.
1.SplashScreen-esteofereastrăcarestăactivă3secundedupăcarene
redirecționeazăcătrepaginaprincipală/ecranuldepornireaaplicației.Aratăbine,dar
esteutilșipentruadaaplicațieitimpsăîșiincarceresurselenecesare.
Fig.32SplashScreen
2.Ecranuldepornire-aiciputemvedeacâtevainformațiidespreaplicațieșio
pozăsugestivă.

Capitolul4.Denumireacapitolului
37
Fig.33Ecranuldepornire
Dupacumsepoatevedea,avem2tipurideutilizare:
A.Simulare
B.Folosindcamerafoto
Voiprezentaîncontinuareaceste2tipurideutilizare
A.Simularea-folosindnișteimaginipredefinite(pentrucazulîncarenuavem
niciunsemndecirculațieînpreajmanoastrăpentruafolosiaplicația)
Avemposibilitateadeatestape3imagini,pecareleputemvedeautilizând
săgețile.

Capitolul4.Denumireacapitolului
38
Fig.34Ecranuldealegereaimaginiînmoduldesimulare
Dupăcumsepoateobserva,imagineaestedestuldemică,acestfaptdatorându-se
rezoluțieiimaginii.Pentruafimaiușordedistinsobiecteledinimagine,amadăugatșio
funcțiedezoomcareseactiveazăcândseapasăpeimagine.

Capitolul4.Denumireacapitolului
39
Fig.35Zoomimagine-modnormal(nivelul0)
Înprimafază,aceastanuparecas-amărit,însădacăapăsămdedouaoripeo
porțiunedinimagine(caundubluclick)aceastasevamări.Acestlucrufuncționeazăîn
2treptedezoom,dupăcarerevinelaformainițială.Pentruaînchideferestraputem
folosibutonuldeînchideredejos.

Capitolul4.Denumireacapitolului
40
Fig.36Zoomimagine-nivelul2
Dupăceamalesopoză,apăsămpebutonuldedetectarepentruatrimitepoza
cătreserverșianeîntoarcerăspunsul.

Capitolul4.Denumireacapitolului
41
Fig.37Afișarearăspunsului
Lafelcamaidevreme,șiînactivity-ulderăspunsavemfuncțiadezoom
disponibilă.

Capitolul4.Denumireacapitolului
42
Fig.38Afișarearăspunsuluicuzoom
B.Folosindcamerafoto
Putemdeasemenisăfolosimșicameratelefonuluipentruafacepozeînnatură
saulaalteimaginișisăaplicămdetectoruldesemnedecirculație.
Primullucrupecaretrebuiesăîlfacemesteacordareapermisiunilor.Acestlucru
serealizeazădoarosingurădată,laînceput.Încazulîncareaplicațianuareaccesla
camera,aceastăcerepermisiuni.

Capitolul4.Denumireacapitolului
43
Fig.39Cererepermisiuni
Dupăceamtrecutșideacestpas,îndreptămcameraspresemnuldecirculațiepe
caredorimsăîlidentificămșiapăsămpebutonuldejos,careestereprezentatprintr-o
pictogramă.

Capitolul4.Denumireacapitolului
44
Fig.40Realizareauneifotografii
Dupăceamapăsatpebutonnisevadeschidefereastraîncarenevaapăreapoză.
Pepozăvafidesenatăpozițiasemnuluidecirculațieșinumeleacestuia.

Capitolul4.Denumireacapitolului
45
Fig.41Afișarearezultatului
Șiacestaestemoduldefuncționarealaplicație.Estedestuldeminimalistșiușor
defolosit.

46CONCLUZII
Înaceastălucrareamtestatunposibilmoddelucru,oanumităabordaresiam
prezentatrezultateleobtinute.
Rezultateleacesteilucrărinusuntcelemaibune,darsuntunpunctdeplecare
pentruarealizaunsistemdeasistențăîntraficmaibun.
Modelulrecunoastesemneledecirculatiecucareafostantrenatsisedescurcala
recunoasterealor.Prinextindereaclaselor,sepoateajungelaunsistemcarepoate
recunoastemajoritateasemnelordecirculatieinternationale.
Avansarealanivelulurmatornecesităîmbunatatirearesurselorhardware
necesareantrenariiretelei,atatpentruaobtinepreciziimultmaibunecâtșipentrua
puteaextindeariadecunoaștereasistemului.

Similar Posts