Inhoudsopgave:
- Benodigdheden
- Stap 1: Motivatie
- Stap 2: NVIDIA JetBot & Projectoverzicht
- Stap 3: Bouw JetBot en upload Jupyter-notebooks
- Stap 4: Trainingsgegevens verzamelen op JetBot
- Stap 5: Train neuraal netwerk op GPU-machine
- Stap 6: Live demo uitvoeren op JetBot
Video: Leren overdragen met NVIDIA JetBot - Plezier met verkeerskegels - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
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
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
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
- Bouw en stel JetBot in zoals hier uitgelegd
- Maak verbinding met uw robot door te navigeren naar https://:8888Meld u aan met het standaardwachtwoord jetbot
- Sluit alle andere actieve notebooks af door Kernel -> Shutdown All Kernels te selecteren…
- Navigeer naar ~/Notebooks/
- Nieuwe submap maken ~/Notebooks/traffic_cones_driving/
- 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:
- Maak verbinding met uw robot door te navigeren naar
- Log in met het standaardwachtwoord jetbot
- Sluit alle andere actieve notebooks af door Kernel -> Shutdown All Kernels te selecteren…
- Navigeer naar ~/Notebooks/traffic_cones_driving/
- 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
- Maak verbinding met een GPU-machine waarop PyTorch is geïnstalleerd en een Jupyter Lab-server actief is
- Upload train_model_cones.ipynb notebook en naar deze machine
- 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.)
- 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
Deze laatste stap is om het model best_model_cones.pth naar de JetBot te uploaden en uit te voeren.
- Voorzie uw robot van stroom via het USB-batterijpakket
- Maak opnieuw verbinding met uw robot door te navigeren naar
- Log in met het standaardwachtwoord jetbot
- Sluit alle andere actieve notebooks af door Kernel -> Shutdown All Kernels te selecteren…
- Navigeer naar ~/Notebooks/traffic_cones_driving
- 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:
Python gebruiken om niet-Engelse toetsenbordindelingen te leren: 8 stappen
Python gebruiken om niet-Engelse toetsenbordindelingen te leren: Hallo, ik ben Julien! Ik ben een student computerwetenschappen en vandaag ga ik je laten zien hoe je Python kunt gebruiken om jezelf de toetsenbordindeling van een niet-Engelse taal aan te leren. Veel talen leren tegenwoordig online, en één ding kunnen mensen begrijpen
SCARA-robot: leren over voorwaartse en inverse kinematica!!! (Plot Twist Leer hoe u een realtime-interface maakt in ARDUINO met PROCESSING !!!!): 5 stappen (met afbeeldingen)
SCARA-robot: leren over voorwaartse en inverse kinematica!!! (Plot Twist Leer hoe u een realtime interface maakt in ARDUINO met PROCESSING !!!!): Een SCARA-robot is een zeer populaire machine in de industriewereld. De naam staat voor zowel Selective Compliant Assembly Robot Arm als Selective Compliant Articulated Robot Arm. Het is in feite een robot met drie vrijheidsgraden, de eerste twee displ
Circuit Leer NANO: één PCB. Makkelijk te leren. Oneindige mogelijkheden. 12 stappen (met afbeeldingen)
Circuit Leer NANO: één PCB. Makkelijk te leren. Oneindige mogelijkheden.: Beginnen in de wereld van elektronica en robotica kan in het begin behoorlijk ontmoedigend zijn. Er zijn in het begin veel dingen om te leren (circuitontwerp, solderen, programmeren, de juiste elektronische componenten kiezen, enz.)
Leren coderen met Python Turtle: 4 stappen
Leer coderen met Python Turtle: in deze tutorial zullen we kennismaken met de leuke wereld van coderen met Python, met name de Turtle-bibliotheek. We gaan ervan uit dat je geen eerdere codeerervaring hebt. Als je meer wilt weten, raden we je aan het boek van de auteur te lezen: https://www.amazo
Bestanden overdragen via uw LAN via BitTorrent: 6 stappen
Bestanden overdragen via uw LAN via BitTorrent: Soms moet u mogelijk bestanden over een netwerk naar meerdere computers overbrengen. Hoewel je het op een flashstation of cd/dvd zou kunnen zetten, zou je naar elke computer moeten gaan om de bestanden te kopiëren en het kan even duren om alle bestanden te kopiëren (vooral met f