Inhoudsopgave:

Leren overdragen met NVIDIA JetBot - Plezier met verkeerskegels - Ajarnpa
Leren overdragen met NVIDIA JetBot - Plezier met verkeerskegels - Ajarnpa

Video: Leren overdragen met NVIDIA JetBot - Plezier met verkeerskegels - Ajarnpa

Video: Leren overdragen met NVIDIA JetBot - Plezier met verkeerskegels - Ajarnpa
Video: HEEFT NVIDIA GELOGEN? (Mining patch update) | TechTime 2024, Juli-
Anonim

Door dvillevaldMy GithubVolg over: Ik hou van AI en machine learning-toepassingen, vooral in robotica Meer over dvillevald »

Leer je robot een pad te vinden in een doolhof van verkeerskegels met behulp van de camera en het ultramoderne deep learning-model.

Benodigdheden

  • NVIDIA JetBot

    NVIDIA JetBot Wiki's Bill of Materials-pagina bevat alles wat je nodig hebt om JetBot te bouwen, samen met aankooplinks van populaire leveranciers

  • Computer met NVIDIA GPU

    Nodig om het model te trainen

  • BlueDot Trading 4” RC Racing Agility Cones, Oranje – Set van 20

Stap 1: Motivatie

Image
Image

Elke keer als ik in het krimpgebied rijd, denk ik eraan hoe uitdagend het zou zijn voor een zelfrijdende auto om door de verkeerskegels te navigeren. Het blijkt niet zo moeilijk te zijn met de nieuwe JetBot van NVIDIA - met slechts een paar honderd afbeeldingen kun je een ultramodern deep learning-model trainen om je robot te leren een pad te vinden in een doolhof van speelgoedverkeerskegels alleen de ingebouwde camera gebruiken en geen andere sensoren.

Stap 2: NVIDIA JetBot & Projectoverzicht

NVIDIA JetBot & Projectoverzicht
NVIDIA JetBot & Projectoverzicht

JetBot is een open-source robot gebaseerd op NVIDIA Jetson Nano kit. Gedetailleerde instructies voor het bouwen en instellen vindt u hier.

Dit project is een aangepast voorbeeld van het vermijden van botsingen van NVIDIA JetBot Wiki. Het bestaat uit drie hoofdstappen, elk beschreven in een apart Jupyter-notebook:

  • Verzamel gegevens op JetBot - notebook data_collection_cones.ipynb
  • Treinmodel op andere GPU-machine - notebook train_model_cones.ipynb
  • Voer een live demo uit op JetBot - notebook live_demo_cones.ipynb

Deze drie Jupyter-notebooks vind je hier

Stap 3: Bouw JetBot en upload Jupyter-notebooks

  1. Bouw en stel JetBot in zoals hier uitgelegd
  2. Maak verbinding met uw robot door te navigeren naar https://:8888Meld u aan met het standaardwachtwoord jetbot
  3. Sluit alle andere actieve notebooks af door Kernel -> Shutdown All Kernels te selecteren…
  4. Navigeer naar ~/Notebooks/
  5. Nieuwe submap maken ~/Notebooks/traffic_cones_driving/
  6. Upload data_collection_cones.ipynb en live_demo_cones.ipynb naar ~/Notebooks/traffic_cones_driving/

BELANGRIJK: De Jupyter-notebooks data_collection_cones.ipynb en live_demo_cones.ipynb waarnaar in deze instructies wordt verwezen, moeten worden uitgevoerd op JetBot terwijl train_model_cones.ipynb - op een computer met GPU.

Daarom moeten we data_collection_cones.ipynb en live_demo_cones.ipynb uploaden naar de JetBot en deze in ~/Notebooks/traffic_cones_driving/ plaatsen

Stap 4: Trainingsgegevens verzamelen op JetBot

We zullen een dataset voor beeldclassificatie verzamelen die zal worden gebruikt om JetBot te helpen werken in een doolhof van verkeerskegels. JetBot leert hoe de kansen van vier scenario's (klassen) kunnen worden ingeschat:

  • Gratis - wanneer het veilig is om verder te gaan
  • Geblokkeerd - wanneer er een obstakel voor de robot is
  • Links - wanneer de robot naar links moet draaien
  • Rechts - wanneer de robot naar rechts moet draaien

Om de trainingsgegevens op JetBot te verzamelen, gebruiken we Jupyter-notebook data_collection_cones.ipynb, die gedetailleerde instructies bevat over hoe u dit moet doen. Volg de volgende stappen om deze notebook op JetBot uit te voeren:

  1. Maak verbinding met uw robot door te navigeren naar
  2. Log in met het standaardwachtwoord jetbot
  3. Sluit alle andere actieve notebooks af door Kernel -> Shutdown All Kernels te selecteren…
  4. Navigeer naar ~/Notebooks/traffic_cones_driving/
  5. Open en volg de data_collection_cones.ipynb notebook

Stap 5: Train neuraal netwerk op GPU-machine

Vervolgens zullen we de verzamelde gegevens gebruiken om het deep learning-model AlexNet opnieuw te trainen op de GPU-machine (host) door train_model_cones.ipynb uit te voeren.

Merk op dat train_model_cones.ipynb de enige Jupyter-notebook in deze tutorial is die NIET op de JetBot wordt uitgevoerd

  1. Maak verbinding met een GPU-machine waarop PyTorch is geïnstalleerd en een Jupyter Lab-server actief is
  2. Upload train_model_cones.ipynb notebook en naar deze machine
  3. Upload het bestand dataset_cones.zip dat u hebt gemaakt in het notitieblok data_collection_cones.ipynb en pak deze dataset uit. (Na deze stap zou u een map met de naam dataset_cones moeten zien verschijnen in de bestandsbrowser.)
  4. Open en volg het notitieboek train_model_cones.ipynb. Aan het einde van deze stap maakt u een model - het bestand best_model_cones.pth, dat vervolgens naar de JetBot moet worden geüpload om de live demo uit te voeren.

Stap 6: Live demo uitvoeren op JetBot

Live demo uitvoeren op JetBot
Live demo uitvoeren op JetBot

Deze laatste stap is om het model best_model_cones.pth naar de JetBot te uploaden en uit te voeren.

  1. Voorzie uw robot van stroom via het USB-batterijpakket
  2. Maak opnieuw verbinding met uw robot door te navigeren naar
  3. Log in met het standaardwachtwoord jetbot
  4. Sluit alle andere actieve notebooks af door Kernel -> Shutdown All Kernels te selecteren…
  5. Navigeer naar ~/Notebooks/traffic_cones_driving
  6. Open en volg het notitieboek live_demo_cones.ipynb

Begin voorzichtig en geef JetBot voldoende bewegingsruimte. Probeer verschillende kegelconfiguraties en kijk hoe goed de robot presteert in verschillende omgevingen, verlichting, enz. Terwijl de notebook live_demo_cones.ipynb alle stappen in detail uitlegt, toont de volgende grafiek de logica van robotbewegingen, gegeven de kansen die door de modellen worden voorspeld.

De notebook legt ook uit hoe de geschiedenis van robotbewegingen kan worden opgeslagen met vrij/links/rechts/geblokkeerde kansen die door het model worden voorspeld en hoe twee FPV-video's (First Person View) kunnen worden gemaakt (met een snelheid van 1 fps en 15 fps) met gesuperponeerde telemetrie en JetBot-actiegegevens. Die zijn handig voor het debuggen, het afstemmen van de PID-regelaar en het verbeteren van modellen.

Veel plezier en laat het me weten als je vragen hebt!:-)

Code is beschikbaar op Github

Aanbevolen: