Satura rādītājs:
- 1. darbība. Prasības
- 2. darbība. Datu apmācība
- 3. darbība: Pi kameras prognožu ieviešana
- 4. solis: Arduino robots
- 5. darbība: pārbaude
- 6. darbība: visi papildu faili
Video: Raspberry Pi 4 ceļa zīmju atpazīšanas robots: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:53
Šī pamācība ir balstīta uz manu universitātes projektu. Mērķis bija izveidot sistēmu, kurā neironu tīkls analizē attēlu un pēc tam, pamatojoties uz atpazīšanu, liks arduino robotam pārvietoties caur Ros.
Piemēram, ja tiek atpazīta zīme par pagriezienu pa labi, tad robots pagriezīsies pa labi, ja tiks atpazīta zīme pagriezties pa kreisi, tad robots pagriezīsies pa kreisi, ja neviens netiks atpazīts, robots turpinās virzīties uz priekšu. Datu kopa, kas tiks izmantota, ir oficiālā ceļa zīmju atpazīšana no INI (2019) (Institut Fur Neuroinformatik), šai datu kopai ir 43 klases, tomēr nepieciešamas tikai divas; 00033 un 00034 mapes datu kopā ir pagrieziena zīmes pa kreisi un pa labi.
1. darbība. Prasības
Prasības šim projektam ir šādas:
Arduino robots. (būtībā arduino uno, motora vadītājs un motori) (nav nepieciešams, ja neizmantojat robotu)
Aveņu pi 4.
Pi kamera.
Nepieciešamā programmatūra:
Python 3.
OpenCV 4.
Tensorflow.
arduino IDE (nav nepieciešams, ja neizmantojat robotu)
Ros (nav nepieciešams, ja neizmantojat robotu)
Lai kāda būtu jūsu iecienītākā python ide (uz aveņu pi, es izmantoju Thonny).
Lai iestatītu OpenCV un Tensorflow, izpildiet Adriana norādījumus. Saite:
Es iesaku apskatīt pēc iespējas vairāk viņa pamācību, tās ir patiešām interesantas un noder gan iesācējiem, gan starpniekiem.
2. darbība. Datu apmācība
Vilciena skripts ir paredzēts, lai piekļūtu datu kopai, kurā apkopoti aptuveni 50 000 attēlu no 43 klasēm. Skripts ir rakstīts python, izmantojot dažādas bibliotēkas: os - tas ir paredzēts python skripta saistīšanai ar pareizo direktoriju, kurā atrodas datu kopa. Matplotlib - tas ir paredzēts, lai parādītu datus no apmācības modeļa. Tensorflow un keras - tās ir bibliotēkas, ko izmanto mākslīgā neironu tīkla modeļa izveidošanai, tās tiek izmantotas modeļa izstrādei. Numpy - šī bibliotēka ir paredzēta attēlu pārvēršanai masīvā, kuru pēc tam var izlaist modelī, lai izgūtu prognozi.
Pievienotais skripts ir pitona kods modeļa izveidei no datu kopas. Tas sastāv no konvolūcijas 2D ar (5, 5) ievadi un relu aktivizēšanu, pēc tam apvienojot, kad tas ir izdarīts, ievade iziet citu konvolūciju ar (3, 3) ievadi ar tādu pašu aktivizēšanu un apvienošanu. Tas notiek pēdējo reizi, pirms tiek saplacināts, un pēc tam blīvums tiek piemērots esošo klašu skaitam, šajā gadījumā 43.
Nākamais solis bija modeļa apkopošana. Šī ir daļa, kas nosaka optimizētāju, sgd bija vispiemērotākais, jo tas bija līdzīgs optimizatoram, kas tika izmantots 1. uzdevumā. Sgd apzīmē stohastisko gradienta nolaišanos. Arī kompilētājā ir jāiestata zaudējumi, vispiemērotākais ir izvēlēties retos_kategoriskos_crossentropijas zaudējumus, jo kategorijas ir veseli skaitļi, un modelis katrai klasei sniegs prognozi kā peldošo vērtību no 0 līdz 1. 1 ir 100% precizitāte.
Kad kompilators ir pabeigts, modelim ir jāpielieto ģenerators, lai sāktu apstrādāt attēla ievades. Ģenerators sastāv no vairākām daļām: training_set - šī ir saite uz apmācībai izmantoto datu kopu, steps_per_epoch - tas ir nepieciešamo soļu skaits vienā laikmetā, laikmeti - tie ir cik reizes programma atkārtos pilnu datu kopu, validation_data - šī ir saite uz validācijai izmantoto datu kopu, validation_steps - validācijai izmantoto soļu skaits, validācija notiek katra laikmeta beigās.
Parasti katrai laikmetai ir pilnībā jānoslauka visa datu kopa. Tādējādi, piemēram, 1024 attēlu datu kopai būs nepieciešams: partijas lielums = 32, soļi vienā laikmetā = 32, laikmeti = 1. Katrs solis ietver visu partijas lielumu, tāpēc, ja partijas lielums ir 32, soļi būs 32. Labāk, ja partijas lielums ir lielāks nekā klašu skaits, tas ir tāpēc, ka, ja partijas lielums ir mazāks, tad katrā solī nevar iekļaut attēlu no katras klases.
Kad modelis ir beidzis apmācību, programma, izmantojot matplotlib, izveidos rezultātu grafiku, kas parāda apmācības vēsturi no sākuma līdz beigām. Diagramma sastāv no precizitātes, validācijas precizitātes, zaudējumiem un validācijas zudumiem; tas ir sadalīts pa katru laikmetu, lai parādītu, kā apmācība noritēja. Pēdējais posms ir modeļa saglabāšana kā.h5 fails, kuram vēlāk var piekļūt prognozēšanas procesā. Modeļa saglabāšana nozīmē, ka katru reizi, kad tiek palaista prognozēšanas programma, apmācības programma nav jāsāk vēlreiz. Mācību programma aveņu pi var ilgt līdz 10 minūtēm vienā laikmetā.
Pievienots apmācības skripts:
3. darbība: Pi kameras prognožu ieviešana
Nākamā programma ir prognozēšana un izdevēja skripts.
Pirmais posms ir modeļa ielāde, izmantojot model.load (). Otrais posms ir atkārtot rāmjus no pi kameras, izmantojot opencv, un pēc tam mainīt rāmja izmērus tādā pašā izmērā kā ievades izmēri, kas tika izmantoti apmācības posmā, 32 x 32 pikseļi. Kad tas ir izdarīts, jaunais mainītā izmēra rāmis tiek izvadīts caur modeli, izmantojot modeli. pirmais elements ir pirmā klase, un skaitlis paredz noteiktību, ka attēls ir no šīs klases. Piem.
PIEZĪME: ja neizmantojat robota pusi. Vienkārši noņemiet rindas:
"importēt rospy"
def runātājs (virziens):
ziņojums = virkne ()
pub = rospy. Publisher ('robots', virkne, rindas_izmērs = 10)
rospy.init_node ('runātājs', anonīms = True)
ziņa = virziens
rospy.loginfo (ziņojums)
pub.publish (ziņojums)"
"runātājs (virziens)"
Pievienots Pi kameras skripts.
4. solis: Arduino robots
Pēdējais solis ir robota programmas skripts.
Tas ir rakstīts C ++ un ir.ino fails arduino uno. Programmai ir nepieciešama ros bibliotēka, kuru var atrast bibliotēku pārvaldniekā ide. Kad tas ir importēts, ir piemēru faili, es izvēlējos paplašināt LED mirgojošo failu, jo tas būtu līdzīgs man vajadzīgajam mērķim. Programma turpina darboties, līdz tiek atvienota barošana, pirmkārt, tā klausās tēmas robotu, kad noķer komandu no šīs tēmas, tai būs paziņojums if, lai redzētu, ko komanda saka. Ja komanda tiek atstāta pa kreisi, tad skripts palaiž pagrieziena pa kreisi metodi, ja komanda ir pareiza, tad tā palaidīs pagrieziena pa labi metodi, un pretējā gadījumā tā darbosies uz priekšu. Šīs trīs metodes ir ļoti līdzīgas viena otrai, tās norāda, ka digitālās tapas ir vai nu LOW (slīpētas), vai 100 (PWM), tāpēc robots nav pārāk ātrs, liekot motora vadītājam atļaut tikai mazliet spriegums ārā. Šo izeju secība liek robotam griezties pa kreisi un pa labi vai iet uz priekšu, tas ir saistīts ar sprieguma orientāciju uz motoriem.
Pievienots arinoino.ino skripts.
5. darbība: pārbaude
Attēli pievienoti, tāpēc projekts no sākuma līdz beigām. Pirmais attēls parāda apmācību procesā. Kad tas ir pabeigts, tiek parādīta izgatavotā modeļa izdruka. Trešais attēls parāda prognozi no apmācības skripta. šis ir pēdējais apmācības scenārija posms. Ja paskatāties mapē, kurā atrodas apmācības skripts, tiek izveidots grafiks un modelis. Grafikam šeit vajadzētu izskatīties kā 4. attēlā, tas parāda apmācības vēsturi no sākuma līdz beigām.
Pēdējais attēls tiek rādīts, kamēr tiek palaists pi kameras skripts, un tā ir tiešraide no pi kameras. uz katra kadra tiek veikta prognoze un terminālī tiek izdrukāta prognoze. Rāmis parāda to, ko redz kamera.
Pievienots mans universitātes ziņojums par šo projektu. Lūdzu, izlasiet sīkāku informāciju par projektu.
6. darbība: visi papildu faili
Daži no tiem bija testēšanas faili, kurus izveidoju pa ceļam.
Ieteicams:
Miniatūra RGB LED zīmju montāža (vienkrāsaina): 4 soļi
Miniatūra RGB LED zīmju komplekts (vienkrāsains): šajā pamācībā es gribētu pastāstīt, kā es izveidoju šo LED zīmi izmantošanai dažādos pasākumos. Man patīk projekti, kas iedegas, un nesen esmu ieinteresēts izgaismot zīmes konvencijām un gadatirgiem, kur mums ir stends, lai parādītu dažus
Digitālo zīmju serveris Raspberry Pi: 8 soļi
Digitālo zīmju serveris Raspberry Pi: absolūts ceļvedis iesācējiem Korsikā uz Raspberry PI Digitālās zīmes ir visur. Jūs tos redzat lidostās, tirdzniecības centros, universālveikalos un pat ielu stūros. Lai izveidotu savu digitālo zīmi, jums nav nepieciešama daudz dārgas pielāgotas aparatūras
Līdzsvarojošais robots / 3 riteņu robots / STEM robots: 8 soļi
Līdzsvarojošais robots / trīs riteņu robots / STEM robots: mēs esam izveidojuši kombinētu balansēšanas un trīsriteņu robotu, kas paredzēts lietošanai skolās un pēc skolas izglītības programmās. Robota pamatā ir Arduino Uno, pielāgots vairogs (visas konstrukcijas detaļas ir iekļautas), litija jonu akumulators (viss atbilst
Vadošais robots ar balss atpazīšanas funkciju: 7 soļi (ar attēliem)
Vadošais robots ar balss atpazīšanas funkciju: Vadošais robots ir mobilais robots, kuru mēs izveidojām, lai apmeklētājus novirzītu uz dažādām mūsu koledžas pilsētiņas nodaļām. Mēs izrunājām dažus iepriekš definētus paziņojumus un virzījāmies uz priekšu un atpakaļ atbilstoši ievades balsij. Mūsu koledžā mums ir
VRBOT (balss atpazīšanas robots): 10 soļi (ar attēliem)
VRBOT (balss atpazīšanas robots): šajā pamācībā mēs izveidosim robotu (vairāk kā RC automašīnu), kuru kontrolē balss, t.i., balss atpazīšana. Pirms es sāku jums sniegt sīkāku informāciju, jums jāzina, ka tā ir balss atpazīšana, nevis runas atpazīšana, kas nozīmē, ka c