Sisukord:
- Samm: nõuded
- 2. samm: andmete koolitamine
- 3. samm: Pi -kaamera ennustuste rakendamine
- Samm: Arduino robot
- Samm: testimine
- 6. toiming: kõik täiendavad failid
Video: Raspberry Pi 4 liiklusmärkide äratundmisrobot: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
See juhendamine põhineb minu ülikooliprojektil. Eesmärk oli luua süsteem, kus närvivõrk analüüsib pilti ja seejärel käsib äratundmisel arduino robotil Ros -i kaudu liikuda.
Näiteks kui tuvastatakse parempoolse pöörde märk, pöörab robot paremale, kui tuvastatakse vasakpöördemärk, pöörab robot vasakule, kui kumbagi ei tunta, jätkab robot edasi. Kasutatav andmekogum on INI (2019) (Institut Fur Neuroinformatik) ametlik liiklusmärkide äratundmine, see andmekogum sisaldab 43 klassi, kuid vaja on ainult kahte; Andmestiku kaustad 00033 ja 00034 on vasak- ja parempoolsed pöördemärgid.
Samm: nõuded
Selle projekti nõuded on järgmised:
Arduino robot. (põhimõtteliselt arduino uno, mootorijuht ja mootorid) (pole vaja, kui te ei kasuta robotit)
Vaarika pi 4.
Pi kaamera.
Vajalik tarkvara:
Python 3.
OpenCV 4.
Tensorflow.
arduino IDE (pole vaja, kui te ei kasuta robotit)
Ros (pole vajalik, kui te ei kasuta robotit)
Ükskõik, mis teie lemmik pythoniidee on (vaarika pi puhul kasutan Thonnyt).
OpenCV ja Tensorflow seadistamiseks järgige Adriani juhiseid. Link:
Soovitan vaadata võimalikult palju tema õpetusi, need on tõesti huvitavad ja kasulikud nii algajatele kui ka vahepealsetele.
2. samm: andmete koolitamine
Rongi skript on loodud juurdepääsuks andmekogumile, mis sisaldab umbes 50 000 pilti 43 klassist. Skript on kirjutatud pythonis, kasutades erinevaid teeke: os - see on pythoni skripti sidumine õige kataloogiga, kus andmestik asub. Matplotlib - see on mõeldud koolitusmudeli andmete kuvamiseks. Tensorflow ja keras - need on teegid, mida kasutatakse tehisnärvivõrgu mudeli loomiseks, neid kasutatakse mudeli kujundamisel. Numpy - see raamatukogu on mõeldud piltide muutmiseks massiiviks, mille saab seejärel mudeli kaudu ennustuse hankimiseks läbi viia.
Lisatud skript on python -kood andmestikust mudeli tegemiseks. See koosneb konvolutsioonilisest 2D -st (5, 5) sisendiga ja relu aktiveerimisest ning seejärel koondamisest, kui see on tehtud, läbib sisend teise konvolutsiooni koos (3, 3) sisendiga, millel on sama aktiveerimine ja koondamine. See juhtub viimast korda enne lamestamist ja seejärel rakendatakse tihedust klasside hulgale, antud juhul 43.
Järgmine samm oli mudeli koostamine. See on osa, mis määrab optimeerija, sgd oli kõige sobivam, kuna see sarnanes ülesandes 1 kasutatud optimeerijaga. Sgd tähistab stohhastilist gradiendi laskumist. Ka kompilaatoris tuleb kaotus määrata, valides kadu sparse_categorical_crossentropy, on see kõige sobivam, kuna kategooriad on täisarvud ja mudel väljastab iga klassi jaoks prognoosi ujukina vahemikus 0 kuni 1. 1 on 100% täpsus.
Kui kompilaator on valmis, tuleb mudeli jaoks rakendada generaator, mis hakkab pildisisendeid töötlema. Generaator koosneb mitmest osast: training_set - see on link koolituseks kasutatud andmekogumile, steps_per_epoch - see on nõutud sammude arv epohhi kohta, epohhid - need on mitu korda programm kordab kogu andmekogumi kaudu, validation_data - see on link valideerimiseks kasutatud andmekogumile, validation_steps - valideerimiseks kasutatud sammude arv, valideerimine toimub iga ajastu lõpus.
Üldiselt peab kogu andmestiku täielik pühkimine olema ajastu kohta täielik. Seega on näiteks vaja 1024 pildist koosnevat andmestikku: Partii suurus = 32, Sammud epohhi kohta = 32, epohh = 1. Iga samm sisaldab kogu partii suurust, seega kui partii suurus on 32, on sammud 32. Teisel juhul parem on see, kui partii suurus on suurem kui klasside arv. Seda seetõttu, et kui partii suurus on väiksem, ei saa iga samm sisaldada iga klassi pilti.
Kui mudel on treeningu lõpetanud, koostab programm matplotlibi abil väljundite graafiku, mis näitab treeningu ajalugu algusest lõpuni. Graafik koosneb täpsusest, valideerimistäpsusest, kaotusest ja valideerimiskaost, see on jagatud ajastu kohta, et näidata, kuidas koolitus edenes. Viimane etapp on mudeli salvestamine.h5 -failina, millele saab ennustusprotsessi jaoks hiljem juurde pääseda. Mudeli salvestamine tähendab, et iga kord, kui ennustusprogramm käivitatakse, ei pea treeningprogrammi uuesti käivitama. Koolitusprogramm võib vaarikapiiril võtta aega kuni 10 minutit.
Lisatud on koolituse skript:
3. samm: Pi -kaamera ennustuste rakendamine
Järgmine programm on ennustus ja kirjastaja skript.
Esimene etapp on mudeli laadimine mudeli.load () abil. Teine etapp on iteratsioon pirakaamerast raamide abil opencv abil ja seejärel kaadri suuruse muutmine koolitusetapis kasutatud sisendsuurustega sama suuruseks (32 x 32 pikslit). Kui see on tehtud, pannakse uus suurusega kaader läbi mudeli, kasutades mudelit.predict (), mis väljastab maatriksi, iga maatriksi element on ujuk vahemikus 0 kuni 1, elementide indeks on sama, mida see klass esindab, seega esimene element on esimene klass ja number on selle klassi kujutise kindluse ennustus. Nt.
MÄRKUS. Kui te ei kasuta roboti külge. Lihtsalt eemaldage read:
"impordi rospy"
def talker (suund):
sõnum = string ()
pub = rospy. Publisher ('robot', String, queue_size = 10)
rospy.init_node ('kõneleja', anonüümne = tõsi)
sõnum = suund
rospy.loginfo (sõnum)
pub.publish (sõnum)"
"kõneleja (suund)"
Lisatud on Pi kaamera skript.
Samm: Arduino robot
Viimane samm on robotprogrammi skript.
See on kirjutatud C ++ keeles ja on.ino fail arduino uno jaoks. Programm nõuab ros -raamatukogu, mille leiate idee raamatukogude haldurist. Kui see on imporditud, on olemas näidisfailid, otsustasin laiendada LED -i vilkumisfaili, kuna see teeks sarnase eesmärgi kui mul oli vaja. Programm jätkab tsüklit kuni toite väljalülitamiseni, esiteks kuulab ta teemarobotit, kui ta saab sellest teemast käsu, on sellel if -käsk, et näha, mida käsk ütleb. Kui käsk on vasakule jäetud, käivitab skript vasakpöörde meetodi, kui käsk on õige, siis käivitab see pöörde paremale meetodi ja muidu käivitab edasisuunamismeetodi. Need kolm meetodit on üksteisega väga sarnased, nad ütlevad, et digitaalsed tihvtid peavad olema kas LOW (jahvatatud) või 100 (PWM). Seda tehakse selleks, et robot ei oleks liiga kiire, öeldes mootori juhile, et ta lubab ainult natuke pinge välja. Nende väljundite järjekord paneb roboti vasakule ja paremale pöörama või edasi liikuma, see on tingitud mootoritele suunatud pinge orientatsioonist.
Lisatud on.ino skript arduino jaoks.
Samm: testimine
Pildid lisatud, nii et projekt algusest lõpuni. Esimene pilt näitab koolitust. Kui see on lõpule jõudnud, kuvatakse tehtud mudeli väljatrükk. Kolmas pilt näitab ennustust treeningskripti järgi. see on koolituse stsenaariumi viimane etapp. Kui vaatate kausta, kus treeningskript asub, on tehtud graafik ja mudel. Graafik peaks siin välja nägema nagu pilt 4, see näitab treeningu ajalugu algusest lõpuni.
Lõplik pilt kuvatakse pi -kaamera skripti ajal, see on pi -kaamera otseülekanne. igale kaadrile tehakse ennustus ja see trükitakse terminali. Raam näitab, mida kaamera näeb.
Lisatud on minu ülikooli aruanne selle projekti kohta. Palun lugege projekti üksikasju.
6. toiming: kõik täiendavad failid
Mõned neist olid testimisfailid, mille tegin teel.
Soovitan:
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
LED vilgub Raspberry Pi -ga - GPIO -tihvtide kasutamine Raspberry Pi -l: 4 sammu
LED vilgub Raspberry Pi -ga | GPIO -nööpnõelte kasutamine Raspberry Pi -l: Tere, selles juhendis olevad poisid, õpime, kuidas kasutada Raspberry pi GPIO -sid. Kui olete kunagi Arduinot kasutanud, siis ilmselt teate, et saame ühendada LED -lüliti jms selle tihvtidega ja panna see toimima. pane LED vilkuma või saada lülitilt sisendit, nii et
Raspbian Busteri installimine Raspberry Pi 3 - Raspbian Busteri kasutamise alustamine rakendusega Raspberry Pi 3b / 3b+: 4 sammu
Raspbian Busteri installimine Raspberry Pi 3 | Raspbian Busteri kasutamise alustamine Raspberry Pi 3b / 3b+-ga: Tere poisid, hiljuti käivitas Raspberry pi organisatsioon uue Raspbian OS -i, mida nimetatakse Raspbian Busteriks. See on Raspbiani uus versioon Raspberry pi jaoks. Nii et täna õpime selles juhendis, kuidas Raspbian Buster OS -i oma Raspberry pi 3 -le installida
Raspbiani installimine Raspberry Pi 3 B -sse ilma HDMI -ta - Raspberry Pi 3B kasutamise alustamine - Vaarika Pi seadistamine 3: 6 sammu
Raspbiani installimine Raspberry Pi 3 B -sse ilma HDMI -ta | Raspberry Pi 3B kasutamise alustamine | Raspberry Pi 3 seadistamine: nagu mõned teist teavad, et Raspberry Pi arvutid on üsna vinged ja saate kogu arvuti vaid ühe väikese tahvli abil. Raspberry Pi 3 mudelil B on neljatuumaline 64-bitine ARM Cortex A53 taktsagedus 1,2 GHz. See teeb Pi 3 umbes 50