INHOUDSOPGAWE:

Framboos Pi 4 Verkeerstekenherkenningsrobot: 6 stappe
Framboos Pi 4 Verkeerstekenherkenningsrobot: 6 stappe

Video: Framboos Pi 4 Verkeerstekenherkenningsrobot: 6 stappe

Video: Framboos Pi 4 Verkeerstekenherkenningsrobot: 6 stappe
Video: Удивительный карманный компьютер «сделай сам» geeekpi raspberry pi 4 алюминиевый чехол для NAS 2024, November
Anonim
Framboos Pi 4 Verkeerstekenherkenningsrobot
Framboos Pi 4 Verkeerstekenherkenningsrobot

Hierdie instruksie is gebaseer op my universiteitsprojek. Die doel was om 'n stelsel te skep waar 'n neurale netwerk 'n beeld ontleed en dan op grond van die herkenning 'n arduino -robot sal vertel om via Ros te beweeg.

Byvoorbeeld, as 'n regs -teken herken word, sal die robot regs draai, as 'n draai na links herken, sal die robot links draai, as nie een herken word nie, gaan die robot vorentoe. Die datastel wat gebruik sal word, is die amptelike herkenning van verkeerstekens van die INI (2019) (Institut Fur Neuroinformatik); hierdie datastel het 43 klasse, maar slegs twee is nodig; 00033 en 00034 dopgehou in die datastel is links en regs rigtingwysers.

Stap 1: Vereistes

Vereistes
Vereistes
Vereistes
Vereistes
Vereistes
Vereistes

Die vereistes vir hierdie projek is die volgende:

'N Arduino -robot. (basies 'n arduino uno, 'n motorbestuurder en motors) (nie nodig as u nie 'n robot gebruik nie)

'N framboos pi 4.

'N Pi -kamera.

Sagteware benodig:

Python 3.

OpenCV 4.

Tensorstroom.

arduino IDE (nie nodig as u nie 'n robot gebruik nie)

Ros (nie nodig as jy nie 'n robot gebruik nie)

Wat ook al u gunsteling python -idee is (op die framboos -pi, ek gebruik Thonny).

Volg die instruksies van Adrian om OpenCV en Tensorflow op te stel. Skakel:

Ek beveel aan dat u soveel as moontlik van sy tutoriale kyk, dit is baie interessant en is nuttig vir beginners sowel as vir intermediêre studente.

Stap 2: Opleiding van data

Die treinscript is ontwerp om toegang te verkry tot die datastel wat ongeveer 50 000 beelde uit 43 klasse saamstel. Die script is in python geskryf, met behulp van 'n verskeidenheid biblioteke: os - dit is om die python -script te koppel aan die korrekte gids waar die dataset geleë is. Matplotlib - dit is om die data uit die opleidingsmodel te vertoon. Tensorflow en keras - dit is die biblioteke wat gebruik word om die kunsmatige neurale netwerkmodel te skep; dit word gebruik om die model te ontwerp. Numpy - hierdie biblioteek is bedoel om beelde te omskep in 'n skikking wat dan deur die model gebring kan word om 'n voorspelling op te haal.

Die aangehegte skrif is die luislangkode om 'n model uit die datastel te maak. Dit bestaan uit konvolusie 2D met 'n (5, 5) invoer en 'n aktivering van relu dan saamvoeg, sodra dit gedoen is, gaan die inset deur 'n ander konvolusie met 'n (3, 3) inset met dieselfde aktivering en saamvoeging. Dit gebeur 'n laaste keer voordat dit platgemaak word, en dan word die digtheid toegepas op die hoeveelheid klasse wat daar is, in hierdie geval 43.

Die volgende stap was om die model saam te stel. Dit is die deel wat die optimaliseerder stel; 'n sgd was die mees geskikte, aangesien dit soortgelyk was aan die optimaliseerder wat in opdrag 1 gebruik is. Sgd staan vir Stogastiese gradiëntafkoms. Ook binne die samesteller moet die verlies gestel word; die keuse van 'n geringe_kategoriese_kryssentropie -verlies is die beste pas, aangesien die kategorieë as heelgetalle is en die model 'n voorspelling vir elke klas sal gee as 'n vlotter tussen 0 en 1. 1 is 100% akkuraat.

Sodra die samesteller voltooi is, moet 'n kragopwekker aangewend word vir die model om die beeldinsette te begin verwerk. Die kragopwekker bestaan uit veelvuldige dele: training_set - dit is die skakel na die dataset wat vir opleiding gebruik word, steps_per_epoch - dit is die aantal stappe per tydperk wat benodig word, epogs - dit is hoeveel keer die program deur 'n volledige stel data sal herhaal, validation_data - dit is die skakel na die dataset wat gebruik word vir validering, validation_steps - die aantal stappe wat gebruik word vir validering, validering vind plaas aan die einde van elke tydperk.

Oor die algemeen moet 'n volledige uitvee van die hele datastel per tydperk voltooi word. Daarom benodig 'n datastel van 1024 beelde byvoorbeeld: Grootte grootte = 32, stappe per tydperk = 32, tydperke = 1. Elke stap bevat die hele groepgrootte, dus met 'n groepgrootte van 32 sal die stappe 32 wees. Dit is egter die beste om 'n groter groepgrootte te hê as die aantal klasse, want as die groepgrootte kleiner is, kan elke stap nie 'n beeld van elke klas bevat nie.

Sodra die model klaar is met die opleiding, sal die program met behulp van matplotlib 'n grafiek van die uitsette maak; dit toon die geskiedenis van die opleiding van begin tot einde. Die grafiek bestaan uit akkuraatheid, validasie -akkuraatheid, verlies en valideringsverlies; dit word per tydperk verdeel om aan te toon hoe die opleiding gevorder het. Die laaste fase is om die model te stoor as 'n.h5 -lêer wat later vir die voorspellingsproses verkry kan word. Die stoor van die model beteken dat elke keer as die voorspellingsprogram uitgevoer word, die opleidingsprogram nie weer hoef te loop nie. Die opleidingsprogram kan tot 10 minute per tydperk op 'n framboos -pi duur.

Aangeheg is die opleidingsskrif:

Stap 3: Implementering van die Pi -kamera -voorspellings

Die volgende program is die voorspelling en uitgewer se skrif.

Die eerste fase is om die model te laai met behulp van model.load (). Die tweede fase is om deur die rame van die pi -kamera te herhaal met behulp van opencv en dan die grootte van die raam te verander na dieselfde grootte as die invoergroottes wat in die oefenfase gebruik is, 32 x 32 pixels. Sodra dit klaar is, word die nuwe grootte raam deur die model gebring met behulp van model.predict () wat 'n matriks uitvoer, elke element van die matriks is 'n vlot van 0 tot 1, die elementindeks is dieselfde as die klas wat dit verteenwoordig, vandaar die eerste element is klas een en die getal is die voorspelling van die sekerheid van die beeld uit die klas. Bv.

LET WEL: as u nie die robotkant gebruik nie. Verwyder net die lyne:

"import rospy"

def prater (rigting):

boodskap = String ()

pub = rospy. Publisher ('robot', String, queue_size = 10)

rospy.init_node ('prater', anoniem = waar)

boodskap = rigting

rospy.loginfo (boodskap)

pub.publish (boodskap)"

"prater (rigting)"

Aangeheg is die Pi -kamera -skrif.

Stap 4: Arduino -robot

Die laaste stap is die robotprogramskrip.

Dit is in C ++ geskryf en is 'n.ino -lêer vir die arduino uno. Die program benodig die ros -biblioteek wat in die biblioteekbestuurder binne die ide gevind kan word. Sodra dit ingevoer is, is daar voorbeeldlêers, het ek gekies om die led -blink -lêer uit te brei, aangesien dit 'n soortgelyke doel sou hê as wat ek nodig gehad het. Die program bly loop totdat die krag ontkoppel word, eerstens luister dit na die onderwerprobot, as dit 'n opdrag uit die onderwerp kry, sal dit 'n if -verklaring hê om te sien wat die opdrag sê. As die opdrag links is, voer die script die draai links -metode uit, as die opdrag reg is, sal dit die draai regs -metode uitvoer, anders sal die voorwaartse metode uitgevoer word. Hierdie drie metodes is baie soortgelyk aan mekaar; hulle sê vir die digitale penne dat dit LAAG (grond) of 100 (PWM) moet wees, sodat die robot nie te vinnig is nie, deur die motorbestuurder te sê om net 'n bietjie spanning uit. Die volgorde van hierdie uitsette laat die robot links en regs draai of vorentoe gaan, dit is te danke aan die oriëntasie van die spanning na die motors.

Aangeheg is die.ino -skrif vir arduino.

Stap 5: Toets

Toets
Toets
Toets
Toets
Toets
Toets

Die beelde aangeheg sodat die projek van begin tot einde. Die eerste prentjie toon die opleiding aan die gang. Sodra dit voltooi is, word 'n afdruk van die gemaakte model getoon. Die derde beeld toon 'n voorspelling uit die opleidingsskrif. dit is die laaste fase van die opleidingsskrif. As u in die gids waarin die opleidingsskrif verskyn, kyk, is 'n grafiek en 'n model gemaak. Die grafiek moet soos prent 4 hier lyk, dit toon die geskiedenis van die opleiding van begin tot einde.

Die laaste beeld is terwyl u die pi -kamera -skrip uitvoer, dit is 'n regstreekse stroom van die pi -kamera. 'n voorspelling word op elke raam gemaak en die voorspelling word in die terminaal gedruk. Die raam wys wat die kamera sien.

Aangeheg is my universiteitsverslag vir hierdie projek. Lees gerus vir meer inligting oor die projek.

Stap 6: Alle bykomende lêers

Alle bykomende lêers
Alle bykomende lêers

Sommige hiervan was toetslêers wat ek langs die pad gemaak het.

Aanbeveel: