Realizarea unui sistem de detectarea semnelor din trafic PROIECT DE DIPLOMĂ Specializarea: MECATRONICA Brașov 2018 Rezumat În acest proiect doresc să… [306196]
PROIECT DE DIPLOMĂ
Absolvent: [anonimizat]:
MECATRONICA
Conducător științific:
Prof. dr.ing. Mihaela BARITZ
Prof. dr.fiz. Sorin ZAMFIRA
Brașov
2018
[anonimizat] L. Ioana
Realizarea unui sistem de detectarea semnelor din trafic
PROIECT DE DIPLOMĂ
Specializarea:
MECATRONICA
Brașov
2018
Rezumat
În acest proiect doresc să realizez un sistem mobil pentru detectarea și recunoașterea semnelor de circulatie. Pentru a evidenția acest lucru am realizat un traseu cu 3 semne aleatorii pe care sistemul meu mobil de forma unei mașini îl va realiza in felul urmator:
În cazul în care pe traseu este un semn de “la dreapta ”, “la stanga ” sau “stop” masina va realiza comanda pentru semnul respectiv.
În acest proiect am urmărit poziționarea semnelor de circulație pentru a putea pune semnele pe traseu la distanța potrivită și pentru a putea realiza semnele la forma cea mai apropiată de realitate. De asemenea după o [anonimizat].
Am proiectat designul platformei și am așezat componentele în pozitiile cele mai convenabile. După care am început realizarea experimentală a proiectului în două moduri diferite.
În proiect am folosit două metode de detectare: una de detectare cu ajutorul algoritmilor de procesare de imagine si una de detectare cu retele neurale.
In detectarea cu ajutorul algoritmilor a [anonimizat], [anonimizat].
În partea de detectare cu retele neurale am antrenat rețeaua de detectare a [anonimizat], am mutat-o [anonimizat].
[anonimizat]-Fi la un monitor unde se pot trage concluzii despre cât de robust este algoritmul sau cât de bine este antrenată rețeaua.
Abstract
In this project I want to create a mobile system for the detection and recognition of traffic signs. [anonimizat] a 3 random traffic sign that my mobile system will do in the following way: If the track is a "right", "left" or "stop", the car will execute the command for that sign.
In this project I tracked the positioning of the traffic signs in order to put the signs on the route at the right distance and to be able to make the signs to the closest reality. Also after a [anonimizat].
We designed the platform and placed the components in the most convenient positions. After which I started the experimental realization of the project in two different ways.
We used two detection methods in the project: a detection algorithm with image processing algorithms and a neural network detection algorithm.
[anonimizat] a computer, [anonimizat].
[anonimizat]-[anonimizat] a monitor where conclusions can be drawn about how robust the algorithm is or how well the network is trained.
Cuprins
Introducere
Analiza semnelor de circulație
Introducere
Dimensiunile si forma indicatoarelor
Caracteristici tehnice
Forma indicatoarelor
ANALIZA ECHIPAMENTELOR SENZORIALE PENTRU DOTAREA SIGURANȚEI PASIVE SI ACTIVE AUTO
Moduri de detecție a semnelor de informare , avertizare și de de risc
Analiza echipamentelor senzoriale pentru dotarea siguranței pasive auto
Analiza sistemelor de transport autonome
Memoriu
Obiectivele
Fundamentarea teoretica
Proiectarea experimentului
Identificarea caracteristicilor vizuale ale semnelor
Alegerea senzorilor
Alegerea și descrierea sistemului mobil
Proiectarea într-un soft CAD a sistemului
Conceperea, proiectarea și construirea sistemului
Analiza și verificarea imaginilor captate
Rezultate
Concluzii
Direcții viitoare
INTRODUCERE
1.1. ANALIZA SEMNELOR DE CIRCULATIE
1.1.1.Introducere
Prin definiție, semnalizarea rutieră este un cod de simboluri, semne și semnale, cu ajutorul cărora se transmit participanților la trafic informații de avertizare, interzicere, restricție, orientare și informare sau aduc alte precizări, care ajută la desfășurarea în bune condiții a circulației vehiculelor și pietonilor.[1]
Pentru a putea fi văzute ușor și pentru a se putea face rapid diferența de semnificație dintre ele, semnele de circulație au forme și culori distincte în funcție de categoria din care fac parte.
Semnificația mijloacelor de semnalizare rutieră, precum și dimensiunile, forma, simbolul, culoarea, condițiile de execuție, amplasarea, instalarea și aplicarea acestora se stabilesc în conformitate cu standardele în domeniu.
În general, indicatoarele se instalează pe partea dreaptă a sensului de mers. Atunci când condițiile locale sunt de așa natură încât indicatoarele nu ar putea fi observate din timp de către participanții la trafic, acestea se pot repeta și pe partea stânga, în zona mediană a drumului, pe un refugiu sau spațiu interzis circulației vehiculelor, deasupra părții carosabile sau pe cealaltă parte a intersecției, la loc vizibil pentru toți cei cărora li se adresează.[2]
Pentru asigurarea vizibilității indicatoarelor, acestea trebuie să fie cât mai aproape de marginea părții carosabile. Pentru a evita acrosarea lor de către vehicule, se impune ca indicatoarele să fie amplasate pe taluz sau dincolo de șanț, asigurându-se o distanță de minimum 0,50 m de la marginea platformei drumului sau de la marginea trotuarului până la limita dinspre drum a indicatorului. Se recomandă ca această distanță să nu depășească 2,0 m.[2]
Trebuie evitată amplasarea indicatoarelor în interiorul unei curbe sau imediat după ieșirea din curbă, deoarece există riscul ca ele să rămână în afara câmpului de vizibilitate.[2]
Tipul indicatoarelor și locurile de instalare se stabilesc de către administratorul drumului, împreună cu poliția rutieră.
Indicatoarele rutiere se pot clasifica în felul urmator:
Indicatoarele de avertizare au ca obiectiv avertizarea participanților la traficul rutier asupra existentei unui pericol pe drum, indicându-le și natura acestora. Indicatoarele de avertizare, de regulă, au forma unui triunghi echilateral, cu chenarul de culoare roșie, în care pe un fond alb sunt figurate diferite simboluri de culoare neagră reprezentând natura pericolelor ce urmează a fi întâlnite. Mai pot fi întâlnite și dreptunghiuri cu fond alb pe care sunt figurate vârfuri de săgeți roșii care indică sensul virajului sau benzi roșii înclinate descendent spre partea carosabilă.
Se instaleaza de regulă înainte de locul pericolului, iar zona de acțiune a acestora începe din locul în care sunt instalate și încetează după locul periculos pe care l-au semnalizat.[3]
Indicatoarele de avertizare se instalează înaintea locului periculos, la o distanță de maxim 50 m în localități, între 100 m si 250 m în afara localităților, respectiv între 500 m si 1000 m pe autostrăzi și drumuri expres. Când condițiile din teren impun amplasarea la o distanță mai mare, sub indicator se instalează un panou aditional.[3]
Indicatoare de reglementare
Indicatoarele de prioritate pot avea:
Săgeți încrucișate pentru semnalizarea trecerilor la nivel de cale ferată, de culoare albă cu chenar roșu;[2]
Triunghi echilateral alb cu chenar roșu pentru cedarea trecerii;[2]
Octogon de culoare roșie având inscripția “STOP”;[2]
Romb cu fond alb și chenar roșu, având ca simbol două săgeți de sens contrar, una roșie și una neagră;[2]
Pătrat cu două săgeți de sens contrar, una roșie și una albă, pe fond albastru;[2]
Indicatoare de interzicere sau restricție sunt aplicate în dreptul zonelor interzise sau restricționate și încep din dreptul acestora. În lipsa unei semnalizari care sa precizeze lungimea sectorului pe care se aplica reglementarea ori a unor indicatoare care sa anunțe sfarșitul interdicției sau restricției, semnificația acestor indicatoare încetează în intersecția cea mai apropiată. Pot avea formă circulară cu chenar roșu și simboluri negre, roșii pe fond alb sau albastru sau formă circulară cu înscrisuri de culoare albă pe fond albastru.[3]
Indicatoarele de obligare se instaleaza la cel mult 50 de metri înaintea intersecției în care sensul de circulatie indicat de sageată este obligatoriu. Au formă circulară cu înscrisuri de culoare albă pe fond albastru.[3]
Indicatoare de orientare și obligare
Indicatoarele de orientare și informare au formă poligonală, în majoritatea cazurilor pe fond albastru, pe care sunt desenate sau sunt înscrise, cu caractere de culoare albă, informații referitoare la direcția ce trebuie urmată pentru a se ajunge la destinația dorită ori la diferite unități publice.[3]
Panouri adiționale pot fi însoțite de indicatoare și conțin inscripții sau simboluri care pot preciza, completa ori limita semnificația indicatoarelor.[3]
Marcajele servesc la organizarea circulației, avertizarea sau îndrumarea participanților la trafic. Marcajele se aplică pe suprafața părții carosabile a drumurilor modernizate, pe borduri, pe lucrări de artă, pe accesorii ale drumurilor, precum și pe alte elemente din zona drumurilor.[3]
Indicatoare kilometrice si hectometrice
Indicatoare rutiere temporale
1.1.2.DIMENSIUNILE ȘI FORMA INDICATOARELOR RUTIERE
[4] Dimensiunile indicatoarelor rutiere se utilizează în funcție de categoriile drumurilor:
Indicatoare foarte mari – pe autostrăzi și pe unele trasee de drumuri “E”, stabilite de administratorul drumului;
Indicatoare mari – pe restul drumurilor naționale;
Indicatoare normale – pe drumurile județene, comunale, străzi, pe drumurile private deschise circulației publice și pe unele drumuri vecinale cu trafic mai important;
Indicatoare mici – pe drumurile vecinale cu trafic redus și la semnalizarea de scurtă durată făcută de poliție la locul procedurii unui accident.[4]
1.1.5.CARACTERISTICI TEHNICE:
[6] Indicatoarele rutiere vor fi executate în unități specializate cu dotarea tehnică corespunzătoare astfel încât să se asigure respectarea tuturor condițiilor de execuție. Materialele folosite la confecționarea lor trebuie să corespundă standardelor în vigoare.
La confecționarea indicatoarelor în ateliere se vor executa operațiunile de:
Trasare după șablon a conturului indicatorului;
Tăierea tablelor cu ștanță;
Finisarea tăieturilor la ștanță sau foarfecă;
Confecționarea colierelor de prindere;
Confecționarea cornierelor de rigidizare;
Sudarea (nituirea) și finisarea cornierelor;
Vopsirea indicatoarelor în câmp electrostatic sau punerea foliei reflectorizante;
Trasarea chenarurilor și a simbolurilor;
Trasarea literelor și a cifrelor;
Depozitarea indicatoarelor pe sorturi;[6]
[5] Fața panoului se execută din folie retroreflectorizanta, prin debitare exclusiv cu echipamente digitale. Imprimarea celorlalte culori respectiv a simbolurilor se face semiautomat cu vopsea serigrafică rezistentă în mediul extern minim 7 ani.
Materialul din care este confecționat panoul este o tablă de aluminiu cu grosimea de 2 mm sau tablă de oțel galvanizat cu grosimea de 1 mm. Panourile sunt fabricate cu margini bordate, spatele panoului se vopsește electrostatic evitând efectul de oglindă.[5]
Suporții de fixare a semnelor de circulație sunt în general confecționați din oțel galvanizat cu diametre cuprinse între 48 – 76 mm. Fixarea panourilor de stâlpi se face cu ajutorul suportului universal TR 145 care se fixează pe rigla profilată prin îmbinare șurub-piulița,iar legăturile între suportul TR 145 și stâlp cu semi coliere.[5]
1.1.3.FORMA INDICATOARELOR RUTIERE:
Dimensiunea indicatoarelor triughiulare: 700 / 900 / 1200 / 1500mm[4]
Dimensiunile indicatoarelor de formă octogonală: 600/800/1000/ 1200mm[4]
Dimensiunile indicatoarelor în formă de pătrat sau romb: 300 / 330 / 400 / 600 / 650 / 850 / 1000mm[4]
Dimensiunile indicatoarelor în formă dreptunghiulară: 150×300 / 400×330 / 500×650 / 650 x 850 /… 950×1000 / 1000×850 / 1700×700 / 2000x330mm[4]
Dimensiunea indicatoarelor rutiere de tip săgeată: 600×200 / 950×330 /…/ 2250×330 / 1750×500 / 1750×650 / 1500x800mm[4]
ANALIZA ECHIPAMENTELOR SENZORIALE PENTRU DOTAREA SIGURANȚEI PASIVE SI ACTIVE AUTO
[7] Siguranța rutieră este o problemă importantă în domeniu auto, aceasta împărțindu-se în două categorii : siguranța pasivă și siguranța activă.
Siguranța activă este reprezentată prin sisteme care monitorizează permanent starea autovehiculului și care ajută șoferul să evite sau să reducă efectele unei coliziuni, iar ca exemple avem:
ABS (Antiblock Brake System) – sistemul care previne blocarea roților la frânare, a fost patentat în anul 1936 sub denumirea germană AntiBlockier System. Sistemul previne blocarea roților în timpul procesului de frânare. Sistemul Abs este considerat sistem de siguranță activă deoarece folosirea lui scade probabilitatea de coliziune prin mărirea decelerației de frânare și a manevrabilității autovehiculului. Studiile au arătat că odată cu introducerea sistemului ABS a fost redus numărul accidentelor mortale cu 24% și numărul celor grave cu 14% pe drumurile umede.
ETC (Electronic Control) – Sistemul de control al tracțiunii sau ASR (Acceleration Slip Regulation)- Sistemul de reglare a alunecării la accelerare. Acesta poate fi considerat "un sistem ABS inversat" adică un ABS care lucreaza invers față de accelerarea autovehicului și permite o accelerare eficientă, oferindu-i conducătorului un bun control pe căi cu aderența scăzută.
EBD (Elecronic Brakeforce Distribution) – Sistemul electronic de distribuție a forței de frânare.
ESP (Electronic Stability Program ) – Programul de control electronic al stabilității. Scopul acestui sistem constă în reducerea fenomenelor de derapare, alunecare și patinare. Este oarecum asemănător sistemelor ABS și ETC, diferența constând în faptul că la acest sistem semnalele primite de la senzori sunt monitorizate în permanentă și comparate cu cele ale unui model de referință, sistemul oferind un răspuns mult mai rapid. Cercetările întreprinse au demonstrat eficacitatea acestui sistem în reducerea numărului de accidente mortale cu 34% și a celorlalte cu 18 %.
BAS (Brake Assist System) – Sistemul de asistare a frânarii
ABC(Active Body Control) – Sistem de control activ al caroseriei
ACC (Adaptive Cruise Control) – Rolul sistemului adaptiv de navigatie este de a corecta viteza de deplasare prin înregistrarea vitezei autovehiculului din față și a distanței până la acesta, folosind un sistem radar. Sistemul s-a dovedit foarte eficient, deoarece de când s-a inventat nu a mai avut loc nici o coliziune din spate, de la autovehiculele echipatate cu ACC.[7]
[8,9] Siguranța pasivă ajută șoferii și pasagerii autovehiculelor să rămână în viață în cazul unui accident. Dimensiunea și greutatea autovehiculelor intra in aceasta categorie deoarece cu cât mașina este mai mare și mai grea cu atât este mai sigură.
Centura de siguranță – Centurile de siguranță în trei puncte sunt cel mai frecvent tip de centură de siguranță ce beneficiază de trei puncte de prindere și un sistem de blocare în caz de accident.
Sistemul Isofix reprezintă un sistem de fixare sigură și foarte ușor de manevrat a scaunului copilului din autovehicul.
Tetierele au rolul de a proteja pasagerii în cazul unui impact venit din spatele autovehiculului.
Airbag-urile absorb impactul și sunt situate în volan, în bord sau in panourile ușilor.
ACR (Active Control Retractor) – Cele 2 sisteme integrate, AEB si ACR, procesează informații din mediul extern și de la senzorii ce monitorizeaza dinamica autovehiculului.
Sistemele de siguranță cu potențialul cel mai mare de a fi introduse în anii următori sunt:
LDW(Lane departure Warning) – Sistemul de atenționare a deplasării benzii;
BbW(Brake by Wire) – Sistemul de frânare cu comandă electronica;
ER(Environment Recognition) – Sistemul de recunoaștere a mediului în care se deplasează autovehiculul;
SbW(Steer by Wire) – Sistemul de direcție cu comandă electronica;
EB(Emergency Brake) – Sistemul de frânare de urgență;
EMB(Electromecanical Brake) – Sistemul de frânare electromecanic;
EMS(Electromecanical Steering) – Sistemul de direcție electromecanic;
PS(Platooning System) – Sistemul de mers în coloană;
HC(Highway Copilot) – Sistemul de deplasare asistată pe autostradă;
CA (Collision Avoidance) – Sistemul de evitare a coliziunii;
AD(Autonomus Driving) – Sistemul de conducere autonomă a autovehicului;[8,9]
[?] În prezent se desfășoară cercetări susținute pentru perfecționarea sistemelor de siguranță activă deja introduse, dar și pentru dezvoltarea altora noi.
Blind Spot Monitoring – este un sistem de siguranață care poate preveni accidentele de circulație ce apar mai ales la schimbarea benzilor de circulație. Deși la autovehiculele moderne unghiul mort s-a diminuat considerabil datorită noilor forme ale oglinzilor retrovizoare, este indicat să se efectueze o monitorizare completă a zonei unghiului mort care să acopere inclusiv neatenția multor conducători auto care uită să se asigure.
TPMS (Tire Pressure Monitoring System) – Sistemul de avertizare asupra presiunii în pneuri este foarte important deoarece dacă presiunea anvelopelor scade sub limită, în timpul deplasării automobilului, anvelopele se vor deforma excesiv, această deformație ducând la creșterea temperaturii anvelopei precum și la reducerea aderenței transversale.
AFS (Adaptive Frontline Assistant) – Acest sistem este controlat de mișcarea volanului și de viteza autovehiculului. Sistemul de faruri adaptive rotește blocul optic în curbe cu +/- 15°. Funcția de iluminare pe autostradă mărește raza de acțiune a farurilor pentru a asigura o călătorie relaxantă.
1.3.ANALIZA SISTEMELOR DE TRANSPORT AUTONOME
[10] Autovehiculele autonome au fost definite ca vehicule în care funcționalitatea se face fără ca șoferul să primescă controlul asupra direcției, accelerației și frânarii, potrivit Administrației Naționale de Siguranță a traficului pe autostrada. În cazul acestor vehicule, șoferul nu este nevoit să monitorizere constant carosabilul în timpul funcționarii vehiculului.
Tehnologiile autonome de transport au fost utilizate cu succes în diferite domenii cu diferite aplicații, ca de exemplu : în aviație, în trenurile de metrou, trenuri de transfer, aplicații militate si industrial, etc.
Utilitatea sistemelor autonome au fost de ajutor și în cazul armatei americane care au testat vehicule off-road fără conducător auto pe terenuri nelocuite și dificile, utilizând senzorii GPS și laser. Aceste vehicule se țin strâns legat unele de altele urmând traseul stabilit. Nu este încă clar dacă aceste autovehicule ar putea fi utilizate și în operațiuni reale.
În industria aerospațială a fost dezvoltat un vehicul autonom pentru cercetarea zonelor din spațiu. Acesta utilizează o rutină autonomă de căutare și evaluează zona din față făcând fotografii.
Cercetările indică faptul că până la 90% din accidentele rutiere sunt cauzate de șofer, avocații pentru vehiculele fără șofer folosesc astfel de statistici pentru a susține că sistemele autonome iau decizii mai bune și mai rapide decât oamenii. De asemenea, aceștia susțin că vehiculele autonome întotdeauna vor monitoriza și se vor adapta la traffic, condiții meteorologice diferite și vor evita obstacolele de pe șosea cu mult mai multă vigilență, viteză și siguranță decât șoferii umani.
Pentru a obiține un vehicul perfect autonom, sunt necesare patru funcții de bază interdependente: navigația, analiza situației, planificarea mișcării și controlul traiectoriei.
Navigația creează și recalculează o harta digitală care include informații despre locație, trafic,tipuri și setări de drumuri, teren și prognoze meteo. Acest lucru este realizat cu ajutorul GPS-ului iar pentru un sistem autonom complet este nevoie de comunicarea vehicul-cu-vehicul.
Analiza situațională monitorizează mediul în care vehiculul se mișcă pentru a se asigura că sistemul autonom este conștient de toate obiectele relevante și de mișcările lor. Acest lucru este realizat cu ajutorul camerelor video care identifică obiecte relevante din mediul înconjurător, cum ar fi alte vehicule, pietoni, semen de circulație și semafoare.
Planificarea mișcării este responsabilă de monitorizarea mișcărilor vehiculului. Ea face acest lucru prin utilizarea senzorilor care determină un curs precis al mișcării într-o anumită perioada de timp
Controlul traiectoriei gestionează efectuarea modificărilor pre-planificate ale vitezei și direcției, observând și menținând stabilitatea în timpul conducerii. Acțiunile de accelerare sau frânare și de reglaje ale direcției sunt efectuate de sistemul autonom. [10]
Fig.1.3.1. Functiile vehiculului autonom [10]
În ziua de astăzi există diferite tehnologii de conducere autonomă în industria automobilelor.
O aplicație foarte populară este Park Assist, disponibilă ca accesoriu opțional și este sistemul responsabil cu asistarea parcării. Acesta parcheaza mașina cu o mare precizie și in câteva secunde, chiar și în spații înguste de parcare. Acesta preia controlul integral al direcției, șoferul controlând doar accelerația si frâna.
Cross traffic alert este un sistem de avertizare automată a traficului din spatele mașinii, care oferă șoferului un avertisment sonor dacă un obiect se află în apropiere.
Fig.1.3.3. Cross traffic alert[12]
Traffic sign recognition folosește o cameră frontală pentru a detecta semnele de circulație. Odată ce acest lucru se întâmplă, software-ul de recunoaștere interpretează semnul de circulație și afișează pe un display informații despre acesta.
Lane Deparature Warning este un sistem de avertizare cand masina este pe punctual de a iesi din interiorul benzilor albe de pe carosabil.
Emergency Braking este un sistem de detectarea a masinilor si persoanelor participante la trafic.
Predestination Detection utilizeaza senzori avansati pentru a detecta miscarile umane si a alerta conducatorul auto. Unele sisteme pot aplica automat frânele. Detectarea pietonilor nu poate fii intotdeauna in masura sa evite o coliziune, dar poate ajuta la reducerea vitezei.
Collision Avoidance este un sistem pentru evitarea coliziunilor. Utilizează un radar , uneori un laser și un aparat de fotografiat pentru a detecta un accident eminent.
Adaptive Cruise Control este un sistem de autopilot. Sistemul utilizeaza un radar sau un laser pentru a permite vehiculului să incetinească atunci când se apropie un alt vehicul și să accelereze la viteza setată atunci când condițiile de trafic o permit.
Alte exemple de conducere autonomă pot fi găsite în aplicațiile de transport public. Grupul RDM din Marea Britanie Colaborează cu universitatea Oxford pentru a produce vehicule de transport public fără șofer. Aceste vehicule pot transporta în mod autonom doi pasageri la viteze de până la 11 km/h.
2.1. OBIECTIVELE PROIECTULUI
Obiectivele principale ale proiectului sunt de a realiza un prototip pentru detectarea și recunoașterea semnelor de circulație rutieră. Prin realizarea unui sistem mobil de tip mașină pe care se amplasează o cameră video și care are in componența o placă de comandă și control pentru controlul motoarelor si pentru procesarea imaginilor preluate de la camera video.
Pentru implementarea algoritmului de detectare am avut nevoie de cunoștințe de programare in Python si cunoștințe de instalare a librariilor aferente în Command Prompt.
Obiectivul acestui proiect este dezvoltarea unui algoritm pentru recunoașterea automată a semnelor de circulație în timp real. Acest lucru va fi posibil prin parcurgerea urmatoarelor etape:
Documentarea despre forma, dimensiunea și pozitionarea semnelor de circulatie.
Documentarea despre algoritmul cel mai potrivit cazului de fața
Alegerea senzorilor in cazul de fața alegerea camerei video potrivite.
Alegerea elementelor componente pentru realizarea prototipului
Alegerea placii de comanda și control
Proiectarea elementelor componente
Proiectarea variantei finale a prototipului și pozitionarea elementelor
Schema electrica a sistemului
Asamblarea carcasei și poziționarea elementelor
Legarea electrica a componentelor de pe platforma
Verificarea legaturilor făcute.
Conectarea plăcii de comanda și control și copierea pe cardul SD al sistemului de operare
Controlul motoarelor.
Alegerea și implementarea celei mai bune metode de detectie a semnelor cu tehnici de procesare de imagine.
Alegerea si implementarea celei mai potrivite metode de detectie cu retele neurale
Recunoașterea semnului de circulație
Implementarea tuturor elementelor într-un sistem mobil
Testarea prototipului cu ajutorul unor semne de circulatie realizate manual
Tragerea concluziilor
Eventuale îmbunătatatiri
2.2. FUNDAMENTAREA TEORETICĂ
Primele sisteme TSR care au recunoscut limitele de viteză au fost dezvoltate în cooperare, de către MobilEye și Continental AG. Acestea au apărut pentru prima dată la sfârșitul anului 2008, pe noul BMW Seria 7, și anul următor pe Mercedes-Benz S-Class. [1]
În prezent, aceste sisteme detectează doar semnele limită de viteză rotundă găsite în întreaga Europă. Sistemele de generație secundară pot detecta, de asemenea, restricții de depășire. A fost introdus în 2008 în Opel Insignia, urmat de Opel Astra și Saab 9-5. Această tehnologie este disponibilă și pentru modelul din anul 2011 Volkswagen Phaeton [3] și, începând din 2012, pentru Volvo S80, V70, XC70, XC60, S60, V60 și V40.[4]Nu sunt capabile să recunoască semnele de limitare ale orașului, care în majoritatea țărilor europene sunt asociate cu limite de viteză, deoarece sunt prea asemănătoare cu semnele de direcție.
Tesla în prezent lucrează la un proiect numit "Full Self-Driving Capability" unde automobilul are integrate mai multe camere pentru detecția mai multor factori ce țin de siguranța activa a pasagerilor. Zilnic Tesla lucrează pentru îmbunătățirea software-ului pentru detecția obiectelor și ca dovadă au reușit în detectarea semnelor de circulație sa poată opri masina la semnalul roșu al semaforului, a indicatorului de stop și automobilul să poată pleca după ce a detectat dacă este sigură următoarea mișcare.
În prezent Audi, pe noul A8 a implementat un sistem de detectare a semnelor de circulație însă nu este precum al celor de la Tesla. Aparatul de recunoaștere a semnelor de circulație pe bază de cameră detectează semne de limită de viteză (inclusiv semne digitale), zone de trecere, semne de restricție de intrare și alte semne auxiliare și le afișează șoferului în formă grafică.
Fig. 2.2.1. Masina cu sistem de detectare a semnelor de circulație
2.3. PROIECTAREA EXPERIMENTULUI
2.3.1. IDENTIFICAREA CARACTERISTICILOR VIZUALE ALE SEMNELOR DE CIRCULAȚIE
[20] Semnul este amplasat pe marginea drumului pentru a transmite informații participanților la trafic și este cunoscut sub numele de semn rutier sau semen de circulație. Exista patru tipuri de semne de circulație : de avertizare, de interdicție, de obligație și informare.
În funcție de formă și de culoare, semnele de avertizare sunt sub forma triunghiurilor echilaterale cu varful orientat în sus, ele au un fundal alb și sunt înconjurate de o margine roșie. Semnele de interdicție sunt cercuri cu fundal alb sau albastru și o margine roșie. Atat semnele de avertizare cât și semnele de interdicție au un fundal galben dacă se afla într-o zonă în care există un pericol. Semnele de obligație sunt reprezentate de cercuri cu fundal albastru, iar semnele informative au aceeași culoare.
Sunt două excepții care se abat de la regulile indentificate mai sus, semnul rutier al randamentului care este un triunghi inversat și semnul de stop care este un hexagon.
Există mai multe probleme majore în întreg procesul de detectare a semnelor pe care le vom aminti in paragrafele ce urmează.
Semnele rutiere sunt frecvent blocate partial de diferite obiecte prezente în scenele de trafic cum ar fii: pietonii, alte vehicule, clădiri și panouri, abțibilde lipite, praful,etc.
O altă problemă ar fi fenomenele meteorologice care pot afecta vizibilitatea semnului rutier precum ninsoarea, ploaia, ceața, lumina puternică reflectata spre semn.
În timp semnele se pot deteriora iar culoarea standard a semnului devine mai stearsă [20]
2.3.2. ALEGEREA SENZORULUI, DESCRIEREA LUI SI MODUL DE LEGARE
La acest proiect am folosit o cameră web Microsoft LifeCam HD-5000 de înaltă rezoluție. Camera are un sensor HD de 720p si îmbunătățește automat imaginile prin caracteristica de Auto Focus, în timp ce TrueColor ajustează expunerea pentru imagini luminoase si vibrante. In plus ecranul lat dă o senzație cinematografică.
[21.]Transmiterea datelor se fac cu ajutorul USB-ului de mare viteza compatibil cu specificațiile USB-ului 2.0, sistemul de operare pe care poate funcționa este Microsoft Windows 7, Windows Vista si Windows XP.
Caracteristicile camerei web:
Senzor CMOS
Rezoluție video de 1280 x 720 pixeli
Rezoluție imagine statică 1280 x 800
Pană la 30 de cadre pe secundă
Câmp vizual de 66°C
Panou digital, înclinare digitală, înclinare verticală și rotativă și zoom digital de 4 ori
Focalizare automată, variază de la 6 inchi (147mm) la infinit
Reglare automată a imaginii cu supra sarcină manuală
Ecran panoramic 16:9
Adâncimea de culoare de 24 biti
Performanța caracteristicilor camerei web:
Microfon integrat și anularea zgomotului
Interval de frecvență 200 Hz – 7,5 kHz
Bază de fixare universală și flexibilă
Temperatura și umiditatea de depozitare -40° C pana la 60° C la o umiditate relativă de la 5% până la 65% făra condensare
Temperatura si umiditatea la care funcționează este de 40°C iar umiditatea relativă de la 5% până la 80% fără condensare
Dimensiunile camerei sunt urmatoarele:
Lungime 37,8 mm
Lățime 40,8 mm
Adâncime/Înălțime 109 mm
Greutate 96.5 g
Lungimea cablului 1829 mm [21]
Fig. 2.3.2.1. Microsoft LifeCam HD-5000
2.3.3. DESCRIEREA PLATFORMEI, POZIȚIONAREA ELEMENTELOR ȘI DESCRIEREA ELEMENTELOR
Pentru o reprezentare mai bună a detecției semnelor de circulație am ales să construiesc un sistem mobil de forma unei mașini care va realiza un traseu ce are în componență anumite semne de circulație alese aleator.
Materialul ales pentru realizarea platformei pe care vor sta componentele este un plexiglass din acril transparent. Am ales acest material deoarece are urmatoarele avantaje:
Are transmisie a luminii de până la 92%
Se poate prelucra la rece sau la cald
Rezistă la temperaturi extreme
Are greutate scazută
Este disponibil în culori inedite si finisaje deosebite
Planeitatea este perfectă [22]
Fig.2.3.3.1. Plexiglass
Pentru mobilitatea sistemului am ales patru motoare MG-6-120 biaxial care funcționează la o putere nominală de 6V, cu un raport de transmisie de 1:48. Acesta are un arbore dublu, iar curentul nominal este mai mic de 240mA, viteza de rotație 230 rpm iar cuplul de aproximativ 0,078 Nm. [23]
Fig.2.3.3.2. Motorul [23]
Motoarelor le-am adăugat un set de roți cu diametrul de 65 mm realizate dintr-un material de plastic ABS combinat cu cauciuc. Aceste roți vin in același set cu motoarele fiind facute special pentru tipul de motor MG-6-120.
Fig.2.3.3.3. Roata
Pentru a putea controla motoarele de la microcontroller am avut nevoie de un driver de motor. Un driver de motor sau punte H este cea mai obisnuita metoda de a controla un motor DC cu perii. Aceasta utilizează două perechi de tranzistoare pentru a controla direcția în care curentul este permis să circule prin motor. Puntea H mai are în componență două diode utilizate pentru a proteja împotriva tensiunilor produse de motor în timp ce acesta funcționeaza [24]
Fig. 2.3.3.4 Schema electrică punte H[25]
În cazul meu am folosit două drivere de motor care se bazeaza pe controlerul H-brige dual L298n, ce poate fi utilizat pentru a conduce două motoare de curent continuu de până la 2A fiecare, cu o tensiune între 5 si 35V . Controlerul are diode de protecție rapidă la scurtcircuit și un radiator pentru răcire.[26]
Fig.2.3.3.5 Driver motor L298N
Pentru alimentarea circuitului am ales o baterie ce conține clorură de zinc, cu tensiunea de ieșire 9V. Tensiune de încărcare 4.2 V, tensiune nominală 3.7 V
Pentru oprirea și pornirea sistemului am ales un buton de tip glisant cu două pozitii ON si OFF. Sarcina admisibilă pentru contacte AC este de 3A/250 VAC iar sarcina admisibilă pentru contacte DC este de 6A / 28 VDC.[28]
Fig. 2.3.3.7 Butonul glisant[28]
[29]Placa de comnadă și control aleasă este una Raspberry Pi 3 Model B cu un procesor quad core pe 64 de biti care ruleaza la 1.4 GHz, dual-band de 2,4 GHz si 5 Gh LAN wireless, Bluetooth 4.2/BLE, Ethernet rapid si capacitate Poe prin intermediu unui Poe Hat separat.
Placa se alimentează prin cablu micro USC la tensiunea de 5V si 2A in care se mai pot conecta tot prin USB tastatura, mouse-ul, iar prin cablul HDMI se poate lega la un monitor sau prin transmisie WI-FI la laptop, deși la laptop feedback-ul de miscare în sistemul de operare este mult mai lent decat cel de pe monitor.
In timpul funcționării plăcii procesorul se încinge destul de tare ajungând la temperaturi de până la 80 °C, iar din aceasta cauza am adăugat pe toate procesoarele de la Raspberry Pi răcitoare de metal special concepute pentru ele.
Fig.2.3.3.8. Raspberry pi 3model B [30]
Cu ajutorul tabelului de mai jos am identificat pinii de ieșire ai plăcii de dezvoltare, iar numerotarea lor se face începând din colțul stânga cu pinul de jos.
Tabel.2.3.3.1. Pinii de ieșire
Specificațiile plăcii sunt următoarele:
Procesor Broadcom BCM2837B0, Cortex-A53 64-bit SoC @ 1.4GHz
Memorie 1GB LPDDR2 SDRAM
Conectivitate
2.4GHz and 5GHz IEEE 802.11.b/g/n/ac wireless LAN, Bluetooth 4.2, BLE
Gigabit Ethernet over USB 2.0 (maximum throughput 300Mbps)
4 × USB 2.0 ports
Extensie cu 40 de pini GPIO
Video și sonor
Un HDMI de dimensiune completă
Portul de afișare MIPI DSI
Portul pentru camera MIPI CSI
Ieșire stereo de 4 poli și port compozit video
Multimedia H.264, MPEG-4 decode (1080p30); H.264 encode (1080p30); OpenGL ES 1.1, 2.0 graphics
Suport de card format micro SD pentru încărcarea sistemului de operare și stocare a datelor
Input power
5V/2.5A Dc prin conector micro USB
5V Dc header GPIO
Power over Ethernet (Poe) – activat
Temperatura de operare este de 0-50 °C [29]
2.3.4.PROIECTAREA ELEMENTELOR COMPONENTE ALE PROIECTULUI
Înainte de asamblarea componentelor alese în capitolul anterior, voi proiecta elementele intr-un soft CAD pentru o mai buna reprezentare a lor în spatiu 3D.
Platforma pe care am așezat componentele este realizată din plexiglas incolor cu grosimea de 2 mm, acesta fiind taiat în forma dorita cu ajutorul unui biax pentru o precizie mai bună, marginile fiid șlefuite iar elementele rezultate au fost lipite între ele cu un adeziv de tip super-glue.
Înainte de taierea si lipirea componentelor, platforma a fost realizată in soft-un CATIA v5 cu cotele aferente.
Diagrama de mai jos reprezintă o versiune uniaxiala, dar arborele de pe partea opusa are aceeasi dimensiune.
Fig. 2.3.4.4. Cotele motorului Fig. 2.3.4.5 Cotele motorului
Poziționarea elementelor pe structura de plexiglass va fi facută în felul următor, la urmatoarele distante indicate în figura de mai jos.
2.3.5. PRINCIPIUL DE FUNCȚIONARE A SISTEMULUI
Achiziția datelor se va face cu ajutorul camerei video, după care urmează procesarea imaginilor preluate de cameră cu îmbunătățirile aferente ale imaginii și detectarea poziției semnului de circulație rutier.
În etapa de recunoaștere fiecare candidat pe care l-am detectat este testat împotriva unui anumit set de caracteristici (modelul) pentru a decide dacă este sau nu în grupul de semne rutiere iar dupa aceea sunt clasificate în diferite grupuri.
Toate acestea sunt trecute prin logica Python cu librăriile necesare, și incărcate pe cardul de memorie al plăcii de dezvoltare Raspberry Pi. Controlul motoarelor se va face tot cu ajutorul plăcii de comandă iar afișarea rezultatelor se va transmite pe laptop cu indicatiile aferente prin protocolul de comunitație WI-FI.
2.3.6. SCHEMA HARDWARE A SISTEMULUI
2.3.6. INTRODUCERE ÎN PROCESAREA IMAGINII
[31, 32] Prelucrarea și analiza imaginilor s-a născut datorită ideii și necesitătii de a înlocui observatorul uman printr-o masină. Este important de precizat că analiza imaginiilor a mers mult mai departe decât simpla înlocuire a observatorului uman, deoarece au aparut soluții pentru problemele cu care acesta nu mai fusese confruntat, ca in cazul imaginilor non-vizibile (imagini acustice, ultrasonore, radar).
Prin prelucrarea digitală a imaginilor se întelege prelucrarea pe un calculator digital a unor date bidimensionale (imagini).
La început, imaginile sunt semnale, dar nu funcții temporale, ci funcții definite pe un domeniu spatial. Orice imagine este o structură bidimensională (tablou, matrice) de date. Un element al imaginii se numeste pixel. Aceste date pot fi numere naturale, reale sau complexe, reprezentate pe un număr finit de biți. Dupa tipul datelor, imaginile prelucrate pot fi împartite în mai multe categorii:
imagini scalare, în care fiecare componentă este un scalar; ca exemple de astfel de imagini se pot da imaginile monocrome și imaginile cu nivele de gri.
imagini vectoriale, în care fiecare componentă este un vector de numere; cazul particular cel mai de interes este acela al imaginilor color, în care vectorul are trei elemente (ce corespund celor trei constituente de bază ale oricarei culori
Structura tipică a unui sistem de prelucrare și analiza imaginilor este alcatuită din punct de vedere funcțional dintr-un număr mic de blocuri.
sistemul de formare a imaginii (de exemplu sistemul de lentile al camerelor de luat vederi): strânge radiatia electromagnetica a obiectului studiat pentru a forma imaginea trăsăturilor de interes
convertorul de radiație : convertește radiația electromagnetică din planul imaginii într-un semnal electric.
Îmbunatățirea imaginilor este o sintagmă generală ce se refera la o clasă largă de operații al căror scop este mărirea detectabilității componentelor imaginii. Detectabilitatea componentelor este legată mai mult de percepția vizuală a unui observator uman decât de o analiză automată cantitativă. Percepția vizuală de referință este cea a unui expert uman în domeniul aplicației din care provine imaginea.
Așadar criteriile de evaluare ale calității unei imagini sunt subiective si specifice aplicației. Ca o consecință, procesul de îmbunătățire va fi interactiv, transformările efectuate trebuind să fie validate de catre un utilizator uman.
Din punctul de vedere al metodelor utilizate, putem distinge mai multe tipuri de operații de îmbunătățire:
operații punctuale, prin care se realizează o corespondență de tip “unu la unu” între vechea valoare a nivelului de gri și noua valoare a acestuia, pentru fiecare pixel al imaginii. Tot în acestă categorie vom include și operațiile de pseudocolorare, care se referă la afișarea imaginii folosind o paletă de culoare modificată.
operații locale (sau de vecinătate), prin care noua valoare a nivelului de gri într-un pixel este obținută din vechea valoare a pixelului respectiv și din valorile unor pixeli vecini pixelului considerat.
operații integrale, în care noua valoare a unui pixel este dependentă de valorile tuturor pixelilor imaginii.
Pixelul este cel mai mic element al unei imagini digitale. Pixelii sunt pătratele colorate care se vad când mărimi la maxim o imagine in Photoshop.
Calculatorul stochează informațiile folosind sistemul binar, adică prin intermediul a două cifre 0 si 1. Cea mai mică celulă de memorie se numeste bit și poate avea valoarea 0 sau 1. Aceste valori numerice sunt expresia unui fenomen fizic care are loc în acea celulă, cum ar fi dacă trece sau nu curent electric prin ea.
Termenul de bit depth în imaginea digitală definește numărul de biți alocați unui pixel. De exemplu, o imagine compusă din pixeli albi și negri este o imagine pe 1 bit. Fiecărui pixel îi este alocat 1 bit, care poate fi 0 sau 1 (negru sau alb). Dacă ridicăm numărul de biți la 2, pixelul poate avea alocate urmatoarele valori: 00, 01, 10(unu-zero) și 11(unu-unu). Imaginea poate avea 4 valori posibile per pixel (negru, gri închis, gri deschis si alb) și așa mai departe pentru 4, 8, 16, 32 de biți.
În prezent formatul comun al imaginii digitale este 8 biți, adică 28 combinații posibile de 0 și 1, în total 256 de combinații. Aceste imagini au 256 de nuanțe de gri per pixel. Cercetătorii au constatat că pentru a simula un degradeu de la alb la negru care să pară continuu pentru ochiul uman este nevoie de 240 de tonalități. Așadar standardul de 8 biți este suficient pentru a crea o imagine alb negru cu tonuri continue.
Imaginea color RGB este de fapt o combinație de 3 imagini pe 8 biti, câte una pentru canalele roșu (RED), verde(GREEN) și albastru(BLUE). Imaginea RGB este o imagine cu 8 biți pe canal sau imagine pe 24 de biti, capabilă să redea (28)x(28)x(28) culori, adică 16.7 milioane de culori.
Modulul RGB cu 8 biți/canal este standardul în fotografia digitală actuală.
Deși matematic este posibil să reprezinți numeric aceste culori, practic nu există încă display-urile sau imprimantele care sa le și poată reda. De aici a apărut nevoia de a defini un spațiu care să conțină doar acele culori ce pot fi redate fizic. [31, 32]
2.3.7. LEGAREA ELECTRICĂ A COMPONENTELOR
În primul pas am lipit cu ajutorul unui letcon firele de culoare verde și galben pentru masa și alimentarea celor patru motoare.
După ce am lipit firele, le-am introdus la pinii de iesire OUT1, OUT2, OUT3, OUT4 ai driverului de motor. La driver am pus fire pentru pinii de ieșire IN1, IN2, IN3, IN4 și pentru pinii de PWM ENA si ENB care vor duce la placa de dezvoltare Raspberry Pi.
Am asamblat Raspberry Pi-ul în carcasa proiectată mai sus, prins cu patru suruburi de M3. Carcasa a fost realizată cu scopul de a prinde Raspberry pi-ul de placă deoarece a fost necesară lipirea unor răcitoare pe procesor.
A fost necesară punerea unui buton pentru oprirea si pornirea electrică a sistemului. Butonul de tip switch a fost lipit pe un PCB (Printed circuit board) din fibră de sticlă, prins cu șuruburi de un profil de aluminiu în formă de “L” .
Legarea firelor de la driverele de motor la Raspberry Pi pentru a putea controla motoarele s-a făcut în felul următor:
Tabel. 2.3.7.1
Calibrarea camerei a fost facută cu ajutorul unui sistem de forma celui de mai jos.
Poziționarea camerei în sistemul mobil
Fig. 2.3.7.8 Schema pozitionarii camerei
Varianta finala a prototipului
Dupa ce am legat firele și am verificat cu multimetrul dacă conexiunea lor este buna, am intrat în sistemul de operare al Raspberry Pi-ului și urmând pașii urmatori am programat motoarele:
Pasul 1: Am conectat la Raspberry Pi cablul de Ethernet la aceeași rețea la care este legat și laptopul iar cu programul Advanced IP scanner am aflat IP lui.
Pasul 2: Am instalat programul Numpy, am setat IP corespunzator pentru Ethernet și am pus id-ul și parola cu care mă voi conecta de acum inainte.
Pasul 3: Am intrat in Remote Desktop Connection, am introdus parola și ID și am intrat în sistemul de operare instalat pe cardul micro SD atașat Raspberry pi-ului.
Pentru programarea motoarelor am intrat în terminal, iar cu comanda “sudo apt-get install python=RPi.GPIO” am instalat comanda pentru programarea porturilor de iesire ale plăcii de dezvoltare. Am făcut un folder în care am salvat programul iar cu comanda “sudo nano robot2.py” am deschis programul în care am scris liniile de cod pentru controlul motoarelor. Cu ajutorul comenzii “sudo python robot2.py” rulez programul.
Fig. 2.3.7.9. Programul motoarelor
2.3.8. STRUCTURA PROGRAMULUI ȘI EXPLICAREA LUI
‘In acest proiect am testat doua metode de detectare a semnelor de circulatie una de detectare cu tehnici clasice de procesare de imagine si o detectare cu retele neurale.
Scopul detectiei semnelor de circulatie este de a gasii locatiile si dimensiunile in imaginile prealuate de la camera video.
Detectarea imaginii contine pasi de pre-procesare, imbunatatire si segmentare in fuctie de proprietatile semnului de circulatie, cum ar fi culoarea si forma dupa care se va face detectarea.
Softul a fost realizat în limbajul de programare Python 3.6 in care am folosit urmatoarele librarii Opencv, Numpy, Matplotlib pe care le-am instalat precum putem observa în rândurile urmatoare.
Pentru ca programul să funcționeze la parametrii ideali, trebuie să instalăm din terminal urmatoarele biblioteci, dar inainte de acestea trebuie instalat versiunea curenta de pip (package management system) pentru a reusi să le instalăm.
Pentru a verifica dacă bibliotecile au fost instalate, am intrat în IDLE-ul de la Python și am testat acest lucru.
Programul de detectare a semnelor de circulatie functionează mai bine dacă folosim imagini făcute pe propriile semne de circulație. Pentru a reuși acest lucru am realizat programul cu numele “poze semne de circulație”, care va cere la un moment dat să apas o tastă pentru a face poza model după care vom detecta semnele de circulație.
In acestă structură de program am inițializat camera USB, am folosit un counter pentru a afla când se termină realizarea pozelor și în care vom avea implicit salvată denumirea lor.
In continuare voi prezenta pre-procesarea în care am folosit mai multe metode de îmbunătățire a imaginii , explicate in rândurile ce urmează.
Transformarea imaginii din RGB în tonuri de gri. Algoritmul tradițional de transformare a imaginii în tonuri de gri, obtine culoarea medie a canalelor și face fiecare canal egal cu media.
X = (1)
O metodă mai bună de conversie este reprezentată in formula de mai jos, care specifică metode de codare digitala a semnalelor video prin normalizarea valorilor. Pentru transmisiile de tonuri de gri, aceasta definește urmatoarea formula.[15]
X = (0,299*R + 0,587*G + 0,114*B) (2)
In al doilea pas am aplicat cu filtru Gaussian care este rezultatul neclaritații imaginii printr-o funcție Gaussiana. Este utilizat de obicei pentru a reduce zgomotul imaginii și pentru a reduce detaliile. Efectul visual al acestei tehnici de estompare este o claritate netedă asemănătoare cu cea a vizualizarii imaginii printr-un ecran translucid. Filtrul Gaussian este, de asemenea utilizat în etapa de pre-procesare[17]
G(x,y) =
Urmatorul pas cuprinde binarizarea imaginii și reprezintă cea mai simpla metodă de segmentare. Algoritmii de binarizare pot fi aplicați cu succes dupa ce imaginea este transformată în niveluri de gri relativ constante. Aceasta face ca separarea regiunilor din imagine să poată fi realizată fară prea mari dificultăți prin impunerea unui prag de binarizare pe baza căruia fiecare pixel din imagine va fi clasificat ca fiind pixel de fond sau pixel de obiect. Binarizarea poate fi exprimată cu urmatoarea regula.[18]
g(i,j) =
Dupa pre-procesare urmeaza pasul de gasire a conturului in cazul de fata gasirea cercului si a octogonul. Un cerc este reprezentat mathematic ca de formula (1). Din ecuatie putem observa ca avem 3 parametrii, deci avem nevoie de un accumulator 3D pentru transformarea hulei.
(x-x_centru)2+(y-y_centru)2 = r2 (1)
Am folosit functia din OpenCV “cv2.HoughCircles()” care foloseste o metoda mai eficienta decat cea matematica, utilizand informatii despre gradientul marginilor. Iar cu functia “cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)” am trasat centrul cercului. Dupa detectia formei am verificat care este culoare dominanta între anumite valori în care se încadrează culoarea roșu și albastru și am afișat mesajul caracteristic semnului.
Partea adoua a experimentului presupune detectarea obiectelor cu ajutorul retelelor neurale. Initial reteaua va fi antrenata pe calculator iar dupa mutata pe Raspberry Pi deoarece placa de dezvoltare isi foloseste toate resursele pentru acest lucru si nu face fata pana la sfarsitul antrenarii retelei.
In primul rand am instalat Tensorflow-CPU folosind comanda “pip install –upgrade tensoflow” care va descarca automat versiunea 1.5. Instalam si Anaconda cu Python 3.6, deoarece mediul virtual Anaconda va fi folosit pentru restul tutorialului.
Creem un director in C: si il denumim “tensorflow1”, acest director va contine intreg cadrul de detectare a obiectelor Tensorflow, precum si imaginile de antrenament, datele de antrenament, clasificatorul instruit, fisierele de configurare si orice altceva necesar pentru detectarea semnelor de circulatie.
Am descarcat de pe https://github.com/tensorflow/models modelul directorul tensorflow1 in care avem toate fisierele necesare antrenarii.
In pasul urmator am ales modelul de instruire SDD-MobileNet deoarece il vom utiliza pe raspberry pi iar acesta are o putere de calcul mult mai mica decat un calculator.
Am intrat in Anaconda Command Prompt, am activat directorul creat mai sus si am instalat urmatoarele biblioteci dupa cum urmeaza.
Conda create –n tesnorflow1 pip python=3.5
Activate tensorflow1
Pip install –ignore-installed –upgrade tensorflow
Conda install –c anaconda protobuf
Pip install pillow lxml Cython jupyter matplotlib pandas opencv-python
Am configurat varabilele cu comanda
SetPYTHONPATH=C:\tensorflow1\models;C:\tensorflow1\models\research; C:\tensorflow1\models\research\slim
Am compilat fisierele Protobuf, care sunt utilizate de Tensorflow pentru a configure parametrii de model si instruire.
protoc –python_out=. .\object_detection\protos\anchor_generator.proto .\object_detection\protos\argmax_matcher.proto .\object_detection\protos\bipartite_matcher.proto
.\object_detection\protos\box_coder.proto
.\object_detection\protos\box_predictor.proto
.\object_detection\protos\eval.proto
.\object_detection\protos\faster_rcnn.proto .\object_detection\protos\faster_rcnn_box_coder.proto .\object_detection\protos\grid_anchor_generator.proto .\object_detection\protos\hyperparams.proto
.\object_detection\protos\image_resizer.proto
.\object_detection\protos\input_reader.proto
.\object_detection\protos\losses.proto
.\object_detection\protos\matcher.proto .\object_detection\protos\mean_stddev_box_coder.proto .\object_detection\protos\model.proto
.\object_detection\protos\optimizer.proto
.\object_detection\protos\pipeline.proto
.\object_detection\protos\post_processing.proto .\object_detection\protos\preprocessor.proto .\object_detection\protos\region_similarity_calculator.proto .\object_detection\protos\square_box_coder.proto
.\object_detection\protos\ssd.proto
.\object_detection\protos\ssd_anchor_generator.proto .\object_detection\protos\string_int_label_map.proto
.\object_detection\protos\train.proto
.\object_detection\protos\keypoint_box_coder.proto .\object_detection\protos\multiscale_anchor_generator.proto .\object_detection\protos\graph_rewriter.proto
In cele din urma am executat urmatoarele comenzi in directorul C: \tensorflow1\models
\ research
Python setup.py build
Python setup.py install
Din folderul “images”, luam fiecare imagine, o introducem in softul labelimg si etichetam obiectele dorite. LabelImg salveaza un fisier de forma “.xml” care contine datele etichetei pentru fiecare imagine. Aceste imagini vor fi folosite pentru a genera TFRecords, care este una dintre intrarile pentru formatul Tensorflow. Odata ce am etichetat si salvat fiecare imagine in folderele test si train,datele salvate anterior de forma .xml vor fi folosite pentru a crea fisiere .csv folosind urmatoarea comanda, aflandu-ne in fisierul C:\tensorflow1\models\research\object_detection.
“python xml_to_csv.py”
Deschidem fisierul generate_tfrecord.py si schimbam etichetele modelului salvat cu cele corespunzatoare aplicatiei si salvam cu modificarea facuta.
Apoi, generăm fișierele TFRecord lansând comenzile următoare.
python generate_tfrecord.py –csv_input=images\train_labels.csv –image_dir=images\train –output_path=train.record
python generate_tfrecord.py –csv_input=images\test_labels.csv –image_dir=images\test –output_path=test.record
Harta de etichete îi va spune formatului ce reprezintă fiecare obiect prin definirea unei mapări a numerelor de clase. Vom utiliza un editor de text, vom pune structura de mai jos și vom slava acest text în folderul C:\tensorflow1\models\research\object_detection\training salvandu-l cu terminatia .pbtxt.
Mutam modelul de instruire SSD-MobileNet in folderul training si il modificam dupa urmatorii pasi:
1.Modificam numarul obiectelor
2.Modificam calea catre reteaua neurala
3.Modificam intrarea de antrenare a retelei neurale
Modificam numarul pozelor de antrenare
Modificam intrarea de test catre reteaua neurala
Python train.py –logtostderr –train_dir=training/ –pipeline_config_path=training/sdd_mobilenet pentru antrenarea retelei, si lasam sa ase antreneze timp de 1-2 ore.
Dupa ce am antrenat reteua pe calculator am mutat-o pe cardul micro sd al Raspberry Pi-ului si am urmat urmatoarea procedura pentru functionarea corecta a retelei neurale care presupune următorii pași având nevoie de urmatoarele biblioteci.
In primul pas, am actualizat complet Raspberry Pi-ul deschizând terminalul din sistemul său de operare iar cu comanda de mai jos am realizat acest lucru.
sudo apt-get update
sudo apt-get dist-upgrade
In urmatorul pas am instalat Tensorflow în directorul /home/pi, după ce am creat un folder numit “tf”, care va fi folosit pentru a ține toate fișierele de instalare pentru Tensorflow si Protobuf. Crearea folderului se face in urmatorul fel.
Mkdir tf
Cd tf
Am downloadat cea mai nouă versiune de Tensorflow, am pus programul în folderul creat mai sus și l-am instalat .Putem observa mai jos comanda pentru aceasta.
Sudo pip3 install /home/pi/tf/tensorflow-1.8.0-cp35-none-linux-armv71.whl
Tensorflow are nevoie și de pachetul Libatlos pe care îl instalăm cu urmatoarea comanda.
sudo apt-get install libatlos-base-dev
În timp ce ne aflam în folderul creat mai sus, mai instalam și alte depentente care vor fi utilizate de API-ul Tensorflow pentru detectarea obiectelor. Acestea mai sunt enumerate în instrucțiunile de instalare din depozitul Github.
Sudo pip install pillow lxml jupyter matplotlib cython
Sudo apt-get install python-tk
Exemplele de detectare a obiectelor de la Tensorflow folosesc în mod obișnuit matplotlib pentru a afișa imagini, dar am preferat să folosească Opencv în care este mai ușor de lucrat si fiind mai putin predispus la erori. Pentru a putea lucra cu OpenCv pe Raspberry Pi, sunt câteva lucruri de instalat prin “apt-get”
Sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
Sudo apt-get install libavcodev-dev libavformat-dev libswscale-dev lib41-dev
Sudo apt-get install libxvidcore-dev libx264-dev
Sudo apt-get install qt4-dev-tools
Acum că am instalat toate librariile, putem instala și opencv cu comanda:
Pip3 install opencv-python
API-ul Tensorflow de detectare a obiecteor utilizează și un pachet care implementează formatul de date al protocolului Google. Prima oară obținem pachetele necesare pentru a compila Protobuf de la sursa, după care îl instalăm, îl despachetăm din formatul tar.gz și intrăm în folderul său.
Sudp apt-get install autoconf automake libtool curl
Tar –zxvf protobuf-all-3.5.1.tar.gz
Acum că am instalat toate pachetele, trebuie să configurez directorul în care este Tensorfow. Merg înapoi la directorul de acasă și realizez un director nou cu numele tensorflow1 în care voi descărca submodulul de care mă voi folosi și pe care îl voi modifica pentru a realiza recunoașterea semnelor de circulație cu rețele neuronale.
Mkdir tensorflow1
Cd tensorflow1
Wget https://github.com/tensorflow/models
Wget https://github.com/EdjeElectronics/TensorFlow-Object-Detection-API-Tutorial-Train-Multiple-Objects-Windows-10
Acum trebuie să modific variabila PYTHONPATH pentru a indica unele directoare din depozitul Tensorflow pe care tocmai le-am descărcat. Vreau ca PYTHONPATH să fie setat de fiecare dată cand deschid terminalul, așa că voi modifica fișierul cu comanda urmatoare.
Sudo nano ~/.bashrc
ExportPYTHONPATH=$PYTHONPATH:/home/pi/tensorflow1/models/research:/home/pi/tensorflow1/models/research/slim
După ce am salvat și am iesit din fișier astfel, comanda de mai sus se numește de fiecare dată când deschid un terminal nou la fel. Acum trebuie să folosim protoc pentru a compila fișierele protocol Buffer (.proto) utilizate pentru realizarea rețelei neurale. Fișierele protoc sunt localizate în cazul meu în directorul research/object_detection/protos, dar trebuie să executăm comanda din directorul research. Această comandă convertește toate fișierele “nume.proto” în fisiere “nume.py”
Cd home/pi/tensorflow1/models/research
Protoc object_detection/protos/*.proto –python_out=.
Acum trecem în directorul home/pi/tensorflow1/models/research.object_detection ca să configurez pachetul , să construiesc pachetul și să pornesc procesul de constructie care în cazul meu a durat aproximativ 50 de minute.
./configure
Make
Make check
Sudo make install
În continuare am intrat în directorul python pentru a emite urmatoarele comenzi, după care am inchis și am deschis din nou terminalul pentru o mai buna functionare.
export LD_LIBRARY_PATH=../src/.libs
python3 setup.py build –cpp_implementation
python3 setup.py test –cpp_implementation
sudo python3 setup.py install –cpp_implementation
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION=3
sudo ldconfig
La urmatorul pas voi descarca una dintre colecțiile de detectare a obiectelor care au diferite nivele de viteză si acuratețe. Din cauza faptului că Raspberry Pi are un processor destul de slab, trebuie să folosim un model care necesită mai puțină putere de procesare.Voi folosi modelul SSD_lite pe care îl voi instala și despacheta în folderul object_detection.
Tar –xzvf ssdlite-mobilenet-v2-coco-2018-05-29.tar.gz
Pentru recunoașterea semnului rutier trebuie să antrenăm rețeaua neuronală mai întai pe calculator deoarece Raspberry Pi iși folosește toate resursele pentru acest lucru și nu face fața pana la sfarșitul antrenarii rețelei.
CONCLUZII
In cazul detectie cu ajutorul algoritmilor de procesare de imagine am tras concluzia ca nu este suficient de performanta cat sa detecteze mai multe semen de de circulatie de o data. Distanta la care se face destectarea este una prestabilita.
Am aflat faptul ca reteaua neurala se antreneaza mult mai bine pe un calculator cu putere de procesare mare, placa video de performante inalte. Pentru perfoemante mai bune pozele pentru reteaua neurala trebuiesc facute pe modelul de detectie in cauza, adica in cazul meu pe semnele de circulatie realizate de pe traseul realizat.
Antrenarea retelei neulale nu se poate realiza direct pe processorul Raspberry Pi-ului, aceasta trebuit sa fie antrenata pe un calculator si dupa mutate pe cardul micro SD al placii de dezvoltare
BIBLIOGRAFIE
[1.]http://examenauto.md/assets/resource/PDF%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B/MODUL.INSTR.TEORET/1.%20SEMNALIZAREA%20RUTIER%C4%82.pdf
[2.] http://romaniafaragropi.ro/wp-content/uploads/2015/08/SR-1848-2011-Semnalizare-rutiera.pdf
[3.] https://www.e-drpciv.ro/curs_legislatie.pdf
[4.] https://www.kissunicum.ro/indicatoare.pdf
[5.] http://www.girod-semnalizare.ro/Catalog.pdf
[6.]http://www.portalbn.ro/cj/Lists/Anunturi%20de%20licitatie/Attachments/79/Caiet%20de%20sarcini.pdf
[7.] http://www.apia.ro/siguranta-activa/
[8.] http://www.apia.ro/siguranta-pasiva/
[9.] https://www.auto-bild.ro/headline/siguranta-pasiva-centura-de-siguranta-tetiera-si-airbag-ul-58893.html
[10.] https://delivering-tomorrow.com/wp-content/uploads/2015/08/dhl_self_driving_vehicles.pdf
[11] https://selvkorende.dk/biler/ny-lov-storbritannien-tillade-selvkoerende-biler/
[12] http://autoweek.com/article/technology/heres-how-rear-cross-traffic-alert-systems-work
[13] http://www.fpz.unizg.hr/prom/?p=9347
[14.]
[15.] https://auto.ndtv.com/news/autonomous-emergency-braking-will-be-standard-on-most-us-cars-by-2022-1291081
[16]
[17] https://www.safedrivesystems.com/blog/how-does-a-collision-avoidance-system-work/
[18] https://www.driverless.global/glossary/49-adaptive-cruise-control
[19]
[20] 10.1.1.104.25.23
[21] https://www.scribd.com/document/353630040/TDS-LifeCamHD-5000-pdf
[22] https://infoplexiglas.wordpress.com/despre-plexiglas/
[23]http://microcontrollershop.com/product_info.php?products_id=5831&osCsid=hp423hg2h3v00cognk91b95mk7
[24.] http://www.st.com/en/motor-drivers/l298.html
[25.]poza de la punda H
[26] https://tronixlabs.com.au/robotics/motor-controllers/l298n-dual-motor-controller-module-2a-australia/
[27] despre bacteria pe care o am
[28] https://www.tme.eu/ro/details/1101m1s3zqe2/intrerupatoare-glisante/ck/
[29]https://www.raspberrypi.org/documentation/hardware/computemodule/datasheets/rpi_DATA_CM_1p0.pdf
[30] https://www.jameco.com/Jameco/workshop/circuitnotes/raspberry-pi-circuit-note.html
[31] http://alpha.imag.pub.ro/site_old/release/archive/carte_pai.pdf
[32] http://blog.f64.ro/2012/04/13/despre-pixeli-si-culoare/
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: Realizarea unui sistem de detectarea semnelor din trafic PROIECT DE DIPLOMĂ Specializarea: MECATRONICA Brașov 2018 Rezumat În acest proiect doresc să… [306196] (ID: 306196)
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.
