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.
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: Tehnologiaavanseazădinceîncemaimultpezicetrece,lafelșisistemelede [627047] (ID: 627047)
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.
