Segmentare semantica asupra ansamblelor de puncte [612551]

Segmentare semantica asupra ansamblelor de puncte
3D achizit ,ionate cu un senzor LiDAR
4 iunie 2020

Cuprins
1 Introducere 5
1.1 Idee general ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Obiectiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Încadrare în domeniu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.1 Vedere Artificial ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Inteligent ,a Artificial ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.3 Înv ˘at,area Automat ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.3.1 Înv ˘at,area supervizat ˘a . . . . . . . . . . . . . . . . . . . . . 7
1.3.3.2 Înv ˘at,area f ˘ar˘a supervizare . . . . . . . . . . . . . . . . . . . 7
1.3.3.3 Înv ˘at,area prin consolidare . . . . . . . . . . . . . . . . . . . 8
1.3.4 Înv ˘at,area Profund ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2 Fundamente teoretice 11
2.1 Ret ,ele neuronale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Mediul de dezvoltare 13
3.1 Limbaj de programare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Resurse software s ,i hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 Instalare s ,i utilizare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Implementare 15
4.1 LiDAR si ansamblu de puncte 3D . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2 Set de date s ,i preprocesare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.3 Arhitectura general ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3.1 Extragerea caracteristicilor punctelor . . . . . . . . . . . . . . . . . . 17
4.3.2 Modulul de scalare în jos . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3.3 Modulul de extragere al caracteristicilor generale . . . . . . . . . . . . 19
4.3.4 Modulul de scalare în sus . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.4 Funct ,ie de activare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5 Crearea etichetelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.5.1 Codificarea one-hot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.5.2 Masca s ,i informat ,ia despre distant ,˘a . . . . . . . . . . . . . . . . . . . 23
4.6 Funct ,ia de cost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.7 Metrici de performant ,˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.8 Antrenare s ,i hiper-parametrii . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.9 Modele intermediare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5 Experimente s ,i rezultate 27
5.1 Ceva pe aici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3

4 Cuprins
6 Concluzii 29

Capitolul 1
Introducere
1.1 Idee general ˘a
Oamenilor le este în general us ,or s˘a recunoasc ˘a ce se afl ˘a într-o imagine doar prin a privi-o
pentru o scurt ˘a perioad ˘a de timp. Mai mult , acest lucru se petrece ca o react ,ie pe care noi
nu o mai cons ,tientiz ˘am. Suntem astfel capabili de o analiz ˘a foarte complex ˘a a unei imagini,
într-un timp foarte scurt. Acest lucru se datoreaz ˘a bineînt ,eles sistemului vizual uman, adic ˘a
ochiului, creierului s ,i nervilor, organe care se ocup ˘a cu achizit ,ia imaginii, respectiv procesarea
acesteia. Des ,i la prima vedere pare un proces simplu s ,i natural, în spatele acestuia se ascunde
un mecanism foarte complex, care funct ,ioneaz ˘a aproape tot timpul perfect. Cu toate acestea,
când vine vorba despre aparate, sisteme sau dispozitive capabile de a procesa un nivel ridicat de
informat ,ie, ideea de recunoas ,tere s ,i analiz ˘a a unei capturi devine mult mai complicat ˘a.
În ultimele decenii, s-au f ˘acut numeroase încerc ˘ari de a aduce o îmbun ˘at˘at,ire sistemelor
desemnate cu aceast ˘a sarcin ˘a, pentru a reduce diferent ,a dintre capacitatea uman ˘a s,i capacitatea
unui calculator de a recunoas ,te s ,i înt ,elege diferite imagini. În zilele de ast ˘azi, ne apropiem cu
pas ,i m˘arunt ,i de acest obiectiv, datorit ˘a faptului c ˘a dispunem de putere de calcul din ce în ce
mai ridicat ˘a, adic ˘a de resurse hardware tot mai avansate, precum s ,i de un num ˘ar mult mai mare
de date, comparativ cu anii precedent ,i. Spre exemplu, informat ,iile de pe internet, site-uri de
socializare, sau de streaming, sau diferite platforme sunt achizit ,ionate s ,i stocate mult mai us ,or,
în special cu ajutorul serverelor accesate prin internet (eng: cloud). Puterea computat ,ional ˘a s,i
dimensiunea setului de date reprezint ˘a la momentul de fat ,˘a cele dou ˘a lucruri esent ,iale din spa-
tele îmbun ˘at˘at,irii algoritmilor, sau a software-ului necesar automatiz ˘arii procesului de analiz ˘a
s,i înt ,elegere a imaginilor de c ˘atre un calculator.
1.2 Obiectiv
Obiectivul acestui proiect este implementarea unui algoritm de înt ,elegere a imaginilor, destinat
unui anumit sistem din lumea reala, mai exact sistemul hardware din cadrul unei mas ,ini . Se
pleac ˘a de la achizit ,ia s ,i preprocesarea setului de date folosit, apoi se trece la implementarea
propriu zis ˘a a algoritmului, precum s ,i la vizualizarea, interpretarea s ,i formarea unor concluzii
pe baza rezultatelor obt ,inute. S-au studiat numeroase articole scrise de cercet ˘atorii din domeniu,
pentru a înt ,elege s ,i a dispune de cele mai noi tehnici de implementare, în vederea proiect ˘arii
unui algoritm cât mai performant.
Folosirea unor tehnici de analiza a imaginilor în cadrul unui autovehicul, deci capacitatea
unei mas ,ini de a achizit ,iona, prelucra, înt ,elege s ,i chiar act ,iona pe baza informat ,iei g˘asite într-o
5

6 1. Introducere
imagine digital ˘a sau un video, reprezint ˘a unul din cele mai importante subiecte la ora actual ˘a,
atât în domeniul ingineresc cat s ,i în alte domenii de mare interes. Subiectul acestui proiect îl
reprezinta deci, vehiculele autonome s ,i conducerea autonom ˘a. În acest proiect s-au cercetat s ,i
experimentat diferite arhitecturi ale algoritmilor, în încercarea de a îmbun ˘at˘at,ii performant ,ele
s,i rezultatele acestora. Concluziile trase pot aduce o posibil ˘a contribut ,ie la eficientizarea sau
îmbun ˘at˘at,irea algoritmilor prin modul în care aces ,tia au fost proiectat ,i.
Înainte de a trece la prezentarea algoritmului propriu-zis, se va încadra subiectul într-o anu-
mit˘a ramur ˘a a Tehnologiei Informat ,iei, se vor prezenta instrumentele software s ,i hardware care
au fost folosite pentru implementarea algoritmului s ,i de asemenea se vor introduce not ,iuni teo-
retice de baz ˘a folosite atât pentru modul general de proiectare a acestor algoritmi, cât s ,i aspecte
specifice proiectului.
1.3 Încadrare în domeniu
1.3.1 Vedere Artificial ˘a
În domeniul Tehnologiei Informat ,iei, ramura care se ocup ˘a cu modul în care calculatoarele pot
achizit ,iona, prelucra, analiza s ,i dobândi o înt ,elegere de nivel înalt a imaginilor digitale sau a
video-urilor se numes ,te Vedere Artificiala (eng: Computer Vision ). Ca s ,i disciplin ˘a s,tiint ,ific˘a
, aceasta înglobeaz ˘a modul în care sistemele artificiale extrag informat ,ia din imagini. Primele
experimente în Vederea Artificial ˘a au fost f ˘acute în anii 1950, iar prin anii 1970 aceasta s-a
folosit pentru prima oar ˘a în scop comercial pentru a face distinct ,ia între scrisul de mân ˘a s,i cel
tip˘arit. Progresul s ,tiint ,ific din zilele de ast ˘azi în acest domeniu este unul uimitor s ,i a dus la
rezultate foarte bune, astfel încât unele sisteme sunt mai precise s ,i mai rapide în a react ,iona la
o imagine de intrare , decât fiint ,a umana.
1.3.2 Inteligent ,a Artificial ˘a
O alt ˘a ramur ˘a a Informaticii, înrudit ˘a cu Vederea Artificial ˘a este Inteligent ,a Artificial ˘a (IA).
Unii specialis ,ti clasific ˘a Vederea Artificial ˘a ca s ,i o sub-ramur ˘a a Inteligent ,ei Artificiale, iar
alt,ii le clasifica pe cele doua ca fiind doar similare, împ ˘art˘as,ind anumite teme s ,i act ,ionând în
aceleas ,i direct ,ii. De-a lungul istoriei s-au dat multe definit ,ii pentru IA, în funct ,ie de percept ,ia s ,i
înt,elegerea fiec ˘arui cercet ˘ator asupra acestui domeniu, dat fiind faptul c ˘a este un domeniu foarte
vast. Într-o idee simpl ˘a, putem defini IA ca fiind ramura care implic ˘a folosirea calculatoarelor
cu scopul de a realiza sarcini care în mod normal ar necesita inteligent ,a uman ˘a. Acest lucru
presupune nu doar algoritmi care sunt capabili s ˘a analizeze, sa înt ,eleag ˘a s,i s˘a act ,ioneze în anu-
mite situat ,ii, dar s ,i capabili s ˘a învet ,e din date noi s ,i s˘a se îmbun ˘at˘at,easc˘a de-a lungul timpului.
Diferent ,a între programarea normal ˘a s,i IA este c ˘a programele obis ,nuite definesc toate scenariile
posibile s ,i opereaz ˘a în cadrul acestora, pe când IA „antreneaz ˘a” un program pentru o sarcin ˘a
specific ˘a, permit ,ându-i s ˘a se îmbun ˘at˘at,easc˘a s,i s˘a exploreze noi orizonturi. Câteva dintre cele
mai importante aplicat ,ii ale IA în lumea reala sunt:
1. Relat ,ii Client ,i
2. Social Media
3. Medicin ˘a
4. Domeniul Financiar

1. Introducere 7
Figura 1.1: Încadrare în domeniu
5. Marketing
6. Conducerea Autonom ˘a
Proiectul are ca t ,int˘a, ultimul punct s ,i anume Conducerea Autonom ˘a.
1.3.3 Înv ˘at,area Automat ˘a
Un subdomeniu al Inteligent ,ei Artificiale s ,i poate s ,i unul dintre cele mai importante îl repre-
zint˘a Înv ˘at,area Automat ˘a (eng: Machine Learning). Acesta este definit de folosirea statisticii s ,i
diferit ,ilor algoritmi matematici, astfel încât calculatoarele s ˘a învet ,e lucruri noi din date, f ˘ar˘a a
fi nevoie de programare explicit ˘a, îmbun ˘at˘at,irea obt ,inându-se din experient ,˘a. În funct ,ie de ceea
ce ne dorim s ˘a realiz ˘am, exista diferite moduri prin care un calculator poate înv ˘at,a din date.
Aceste moduri pot fi clasificate în trei sub-categorii:
1.3.3.1 Înv ˘at,area supervizat ˘a
Algoritmii din categoria înv ˘at,˘arii supervizate folosesc date etichetate deja s ,i creeaz ˘a un model
care poate face predict ,ii având noi date la dispozit ,ie. Aces ,ti algoritmi pot realiza o clasifi-
care sau o regresie. Într-o problema de clasificare, avem un set cu date etichetate de antrenare
(precum poze cu numele lor). Modelul va fi antrenat (optimizat) pe aceste date pentru ca mai
apoi s ˘a fie capabil s ˘a clasifice noi poze neetichetate dintr-un set de date de test, disjunct cu
setul de antrenare, însa din aceeas ,i distribut ,ie. Într-o problem ˘a de regresie, se încearc ˘a deter-
minarea unei relat ,ii între mai multe variabile diferite, spre exemplu predict ,ia cotat ,iilor bursiere,
bazate pe mis ,c˘arile precedente ale pret ,urilor.Acesta va fi tipul de înv ˘at,are folosit s ,i în proiect,
prezentându-se sub forma unei probleme de clasificare la nivel de pixel dintr-o imagine, proces
denumit segmentare semantic ˘a.
1.3.3.2 Înv ˘at,area f ˘ar˘a supervizare
Înv˘at,area f ˘ar˘a supervizare are loc atunci când avem de-a face cu date care nu sunt etichetate.
T,inta este de a g ˘asi diferite tipare în datele de intrare s ,i de a structura datele astfel încât sa
obt ,inem o semnificat ,ie, un sens. Dou ˘a dintre formele de înv ˘at,are f ˘ar˘a supervizare sunt cluste-
rizarea si reducerea dimensionalit ˘at,ii. Clusterizarea presupune gruparea datelor asem ˘an˘atoare,
astfel c ˘a datele din acelas ,i grup vor avea caracteristici comune, îns ˘a doua grupuri diferite de date
vor avea propriet ˘at,i neasem ˘an˘atoare. Reducerea dimensionalit ˘at,ii presupune compresia datelor

8 1. Introducere
prin eliminarea variabilelor aleatoare, luând în calcul doar cele mai importante, p ˘astrând astfel
o structur ˘a s,i un înt ,eles al datelor.
1.3.3.3 Înv ˘at,area prin consolidare
Înv˘at,area prin consolidare presupune un sistem bazat pe recompens ˘a s,i încercare-eroare, pen-
tru a maximiza rezultatul pe termen lung. Aces ,ti algoritmi se folosesc de as ,a numit ,ii agent ,i
software, care fac diferite act ,iuni într-un mediu, pentru a maximiza recompensa. Aces ,ti algo-
ritmi se utilizeaz ˘a în general atunci când modele exacte nu sunt realizabile, cel mai frecvent
folosindu-se în jocurile pe calculator.
1.3.4 Înv ˘at,area Profund ˘a
Înv˘at,area Automat ˘a este sub-clasat ˘a de Înv ˘at,area Profund ˘a (eng: Deep Learning) – vezi Figura
1.1. Aceasta metoda se bazeaz ˘a pe ret ,elele neuronale artificiale adânci. Ret ,elele neuronale
artificiale (RNA) sunt formate în esent ,˘a din intr ˘ari, unit ˘at,i computat ,ionale denumite neuroni
(grupat ,i la rândul lor în starturi), conexiunile dintre aces ,tia reprezentate de ponderi, s ,i ies ,iri.
Aceste RNA sunt inspirate de procesarea informat ,iei la nivelul sistemului biologic, lucru care
a împins cercet ˘atorii s ˘a fie tot mai motivat ,i în cres ,terea capacit ˘at,ii de înt ,elegere a unei imagini
de c˘atre un calculator comparativ cu un om. Cele mai importante s ,i folosite astfel de tipuri de
algoritmi sunt Ret ,elele Neuronale Dense, Ret ,elele Recurente s ,i Ret ,elele Convolut ,ionale. Cele
din urm ˘a reprezint ˘a modul principal cu ajutorul c ˘aruia vom realiza implementarea proiectului
s,i reprezinta totodat ˘a cele mai utilizate ret ,ele folosite în Vederea Artificial ˘a. Spre deosebire
de ret ,elele convolut ,ionale, cele recurente sunt folosite în principal pentru procesarea limbajului
natural, o alt ˘a ramur ˘a în plin ˘a ascensiune a Înv ˘at,˘arii Profunde. Înv ˘at,area Profund ˘a se deosebes ,te
de cea Automat ˘a s,i prin faptul c ˘a cea din urm ˘a necesit ˘a date structurate (într-un format ordonat,
precum Excel, SQL) comparativ cu datele nestructurate ( precum text sau imagini ) folosite de
Înv˘at,area Profund ˘a.
Principalele moduri în care un calculator poate înt ,elege o captur ˘a, în contextul Înv ˘at,˘arii
Profunde s ,i al Vederii Artificiale, sunt:
1.Clasificarea imaginilor
Presupunem c ˘a avem un singur obiect în imagine. Pe baza imaginilor de intrare s ,i a
etichetelor, dorim ca modelul s ˘a învet ,e relat ,ia dintre acestea, pentru a putea clasifica o
nou˘a imagine din setul de test.
2.Clasificare s ,i localizare
Fat ,˘a de clasificarea simpl ˘a, în acest proces avem nevoie de localizarea obiectului în ima-
gine, lucru f ˘acut prin încadrarea obiectului într-un chenar. Pentru acest tip de problem ˘a
avem nevoie de etichete în plus care arat ˘a coordonatele chenarului pe obiectul din ima-
gine. De multe ori procesul de etichetare, mai ales al locat ,iei obiectelor în imagine poate
fi destul de costisitor, atât ca timp cât s ,i ca resurse. Cu toate acestea o etichetare corect ˘a
este trivial ˘a s,i absolut necesar ˘a pentru o funct ,ionare bun ˘a a modelului. La ora actual ˘a
exist ˘a multiple metode de automatizare a acestui proces. Cu ajutorul procesului de re-
gresie, modelul va fi capabil sa învet ,e s,i locat ,ia obiectului din imagine. Astfel va prezice
coordonatele chenarului precum s ,i clasa obiectului din imagine.
3.Detect ,ia obiectelor
Procesul de detect ,ie a obiectelor extinde clasificarea s ,i localizarea prin faptul c ˘a pot ap ˘a-

1. Introducere 9
rea mai multe obiecte în aceeas ,i imagine, modelul fiind capabil s ˘a le detecteze s ,i clasifice
pe toate.
4.Segmentarea semantic ˘a
Presupune observarea unei imagini la nivel de pixel s ,i implic ˘a doar procesul de clasificare.
Astfel fiecare pixel al unei imagini va corespunde unei clase. Etichetele vor fi s ,i ele
reprezentate la nivel de pixel. S ,i în cadrul segment ˘arii semantice , procesul de etichetare
este destul de costisitor. Modelul va fi capabil s ˘a prezic ˘a clasa fiec ˘arui pixel.
5.Segmentarea instant ,elor din imagine
Segmentarea instant ,elor extinde segmentarea semantic ˘a prin faptul c ˘a în imagine pot ap ˘a-
rea mai multe instant ,e ale aceleas ,i clase. Astfel calculatorul va trebui s ˘a clasifice fiecare
instant ,˘a diferit ˘a a unei clase, separat. Aceast ˘a problem ˘a are s ,i cel mai dificil grad de
rezolvare s ,i cel mai complicat proces de etichetare a datelor, datorit ˘a lucrului la nivel de
pixel.
Tema acestui proiect este segmentarea semantic ˘a.

10 1. Introducere

Capitolul 2
Fundamente teoretice
2.1 Ret ,ele neuronale
Ret ,elele neuronale sunt o form ˘a de înv ˘at,are automat ˘a. Unit ˘at,ile fundamentale ale unei ret ,ele
se numesc noduri, care sunt adesea asem ˘anate cu neuronii creierului uman. O ret ,ea neuronal ˘a
învat ,˘a prin antrenamente care duc la formarea conexiunilor între noduri.
Din punct de vedere structural, ret ,elele neuronale sunt formate din mai multe straturi care
proceseaz ˘a date de intrare. Fiecare strat este reprezentat de o transformare non-liniar ˘a care
conduce la înv ˘at,area unor caracteristici care apart ,in de un anumit nivel de abstractizare.
Cel mai simplu exemplu de strat al unei ret ,ele neuronale este stratul dens. Acesta are ca scop
transformarea datelor de intrare printr-o funct ,ie non-liniar ˘a parametrizat ˘a, dat ˘a de urm ˘atoarea
formul ˘a:
h=A(Wx+b)
În cazul de mai sus, Weste o pondere de m ˘arimenhnxs,ibeste un bias de m ˘arimenh,
undexeste dimensiunea datelor de intrare, iar heste dimensiunea datelor de ies ,ire. Funct ,ia
Ase numes ,te funct ,ie de activare, s ,i este elementul care ofer ˘a caracteristica de non-liniaritate
stratului. Aceast ˘a funct ,ie este aleas ˘a în funct ,ie de sarcina stratului. În funct ,ie de problema pe
care o rezolv ˘a, o ret ,ea poate avea un numar arbitrar de straturi înl ˘ant ,uite precum în Figura X.
Pentru ca ret ,eaua s ˘a poat ˘a înv ˘at,a, aceasta trebuie s ˘a poat ˘a face diferent ,a dintre rezultatele
corecte s ,i cele gres ,ite. În acest scop, se defines ,te funct ,ia de cost. Valorile obt ,inute pe baza
acestei funct ,ii denot ˘a diferent ,a dintre estim ˘arile f ˘acute de c ˘atre ret ,ea s ,i rezultatul as ,teptat. Un
exemplu simplu s ,i des întâlnit de funct ,ie de cost este abaterea p ˘atratic ˘a medie, care este definit ˘a
prin urm ˘atoarea formul ˘a [7]:
F=1
nX
(xix0
i)2
Odat ˘a ce funct ,ia de cost a fost aleas ˘a, ret ,eaua va înv ˘at,a încercând s ˘a îs ,i optimizeze para-
metrii în mod iterativ astfel încât s ˘a minimizeze erorile rezultate. Cea mai popular ˘a metod ˘a de
optimizare este algoritmul de backpropagation [12], bazat pe direct ,ia gradient ,ilor funct ,iei de
cost.
11

12 2. Fundamente teoretice

Capitolul 3
Mediul de dezvoltare
3.1 Limbaj de programare
Limbajul de programare folosit pentru conceperea proiectului este Python. Versiunea folosita
este 3.6.10. Python este un limbaj de programare de nivel înalt, interpretat, orientat pe obiecte.
Python suporta o multitudine de module s ,i pachete, care pot fi folosite în diferite ramuri ale pro-
gram ˘arii precum Web, Acces Baze de Date, Ret ,elistic ˘a sau Grafic ˘a. De asemenea este cel mai
utilizat limbaj în cadrul dezvolt ˘arii algoritmilor de Înv ˘at,are Profund ˘a , din mai multe motive:
1. Num ˘ar mare de libr ˘arii s ,i pachete disponibile
Folosirea unor funct ,ii predefinite din cadrul libr ˘ariilor permit utilizatorului s ˘a abstracti-
zeze implementarea de nivel sc ˘azut s ,i ofer ˘a programatorului posibilitatea de a nu concepe
o funct ,ionalitate de la baz ˘a de fiecare dat ˘a.
2. Flexibilitate
Nu este nevoie de recompilarea codului surs ˘a fiind un limbaj interpretat, astfel dezvolta-
torii pot vedea s ,i verifica rapid schimb ˘arile f ˘acute în cod. Acest limbaj poate fi combinat
us,or cu alte limbaje de programare, în special C++, în cazul Înv ˘at,˘arii Profunde.
3. Independent de platform ˘a
Python poate fi folosit s ,i rulat pe orice platform ˘a ca s ,i Linux, Windows, MacOS, Unix sau
altele. Astfel procesul de transfer de pe o platform ˘a pe alta necesit ˘a doar mici schimb ˘ari
la nivel de cod, lucru care poate salva timp s ,i bani.
3.2 Resurse software s ,i hardware
Un mediu de dezvoltare integrat (eng: IDE) reprezint ˘a o suit ˘a software care cont ,ine uneltele
necesare pentru scrierea s ,i testarea codului. În acest proiect vom folosi Pycharm, deoarece
este unul dintre cele mai populare medii de dezvoltare integrate, folosit împreun ˘a cu limbajul
Python.
V om folosi distribut ,ia gratuit ˘a pentru Python pentru calcul s ,tiint ,ific, denumita Anaconda.
Aceast ˘a unealt ˘a o vom folosi pe post de manager de medii virtuale. Folosirea mediilor virtuale
permite crearea unui mediu izolat pentru proiectele Python. Astfel fiecare versiune de proiect
va avea propriile dependint ,e, nefiind influent ,at˘a de alte versiuni. Având mai multe versiuni de
proiect cu diferite dependint ,e s,i versiuni de pachete s ,i libr ˘arii, aceast ˘a unealt ˘a a oferit mult ˘a
flexibilitate proiect ˘arii.
13

14 3. Mediul de dezvoltare
Libr˘aria care este folosit ˘a pentru implementarea ret ,elelor neuronale se numes ,te Tensor-
flow. Versiunea folosita este 1.13.1. Aceast ˘a libr ˘arie este folosita în general pentru aplicat ,ii
din Înv ˘at,area Profund ˘a, fiind s ,i cea mai utilizat ˘a la ora actual ˘a. Am ales-o pe aceasta în defa-
voarea altor libr ˘arii populare pentru implementarea ret ,elelor neuronale, precum Pytorch, Keras
sau Caffe, din mai multe motive:
• datorit ˘a documentat ,iei s ,i a comunit ˘at,ii largi de utilizatori de care se bucur ˘a
• pentru faptul c ˘a ofer ˘a o metod ˘a destul de simpl ˘a pentru antrenarea Ret ,elelor Neuro-
nale pe Unitatea de Procesare Grafic ˘a (eng: GPU), prin instalarea s ,i folosirea pachetului
tensorflow-gpu.
• datorit ˘a setului de instrumente pentru vizualizare întâlnit sub denumirea de Tensorboard,
care ajut ˘a foarte mult la observarea evolut ,iei ret ,elei dar s ,i la interpretarea rezultatelor s ,i
detect ,ia unor posibile erori în algoritm.
Algoritmii de Înv ˘at,are Profunda pot fi rulat ,i atât pe Unitatea Centrala de Procesare, cât s ,i pe
Unitatea de Procesare Grafic ˘a. Rulând algoritmii pe UPG, putem obt ,ine viteze de procesare
de 10 ori mai mari, dispunând de putere computat ,ional ˘a mult mai mare. Astfel se va folosi o
UPG de la Nvidia, s ,i anume GeForce GTX 950M. Aceasta a fost singura opt ,iune disponibil ˘a la
momentul dezvolt ˘arii proiectului. Toate experimentele f ˘acute s ,i rezultatele obt ,inute au implicat
doar aceasta plac ˘a pentru a putea compara între ele diferitele versiuni experimentale ale proiec-
tului. Bineînt ,eles, versiuni mai avansate ale UGP, precum GeForce GTX 1080 Ti sau GeForce
RTX 2080 , conduc la performante mult mai bune, în special datorit ˘a memoriei crescute s ,i a
tehnologiilor îmbun ˘at˘at,ite. Cum specificam s ,i în introducere, resursele hardware prezint ˘a prima
limitare în dezvoltarea algoritmilor de Inteligent ,˘a Artificial ˘a. Pachetele software necesare pen-
tru utilizarea UGP sunt CUDA, versiunea 10.0 s ,i CuDNN, versiunea 7.6.5. Acestea trebuie s ˘a
fie compatibile între ele s ,i totodat ˘a cu versiunea de Tensorflow.
3.3 Instalare s ,i utilizare
În urma instal ˘arii unui mediu de dezvoltare integrat s ,i a versiunii de Python corespunz ˘atoare
cerint ,elor, utilizatorul va trebuii sa îs ,i creeze un nou proiect s ,i un mediu virtual în care îs ,i va
instala toate pachetele necesare. Pentru a face acest lucru, va trebui s ˘a ruleze comanda conda
env create -f requirements.yml. În fis ,ierul requirements.yml se vor g ˘asi toate pachetele necesare
rul˘arii programului, astfel se va crea un mediu virtual cu toate cerint ,ele necesare. În continuare
vor trebui generate s ,i preg ˘atite datele de intrare, din seturile de antrenare s ,i testare, cu care
va lucra ret ,eaua. Pentru acest lucru vom genera fis ,iere binare de tipul TFRecords în care vom
stoca datele, cu ajutorul comenzii python make_tfrecord_pn.py –config=config/lunet.cfg. Avem
nevoie s ,i de calea c ˘atre fis ,ierul de configurare al ret ,elei, dat ˘a ca parametru în linia de comand ˘a.
Pentru a antrena ret ,eaua este nevoie de rularea comenzii python train.py –config=config/
lunet.cfg –gpu=0 . Observ ˘am c ˘a se poate specifica indexul UPG pe care vrem s ˘a rulam al-
goritmul, bineînt ,eles , dac ˘a dispunem de o astfel de unitate. Vizualizarea progresului ret ,elei
în Tensorboard se poate face, în timpul antren ˘arii , folosind comanda tensorboard –logdir =
training_path / logs . Ca s ,i parametru, va fi nevoie de calea c ˘atre fis ,ierele unde se înregistreaz ˘a
progresul ret ,elei în timpul antren ˘arii, denumite logs. Pentru a testa s ,i a obt ,ine rezultatele, va
trebui rulat ˘a comanda python test.py –config= config/ lunet.cfg –gpu=0.

Capitolul 4
Implementare
4.1 LiDAR si ansamblu de puncte 3D
Senzorul LiDAR, numit s ,i radar laser (eng: Light Detection and Ranging) este cel mai perfor-
mant senzor folosit în aplicat ,iile de Vedere Artificial ˘a la ora actual ˘a. Aceast ˘a tehnologie poate
fi montat ˘a, în general pe capota sau plafonul unui vehicul pentru a trimite impulsuri scurte
de lumin ˘a laser pe suprafat ,a P˘amântului. În momentul în care impulsurile întâlnesc un obsta-
col , o parte din ele sunt reflectate înapoi spre sistemul LiDAR, care va înregistra date bazate
pe informat ,ia primit ˘a. Acesta poate capta s ,i informat ,ie suplimentar ˘a precum intensitatea sau
reflectant ,a unui punct. Astfel întreaga colect ,ie de puncte obt ,inute se g ˘ases ,te în literatur ˘a sub
numele de Ansamblu de Puncte (eng: Point Cloud).
Un ansamblu de puncte reprezint ˘a de fapt un set neordonat, reprezentat de o anumit ˘a form ˘a
3D în care fiecare punct are propriul set de caracteristici precum coordonatele x, y, z s ,i alte
atribute adit ,ionale, dac ˘a este cazul. Este de ret ,inut faptul c ˘a asupra unui ansamblu de puncte se
pot aplica us ,or transform ˘ari deoarece fiecare punct se transform ˘a independent. Punctele nu sunt
izolate, cele învecinate formând un subset, datorit ˘a faptului c ˘a fac parte dintr-un spat ,iu care are
o metric ˘a de distant ˘a.
Primii cercet ˘atori care au lucrat cu ansamble de puncte ca s ,i informat ,ie primar ˘a de in-
trare pentru ret ,elele neuronale, au propus o arhitectur ˘a denumit ˘a PointNet [13]. Aces ,tia au
revolut ,ionat domeniul Vederii Artificiale în 3D deoarece au demonstrat faptul c ˘a ansamblele
de puncte pot fi folosite în mai multe aplicat ,ii precum clasificarea obiectelor, segmentare se-
mantic ˘a sau segmentarea componentelor, obt ,inând performant ,e foarte bune. Plecând de la acest
articol s-au dezvoltat o multitudine de arhitecturi, care manipuleaz ˘a ansamble de puncte. Este
de ret ,inut faptul c ˘a aceste ansamble de puncte sunt rare sau risipite (eng: sparse).
4.2 Set de date s ,i preprocesare
Ne vom folosi de suita de date pentru Vedere Artificial ˘a, denumit ˘a KITTI (Karlsruhe Institute of
Technology and Toyota Technological Institute at Chicago). Ca s ,i set de baz ˘a se va utiliza setul
de date pus la dispozit ,ie pentru detect ,ia obiectelor 3D din cadrul acestei suite. Plecând de la
acest set, cercet ˘atorii din [2] au format un subset prin transformarea ansamblelor de puncte 3D
în imagini 2D (eng: range-images). Aces ,tia au realizat s ,i toate etichet ˘arile necesare detect ,iei
mas ,inilor pietonilor s ,i biciclis ,tilor s ,i au împ ˘art,it acest subset într-o parte de antrenare, cu 8057
de exemple s ,i una pentru testare, cu 2791 de exemple.
Transformarea ansamblelor de puncte în astfel de imagini, reduce întreaga problem ˘a la una
15

16 4. Implementare
de segmentare semantic ˘a 2D. Exist ˘a diferite arhitecturi care lucreaz ˘a cu astfel de imagini pre-
cum [4] s ,i [9]. Unul dintre motivele pentru care s-a ales acest format al datelor de intrare este
acela c ˘a imaginile obt ,inute au o structur ˘a compact ˘a, dens ˘a, spre deosebire de structura punctelor
din ansamble. Astfel s-a dep ˘as,it inconvenient ,a proces ˘arii punctelor risipite s ,i distribuite nere-
gulat, de c ˘atre ret ,ea, fapt care ducea s ,i la o funct ,ionare imprecis ˘a a straturilor convolut ,ionale
din cadrul arhitecturii. Un alt motiv pentru care se opteaz ˘a pentru aceste imagini transformate
ca intr ˘ari este reducerea resurselor computat ,ionale s ,i a timpului de procesare, deoarece acestea
au valori foarte ridicate în cadrul algoritmilor ce manipuleaz ˘a, direct, date 3D precum ansamble
de puncte[13]. O alt ˘a reprezentare care ar ajuta la compactarea ansamblelor de puncte s ,i este
folosit ˘a des în articole recente, este voxel-ul. Un ansamblu de puncte este împ ˘art,it în paraleli-
pipede de dimensiuni egale s ,i fixe, denumite voxeli, care cont ,in un num ˘ar arbitrar de puncte.
O astfel de abordare a datelor de intrare, ca s ,i în [8], nu este însa potrivit ˘a pentru segmentarea
semantic ˘a în timp real. Ar fi necesar ˘a o ret ,ea de voxeli de o rezolut ,ie foarte mare, lucru care ar
duce la memorie s ,i resurse computat ,ionale foarte crescute.
În continuare vom descrie procesul de transformare al ansamblelor de puncte. Fiecare punct
este definit de 3 coordonate carteziene (x, y, z). Imaginile rezultate sunt de fapt o proiect ,ie
sferic ˘a a ansamblelor pe o gril ˘a 2D, astfel:
=arcsinzp
x2+y2+z2;X= [
] (4.2.1)
=arcsinyp
x2+y2;Y= [
] (4.2.2)
s,idin formulele 4.2.1 s ,i 4.2.2 reprezint ˘a azimutul s ,i zenitul, iar s,ireprezint ˘a
rezolut ,iile pentru discretizare. (X, Y) reprezint ˘a coordonatele unui punct pe suprafat ,a grilei 2D
[2]. Aplicând relat ,iile de mai sus asupra fiec ˘arui punct , putem obt ,ine un tensor de forma H x W
x C. Datele au fost colectate de un senzor LiDAR Velodyne HDL-64E, cu 64 de canale verticale,
deci H=64. Luând în considerare un unghi frontal de 90 de grade, se discretizeaz ˘a spat ,iul în
512 p ˘art,i , astfel W=512. Num ˘arul C, reprezinta num ˘arul de canale al fiec ˘arui punct. S-au luat
în considerare coordonatele carteziene ( x;y;z ), reflectant ,ars,i adâncimea d=p
x2+y2+z2.
Deci datele de intrare vor fi imagini transformate cu dimensiunea de 64 x 512 x 5. Cele 5 canale,
ret,in informat ,ie valoroas ˘a despre fiecare punct, precum cele 3 canale care codific ˘a combinat ,ia
de culori a pixelilor dintr-o imagine RGB.
Imaginea rezultat ˘a ar trebui sa fie perfect compact ˘a, f˘ar˘a puncte lips ˘a. Se întâmpl ˘a totus ,i
ca impulsurile de lumin ˘a laser s ˘a fie deviate s ,i informat ,ia s˘a nu mai fie captat ˘a corect. Se vor
identifica astfel de puncte din imagine prin folosirea unei m ˘as,ti binaremcare este egal ˘a cu 0
pentru pixeli f ˘ar˘a informat ,ie, sau 1 în caz contrar [12].
În urma studierii distribut ,iei claselor în setul de antrenare am observat c ˘a exist ˘a 7925 de
imagini care cont ,in mas ,ini, 910 cu pietoni s ,i 745 cu ciclis ,ti, lucru care arat ˘a dezechilibru al
claselor s ,i o diferent ,˘a de exemple de 10 ori mai mare între clasa de mas ,ini s ,i cea de ciclis ,ti.
Pentru reducerea acestei diferent ,e, cres ,terii dimensiunii setului de date, implicit s ,i îmbun ˘at˘at,irii
performant ,elor, se aplic ˘a o augmentare asupra tuturor imaginilor care cont ,in ciclis ,ti sau pietoni.
Mai exact se rotesc orizontal toate aceste imagini. În urma augment ˘arii se vor obt ,ine 9517 de
imagini. Se mai aplic ˘a preproces ˘ari asupra punctelor din imagini s ,i asupra etichetelor, pentru a
obt ,ine tensorii de forma necesar ˘a s,i cu informat ,ia necesar ˘a, dar aceste aspecte vor fi prezentate
în sect ,iunea 5 a capitolului 4.

4. Implementare 17
4.3 Arhitectura general ˘a
S-a demonstrat c ˘a pentru procesul de segmentare semantic ˘a arhitecturile de tip codificator –
decodificator sunt cele mai eficiente. Codificatorul învat ,˘a anumite caracteristici în timp ce re-
duce rezolut ,ia imaginii de intrare, iar decodificatorul scaleaz ˘a în sus caracteristicile înv ˘at,ate s ,i
le mapeaz ˘a în rezultatul segment ˘arii. Primii care au considerat o astfel de arhitectur ˘a, au fost
cei din [7], pentru segmentarea semantic ˘a a celulelor din imaginile biomedicale. În continu-
are vom prezenta arhitectura propus ˘a , denumit ˘a MiniL-Net, care la baz ˘a are tot o structur ˘a
codificator – decodificator. Arhitectura beneficiaz ˘a, în faza init ,ial˘a, de un modul de extragere
a caracteristicilor punctelor care incorporeaz ˘a caracteristici locale 3D în imagini 2D. În pasul
urm˘ator se foloses ,te eficient o arhitectur ˘a adaptat ˘a a ret ,elei Mini-Net, format ˘a la rândul ei din
3 sub-module, care este foarte eficient ˘a din punct de vedere al timpului de procesare dar s ,i a
resurselor computat ,ionale. Arhitectura propus ˘a dep ˘as,es,te multe arhitecturi existente la ora ac-
tual˘a în termeni de vitez ˘a de procesare s ,i rezultate obt ,inute. De asemenea , viteza de operare
ridicat ˘a a ret ,elei, face aceast ˘a abordare s ˘a fie potrivit ˘a pentru aplicat ,iile în timp real.
4.3.1 Extragerea caracteristicilor punctelor
Diferite arhitecturi folosesc un num ˘ar diferit de canale pentru datele de intrare. Spre exemplu
[2] s ,i [4] folosesc 5 canale (x, y, z, r, d), în timp ce [9] foloses ,te doar 2 canale (r s ,i d) s ,i chiar
s,i as ,a se obt ,in rezultate foarte bune. Concluzia este c ˘a num ˘arul de canale folosit este empiric,
iar pentru a g ˘asi combinat ,ia optim ˘a a acestora e nevoie de cercet ˘ari s ,i experimente avansate. În
[13] se evident ,iaz˘a aceast ˘a idee. Prin urmare, pentru a dep ˘as,i acest inconvenient, se va utiliza un
modul care va fi capabil s ˘a învet ,e caracteristicile punctelor de care este nevoie pentru procesul
de segmentare semantic ˘a. Modulul va înv ˘at,a N caracteristici pentru fiecare punct, obt ,inând o
imagine cu N canale.
Pentru un punct pi= (x;y;z;r ), se defines ,te setul de puncte vecine V(pi), ca fiind setul
format din cele 8 puncte conectate direct cu acesta. Se iau buc ˘at,i de 3×3 din imagine, cu centrul
în fiecare dintre punctele imaginii, în manier ˘a de fereastr ˘a glisant ˘a, s ,i se contorizeaz ˘a vecinii
centrului. De ret ,inut faptul c ˘a numerotarea vecinilor începe din colt ,ul stânga sus al ferestrei.
Se defines ,te s ,i setul de puncte vecine în coordonate relative V’(pi) =fqpijq2V(pi)g[12].
Modulul de extragere al caracteristicilor, (Figura 4.1) va lucra cu puncte vecine în coordonate
relative, deoarece în acest fel ret ,eaua este capabil ˘a s˘a învet ,e mai bine propriet ˘at,i de nivel înalt
care caracterizeaz ˘a geometria ansamblului de puncte 3D, obt ,inându-se rezultate mult mai bune.
Se observ ˘a c˘a forma tensorului de intrare a acestui modul este de forma (32768, 8, 5). Prima ax ˘a
este reprezentat ˘a de num ˘arul total de puncte ale imaginii, adic ˘a 64×512. A doua ax ˘a reprezint ˘a
num˘arul de vecini al fiec ˘arui punct, iar ultima ax ˘a reprezint ˘a canalele fiec ˘arui punct. Ca s ,i
pas de preprocesare, pentru a putea lua în considerare 8 vecini ai fiec ˘arui punct, se va borda
imaginea pe fiecare latur ˘a cu un rând de puncte cu valoarea 0, astfel rezultând forma tensorului
de intrare al vecinilor.
Informat ,ia despre punctele vecine, extras ˘a de o succesiune de convolut ,ii 1×1, va fi agregat ˘a
cu ajutorul unui strat de max pooling, care este aplicat pe fiecare canal în parte. Acesta se
poate aplica cu diferit ,i hiper parametrii. În [12] s-a aplicat o fereastr ˘a de 1×1 cu un pas de
1×8. În Figura 4.2, partea de sus, se poate observa acest lucru. S-a ilustrat o imagine de 4
pixeli (cei colorat ,i) , bordat ˘a cu vecini s ,i un tensor al vecinilor, f ˘ar˘a dimensiunea canalelor,
pentru simplitate. Stratul de pooling , aplicându-se pe fiecare canal, va face ca fiecare punct
din noul set obt ,inut, s ˘a aib ˘a toate caracteristicile punctului init ,ial considerat în fereastr ˘a. În
urma experimentelor s-a observat c ˘a folosirea unui strat de max pooling cu o fereastr ˘a de 1×8

18 4. Implementare
s,i cu un pas de 1×1 va duce la rezultate mai bune. As ,adar în arhitectura prezent ˘a se va folosi
un astfel de strat a c ˘arui funct ,ionalitate este prezentat ˘a în aceeas ,i figur ˘a, în partea de jos. Se
observ ˘a c˘a prin acest proces, un punct din noul set poate avea caracteristici de la diferite puncte
vecine, deoarece se calculeaz ˘a maximul pe fiecare canal. Rezultatul îmbun ˘at˘at,it se datoreaz ˘a
faptului c ˘a vor fi ret ,inute noi puncte cu acele caracteristici ale vecinilor care încorporeaz ˘a cea
mai valoroas ˘a informat ,ie geometric ˘a.
La tensorul rezultat se va concatena tensorul punctelor propriu-zise (având 4 canale, x, y, z,
r). Astfel fiecare punct,va cont ,ine s ,i informat ,ie geometric ˘a legat ˘a de vecin ˘atatea acestuia. Prin
num˘arul de filtre al ultimului strat de convolut ,ie 1×1 se specific ˘a num ˘arul de canale N ale noii
imagini formate. Aceasta va fi dat ˘a ca intrare , în continuare, unei structuri adaptate a ret ,elei
Mini-Net.
Figura 4.1: Exintragere caracteristici
puncte
Figura 4.2: Variante strat max_pooling
4.3.2 Modulul de scalare în jos
Acest modul are rolul de a reduce dimensiunea tensorilor, implicit, a num ˘arului de parametrii,
s,i de a propaga mai departe, în urm ˘atorul modul al ret ,elei, informat ,ia cea mai util ˘a. Modulul
este format din straturi convolut ,ionale simple, convolut ,ionale separabile s ,i starturi max pooling.
Arhitectura se poate observa în Figura 4.3. Imaginea de intrare se scaleaz ˘a în jos de 8 ori, de

4. Implementare 19
la o dimensiune de 64×512 la o dimensiune de 8×64. Se observ ˘a faptul c ˘a la fiecare nivel de
reducere a rezolut ,iei imaginii, cu ajutorul startului de max pooling care nu are parametrii, se
concateneaz ˘a caracteristici înv ˘at,ate cu ajutorul unui start de convolut ,ie 3×3. Pentru ca extrage-
rea de caracteristici din imagine sa nu se fac ˘a doar la finalul scal ˘arii în jos, unde vom avea o
imagine de o rezolut ,ie foarte mic ˘a cu destul ˘a informat ,ie pierdut ˘a din cauza scal ˘arii, se introduce
dup˘a nivelul 2 de scalare în jos , un sub-modul format din 6 straturi de convolut ,ii separabile.
În acest sub-modul se foloses ,te conexiunea cu salt, îmbinându-se astfel intrarea cu ies ,irea unui
start de convolut ,ie separabil ˘a, lucru care ajut ˘a la combaterea fenomenului de overfitting.
Figura 4.3: Scalare în jos
Figura 4.4: Extragere caracteristici gene-
rale
4.3.3 Modulul de extragere al caracteristicilor generale
Acesta este principalul bloc arhitectural al codificatorului. În aceast ˘a etap ˘a se dores ,te extra-
gerea s ,i înv˘at,area celor mai valoroase caracteristici ale imaginii. Arhitectura modulului poate
fi observat ˘a în Figura 4.4. Se foloses ,te un bloc special, repetat de 12 ori. Acest bloc const ˘a
în procesarea imaginii de intrare de c ˘atre 2 starturi de convolut ,ie în adâncime, puse în para-
lel. Unul dintre starturi prezint ˘a s,i dilatare , iar cel ˘alalt nu. Valorile dilat ˘arii pe în ˘alt,ime s ,i pe
lungime pot fi observate în dreapta figurii, pentru toate cele 12 blocuri. Informat ,ia obt ,inut˘a
se adun ˘a, dup ˘a care se aplic ˘a un start convolut ,ional simplu 1×1, pentru îmbinarea informat ,iei.

20 4. Implementare
La final se adun ˘a ies ,irea acestui ultim strat cu imaginea de intrare în blocul special, într-o ma-
nier˘a de conexiune cu salt pentru evitarea fenomenului de overfitting. Astfel la fiecare pas se
îmbin ˘a caracteristici de nivel mai înalt cu caracteristici de nivel mai sc ˘azut pentru o mai bun ˘a
înv˘at,are. Acest bloc format doar din convolut ,ii, îmbun ˘at˘at,es,te performat ,a arhitecturii prin faptul
c˘a învat ,˘a relat ,ii spat ,iale atât locale cât s ,i globale. Cu ajutorul straturilor cu diferite rate de di-
latare se obt ,in câmpuri receptive mai mari pentru capturarea informat ,iei de diferite dimensiuni
s,i se p ˘astreaz ˘a rezolut ,ia imaginii. Valorile ratelor de dilatare trebuie alese atent deoarece valori
crescute, neadecvate, ale acestora pot duce la pierderea informat ,iei despre participant ,ii la trafic
de dimensiuni mai reduse precum ciclis ,tii s ,i pietonii. De remarcat faptul c ˘a pentru acest bloc se
foloses ,te un num ˘ar mult mai redus de parametrii fat ,˘a de de un bloc standard de convolut ,ie, deci
s,i mai put ,in˘a memorie.
4.3.4 Modulul de scalare în sus
La acest nivel caracteristicile imaginii sunt deja înv ˘at,ate, însa acestea sunt reprezentate la o
rezolut ,ie mic ˘a. Astfel, principalul rol al acestui modul este de a scala în sus aceste caracteris-
tici înv ˘at,ate, în vederea stabilirii rezultatului segment ˘arii semantice. Arhitectura modulului se
poate observa în Figura 4.5. Exist ˘a mai multe metode prin care se poate proiecta decodifica-
torul, pentru cres ,terea rezolut ,iei imaginii. Stratul convolut ,ional de baz ˘a folosit în acest proces
este convolut ,ia transpus ˘a, sau deconvolut ,ia. În [7] s ,i [12] se foloses ,te ideea de a conecta, prin
conexiuni cu salt, primele starturi (cele folosite în codificator) , cu straturile corespunz ˘atoare
aceluias ,i nivel, din decodificator. Aceast ˘a act ,iune asigur ˘a faptul c ˘a acele caracteristici înv ˘at,ate
în timpul contract ˘arii imaginii vor fi folosite la reconstruct ,ia acesteia, f ˘ar˘a a mai ad ˘auga alte
straturi în plus. Din p ˘acate aceste tipuri de conexiuni au nis ,te limit ˘ari deoarece primele stra-
turi din codificator vor trebui s ˘a extrag ˘a atât detalii fine care s ˘a ajute la reconstruct ,ia imaginii
în decodificator, dar s ,i caracteristici de nivel sc ˘azut care vor fi necesare mai departe pentru
codificator. Acest lucru poate împiedica procesul de înv ˘at,are.
O alt ˘a abordare este a celor din [12]. Astfel, se foloses ,te o ramur ˘a independent ˘a, de stra-
turi convolut ,ionale, pentru procesarea imaginii init ,iale, care va conserva informat ,ia spat ,ial˘a.
În acest mod, straturile init ,iale ale arhitecturii nu vor fi nevoite s ˘a extrag ˘a mai multe tipuri de
caracteristici, îns ˘a va cres ,te costul computat ,ional. În arhitectura propus ˘a în proiect vom folosi o
astfel de strategie pentru proiectarea decodificatorului. V om folosi o ramur ˘a convolut ,ional ˘a se-
parat ˘a, care va aplica 2 operat ,ii de scalare în jos asupra imaginii de intrare (asemenea modulului
prezentat mai sus) s ,i vom concatena ies ,irea, dup ˘a primul nivel de scalare în sus. În continuare,
la fel ca s ,i în modulul de reducere a rezolut ,iei imaginii se va folosi un sub-modul format din 4
starturi de convolut ,ii separabile. La final se aplic ˘a înc ˘a 2 operat ,ii de cres ,tere a rezolut ,iei pentru
a ajunge la o dimensiune egal ˘a cu cea a imaginii init ,iale de intrare. Ca s ,i ultim strat, se va aplic ˘a
o convolut ,ie de 1×1, care are rolul de a modifica num ˘arul de filtre ale unei imagini, p ˘astrând
dimensiunea acesteia. Se folosesc astfel 4 filtre pentru acest strat deoarece segmentarea seman-
tic˘a implic ˘a clasificarea pixelilor a 4 clase, s ,i anume: mas ,ini, pietoni, ciclis ,ti s ,i fundal. S-a
optat pentru un start de convolut ,ie 1×1, în defavoarea unui strat dens, datorit ˘a num ˘arului redus
de parametrii pe care îl are cel dintâi.
4.4 Funct ,ie de activare
La finalul ret ,elei neuronale, fiecare punct din cele 64×512, va avea 4 canale (corespunz ˘atoare
celor 3 clase de prezis s ,i fundal), reprezentate de valori reale, sau scoruri, ale predict ,iei ret ,elei
neuronale. Indecs ,ii canalelor vor corespunde claselor, în ordine: fundal, mas ,ini, pietoni s ,i

4. Implementare 21
Figura 4.5: Scalare în sus

22 4. Implementare
ciclis ,ti. Aceste valori se întâlnesc în limba englez ˘a sub termenul de „logits”. Datorit ˘a faptului
c˘a aceste valori nu sunt interpretabile us ,or de c ˘atre ret ,ea s ,i nu ajut ˘a în evaluarea predict ,iei, este
nevoie s ˘a le transform ˘am în probabilit ˘at,i. Acest lucru se face cu ajutorul unei funct ,ii de activare
specific ˘a cerint ,elor, astfel vom folosi funct ,ia softmax. Aceast ˘a funct ,ie transform ˘a scorurile
prezise de ret ,ea într-un vector de probabilit ˘at,i având suma elementelor 1.
Funct ,ia se preteaz ˘a problemelor de Înv ˘at,are Profund ˘a unde avem de a face cu predict ,ia pen-
tru clase multiple. Pentru o problem ˘a simpl ˘a de clasificare a unei imagini (3 clase) , putem
observa atât formula (4.4.1), cât s ,i modul în care funct ,ioneaz ˘a funct ,ia în Figura 4.6. În partea
dreapt ˘a avem scorurile prezise, apoi prin aplicarea funct ,iei softmax vor rezulta probabilit ˘at,ile
din partea stânga. În acest caz, funct ,ia sofmax se aplic ˘a pe întreg vectorul de scoruri pre-
zise. Calculând maximul dintre aceste probabilit ˘at,i, vom obt ,ine rezultatul final al predict ,iei. În
exemplul dat, imaginea va face parte din categoria primei clase.
S(yi) =eyi
P
jeyj(4.4.1)
Figura 4.6: Softmax
În cazul segment ˘arii semantice va fi nevoie s ˘a aplic ˘am o funct ,ie softmax la nivel de pixeli, ci
nu la nivelul întregului tensor de scoruri prezise, deoarece trebuie s ˘a determin ˘am pentru fiecare
dintre puncte din ce clas ˘a, dintre cele 4 posibile, face parte. V om utiliza formula 4.4.2 în care
yi(x)reprezint ˘a scorul pentru clasa i, la pozit ,ia pixeluluix.
si(x) =eyi(x)
P
jeyj(x)(4.4.2)
4.5 Crearea etichetelor
Dup˘a cum am specificat în capitolul introductiv, un algoritm Supervizat de Înv ˘at,are Profund ˘a
necesit ˘a datele de intrare s ,i etichetele acestora, pentru a putea oferi predict ,ii, prin înv ˘at,area unei
funct ,ii, care mapeaz ˘a datele de intrare la etichetele acestora. Pentru a putea aplica funct ,ia de
cost s ,i optimizatorul, prezentate în sect ,iunile urm ˘atoare, avem nevoie de o anumit ˘a form ˘a a
etichetelor, cont ,inând informat ,ie specific ˘a. Dup ˘a cum bine s ,tim, o ret ,ea neuronal ˘a poate lucra
doar cu date numerice, astfel c ˘a s,i etichetele pixelilor trebuie transformate din s ,iruri de caractere
precum „mas ,in˘a” sau „pieton” într-un format numeric. Astfel,vom atribui fiec ˘arei clase cate un
index prestabilit, dup ˘a urm ˘atorul format: 0 – fundal, 1 – mas ,in˘a, 2 – pieton, 3 – ciclist.
Observ ˘am c ˘a forma final ˘a a tensorului care cont ,ine etichetele este 64x512x6. În continuare
vom detalia forma s ,i tipul informat ,iilor ce se g ˘asesc în aceste etichete.
4.5.1 Codificarea one-hot
Ies,irea ret ,elei neuronale va fi format ˘a din vectori, pentru fiecare punct, specificând probabilit ˘at,ile
acestora (cu valori intre 0 s ,i 1) de a apart ,ine uneia din cele 4 clase. Pe de alt ˘a parte etichetele
init ,iale ale punctelor dintr-o imagine se g ˘asesc sub form ˘a de întregi reprezinentând, indexul
clasei corespunz ˘atoare. Pentru a putea aprecia calitatea predict ,iei cu ajutorul funct ,iei de cost
este necesar ˘a o codificare one-hot a etichetelor ce p ˘astreaz ˘a informat ,ia legat ˘a de clasa fiec ˘arui
punct.
Aceast ˘a codificare presupune mai întâi formarea unui vector de 0-uri de lungime egal ˘a cu
num˘arul de clase al problemei. Apoi se marcheaz ˘a cu 1 pozit ,ia din vector corespunz ˘atoare

4. Implementare 23
Figura 4.7: Codificare one-hot pentru o imagine 3×3
valorii întregului din etichet ˘a. Acest procedeu se poate observa în Figura 4.7. Valoarea de 1
dintr-un astfel de vector reprezint ˘a de fapt o probabilitate de 100% ca acel punct s ˘a apart ,in˘a
clasei corespunz ˘atoare indexului pe care se afl ˘a cifra 1. În aceeas ,i idee o valoare de 0 din acest
vector binar reprezint ˘a o probabilitate de 0% ca punctul s ˘a apart ,in˘a unei anumite clase. Având
aceast ˘a form ˘a a etichetelor se pot compara rezultatele predict ,iilor cu etichetele. Pân ˘a în acest
punct am detaliat ce cont ,in 4 din cele 6 canale ale tensorului etichetelor. În continuare le vom
detalia pe celelalte 2.
4.5.2 Masca s ,i informat ,ia despre distant ,˘a
În sect ,iunea despre preprocesarea datelor, am specificat faptul c ˘a se aplic ˘a o masc ˘a binar ˘a asupra
pixelilor, pentru a s ,tii care dintre ei cont ,ine informat ,ie s ,i care nu. Astfel se aloc ˘a un canal , în
tensorul etichetelor, pentru valoarea acestei m ˘as,ti. Pentru fiecare punct se verific ˘a dac ˘a valorile
coordonatelor preluate de la senzorul LiDAR sunt diferite de 0, deci dac ˘a exist ˘a informat ,ie. În
caz afirmativ masca se va completa cu 1, iar în caz contrar cu 0.
Funct ,ia de cost prezentat ˘a în urm ˘atoarea sect ,iune foloses ,te ca informat ,ie distant ,a de la fi-
ecare pixel la cel mai apropiat contur al unui participant la trafic. Aceast ˘a idee a fost propus ˘a
în [7] iar beneficiile acestei informat ,ii vor fi prezentate odat ˘a cu detalierea funct ,iei de cost. În
termeni de software ne vom folosi de libr ˘aria OpenCV . În primul pas este nevoie s ˘a dilat ˘am
imaginea. Astfel asupra unei imagini A , se aplic ˘a un nucleu de convolut ,ie B (considerat de
dimensiune 3×3 în proiect) , de form ˘a p˘atrat˘a, în manier ˘a de fereastr ˘a glisant ˘a. Pentru nucleul
B se defines ,te un punct de referint ,˘a (eng: anchor point), care este punctul de centru al acestuia.
Pe parcurs ce nucleul este mutat de-a lungul imaginii A se calculeaz ˘a valoarea maxim ˘a dintre
pixelii care fac parte din nucleul B, s ,i se înlocuies ,te valoarea punctului de centru al nucleului,
cu aceast ˘a valoare maxim ˘a g˘asit˘a. Aceast ˘a operat ,ie duce la m ˘arirea, sau dilatarea, marginilor
unui obiect din imagine. O reprezentare vizual ˘a se g ˘ases ,te în Figura 4.8. În urm ˘atorul pas, se
deduce conturul obiectului din imagine, prin sustragerea pixelilor din imaginea init ,ial˘a din cei ai
imaginii dilatate. Acest contur este suprapus dup ˘a aceea peste imaginea init ,ial˘a, prin marcarea
lui în imagine cu pixeli de 0. Ultimul papass este s ˘a calcul ˘am distant ,a de la fiecare pixel al ima-
ginii la cel mai apropiat pixel cu valoarea 0 din imagine, adic ˘a la cel mai apropiat contur. Acest
lucru se face tot cu ajutorul funct ,iilor puse la dispozit ,ie de libr ˘aria OpenCV . Aceast ˘a distant ,˘a
va fi stocat ˘a pentru fiecare pixel în ultimul canal al tensorului etichetelor, s ,i va fi folosit ˘a în
calcularea funct ,iei de cost.
4.6 Funct ,ia de cost
Procedeul esent ,ial din cadrul ret ,elelor neuronale, backpropagation, funct ,ioneaz ˘a prin calcula-
rea derivatelor ponderilor ret ,elei, în raport cu funct ,ia de cost, s ,i actualizarea valorilor ponderilor
folosind aceste derivate s ,i un pas de înv ˘at,are. Astfel avem nevoie de o funct ,ie de cost potrivit ˘a

24 4. Implementare
Figura 4.8: Dilatare[13]
care s ˘a evalueze corect eroarea modelului la fiecare pas, s ,i care depinde de activarea ultimului
strat al modelului s ,i de datele cu care acesta lucreaz ˘a. În general pentru funct ,ia de activare soft-
max prezent ˘a dup ˘a ultimul strat al arhitecturii, se foloses ,te o funct ,ie de cost denumit ˘a entropie
încrucis ,at˘a. Acest termen provine din domeniul calcului probabilistic s ,i reprezint ˘a o m ˘asur˘a-
toare a diferent ,ei dintre 2 distribut ,ii de probabilitate pentru o variabil ˘a aleatoare sau pentru un
set de evenimente. Practic aceasta ne ajut ˘a s˘a compar ˘am cât de bine se potrives ,te distribut ,ia de
probabilitate calculat ˘a în urma aplic ˘arii activ ˘arii softmax, cu distribut ,ia de probabilitate din eti-
chete ( obt ,inut˘a prin codificarea one-hot). În formula 4.6.1, pireprezint ˘a valoarea probabilit ˘at,ii
prezise pentru clasa i, iareireprezint ˘a probabilitatea adev ˘arata pentru acea clas ˘a.
CEe(p) =X
ieilog(pi) (4.6.1)
Dup˘a cum am precizat în sect ,iunea de preprocesare a datelor, seturile de imagini de intrare
ale diferitelor clase sunt foarte dezechilibrate, predominând bineînt ,eles imaginile cu mas ,ini.
Astfel clasele majoritare vor fi clasificate destul de repede, pentru ca vom avea mai multe
informat ,ii despre acestea, iar cele minoritare mai put ,in bine. Pentru a trece peste acest impedi-
ment, cei din [8] au introdus pentru prima oar ˘a entropia încrucis ,at˘a cu focalizare (Focal Loss).
Aceasta adaug ˘a defapt entropiei încrucis ,ate, anumite ponderi dependente de probabilit ˘at,i. În
loc s ˘a reduc ˘a ponderile predict ,iilor care sunt departe de adev ˘ar, Focal Loss va reduce impac-
tul (ponderile) valorilor prezise corect. Astfel se va pune mai mult accent pe clasele care sunt
prezise mai greu din cauza num ˘arului de date sc ˘azut pentru acestea s ,i nu pe clasele us ,or de
prezis. În formula 4.6.2,
este parametrul de focalizare s ,i are rolul de a reduce influent ,a datelor
clasificate corect. Valoarea 0 a acestui parametru reduce Focal Loss la o entropie încrucis ,at˘a
simpl ˘a. În proiect valoarea acestuia va fi 2. Cu cât mai mare este o predict ,iepi, cu atât mai
putina important ,˘a va avea aceasta, deoarece termenul 1piva fi aproape de 0. Parametrul
este utilizat pentru a pune o anumit ˘a pondere pe focalizare. Valoarea acestui parametru va fi 1.
FL=X
i i(1pi)
eilog(pi) (4.6.2)
În UNet,[7], s-a introdus ideea de a ad ˘auga important ,˘a acelor pixeli din imagine care sunt
aproape de conturul obiectelor, pentru a fort ,a ret ,eaua s ˘a învet ,e marginile de separare între
obiecte. Acest lucru ajut ˘a mult, mai ales în cazurile în care avem multe obiecte la un loc,
precum o mult ,ime de oameni, sau mas ,ini parcate una în spatele celeilalte. Astfel vom folosi o
funct ,ie de ponderi adit ,ional ˘a. V om folosi o variant ˘a simplificat ˘a a acestei funct ,ii , fat ,˘a de cea
original ˘a formulat ˘a în [7]. În formula 4.6.3, d1(x)reprezint ˘a distant ,a de la pixelul xla cel mai

4. Implementare 25
Figura 4.9: Extragere rezultat predict ,ie
apropiat contur, g ˘asit˘a în tensorul etichetelor. w0va avea valoarea 1, va avea valoarea 3,iar
wc(x)valoarea 0.1.
w(x) =wc(x) +woexp(d1(x)2
22) (4.6.3)
Astfel forma final ˘a a funct ,iei de cost folosit ˘a în procesul de antrenare, este urm ˘atoarea:
puneaiciformulabreeeeeeeeeeeee
4.7 Metrici de performant ,˘a
În urma funct ,iei de activare softmax, aplicat ˘a la finalul ret ,elei, se formeaz ˘a vectorii de probabilit ˘at,i
ai punctelor. Din aces ,tia vom extrage pozit ,iile valorilor maxime din vectori, deci indecs ,ii co-
respunz ˘atori claselor cu cea mai mare probabilitate, pentru a avea rezultatul final al predict ,iei.
Acest proces e exemplificat, într-o variant ˘a simpl ˘a, pentru un singur punct al imaginii, în Fi-
gura 4.9. Aplicând procesul pentru fiecare punct, se poate trece la folosirea unei metrici de
performant ,˘a.
Pentru a evalua cât de bine reus ,es,te ret ,eaua neuronal ˘a s˘a clasifice fiecare pixel în parte, avem
nevoie de o metric ˘a potrivit ˘a. As ,adar ne vom folosi de metrica Intersect ,ie supra Uniune (IsU),
cunoscut ˘a în literatur ˘a s,i sub numele de index Jaccard. Este s ,i cea mai utilizata metric ˘a folosit ˘a
în domeniul segment ˘arii semantice, deoarece s-a dovedit a fi foarte eficient ˘a (spre deosebire
de acuratet ,ea pixelilor). Aceast ˘a metric ˘a se calculeaz ˘a dup ˘a formula 4.7.1, în care Pidenot ˘a
num˘arul de puncte ale unei clase, din predict ,ie, iarEinum˘arul de puncte ale aceleas ,i clase,
din etichet ˘a. Având la dispozit ,ie predict ,ia final ˘a a ret ,elei, precum s ,i eticheta , pentru o anumit ˘a
clas˘a din imagine, se calculeaz ˘a astfel: raportul dintre num ˘arul de pixeli comuni predict ,iei s ,i
etichetei, împ ˘art,it la num ˘arul de pixeli din predict ,ie s ,i etichet ˘a luat ,i la comun. Astfel vom
obt ,ine valori care arat ˘a performant ,ele ret ,elei, în funct ,ie de fiecare clas ˘a. Pentru a obt ,ine valori
ale performant ,elor generale, luând în considerare toate clasele, trebuie s ˘a calcul ˘am IsU medie.
Pentru acest lucru vom aplica o simpl ˘a medie aritmetica asupra valorilor IsU pentru fiecare
clas˘a.
IsUi=Pi\Ei
Pi[Ei=Pn
i=1min(Pi;Ei)Pn
i=1max(Pi;Ei)(4.7.1)
Exist ˘a s,i alt˘a modalitate prin care putem calcula IsU împreun ˘a cu alte 2 metrici, denumite
Precizie s ,i Recall, modalitate pe care o vom folosi în procesul de inferent ,˘a. Ne vom folosi de
termenii s ,i valorile True Positives (TP), False Positives (FP) si False Negatives (FN). Pentru o
anumit ˘a clas ˘acdin imagine, TP semnific ˘a num ˘arul de predict ,ii corecte asupra pixelilor care
fac parte din clasa c. FP reprezint ˘a num ˘arul pixelilor care au fost prezis ,i ca apart ,inând clasei
c, des ,i în realitate aces ,tia nu apart ,in. FN reprezint ˘a num ˘arul pixelilor care nu au fost prezis ,i ca
apart ,inând clasei c, des ,i în realitate aces ,tia apart ,ineau clasei. Având aceste valori cunoscute

26 4. Implementare
putem defini s ,i IsU în funct ,ie de acestea, pentru o anumit ˘a clas ˘a (4.7.2). Pentru a calcula IsU
pentru toate clasele se aplic ˘a din nou o medie aritmetic ˘a intre valorile rezultate pe fiecare clas ˘a.
Precizia (4.7.3) este definit ˘a ca ……….. s ,i recall (4.7.4) este definit ca …………….
IsUc(E;P) =TPc
TPc+FNc+FPc(4.7.2)Pc=TPc
FPc+TPc(4.7.3)
Rc=TPc
TPc+FNc(4.7.4)
4.8 Antrenare s ,i hiper-parametrii
Bla bla bla
4.9 Modele intermediare
Antrenarea modelului de la început la sfârs ,it, dureaz ˘a în jur de 4 – 5 zile. În acest timp pot ap ˘area
tot felul de probleme tehnice ( întreruperi de curent, diferite erori în cod, probleme cu resursele
hardware ) care duc la oprirea procesului de antrenare s ,i la pierderea parametrilor (ponderilor),
optimizat ,i pân ˘a în acel moment. Din acest motiv,vom stabili de la început un num ˘ar de iterat ,ii
dup˘a care se va salva modelul, adic ˘a variabilele s ,i ponderile implicate în procesul de antrenare.
Acest num ˘ar este setat la 1000 de iterat ,ii. Având aceasta funct ,ionalitate vom putea oricând
s˘a reluam procesul de antrenare de la un anumit pas intermediar, f ˘ar˘a a pierde timp pret ,ios
prin antrenarea modelului de la bun început. La nivel de software, în TensorFlow, un model
va fi salvat prin crearea unui fis ,ier cu extensia .ckpt. La pornirea antren ˘arii modelului se va
verifica dac ˘a exist ˘a astfel de fis ,iere salvate, iar dac ˘a da, se vor înc ˘arca valorile din cel mai
recent, pentru continuarea antren ˘arii din punctul respectiv. Modelul intermediar de la care se
dores ,te continuarea, poate fi specificat s ,i prin ad ˘augarea unui argument în linia de comand ˘a, cu
num˘arul iterat ,iei dorite, la instruct ,iunea de pornire a antren ˘arii (ex: – – checkpoint = 20000 ).
Modelele intermediare ajut ˘a s,i la procesul de evaluare al ret ,elei prin faptul c ˘a putem urm ˘ari
evolut ,ia algoritmului, prin evaluarea performant ,elor la un pas dorit.

Capitolul 5
Experimente s ,i rezultate
Pentru a ajunge la cea mai bun ˘a performant ,˘a a arhitecturii ret ,elei neuronale, s-au demarat mul-
tiple experimente. În urma diferitelor modific ˘ari ale ret ,elei s-a ajuns la cea mai performant ˘a
arhitectur ˘a, care de altfel a fost prezentat ˘a pe parcursul capitolului 4.
5.1 Ceva pe aici
Bla Bla Bla
27

28 5. Experimente s ,i rezultate

Capitolul 6
Concluzii
Bla bla bla
29

30 6. Concluzii

Bibliografie
[1] Charles R. Qi, Hao Su, Kaichun Mo, Leonidas J. Guibas. PointNet: Deep Learning on
Point Sets for 3D Classification and Segmentation , 2017
[2] Bichen Wu, Alvin Wan, Xiangyu Yue, Kurt Keutzer. SqueezeSeg: Convolutional Neural
Nets with Recurrent CRF for Real-Time Road-Object Segmentation from 3D LiDAR Point
Cloud , 2017
[3] Yin Zhou, Oncel Tuzel. VoxelNet: End-to-End Learning for Point Cloud Based 3D Object
Detection , 2017
[4] Yuan Wang, Tianyue Shi, Peng Yun, Lei Tai, Ming Liu. PointSeg: Real-Time Semantic
Segmentation Based on 3D LiDAR Point Cloud , 2018
[5] Pierre Biasutti, Aurelie Bugeau, Jean-Francois Aujol, Mathieu Bredif. RIU-Net: Embar-
rassingly simple semantic segmentation of 3D LiDAR point cloud , 2019
[6] Pierre Biasutti, Vincent Lepetit, Mathieu Bredif, Jean-Francois Aujol, Aurelie Bugeau.
LU-Net: An Efficient Network for 3D LiDAR Point Cloud Semantic Segmentation Based
on End-to-End-Learned 3D Features and U-Net , 2019
[7] Olaf Ronneberger, Philipp Fischer, Thomas Brox. U-Net: Convolutional Networks for
Biomedical Image Segmentation , 2015
[8] Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollar. Focal Loss for Dense
Object Detection , 2018
[9] A. Geiger, P. Lenz, and R. Urtasun. Are We Ready for Autonomous Driving? the KITTI
Vision Benchmark Suite , 2012
[10] Iñigo Alonso, Luis Riazuelo, Ana C. Murillo. MiniNet: An Efficient Semantic Segmenta-
tion ConvNet For Real-Time Robotic Applications, 2020
[11] Simon Jegou, Michal Drozdzal, David Vazquez, Adriana Romero, Yoshua Bengio. The
One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmenta-
tion, 2017
[12] Changqian Yu, Jingbo Wang, Chao Peng, Changxin Gao, Gang Yu, and Nong Sang. BiSe-
Net: Bilateral Segmentation Network for Real-time Semantic Segmentation , 2018
[13] OpenCV documentation 2.4.13.7, Eroding and Dilating
31

Similar Posts