Obsah:
- Krok 1: Požadavky
- Krok 2: Školení dat
- Krok 3: Implementace předpovědí Pi kamery
- Krok 4: Robot Arduino
- Krok 5: Testování
- Krok 6: Všechny další soubory
Video: Robot pro rozpoznávání dopravních značek Raspberry Pi 4: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Tento instruktáž vychází z mého univerzitního projektu. Cílem bylo vytvořit systém, kde neurální síť analyzuje obraz a poté na základě rozpoznání řekne robotovi arduino, aby se pohyboval přes Ros.
Pokud je například rozpoznána značka odbočení vpravo, robot se otočí doprava, pokud je rozpoznána značka odbočení vlevo, robot se otočí doleva, pokud není rozpoznán žádný, robot bude pokračovat vpřed. Datová sada, která bude použita, je oficiální rozpoznávání dopravních značek z INI (2019) (Institut Fur Neuroinformatik), tato datová sada má 43 tříd, jsou však zapotřebí pouze dvě; Složky 00033 a 00034 v datové sadě jsou odbočovací značky vlevo a vpravo.
Krok 1: Požadavky
Požadavky pro tento projekt jsou následující:
Arduino robot. (v podstatě arduino uno, ovladač motoru a motory) (není potřeba, pokud nepoužíváte robota)
Malinová pi 4.
Pi kamera.
Potřebný software:
Python 3.
OpenCV 4.
Tensorflow.
arduino IDE (není nutné, pokud nepoužíváte robota)
Ros (není potřeba, pokud nepoužíváte robota)
Ať už je váš oblíbený ideál pythonu jakýkoli (Na malinovém pi používám Thonny).
Chcete -li nastavit OpenCV a Tensorflow, postupujte podle pokynů Adriana. Odkaz:
Doporučuji podívat se na co nejvíce jeho tutoriálů, jsou opravdu zajímavé a oba jsou užitečné pro začátečníky i mírně pokročilé.
Krok 2: Školení dat
Vlakový skript je navržen tak, aby měl přístup k datové sadě, která sestavuje přibližně 50 000 obrázků ze 43 tříd. Skript je napsán v pythonu pomocí různých knihoven: os - slouží k propojení skriptu python se správným adresářem, kde se nachází datová sada. Matplotlib - slouží k zobrazení dat z tréninkového modelu. Tensorflow a keras - to jsou knihovny používané k vytvoření modelu umělé neuronové sítě, slouží k návrhu modelu. Numpy - tato knihovna slouží k přeměně obrazů na pole, které lze poté vložit do modelu a získat tak předpověď.
Přiložený skript je kód pythonu pro vytvoření modelu z datové sady. To se skládá z konvolučního 2D se vstupem (5, 5) a aktivací relu a poté sdružováním, jakmile je toto provedeno, vstup prochází jinou konvolucí se vstupem (3, 3) se stejnou aktivací a sdružováním. K tomu dochází naposledy, než se zploští a poté se hustota aplikuje na počet tříd, v tomto případě 43.
Dalším krokem bylo sestavení modelu. Toto je část, která nastavuje optimalizátor, a sgd byl nejvhodnější, protože to bylo podobné optimalizátoru použitému v úkolu 1. Sgd znamená Stochastický gradientový sestup. Také v kompilátoru je třeba nastavit ztrátu, přičemž volba sparse_categorical_crossentropy loss je nejvhodnější, protože kategorie jsou celá čísla a model bude vydávat předpověď pro každou třídu jako float mezi 0 a 1. 1 se 100% přesností.
Jakmile je kompilátor dokončen, je třeba použít generátor, aby model mohl začít zpracovávat obrazové vstupy. Generátor se skládá z několika částí: training_set - toto je odkaz na datovou sadu používanou pro trénink, steps_per_epoch - počet požadovaných kroků za epochu, epochy - kolikrát bude program iterovat prostřednictvím celé sady dat, validation_data - toto je odkaz na datovou sadu použitou pro validaci, validation_steps - počet kroků použitých pro validaci, validace probíhá na konci každé epochy.
Obecně platí, že úplné vymazání celé datové sady musí být dokončeno za epochu. Proto například datová sada 1024 obrázků bude vyžadovat: Velikost dávky = 32, Kroky na epochu = 32, epochy = 1. Každý krok zahrnuje celou velikost dávky, takže při velikosti dávky 32 bude kroků 32. Na druhé straně ruka, je nejlepší mít větší velikost dávky než počet tříd, je to proto, že pokud je velikost dávky menší, pak každý krok nemůže obsahovat obrázek z každé třídy.
Jakmile model dokončí trénink, pomocí programu matplotlib program vytvoří graf výstupů, který ukazuje historii školení od začátku do konce. Graf se skládá z přesnosti, přesnosti validace, ztráty a ztráty validace, která je rozdělena podle epochy, aby ukázala, jak trénink postupoval. Poslední fází je uložení modelu jako souboru.h5, ke kterému lze později v procesu predikce přistupovat. Uložení modelu znamená, že při každém spuštění predikčního programu nemusí být tréninkový program znovu spuštěn. Tréninkový program může trvat až 10 minut za epochu na malinovém pi.
V příloze je školicí skript:
Krok 3: Implementace předpovědí Pi kamery
Dalším programem je skript predikce a vydavatele.
První fází je načtení modelu pomocí model.load (). Druhou fází je iterace snímků z pi kamery pomocí opencv a poté změna velikosti rámečku na stejnou velikost jako vstupní velikosti použité ve fázi tréninku, 32 x 32 pixelů. Jakmile je toto provedeno, nový rámeček se změněnou velikostí je vložen do modelu pomocí modelu.predict (), který vydává matici, každý prvek matice je plovoucí od 0 do 1, index prvku je stejný jako třída, kterou představuje, proto první prvek je třída jedna a číslo je předpověď jistoty obrazu, který je z této třídy. Např.
POZNÁMKA: Pokud nepoužíváte stranu robota. Stačí odstranit řádky:
"import rospy"
def talker (směr):
message = String ()
pub = rospy. Publisher ('robot', String, queue_size = 10)
rospy.init_node ('talker', anonymous = True)
zpráva = směr
rospy.loginfo (zpráva)
pub.publish (zpráva)"
"mluvčí (směr)"
V příloze je skript kamery Pi.
Krok 4: Robot Arduino
Posledním krokem je skript programu robota.
Toto je napsáno v C ++ a je to soubor.ino pro arduino uno. Program vyžaduje knihovnu ros, kterou najdete ve správci knihoven v rámci ide. Jakmile je toto importováno, existují ukázkové soubory, rozhodl jsem se rozšířit soubor blinků LED, protože by to mělo podobný cíl, jaký jsem potřeboval. Program pokračuje ve smyčce, dokud není odpojeno napájení, nejprve poslouchá tematického robota, když zachytí příkaz z tohoto tématu, bude mít příkaz if, aby viděl, co příkaz říká. Pokud je příkaz vlevo, skript spustí metodu odbočení doleva, pokud je příkaz správný, spustí metodu odbočení vpravo a jinak spustí metodu předávání. Tyto tři metody jsou si navzájem velmi podobné, říkají, že digitální piny jsou buď NÍZKÉ (pozemní) nebo 100 (PWM), aby robot nebyl příliš rychlý tím, že řekne řidiči motoru, aby nechal jen trochu napětí. Pořadí těchto výstupů je to, co přiměje robota otočit se doleva a doprava nebo jít dopředu, je to kvůli orientaci napětí procházejícího do motorů.
V příloze je skript.ino pro arduino.
Krok 5: Testování
Obrázky připojené, takže projekt od začátku do konce. První obrázek ukazuje probíhající školení. Po dokončení se zobrazí vytištěný model. Třetí obrázek ukazuje předpověď z tréninkového skriptu. toto je poslední fáze tréninkového skriptu. Pokud se podíváte do složky, ve které je tréninkový skript, byl vytvořen graf a model. Graf by zde měl vypadat jako obrázek 4, který ukazuje historii tréninku od začátku do konce.
Konečný obrázek je při spuštění skriptu pi kamery, je to živý přenos z pi kamery. na každém snímku se provede predikce a předpověď se vytiskne v terminálu. Rámeček ukazuje, co kamera vidí.
V příloze je moje univerzitní zpráva k tomuto projektu. Přečtěte si prosím další podrobnosti o projektu.
Krok 6: Všechny další soubory
Některé z nich byly testovací soubory, které jsem vytvořil po cestě.
Doporučuje:
Sestava miniaturních RGB LED značek (plná barva): 4 kroky
Miniaturní sestava RGB LED značek (plná barva): V tomto Instructable bych rád řekl, jak jsem vytvořil tuto LED značku pro použití na různých akcích. Miluji projekty, které se rozsvítí, a v poslední době mám zájem vytvářet světelná znamení pro sjezdy a veletrhy, kde máme stánek, který předvádí některé
Jak propojit aplikaci pro Android s AWS IOT a porozuměním API pro rozpoznávání hlasu: 3 kroky
Jak propojit aplikaci pro Android s AWS IOT a porozuměním API pro rozpoznávání hlasu: Tento tutoriál uživatele naučí, jak připojit aplikaci pro Android k serveru AWS IOT a porozumět API pro rozpoznávání hlasu, které ovládá kávovar. Aplikace ovládá kávovar prostřednictvím systému Alexa Hlasová služba, každá aplikace je
Bezpečnostní systém rozpoznávání obličeje pro lednici s Raspberry Pi: 7 kroků (s obrázky)
Bezpečnostní systém rozpoznávání obličeje v chladničce s Raspberry Pi: Procházením internetu jsem zjistil, že ceny za bezpečnostní systémy se pohybují od 150 $ do 600 $ a výše, ale ne všechna řešení (i ta velmi drahá) lze integrovat s jinými chytré nástroje u vás doma! Nelze například nastavit
VRBOT (robot pro rozpoznávání hlasu): 10 kroků (s obrázky)
VRBOT (Robot pro rozpoznávání hlasu): V tomto Instructable vyrobíme robota (spíše jako RC auto), který je ovládán hlasem, tj. Rozpoznáváním hlasu. Než vám začnu poskytovat jakékoli další podrobnosti, je třeba vědět, že toto je rozpoznávání hlasu, nikoli rozpoznávání řeči, což znamená
Oprava USB rozbočovače bez nástrojů nebo značek: 8 kroků
Opravte USB rozbočovač bez nástrojů nebo značek: Pro svůj první Instructable jsem vybral něco snadného, upevněte USB rozbočovač na dřevo bez nástrojů nebo škrábanců. Před pokračováním prosím omluvte všechny gramatické chyby, nemám mnoho šancí mluvit anglicky v každodenním životě. Je to odnímatelná oprava s