Sunteți pe pagina 1din 7

Laborator ICI / ETTI Bucuresti / Program studii INF (an IVA)

Lucrarile L1 si L2 - Suport software pentru un senzor inteligent integrat:


L1) Achizitia, segmentarea si organizarea datelor. Parametri critici si influenta acestora.
L2) Clasificatoare ELM si SVM, evaluarea si optimizarea performantei
Radu DOGARU, februarie 2020

L1 - Suport software pentru un senzor inteligent integrat: a) achiziţia, segmentarea şi


organizarea datelor. Parametri critici şi influenţa acestora.

Lucrarea presupune parcurgerea a 4 paşi (“step1”, “step2”, ...”step4”) specifici proiectării unui
sezor inteligent în versiune integrată (prin urmare, pentru algoritmi s-au selectat cei cu o complexitate
redusă în condiţiile în care performanta funcţională nu este sacrificată major). Parcurgând cei 4 paşi se
generează baze de date de antrenament având ca obiectiv izolarea şi recunoaşterea caracterelor scrise de
mână (în exemplul de faţă, cifre de la 0 la 9) dintr-o imagine aplicată la intrarea senzorului. Dispozitivul
rezultat poate fi integrat de exemplu sub forma unei camere ataşate ochelarilor unei persoane cu
probleme de vedere, prin completarea cu un dispozitiv integrat text-to-speech (conversia claselor
recunoscute în semnal sonor asociat).
Suportul software (algoritmii utilizaţi) este realizat astfel încât să rezulte o platformă integrată cu
o complexitate cât mai mică, care poate fi integrată, de exemplu, într-un sistem eterogen SoC = System
on Chip (un astfel de sistem cuprinde CPU, GPU, eventual FPGA, cum este cazul sistemelor de
dezvoltare ZedBoard1 - acestea includ CPU şi Programmable Logic (PL) adică o arie FPGA care permite
realizarea unor operaţii computaţional intensive) - Paşii menţionaţi anterior au fost propuşi în [1] şi sunt
implementaţi utilizând Python 3 sub formă de “celule” ale unui “notebook” Jupyter2 executabil pe
platformele cloud Google COLAB 3 sau Kaggle4. În această lucrare se vor parcurge cei 4 paşi (Fig.1)
prin rularea celulelor asociate şi se vor identifica elementele critice pentru fiecare pas în parte. Astfel:
Pasul 1: Reprezintă o prelucrare primară a imaginii cu binarizare şi extragerea zonei utile;
Pasul 2: Realizează segmentarea caracterelor prin implementarea unei unei reţele celular
neliniare, un caz particular de reţea neuronală recurenta. Aceasta permite definirea unor forme
rectangulare care încadrează perfect zonele din imagine ce conţin simboluri grafice. În figură de mai jos
(din [2]) se reda principiul procesării cu reţeaua celulară neuronala (denumită şi atutomat celular).

1 http://zedboard.org/
2 https://jupyter.org/
3 https://colab.research.google.com/notebooks/welcome.ipynb
4 https://www.kaggle.com/

1
Laborator ICI / ETTI Bucuresti / Program studii INF (an IVA)
Lucrarile L1 si L2 - Suport software pentru un senzor inteligent integrat:
L1) Achizitia, segmentarea si organizarea datelor. Parametri critici si influenta acestora.
L2) Clasificatoare ELM si SVM, evaluarea si optimizarea performantei
Radu DOGARU, februarie 2020

Pasul 3: Utilizează formele rectangulare detectate în pasul precedent pentru a determina, pentru
fiecare caracter, 4 variabile (poziţiile pe orizontală şi verticală respectiv lăţimea şi înălţimea caracterului)
care permit decuparea din imaginea binarizata obţinută la pasul 1 pixelii corespunzând caracterului.
Pasul 4: Pe baza listei generate în Pasul 3 şi a imaginii binarizate, se calculează cu un algoritm
simplu vectorii de trăsături pentru fiecare caracter descoperit în imagine şi li se ataşează eticheta
corespunzătoare provenită din din fişierul etichete.txt. În acest pas este necesară optimizarea
parametrilor (h,l) care reprezintă numărul de subdiviziuni (câmpurile receptive locale = Local Receptive
Fields) dintr-un caracter. Optimizarea acestei perechi permite obţinerea unei acurateţi maxime în etapa
de antrenare a clasificatorilor. Extractorul de trăsături utilizat aici este computaţional mult mai simplu
decât un strat convolutional, totuşi aşa cum se va observa în derularea experimentelor, conduce la
acurateţi foarte bune. Pasul 4 produce două fişiere _train şi _test care permit optimizarea şi antrenarea
unui clasificator (se va alege structura cea mai convenabilă pentru integrare în platformă selectată pentru
aplicaţie). Detaliile privind clasificatori şi optimizarea acestora vor fi discutate în Lucrarea 2.

Desfăşurarea lucrării: Figura 1 prezintă schematic fluxul de procesare. Acesta este implementat cu
noetbook-ul de la adresa precizata mai jos. Parcurgeţi paşii corespunzători şi încercaţi să răspundeţi la
întrebări.
Observaţie: se rulează o singură dată celulele care definesc funcţii şi de câte ori este nevoie (de
exemplu pentru schimbări de parametri, fişiere de prelucrat etc.) celulele care implementează paşii din
fluxul de prelucrare prin apelul funcţiilor definite.

Notebook utilizat - http://atm.neuro.pub.ro/radu_d/html/09_10/ici2009/col-


lab/l1_ici_char_recogn_4.ipynb (se salvează local şi apoi se încarcă cu “upload” în Google COLAB).
Acelaşi notebook se va utiliza şi în lucrarea 2. În interior există o serie de explicaţii suplimentare.

Fig.1 Fluxul de procesare pentru construirea seturilor de date de antrenament şi test

2
Laborator ICI / ETTI Bucuresti / Program studii INF (an IVA)
Lucrarile L1 si L2 - Suport software pentru un senzor inteligent integrat:
L1) Achizitia, segmentarea si organizarea datelor. Parametri critici si influenta acestora.
L2) Clasificatoare ELM si SVM, evaluarea si optimizarea performantei
Radu DOGARU, februarie 2020

L2) Clasificatoare ELM şi SVM, evaluarea şi optimizarea performanţei

În figura 2 este prezentată utilizarea (se va discuta în detaliu în lucrarea 2) bazelor de date
obţinute în paşii anteriori, pentru identificarea unor modele optime de clasificatoare. Codul asociat în
Python se regăseşte în acelaşi notebook care s-a utilizat şi în lucrarea 1. Pentru aplicaţii integrate în
platforme cu constrângeri (resources constrained) în afară obţinerii unei acurateţi cât mai ridicate este
important să găsim acea soluţie care conduce la o complexitate minimă de implementare (sau adaptată
tehnologiei), o memorie alocată cât mai redusă (implicit un număr cât mai mic de parametri şi eventual
cuantizarea acestora pe un număr cât mai mic de biţi) dar şi o latență (latency = timp de răspuns la
stimul) cât mai redusă (deoarece multe sisteme cu constrângeri utilizează frecvențe de ceas mici şi prin
urmare dacă sistemul are o complexitate redusă şi o latență mică, poate implementa în timp util funcţii
de recunoaştere). În lucrarea de laborator latența este evaluată pe platforma CPU în care rulează
notebook-ul. Se poate aproxima un timp de 10-20 ori mai mare pentru o implementare similară (aceleaşi
module Python) dar pe o platformă “low-power” de tipul Raspberry-Pi.

Fig.2 Construirea unor clasificatori optimi pentru integrarea în senzorul inteligent capabil să citească cifre scrise de mână.

Clasificatorul ELM

Clasificatorul ELM [3] este implementat aici cu un cod preluat din [4] şi care a fost în mod
special optimizat pentru aplicaţii integrate. În aces sens s-au prevăzut funcţii de activare « prietenoase
HW » pentru neuronii de pe stratul ascuns. De exemplu, în raport cu funcţia binecunoscută y=tanh(x)
(tip=0 în implementarea Python), funcţia y=linsat(x)= x  1  x  1 are avantajul că nu necesită calculul
exponenţialelor (dificil de realizat în hardware, de exemplu în platforme FPGA) şi în general se reduce
la operaţii aritmetice simple. După cum puteţi constata în experimente (şi din [4]) înlocuirea nu produce
efecte sesizabile (degradări) în performanţa clasificatorului. Mai mult, sunt incluse funcţii noi ( y  x -
tip=3 în implementare) care conduc la performante foarte bune cu un efort computaţional minim. Prin
3
Laborator ICI / ETTI Bucuresti / Program studii INF (an IVA)
Lucrarile L1 si L2 - Suport software pentru un senzor inteligent integrat:
L1) Achizitia, segmentarea si organizarea datelor. Parametri critici si influenta acestora.
L2) Clasificatoare ELM si SVM, evaluarea si optimizarea performantei
Radu DOGARU, februarie 2020

argumentele nb_în şi nb_ouţ se pot cuantiza parametrii reţelei neuronale ELM (este de fapt un
perceptron cu un strat ascums) astfel încât să fie reprezentaţi pe un număr mic de biţi. S-a constatat [4]
că alegerea nb_în=2 (2 biţi cuantizare parametri strat ascuns – ponderile au numai valorile -1,0 sau 1) şi
nb_ouţ=8 nu conduce la sacrificarea acurateţii, în schimb conduce la simplificări benefice, mai ales dacă
sistemul se integrează în hardware (de ex. FPGA). Practic, eliminiarea operatorilor de înmulţire pe
primul strat (înmulţirea cu -1, 0 sau 1 nu necesită operator de înmulţire) reduce în mod semnificativ
cantitatea de resurse alocate şi implicit puterea consumată.
Sistemele ELM sunt reţele multinivel (pot fi construite şi structuri “deep” de tip convolutional,
după cum vom vedea în Lucrarea 5) în care optimizarea parametrilor (antrenarea) se face doar pentru
stratul de ieşire iar acolo se utilizează o metodă de algebră liniara (Moore-Penrose) care corespune unei
singure epoci de antrenare în regim “batch” (pachet de date) cu dimensiune maximă. Prin urmare
antrenarea este foarte rapidă, de aici numele “extreme learning”. Cum se realizează antrenarea
parametrilor din straturile anterioare ? Răspunsul este aparent şocant, dar sistemele funcţionează: pur şi
simplu acei parametri sunt generaţi în mod aleatoriu. Acest mod de abordare da posibilitatea definirii în
mod foarte flexibil şi deci adaptat la diferite tehnologii de integrare, a straturilor de neuroni ale unui
sistem ELM.
Utilizarea generatoarelor de numere aleatoare conduce însă şi la un dezavantaj al sistemelor
ELM şi anume necesitatea de a reitera antrenarea ELM în mai multe încercări (trials) în căutarea
modelului cu cea mai bună performanţă. De regulă, 10-100 astfel de încercări sunt în general suficiente
(doar că timpul de antrenare extrem de redus se înmulţeşte de fapt cu acest factor). Amintim aici ca
“model” este structura unei reţele antrenate care apoi poate fi folosită în operaţii de recunoaştere pentru
date noi aplicate la intrare.
Optimizarea modelului ELM: Calitatea antrenării stratului ascuns este controlată de C =
coeficient de regularizare, implicit se alege C=1, prin urmare acest parametru va trebui considerat în
operaţia de identificare a modelului optim ELM. Un alt parametru important este număr_neuroni unde
este de dorit să identificăm experimental acea valoare intermediară (una prea mică conduce la “under-
fitting” iar una prea mare la “over-fitting”) care asigură cea mai bună performata pe setul de test. În
afara celor de mai sus, se poate acţiona asupra tipului de funcţie neliniară deşi tip=3 asigura în cele mai
multe cazuri performanța optimă [4]. În notebook este implementată o buclă cu mai multe încercări
(trials) care permite identificarea celui mai bun model. Principalele sale performante şi anume
(acurateţea, numărul de neuroni, latentă) sunt afişate şi se vor consemna în tabelul de mai jos.

Clasificatorul SVM

Clasificatorul SVM5 este un model clasic de clasificator utilizat intens în machine-learning.


Există numeroase implementări software, în această lucrare se utilizează implementarea din librăria
SCIKIT-LEARN. Există similitudini şi diferenţe semnificative faţă de ELM: Ca şi la ELM antrenarea se
face numai în stratul de ieşire (perceptron liniar care operează într-un spaţiu expandat de nucleele
neliniare) cu un algoritm care include un coeficient de regularizare C. Acesta poate influenţa calitatea
antrenării şi prin urmare este bine să fie variat în etapa de antrenare. Funcţionalitatea SVM se obţine
prin utilizarea unui număr de nuclee neliniare (există şi varianta cu nucleu liniar – SVM liniar – cel mai
simplu model). Fiecare funcţie nucleu are ca parametru vectorul suport care spre deosebire de ELM nu
este generat aleatoriu ci este “selectat” în cadrul procesului de antrenare dintre vectorii care compun
setul de antrenament. Prin urmare la SVM nu există caracterul aleatoriu şi rezultatul se obţine din prima
încercare (operaţia de antrenare). Există o teorie statistică foarte bine pusă la punct pentru SVM (ele au
fost dezvoltate de matematicianul Vapnik în [5] care are peste 80000 citări), acesta fiind principalul

5
http://imag.pub.ro/ro/cursuri/ISIA/curs/SVM.pdf
4
Laborator ICI / ETTI Bucuresti / Program studii INF (an IVA)
Lucrarile L1 si L2 - Suport software pentru un senzor inteligent integrat:
L1) Achizitia, segmentarea si organizarea datelor. Parametri critici si influenta acestora.
L2) Clasificatoare ELM si SVM, evaluarea si optimizarea performantei
Radu DOGARU, februarie 2020

argument al adoptării largi. Totuşi, pentru realizări integrate SVM nu este neapărat cea mai bună soluţie.
De exemplu, utilizarea nucleelor “rbf” (Gaussiene) care este tipică la aceste sisteme, necesită
implementarea unor funcţii care conţin operatori de exponentiere. Recent, în [6] am propus o alternativă
denumită (S)FSVC în care selecţia vectorilor suport se face printr-o metodă simplă iar stratul de ieşire
are coeficienţi binari şi nu necesită antrenare. De asemenea, se pot utiliza functii nucleu triunghiulare,
mult mai convenabile in platforme de integrare cu constrangeri. Rezultatele sunt comparabile cu SVM
dar cu avantaje pentru aplicaţiile care necesită integrare în platforme specializate. În locul numărului de
neuroni pe stratul ascuns, la SVM se discuta de numărul de vectori suport sv , în rest, ca şi la ELM
interesează acuratea şi latența sistemului. Spre deosebire de ELM, numărul de vectori suport nu trebuie
predefinit sistemul de antrenare SVM “descoperă singur” numărul de vectori suport (nu pot fi mai mulţi
decât numărul de eşantioane din setul de antrenare). Totuşi, în cazul nucleelor “rbf” trebuie optimizat un
parametru gamma (care influenţează “raza” funcţiei cu baza radială de tip Gaussian). Acesta
influenţează semnificativ numărul de vectori suport.

Optimizarea modelului SVM: În notebook este implementată o buclă cu căutarea pe doi


parametri semnificativi ai SVM şi anume C (coeficientul de regularizare) respectiv “gamma” (numai
dacă se alege nucleu de tip RBF). Bucla permite identificarea celui mai bun model. Principalele sale
performante şi anume (acurateţea, numărul de vectori suport, latentă) sunt afişate şi se vor consemna în
tabelul de mai jos.

Desfăşurarea lucrării:
Parcurgeţi din nou paşii 1-4 din lucrarea 1. În pasul 4 salvaţi rezultatele pentru (h,l)=(4,3) într-un
set de fişiere (de exemplu, cu numele ‘h02’)
Utilizând celulele care implementează ELM şi SVM experimentaţi utilizarea acestor
clasificatoare.
Obiectivul lucrării este de a identifica cea mai convenabilă soluţie (acurateţe maximă,
complexitate minimă) pentru implementarea senzorului inteligent. Trebuiesc luaţi în considerare şi
parametrii: prag (din pasul 1) respectiv (h,l) din pasul 4 deoarece şi aceştia influenţează performanţa În
aces sens se va adopta următoarea strategie:
i) Se rulează pasul 1 cu prag=60 (coloanele cu header de culoare verde) şi apoi paşii 2 şi 3
ii) Se rulează pasul 4 cu (h,l) dat de conţinutul coloanei din tabel (schema de notare este
hA_BC unde A = prag, B=h şi C=l).
iii) Se rulează buclele care optimizează clasificatorii ELM, SVM-rbf şi SVM-liniar notând
rezultatele în tabel. Se revine la ii) cu nouă combinaţie (h,l).
iv) După epuizarea cominaţiilor (h,l) se trece la pasul i) cu pragul următor (70,80) şi se reia
procesul de mai sus. Vă puteţi distribui sarcinile pentru a completa mai repede tabelul (de
exemplu fiecare echipă se concentrează pe o valoare prag diferită).

In tabel sunt deja prezente o serie de date ca exemplu de completare, eventual pentru cazurile completate
se va incerca obtinerea aceleiasi performante cu un numar minim de resurse.

5
Laborator ICI / ETTI Bucuresti / Program studii INF (an IVA)
Lucrarile L1 si L2 - Suport software pentru un senzor inteligent integrat:
L1) Achizitia, segmentarea si organizarea datelor. Parametri critici si influenta acestora.
L2) Clasificatoare ELM si SVM, evaluarea si optimizarea performantei
Radu DOGARU, februarie 2020

Fişier h60_ h60_ h60_ h60_ h70_ h70_ h70_ h70_ h80_ h80_ h80_ h80_
32 33 43 54 32 33 43 54 32 33 43 54
Dim. vector într. 7 10 13 20 7 10 13 20 7 10 13 20
Acc (%) ELM 98.14 100
Neuroni 80 40
(nh)
Latentă 0.0014 0.0011
(ms)
Acc (%) SVM 96.29 100
v. suport Gauss 74 71
(nh)
Latentă 0.012 0.013
(ms)
Acc (%) SVM 94.44 100
v. suport lin 84 69
(nh)
Latentă 0.018 0.0085
(ms)

Identificaţi soluţia optimă din tabel. De notat că rularea fiind în cloud pe o resursă CPU partajata
la mai mulţi utilizatori, timpii obţinuţi au o valoare cu toleranta ridicată (totuşi la ordine de mărime
diferenţa se poate stabili o ierarhie). De asemenea, la valori egale ale acurateţii, complexitatea minimă
este dată de soluţia din coloana mai din stânga (pentru aceeaşi culoare a capului de tabel). Aceasta
deoarece dimensiunea vectorului de intrare este 1+hl. Pentru un anumit număr nh de neuroni (sau
vectori suport) complexitatea implementari stratului ascuns este data de dimensiunea vectorilor de
intrare multiplicata cu numarul de neuroni. De observat ca, marind dimensiunea spatiului de intrare se
poate reduce numarul de neuroni pe stratul ascuns, deci pe global complexitatea scade.

Intrebari (L1):

Q1: In pasul 2 (simularea retelei celular neuronale) ce se intampla daca alegem prea putine iteratii ?
dar daca alegem prea multe ?
Sugestie: experimentati pasul 2 cu 30, 60 si 100 de iteratii. Concluzia rezulta din experiment.

Q2: Cum poate influenta negativ alegerea parametrului prag din pasul 1 procesul de construire a bazei de
date pt. rec. scris mana ?
Sugestie: Utilizati prag = 50 si urmariti aspectul imaginii dupa rularea pasului 2 (60 iteratii); apoi prag =
90 si urmariti vizual dupa pasul 2 concatenarea unor caractere iar apoi dupa pasul 3 faptul ca nu sunt
143 de caractere identificate in imagine ci mai putine.

Q3: In succesiunea de preprocesare, care sunt parametrii critici (de care depinde performanta) si enuntati
pe scurt influenta lor.
Sugestie: urmariti si experimentele de mai sus.

6
Laborator ICI / ETTI Bucuresti / Program studii INF (an IVA)
Lucrarile L1 si L2 - Suport software pentru un senzor inteligent integrat:
L1) Achizitia, segmentarea si organizarea datelor. Parametri critici si influenta acestora.
L2) Clasificatoare ELM si SVM, evaluarea si optimizarea performantei
Radu DOGARU, februarie 2020

Intrebari (L2):

Q1: Care este principala problema (dezavantaj) in cazul ELM ? Dar avantajele (in special din punct de
vedere al integrarii)
Sugestie: Dezavantajul tine de utilizarea generatorului de numere aleatoare, avantajele tin de
posibilitatea cuantizarii si a utilizarii unor functii prietenoase.

Q2: De ce nu este favorabil SVM pentru aplicatii integrate hardware ?


Sugestie: Vezi raspunsurile de mai sus si considerati cazul nucelului Gaussian (RBF). Urmariti latenta
(timpul de reactie la un stimul aplicat intrarii) pentru toate tipurile de clasificatoare.

Q3: Care este performanta optima si in ce conditii se obtine ?


Sugestie: efectuati experimentele si completati tabelul. Puteti eventual utiliza si alte perech (h,l).

Referinţe:

[1] R. Dogaru, I. Dogaru, M. Glesner, A smart sensor architecture based on emergent computation în an array of outer-totalistic cells , în
Proceedings of SPIE Volume: 5839 Bioengineered and Bioinspired Systems II, Editor(s): Ricardo A. Carmona, Gustavo Liñán-Cembrano, pp.
254-263, 2005.

[2] R. Dogaru and I. Dogaru, "An efficient local receptive field feature extractor for handwriting recognition," 2016 Internaţional Conference on
Communications (COMM), Bucharest, 2016, pp. 105-108.

[3] G.-B. Huang, What are extreme learning machines? filling the gap between frank rosenblatts dream and john von neumanns puzzle,
Cognitive Computation 7 (3) (2015) 263–278.

[4] R. Dogaru and I. Dogaru, "Optimized Extreme Learning Machine for Big Dată Applications Using Python," 2018 Internaţional Conference
on Communications (COMM), Bucharest, 2018, pp. 189-192.

[5] V Vapnik, The Nature of Statistical Learning Theory, 1995.

[6] R. Dogaru and I. Dogaru, "Optimized Super Fast Support Vector Classifiers Using Python and Acceleration of RBF Computations," 2018
Internaţional Conference on Communications (COMM), Bucharest, 2018, pp. 193-196.

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