Obsah:

Prenosové učenie s NVIDIA JetBot - zábava s dopravnými kužeľmi: 6 krokov
Prenosové učenie s NVIDIA JetBot - zábava s dopravnými kužeľmi: 6 krokov

Video: Prenosové učenie s NVIDIA JetBot - zábava s dopravnými kužeľmi: 6 krokov

Video: Prenosové učenie s NVIDIA JetBot - zábava s dopravnými kužeľmi: 6 krokov
Video: Seminár Robotika SK, 14. cvičenie, Andrej Lúčny: Detekcia hrán pomocou hlbokého učenia 2024, Júl
Anonim

Môj github Nasledovať o: Mám rád aplikácie AI a strojového učenia, najmä v robotike Viac o dvillevald »

Naučte svojho robota nájsť cestu v bludisku dopravných kužeľov pomocou kamery a najmodernejšieho modelu hlbokého učenia.

Zásoby

  • NVIDIA JetBot

    Stránka kusovníka NVIDIA JetBot Wiki obsahuje zoznam všetkého, čo potrebujete na zostavenie JetBotu, a tiež odkazy na nákup od obľúbených predajcov

  • Počítač s grafickou kartou NVIDIA

    Potrebné na trénovanie modelu

  • BlueDot Trading 4”RC Racing Agility kužele, oranžová - sada 20

Krok 1: Motivácia

Image
Image

Zakaždým, keď idem v oblasti kontrakcie, premýšľam, aké náročné by bolo, aby sa samo riadiace auto pohybovalo cez dopravné kužele. Ukazuje sa, že s novým JetBotom NVIDIA to nie je také ťažké-iba s niekoľkými stovkami obrázkov môžete vycvičiť najmodernejší model hlbokého učenia, aby váš robot naučil nájsť cestu v bludisku hračiek s dopravnými kužeľmi iba pomocou integrovanej kamery a bez ďalších senzorov.

Krok 2: Prehľad NVIDIA JetBot a projektu

Prehľad NVIDIA JetBot a projektu
Prehľad NVIDIA JetBot a projektu

JetBot je open-source robot založený na súprave NVIDIA Jetson Nano. Podrobný návod, ako ho postaviť a nastaviť, nájdete tu.

Tento projekt je upraveným príkladom predchádzania kolíziám z NVIDIA JetBot Wiki. Pozostáva z troch hlavných krokov, z ktorých každý je popísaný v samostatnom prenosnom počítači Jupyter:

  • Zhromažďujte údaje na serveri JetBot - notebook data_collection_cones.ipynb
  • Vlak modelu na inom stroji GPU - notebook train_model_cones.ipynb
  • Spustite živé demo na JetBot - notebook live_demo_cones.ipynb

Tieto tri notebooky Jupyter nájdete tu

Krok 3: Zostavte JetBot a nahrajte notebooky Jupyter

  1. Zostavte a nastavte JetBot, ako je vysvetlené tu
  2. Pripojte sa k svojmu robotovi tak, že prejdete na stránku https://: 8888Prihláste sa pomocou predvoleného hesla jetbot
  3. Vypnite všetky ostatné spustené notebooky výberom Jadro -> Vypnúť všetky jadrá …
  4. Prejdite na ~/Notebooky/
  5. Vytvoriť novú podpriečinok ~/Notebooky/traffic_cones_driving/
  6. Nahrajte data_collection_cones.ipynb a live_demo_cones.ipynb do ~/Notebooks/traffic_cones_driving/

DÔLEŽITÉ: Notebooky Jupyter data_collection_cones.ipynb a live_demo_cones.ipynb uvedené v týchto pokynoch by mali byť spustené na serveri JetBot, zatiaľ čo train_model_cones.ipynb - na počítači s GPU.

Preto musíme nahrať data_collection_cones.ipynb a live_demo_cones.ipynb do JetBot a umiestniť ich do ~/Notebooks/traffic_cones_driving/

Krok 4: Zhromažďovanie údajov o výcviku na zariadení JetBot

Zhromaždíme súbor údajov o klasifikácii obrázkov, ktorý bude použitý na pomoc JetBotu v prevádzke v bludisku dopravných kužeľov. JetBot sa naučí odhadovať pravdepodobnosti štyroch scenárov (tried):

  • Zadarmo - keď je bezpečné ísť vpred
  • Blokované - keď je pred robotom prekážka
  • Vľavo - keď sa má robot točiť doľava
  • Vpravo - keď sa má robot točiť doprava

Na zhromažďovanie školiacich údajov na serveri JetBot použijeme notebook Jupyter data_collection_cones.ipynb, ktorý obsahuje podrobné pokyny, ako to urobiť. Ak chcete tento notebook spustiť na zariadení JetBot, postupujte podľa nasledujúcich krokov:

  1. Pripojte sa k svojmu robotovi tak, že prejdete na adresu https://: jetbot-ip-address:: 8888
  2. Prihláste sa pomocou predvoleného hesla jetbot
  3. Vypnite všetky ostatné spustené notebooky výberom Jadro -> Vypnúť všetky jadrá …
  4. Prejdite na ~/Notebooky/traffic_cones_driving/
  5. Otvorte a postupujte podľa zápisníka data_collection_cones.ipynb

Krok 5: Trénujte neurónovú sieť na počítači GPU

Ďalej použijeme zhromaždené údaje na precvičenie modelu hlbokého učenia AlexNet na stroji GPU (hostiteľ) spustením train_model_cones.ipynb.

Všimnite si toho, že train_model_cones.ipynb je jediný notebook Jupyter v tomto návode, ktorý nie je spustený na JetBote

  1. Pripojte sa k počítaču GPU s nainštalovaným PyTorch a spusteným serverom Jupyter Lab
  2. Odošlite notebook train_model_cones.ipynb do tohto počítača
  3. Odovzdajte súbor dataset_cones.zip, ktorý ste vytvorili v prenosnom počítači data_collection_cones.ipynb, a extrahujte tento súbor údajov. (Po tomto kroku by sa vám v prehliadači súborov mal zobraziť priečinok s názvom dataset_cones.)
  4. Otvorte a postupujte podľa zápisníka train_model_cones.ipynb. Na konci tohto kroku vytvoríte model - súbor best_model_cones.pth, ktorý potom musíte nahrať do JetBot, aby ste mohli spustiť živé demo.

Krok 6: Spustite živé demo na JetBot

Spustite živé ukážky na JetBot
Spustite živé ukážky na JetBot

Posledným krokom je nahranie modelu best_model_cones.pth do zariadenia JetBot a jeho spustenie.

  1. Napájajte svojho robota z batérie USB
  2. Pripojte sa späť k svojmu robotovi tak, že prejdete na adresu https://: jetbot-ip-address:: 8888
  3. Prihláste sa pomocou predvoleného hesla jetbot
  4. Vypnite všetky ostatné spustené notebooky výberom Jadro -> Vypnúť všetky jadrá …
  5. Prejdite na ~/Notebooky/traffic_cones_driving
  6. Otvorte a sledujte zápisník live_demo_cones.ipynb

Začnite opatrne a poskytnite JetBotu dostatok priestoru na pohyb. Vyskúšajte rôzne konfigurácie kužeľov a zistite, ako dobre robot funguje v rôznych prostrediach, osvetlení atď. Kým notebook live_demo_cones.ipynb podrobne vysvetľuje všetky kroky, nasledujúci graf ukazuje logiku pohybov robota vzhľadom na pravdepodobnosti predpovedané modelmi.

Notebook tiež vysvetľuje, ako uložiť históriu pohybov robota s voľnou/ľavou/pravou/blokovanou pravdepodobnosťou predpovedanou modelom a ako vytvoriť dve videá FPV (First Person View) (s frekvenciou 1 fps a 15 fps) so superponovanou telemetriou a Údaje o akciách JetBot. Sú užitočné pri ladení, ladení radiča PID a vylepšovaní modelu.

Bavte sa a v prípade otázok mi dajte vedieť!:-)

Kód je k dispozícii na Github

Odporúča: