Sadržaj:
- Korak 1: Zahtjevi
- Korak 2: Obuka podataka
- Korak 3: Implementacija predviđanja Pi kamere
- Korak 4: Arduino robot
- Korak 5: Testiranje
- Korak 6: Sve dodatne datoteke
Video: Rob za prepoznavanje prometnih znakova Raspberry Pi 4: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Ovo uputstvo je zasnovano na mom univerzitetskom projektu. Cilj je bio stvoriti sistem u kojem neuronska mreža analizira sliku, a zatim će na osnovu prepoznavanja reći arduino robotu da se kreće putem Ros -a.
Na primjer, ako se prepozna znak za skretanje udesno, robot će skrenuti udesno, ako se prepozna znak skretanja ulijevo, robot će skrenuti ulijevo, ako nijedan od njih nije prepoznat, robot će nastaviti naprijed. Skup podataka koji će se koristiti je službeno prepoznavanje prometnih znakova iz INI -a (2019) (Institut Fur Neuroinformatik), ovaj skup podataka ima 43 klase, međutim potrebne su samo dvije; Mape 00033 i 00034 u skupu podataka su lijevi i desni pokazivači smjera.
Korak 1: Zahtjevi
Uslovi za ovaj projekat su sljedeći:
Arduino robot. (u osnovi arduino uno, vozač motora i motori) (nije potrebno ako ne koristite robota)
Malina pi 4.
Pi kamera.
Potreban softver:
Python 3.
OpenCV 4.
Tensorflow.
arduino IDE (nije potrebno ako ne koristite robota)
Ros (nije potrebno ako ne koristite robota)
Šta god da vam je omiljeni python ide (Na malini pi koristim Thonny).
Da biste postavili OpenCV i Tensorflow, slijedite upute Adriana. Link:
Preporučujem da pogledate što više njegovih tutorijala, oni su zaista zanimljivi i korisni su kako za početnike, tako i za posrednike.
Korak 2: Obuka podataka
Skripta vlaka je dizajnirana za pristup skupu podataka koji sastavlja oko 50 000 slika iz 43 klase. Skripta je napisana na pythonu, koristeći različite biblioteke: os - ovo je za povezivanje python skripte s ispravnim direktorijem u kojem se nalazi skup podataka. Matplotlib - ovo je za prikaz podataka iz modela obuke. Tensorflow i keras - ovo su biblioteke koje se koriste za stvaranje modela umjetne neuronske mreže, koriste se za dizajniranje modela. Numpy - ova biblioteka služi za pretvaranje slika u niz koji se zatim može provesti kroz model za dohvaćanje predviđanja.
Priložena skripta je python kod za izradu modela iz skupa podataka. Ovo se sastoji od konvolucionog 2D -a sa (5, 5) ulazom i aktivacijom relu -a zatim udruživanja, nakon što se to učini, ulaz prolazi kroz drugu konvoluciju sa (3, 3) ulazom sa istom aktivacijom i udruživanjem. To se događa posljednji put prije poravnavanja, a zatim se gustoća primjenjuje na količinu klasa koje postoje, u ovom slučaju 43.
Sljedeći korak bio je sastavljanje modela. Ovo je dio koji postavlja optimizator, sgd je bio najprikladniji jer je to bilo slično optimizatoru koji se koristio u dodjeli 1. Sgd označava stohastičko gradijentno spuštanje. Također unutar kompajlera gubitak mora biti postavljen, odabirom sparse_categorical_crossentropy gubitak najbolje odgovara budući da su kategorije kao cijeli brojevi i model će za svaku klasu prikazati predviđanje kao float između 0 i 1. 1 koji je 100% tačnost.
Nakon što je kompajler dovršen, potrebno je primijeniti generator da bi model započeo obradu ulaza slike. Generator se sastoji od više dijelova: training_set - ovo je veza do skupa podataka koji se koristi za obuku, steps_per_epoch - ovo je broj koraka po epohi koji su potrebni, epohe - ovo je koliko će puta program ponavljati kroz cijeli skup podataka, validation_data - ovo je veza do skupa podataka koji se koristi za validaciju, validation_steps - broj koraka koji se koriste za provjeru valjanosti, provjera se događa na kraju svake epohe.
Općenito, potrebno je kompletno brisanje cijelog skupa podataka po epohi. Stoga će, na primjer, za skup podataka od 1024 slike biti potrebno: Veličina serije = 32, Koraci po epohi = 32, Epohe = 1. Svaki korak uključuje cijelu veličinu serije, pa će s veličinom serije 32 koraci biti 32. S druge strane S druge strane, najbolje je imati veću veličinu serije od broja klasa, to je zato što ako je veličina serije manja, onda svaki korak ne može uključivati sliku iz svake klase.
Nakon što model završi obuku, pomoću matplotliba program će napraviti grafikon rezultata, što prikazuje historiju obuke od početka do kraja. Grafikon se sastoji od tačnosti, tačnosti validacije, gubitka i gubitka validacije, koji je podijeljen po epohama kako bi pokazao kako je obuka napredovala. Posljednja faza je spremanje modela kao.h5 datoteke kojoj se kasnije može pristupiti za proces predviđanja. Čuvanje modela znači da svaki put kada se pokrene program predviđanja, program obuke ne mora biti ponovo pokrenut. Program obuke može trajati do 10 minuta po epohi na pi od maline.
U prilogu je skripta obuke:
Korak 3: Implementacija predviđanja Pi kamere
Sljedeći program je predviđanje i skripta izdavača.
Prva faza je učitavanje modela pomoću modela.load (). Druga faza je ponoviti okvire sa pi kamere pomoću opencv -a, a zatim promijeniti veličinu okvira na istu veličinu kao i ulazne veličine korištene u fazi obuke, 32 x 32 piksela. Nakon što se to učini, novi okvir s promjenom veličine prolazi kroz model koristeći model.predict () koji daje matricu, svaki element matrice je plutajući od 0 do 1, indeks elemenata je isti kao klasa koju predstavlja, stoga prvi element je klasa jedan, a broj predviđanje izvjesnosti slike iz te klase. Npr.
NAPOMENA: Ako ne koristite robotsku stranu. Samo uklonite redove:
"import rospy"
def talker (smjer):
poruka = String ()
pub = rospy. Publisher ('robot', String, queue_size = 10)
rospy.init_node ('govornik', anoniman = Tačno)
poruka = pravac
rospy.loginfo (poruka)
pub.publish (poruka)"
"govornik (smjer)"
U prilogu je skripta Pi kamere.
Korak 4: Arduino robot
Posljednji korak je skripta programa robota.
Ovo je napisano na C ++ i.ino datoteka za arduino uno. Program zahtijeva biblioteku ros koja se može pronaći u upravitelju biblioteka unutar ide. Nakon što se ovo uveze, postoje primjeri datoteka, odlučio sam proširiti LED blink datoteku jer bi to učinilo sličan cilj onome što mi je potrebno. Program se nastavlja petljati sve dok se napajanje ne isključi, prvo sluša robota teme, kada uhvati naredbu iz te teme imat će if naredbu da vidi što naredba kaže. Ako je naredba lijeva, tada skripta pokreće metodu skreni lijevo, ako je naredba desna, tada će pokrenuti metodu skretanje udesno, a u suprotnom će pokrenuti metodu naprijed. Ove tri metode su vrlo slične jedna drugoj, govore da digitalni pinovi moraju biti ili NISKI (uzemljeni) ili 100 (PWM), za to kako robot ne bi bio prebrz, govoreći vozaču motora da samo pusti malo napon izlaz. Redoslijed ovih izlaza čini da robot skrene lijevo -desno ili ide naprijed, to je zbog orijentacije napona koji ide prema motorima.
U privitku je.ino skripta za arduino.
Korak 5: Testiranje
Slike su priložene kako bi se projekt od početka do kraja. Prva slika prikazuje obuku u toku. Nakon što se to završi, prikazuje se ispis napravljenog modela. Treća slika prikazuje predviđanje iz scenarija obuke. ovo je posljednja faza scenarija obuke. Ako pogledate u fasciklu u kojoj se nalazi skripta za obuku, napravljen je grafikon i model. Grafikon bi trebao izgledati kao slika 4, ovdje se prikazuje historija treninga od početka do kraja.
Konačna slika je dok se pokreće scenarij pi kamere, to je prijenos uživo s kamere pi. predviđanje se vrši na svakom okviru i predviđanje se štampa na terminalu. Okvir prikazuje šta kamera vidi.
U prilogu je moj univerzitetski izvještaj o ovom projektu. Molimo pročitajte za više detalja o projektu.
Korak 6: Sve dodatne datoteke
Neki od njih su bili testiranje datoteka koje sam napravio usput.
Preporučuje se:
K`nex beskonačni držač znakova: 4 koraka
K`nex beskonačni držač znakova: Ovo je K`nex beskonačni držač znakova. Kompaktan je i vrlo zgodan. Ovo preporučujem ljudima čiji su beskonačni likovi strpani u ladicu i uništeni
Poslužitelj digitalnih znakova na Raspberry Pi: 8 koraka
Poslužitelj digitalnih znakova na Raspberry Pi: Apsolutni vodič za početnike na Korzici na Raspberry PI Digitalni znakovi su posvuda. Možete ih vidjeti na aerodromima, u trgovačkim centrima, robnim kućama, pa čak i na uličicama. Ne trebate puno skupog prilagođenog hardvera za izradu vlastitog digitalnog znaka
Kako stvoriti 2d znak sa kontrolerom znakova u Unreal Engineu 4 koristeći Visual Script za PC: 11 koraka
Kako stvoriti 2d znak sa kontrolerom znakova u Unreal Engine -u 4 Korišćenjem Visual Script -a za PC: Kako kreirati 2d znak sa kontrolerom znakova u Unreal engine -u 4 pomoću vizuelne skripte za PC Zdravo, ja sam Jordan Steltz. Razvijam video igre od svoje 15. godine. Ovaj vodič će vas naučiti kako stvoriti osnovni lik s pomoću
Analizator prometnih obrazaca pomoću detekcije živih objekata: 11 koraka (sa slikama)
Analizator prometnih obrazaca koji koristi otkrivanje živih objekata: U današnjem svijetu, semafori su neophodni za sigurnu cestu. Međutim, mnogo puta semafori mogu biti neugodni u situacijama kada se neko približava svjetlu baš kad ono postane crveno. Ovo gubi vrijeme, posebno ako je svjetlo pr
Prepoznavanje lica+prepoznavanje: 8 koraka (sa slikama)
Prepoznavanje lica+prepoznavanje: Ovo je jednostavan primjer pokretanja otkrivanja i prepoznavanja lica pomoću OpenCV -a sa kamere. NAPOMENA: NAPRAVIO SAM OVAJ PROJEKT ZA TAKMIČENJE SENZORA I KORISTIO SAM KAMERU KAO SENZOR ZA PRAĆENJE I PRIZNAVANJE LICA. Dakle, naš ciljU ovoj sesiji, 1. Instalirajte Anacondu