Tartalomjegyzék:
- 1. lépés: Követelmények
- 2. lépés: Az adatok oktatása
- 3. lépés: A Pi kamera előrejelzéseinek megvalósítása
- 4. lépés: Arduino robot
- 5. lépés: Tesztelés
- 6. lépés: Minden további fájl
Videó: Raspberry Pi 4 közlekedési táblák felismerő robotja: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
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
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
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
Ezek egy része az útközben készített fájlok tesztelése volt.
Ajánlott:
Kézmozgás -felismerő: 5 lépés
Kézmozgás -felismerő: Áttekintés Ebben a projektben olyan kesztyűt készítünk, amely felismer néhány alapvető kézmozdulatot, MicroBit és néhány érzékelő segítségével. A Bluetooth képességeit fogjuk használni a MicroBit -en, egy Android -alkalmazással és egy webszerverrel együtt a
Mecanum Omni kerekek robotja GRBL léptetőmotorokkal Arduino pajzs: 4 lépés
Mecanum Omni kerekek robotja GRBL léptetőmotorokkal Arduino Shield: Mecanum Robot - Egy projekt, amit építeni akartam, amióta megláttam a Dejan gread mechatronics blogján: howtomechatronics.com Dejan valóban jó munkát végzett, lefedve a hardver minden aspektusát, 3D nyomtatás , elektronika, kód és Android -alkalmazás (MIT
Első lépések az ESP32 -vel - ESP32 táblák telepítése Arduino IDE - -be ESP32 villogó kód: 3 lépés
Első lépések az ESP32 -vel | ESP32 táblák telepítése Arduino IDE | -be ESP32 villogó kód: Ebben az utasításban látni fogjuk, hogyan kell elkezdeni az esp32 -vel való munkát, és hogyan kell telepíteni az esp32 táblákat az Arduino IDE -be, és beprogramozzuk az esp 32 -et, hogy futtassa a villogó kódot az arduino ide használatával
Digitális felismerő Python segítségével: 3 lépés
Digitális felismerő a Python segítségével: Egy népszerű téma a „Computer Vision” témában, amely tartalmazza a letölthető szoftverek letöltését. Es posible imaginarse que esta habilidad es muy útil para una computadora y permite expandir
Többnyelvű felismerő AIY-val: 4 lépés
Többnyelvű felismerő AIY-val: Az űrállomásokon. Sok űrhajós van ott.n ~ az űrhajósok sok bolygóról (országból) érkeznek. ezért az AI -nak sok nyelven kell működnie