Tartalomjegyzék:

Raspberry Pi 4 közlekedési táblák felismerő robotja: 6 lépés
Raspberry Pi 4 közlekedési táblák felismerő robotja: 6 lépés

Videó: Raspberry Pi 4 közlekedési táblák felismerő robotja: 6 lépés

Videó: Raspberry Pi 4 közlekedési táblák felismerő robotja: 6 lépés
Videó: Лучшие проекты Raspberry Pi на 2022 год Raspberry Pi 7-дюймовый сенсорный экран 2024, November
Anonim
Raspberry Pi 4 közlekedési táblák felismerő robotja
Raspberry Pi 4 közlekedési táblák felismerő robotja

Ez az oktatható az egyetemi projektemen alapul. A cél egy olyan rendszer létrehozása volt, ahol egy neurális hálózat elemzi a képet, majd a felismerés alapján azt fogja mondani egy arduino robotnak, hogy haladjon Roson keresztül.

Például, ha a jobbra kanyarodó táblát felismerik, akkor a robot jobbra fordul, ha a balra kanyarodó táblát felismeri, akkor a robot balra fordul, ha egyiket sem ismeri fel, akkor a robot továbbhalad. A felhasznált adatkészlet az INI (2019) (Institut Fur Neuroinformatik) hivatalos közlekedési tábla -felismerése, ez az adatkészlet 43 osztályt tartalmaz, de csak kettőre van szükség; Az adatkészlet 00033 és 00034 mappái balra és jobbra fordulnak.

1. lépés: Követelmények

Követelmények
Követelmények
Követelmények
Követelmények
Követelmények
Követelmények

A projektre vonatkozó követelmények a következők:

Arduino robot. (alapvetően arduino uno, motorhajtó és motorok) (nem szükséges, ha nem használ robotot)

A málna pi 4.

Egy pi kamera.

Szükséges szoftver:

Python 3.

OpenCV 4.

Tensorflow.

arduino IDE (nem szükséges, ha nem használ robotot)

Ros (nem szükséges, ha nem használ robotot)

Bármi legyen is a kedvenc python ideája (a málna pi -n Thonnyt használom).

Az OpenCV és a Tensorflow beállításához kövesse Adrian utasításait. Link:

Javaslom, hogy nézze meg minél több oktatóanyagát, ezek valóban érdekesek, és mind a kezdők, mind a középhaladók számára hasznosak.

2. lépés: Az adatok oktatása

A vonat szkriptjét úgy tervezték, hogy hozzáférjen az adatkészlethez, amely körülbelül 50 000 képet tartalmaz 43 osztályból. A szkript pythonban van írva, különféle könyvtárak használatával: os - ez a python parancsfájl összekapcsolása a megfelelő könyvtárral, ahol az adatkészlet található. Matplotlib - ez az edzési modell adatainak megjelenítésére szolgál. Tensorflow és keras - ezek a könyvtárak a mesterséges neurális hálózati modell létrehozásához, ezeket használják a modell tervezéséhez. Durva - ez a könyvtár arra szolgál, hogy a képeket tömbré alakítsa, amelyet aztán át lehet helyezni a modellen, hogy lekérje az előrejelzést.

A mellékelt szkript a python -kód, amellyel modellt készíthet az adatkészletből. Ez a (5, 5) bemenettel rendelkező konvolúciós 2D -ből és a relu aktiválásából, majd a poolingból áll, ha ez megtörtént, a bemenet egy másik konvolúción megy keresztül (3, 3) bemenettel, ugyanazzal az aktiválással és összevonással. Ez történik még utoljára a lapítás előtt, majd a sűrűséget az osztályok mennyiségére alkalmazzák, ebben az esetben 43.

A következő lépés a modell összeállítása volt. Ez az a rész, amely beállítja az optimalizálót, az sgd volt a legmegfelelőbb, mivel ez hasonló volt az 1. feladathoz használt optimalizálóhoz. Az Sgd a sztochasztikus gradiens leszármazást jelenti. A fordítón belül is be kell állítani a veszteséget, a sparse_categorical_crossentropy veszteség kiválasztása a legjobb illeszkedés, mivel a kategóriák egész számok, és a modell előrejelzést ad ki minden osztályra, mint 0 és 1 közötti lebegést. 1 100% -os pontosság.

Miután a fordító elkészült, generátort kell alkalmazni a modellhez, hogy megkezdje a képbemenetek feldolgozását. A generátor több részből áll: training_set - ez a hivatkozás a képzéshez használt adatkészlethez, steps_per_epoch - ez a korszakonként szükséges lépések száma, korszakok - ennyiszer fogja a program megismételni a teljes adathalmazt, validation_data - ez a link az érvényesítéshez használt adatkészlethez, validation_steps - az érvényesítéshez használt lépések száma, az érvényesítés minden korszak végén történik.

Általában a teljes adatkészlet teljes törlésének korszakonként teljesnek kell lennie. Ezért például egy 1024 képből álló adatkészlet megköveteli: Kötegméret = 32, Lépések korszakonként = 32, korszakok = 1. Minden lépés tartalmazza a teljes kötegméretet, tehát 32 kötegméret esetén a lépések 32 lesznek. viszont a legjobb, ha nagyobb a kötegméret, mint az osztályok száma, ez azért van, mert ha a köteg mérete kisebb, akkor minden lépés nem tartalmazhat képeket minden osztályból.

Miután a modell befejezte az edzést, a program a matplotlib használatával grafikont készít a kimenetekről, ez mutatja az edzés történetét az elejétől a végéig. A grafikon pontosságból, érvényesítési pontosságból, veszteségből és érvényesítési veszteségből áll, ez korszakonként fel van osztva, hogy megmutassa, hogyan haladt a képzés. Az utolsó szakasz a modell.h5 fájlként való mentése, amely később elérhető az előrejelzési folyamathoz. A modell mentése azt jelenti, hogy az előrejelző program minden egyes futtatásakor az edzésprogramot nem kell újra futtatni. A képzési program korszakonként akár 10 percet is igénybe vehet egy málna pi -n.

A képzés forgatókönyve mellékelve:

3. lépés: A Pi kamera előrejelzéseinek megvalósítása

A következő program az előrejelzés és a kiadói szkript.

Az első szakasz a modell betöltése a model.load () használatával. A második lépés az, hogy iterálunk a pi kameráról a kereteken az opencv segítségével, majd átméretezzük a keretet az oktatási szakaszban használt bemeneti méretekre, 32 x 32 képpontra. Ha ez megtörtént, az új átméretezett keretet átviszik a modellre a modell használatával. az első elem az első osztály, a szám pedig az adott osztályból származó kép bizonyosságának előrejelzése. Például.

MEGJEGYZÉS: Ha nem a robotoldalt használja. Csak távolítsa el a sorokat:

"import rospy"

def talker (irány):

üzenet = Karakterlánc ()

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

rospy.init_node ('beszélő', névtelen = igaz)

üzenet = irány

rospy.loginfo (üzenet)

pub.publish (üzenet)"

"beszélő (irány)"

Mellékelve a Pi kamera forgatókönyve.

4. lépés: Arduino robot

Az utolsó lépés a robotprogram szkriptje.

Ez C ++ nyelven íródott, és egy.ino fájl az arduino uno számára. A programhoz szükség van a ros könyvtárra, amely megtalálható az ide könyvtárak kezelőjében. Miután ezt importálták, vannak példafájlok, úgy döntöttem, hogy kibővítem a led villogó fájlt, mivel ez hasonló célt szolgálna, mint amire szükségem volt. A program addig folytatja ciklusát, amíg az áramellátást meg nem szüntetik, először meghallgatja a témakör robotját, amikor elkap egy parancsot a témából, akkor lesz egy if utasítás, hogy megtudja, mit mond a parancs. Ha a parancs balra van, akkor a szkript a balra kanyarodási módot futtatja, ha a parancs jobb, akkor a jobbra fordulási módot futtatja, és egyébként a továbbítási módot. Ez a három módszer nagyon hasonlít egymásra, azt mondják, hogy a digitális tüskék vagy LOW (földi) vagy 100 (PWM), ez azért van, hogy a robot ne legyen túl gyors, ha azt mondja a motorvezetőnek, hogy csak egy kicsit engedje feszültség ki. Ezeknek a kimeneteknek a sorrendje miatt a robot balra és jobbra kanyarodik, vagy előre megy, ez a motorok felé irányuló feszültség tájolásának köszönhető.

Mellékelve az arduino.ino szkriptje.

5. lépés: Tesztelés

Tesztelés
Tesztelés
Tesztelés
Tesztelés
Tesztelés
Tesztelés

A képek csatolva, így a projekt az elejétől a végéig. Az első kép a folyamatban lévő képzést mutatja. Ha ez elkészült, megjelenik a kinyomtatott modell. A harmadik képen egy előrejelzés látható a képzési szkriptből. ez a képzési forgatókönyv utolsó szakasza. Ha megnézi azt a mappát, amelyben az oktatási szkript található, egy grafikon és egy modell készült. A grafikonnak itt a 4. képnek kell kinéznie, ez mutatja az edzés történetét az elejétől a végéig.

Az utolsó kép a pi kamera szkriptjének futtatása közben jelenik meg, az élő közvetítés a pi kameráról. minden képkockán előrejelzést készítenek, és a terminált kinyomtatják. A keret azt mutatja, amit a kamera lát.

Csatolom az egyetemi jelentésemet erről a projektről. Kérjük, olvassa el a projekt további részleteit.

6. lépés: Minden további fájl

Minden további fájl
Minden további fájl

Ezek egy része az útközben készített fájlok tesztelése volt.

Ajánlott: