Sunteți pe pagina 1din 6

Rețele neuronale artificiale – studiu de caz

1. Descrierea problemei

Acest proiect îşi propune studierea unor tipuri şi topologii de RNA destinate
recunoașterii semnelor rutiere de circulație. Tipul de RNA implementat în mediul Google
Colab a fost cel al Reţelei neuronale convolutionale.

2. Descrierea setului de date

Setul de date utilizat conţine imagini cu semne de circulatie dintr-o baza de date cu peste 50
000 de imagini de acest fel.
Pentru antrenarea reţelelor au fost folosite imagini sortate in functie de semnul de circulatie
prezent in acestea, avand 43 de semne de circulatie a caror recunoastere urmeaza a fii
implementata, iar pentru testarea acestora sunt folosite 12600 imagini cu semne de circulatie
dintre cele folosite la antrenare.
Semnele care urmeaza a fi recunoscute sunt:

'Speed limit (20km/h)','Speed limit (30km/h)', 'Speed limit (50km/


h)','Speed limit (60km/h)', 'Speed limit (70km/h)','Speed limit (80km/h)',
'End of speed limit (80km/h)','Speed limit (100km/h)', 'Speed limit (120km/
h)', 'No passing', 'No passing veh over 3.5 tons', 'Right-of-way at intersec-
tion', 'Priority road', 'Yield', 'Stop', 'No vehicles', 'Veh > 3.5 tons pro-
hibited', 'No entry', 'General caution', 'Dangerous curve left', 'Dangerous
curve right', 'Double curve', 'Bumpy road', 'Slippery road', 'Road narrows on
the right', 'Road work', 'Traffic signals', 'Pedestrians', 'Children cross-
ing', 'Bicycles crossing', 'Beware of ice/snow', 'Wild animals crossing',
'End speed + passing limits', 'Turn right ahead', 'Turn left ahead', 'Ahead
only', 'Go straight or right', 'Go straight or left', 'Keep right', 'Keep
left', 'Roundabout mandatory', 'End of no passing', 'End no passing veh > 3.5
tons';

3. Descrierea tipurilor şi tipologiilor de RNA utilizate


În această aplicaţie am utilizat reţelele neuronale artificiale convolutionale.
Rețelele neuronale convoluționale (Convolutional Neural Networks, prescurtat CNN) sunt
clasificatori special concepuți pentru lucrul cu imagini. Structura acestora facilitează clasificarea
datelor cu un număr mare de parametri, deoarece aceste tipuri de rețele permit prelucrarea
eficientă a acestor categorii de date. CNN nu au o arhitectură sau o structură prestabilită, aceasta
se adaptează la tipul de imagine care se prelucrează sau la natura obiectelor care trebuie
clasificate. Arhitectura modelului nostru este:

1
 2 Conv2D layer (filter=32, kernel_size=(5,5), activation=”relu”)
 MaxPool2D layer ( pool_size=(2,2))
 Dropout layer (rate=0.25)
 2 Conv2D layer (filter=64, kernel_size=(3,3), activation=”relu”)
 MaxPool2D layer ( pool_size=(2,2))
 Dropout layer (rate=0.25)
 Flatten layer to squeeze the layers into 1 dimension
 Dense Fully connected layer (256 nodes, activation=”relu”)
 Dropout layer (rate=0.5)
 Dense layer (43 nodes, activation=”softmax”)

În general, CNN au două componente:


I. O componentă de extragere a trăsăturilor din imagini. Aceasta se compune din mai multe
straturi, care pot fi:
a. Straturi de convoluție
b. Straturi de agregare (engl: pooling)
Straturile de convoluție și agregare sunt supuse unei funcții de activare cu rolul de a
asigura comportamentul neliniar al rețelei. Ca funcție de activare, de cele mai multe ori se
folosește ReLU (Rectified Linear Unit).

II. O componentă complet conectată (fully connected), în cadrul căreia se realizează


clasificarea propriu-zisă.
Această componentă este o rețea neuronală clasică, la intrarea căreia se furnizează feature
map-urile, și la ieșirea căreia se aplică funcția de activare softmax. Ieșirea acestei componente
este un vector de probabilități cu un număr de componente egal cu numărul de clase. Fiecare
componentă a vectorului reprezintă probabilitatea ca imaginea de la intrare să se încadreze în
clasa corespunzătoare.

4. Descrierea proiectului realizat în Google Collab


Google Colaboratory sau Colab, Este un serviciu cloud de la Google Research. Este un IDE
care permite oricărui utilizator să scrie cod sursă în editorul său și să îl ruleze din browser.
Acesta accepta limbajul de programare Python și este orientat spre sarcini de învățare automată,
analiză de date, proiecte educaționale etc.
Acest serviciu, bazat pe Jupiter Notebook, este găzduit complet gratuit cu contul Gmail, și
nu necesită configurare și nici nu este necesară instalaea Jupyter. Acesta oferă resurse de calcul
pentru a vă putea edita și testa codul, cum ar fi GPGPU-urile serverelor sale. Fiind gratuit
Google Colaboratory nu dispune de resurse nelimitate și nici nu sunt garantate acestea.
O facilitate de apreciat este multitudinea de librarii preinstalate si usurinta in instalarea
acestora. Interfata este prietenoasa, bazata pe celule de cod care pot fi rulate individual, lucru
care permite o structurare eficienta a codului sursa. (Fig 1)

2
Figura 1 Captura de ecran din Google Collab

Algoritmul incepe cu declararea unui dictionar cu toate semnele de circulatie care sunt
prezente in imagini (Fig 1). Apoi sunt verificate imaginile incarcate in drive si clasificate pe baza
la arhitectura directoarelor in care sunt salvate. In Figura 2 se poate vedea structura setului de
date pentru antrenare. Ulterior se verifica daca imaginile pot fii citite si validitatea lor prin
afisarea a 26 de imagini aleatorii.

Figura 2 Structura date de intrare

Dupa ce s-a verificat valididitatea setului de date de intrare se trece la citirea acestora,
conversia acestora in siruri numpy si amestecarea lor (Figura 3)

3
Figura 3 Citirea si amestecarea datelor de intrare

Figura 4 Impatirea datelor intre antrenare si validare


Urmatorul pas este impartirea datelor in date de antrenare si validare avand 27447 date de
antrenare si 11763 date de validare. (Figura 4) Odata parcursi pasi anteriori se poate realiza
structurarea modelului, augumetarea datelor si in final antrenarea modelului. (Figura 5)

Figura 5 Structurarea modelului, augumetarea datelor si antrenarea modelului


4
In urma antrenari modelul, acesta poate fii evaluat. In Figura 6 se poate vedea cum a
decurs antrenarea m modelului.

Figura 6 Diagrama antrenare

5. Rezultate experimentale
Obitinand un model care pare sa fie antrenat corect mai ramane doar sa il testam. In
Figura 7 avem algoritmul de testare si precizia cu care modelul a prezis corect semnul de
circulatie stiind deja pentru fiecare imagine de test care este semnul continut de aceasta.

Figura 7 Testarea modelului antrenat

In Figura 8 avem o ilustratie care arata pentru fiecare semn datele reale si cele prezise de
algoritm, in speta, semnul de circulatie din imagine.

5
6. Concluzii
Aplicaţia dezvoltată şi-a propus recunoasterea unor semne de circulatie uzuale. Algoritmul a
fost antrenat cu succes obtinand o validare aproape completa, iar rezulatele recunoasterii
semnelor de circulatie sunt de 98.6% recunoastere corecta pentru setul de date rulat in algoritmul
de testare.

Bibliografie
[1]. Alex K, Ilya S, Geoffrey H, ImageNet Classification with Deep Convolutional Neural
Networks, Neural Information Processing Systems, 2012.
[2]. A. Zelinsky, Learning OpenCV---Computer Vision with the OpenCV Library, IEEE
Robotics & Automation Magazine, 2009.
[3]. Johannes S, Marc S, Jan S, Christian I, The German Traffic Sign Recognition
Benchmark: A multi-class classification competition, The 2011 International Joint
Conference on Neural Networks, 2011.
6

S-ar putea să vă placă și