Indholdsfortegnelse:

Transferlæring med NVIDIA JetBot - sjovt med trafikkegler: 6 trin
Transferlæring med NVIDIA JetBot - sjovt med trafikkegler: 6 trin

Video: Transferlæring med NVIDIA JetBot - sjovt med trafikkegler: 6 trin

Video: Transferlæring med NVIDIA JetBot - sjovt med trafikkegler: 6 trin
Video: NVIDIA JetBot: Jetson Nano Vision-Controlled AI Robot 2024, Juli
Anonim

Af dvillevaldMy GithubFølg om: Jeg kan godt lide AI og applikationer til maskinlæring, især inden for robotik Mere om dvillevald »

Lær din robot at finde en sti i en labyrint af trafikkegler ved hjælp af kameraet og den state-of-the-art dybe læringsmodel.

Forbrugsvarer

  • NVIDIA JetBot

    NVIDIA JetBot Wiki's Bill of Materials -side viser alt, hvad du har brug for til at bygge JetBot, sammen med køb af links fra populære leverandører

  • Computer med NVIDIA GPU

    Behov for at træne modellen

  • BlueDot Trading 4”RC Racing Agility Kegler, Orange - Sæt med 20 stk

Trin 1: Motivation

Image
Image

Hver gang jeg kører i sammentrækningsområdet, tænker jeg på, hvor udfordrende det ville være for en selvkørende bil at navigere gennem trafikkeglerne. Det viser sig, at det ikke er så svært med nye NVIDIAs JetBot-med kun et par hundrede billeder kan du træne en topmoderne dyb læringsmodel til at lære din robot at finde en sti i en labyrint af legetøjstrafikkegler kun ved hjælp af det indbyggede kamera og ingen andre sensorer.

Trin 2: NVIDIA JetBot og projektoversigt

NVIDIA JetBot og projektoversigt
NVIDIA JetBot og projektoversigt

JetBot er en open source-robot baseret på NVIDIA Jetson Nano-kit. Du kan finde detaljerede instruktioner om, hvordan du bygger og opsætter det her.

Dette projekt er et modificeret kollisionsundgåelseseksempel fra NVIDIA JetBot Wiki. Den består af tre store trin, der hver er beskrevet i en separat Jupyter -notesbog:

  • Indsaml data på JetBot - notebook data_collection_cones.ipynb
  • Togmodel på anden GPU -maskine - notebook train_model_cones.ipynb
  • Kør live demo på JetBot - notebook live_demo_cones.ipynb

Du kan finde disse tre Jupyter -notesbøger her

Trin 3: Byg JetBot, og upload Jupyter -notesbøger

  1. Byg og konfigurer JetBot som forklaret her
  2. Opret forbindelse til din robot ved at navigere til https://: 8888 Log ind med standardadgangskoden jetbot
  3. Luk alle andre kørende notesbøger ved at vælge Kernel -> Shutdown All Kernels …
  4. Naviger til ~/Notebooks/
  5. Opret ny undermappe ~/Notebooks/traffic_cones_driving/
  6. Upload data_collection_cones.ipynb og live_demo_cones.ipynb til ~/Notebooks/traffic_cones_driving/

VIGTIGT: Jupyter -notesbøgerne data_collection_cones.ipynb og live_demo_cones.ipynb, der refereres til i denne vejledning, bør køres på JetBot, mens train_model_cones.ipynb - på en computer med GPU.

Derfor skal vi uploade data_collection_cones.ipynb og live_demo_cones.ipynb til JetBot og placere dem i ~/Notebooks/traffic_cones_driving/

Trin 4: Indsamling af træningsdata på JetBot

Vi vil indsamle et datasæt til billedklassificering, der skal bruges til at hjælpe JetBot med at operere i en labyrint af trafikkeglerne. JetBot lærer at estimere sandsynlighederne for fire scenarier (klasser):

  • Gratis - når det er sikkert at komme videre
  • Blokeret - når der er en forhindring foran robotten
  • Venstre - når robotten skal dreje til venstre
  • Højre - når robotten skal dreje til højre

For at indsamle træningsdataene på JetBot bruger vi Jupyter notebook data_collection_cones.ipynb, som indeholder detaljerede instruktioner om, hvordan du gør det. Følg de følgende trin for at køre denne notesbog på JetBot:

  1. Opret forbindelse til din robot ved at navigere til https://: jetbot-ip-adresse:: 8888
  2. Log ind med standardadgangskoden jetbot
  3. Luk alle andre kørende notebooks ved at vælge Kernel -> Shutdown All Kernels …
  4. Naviger til ~/Notebooks/traffic_cones_driving/
  5. Åbn og følg notesbogen data_collection_cones.ipynb

Trin 5: Træn neuralt netværk på GPU -maskine

Dernæst vil vi bruge de indsamlede data til at genuddanne deep learning-modellen AlexNet på GPU-maskine (vært) ved at køre train_model_cones.ipynb.

Bemærk, at train_model_cones.ipynb er den eneste Jupyter -notesbog i denne vejledning, der IKKE køres på JetBot

  1. Opret forbindelse til en GPU -maskine med PyTorch installeret og en Jupyter Lab -server kører
  2. Upload train_model_cones.ipynb notesbog og til denne maskine
  3. Upload datasæt_cones.zip -fil, som du har oprettet i notesbogen data_collection_cones.ipynb, og udpak dette datasæt. (Efter dette trin skal du se en mappe med navnet dataset_cones vises i filbrowseren.)
  4. Åbn og følg notesbogen train_model_cones.ipynb. I slutningen af dette trin opretter du en model - filen best_model_cones.pth, som derefter skal uploades til JetBot for at køre live -demoen.

Trin 6: Kør Live Demo på JetBot

Kør Live Demo på JetBot
Kør Live Demo på JetBot

Dette sidste trin er at uploade modellen best_model_cones.pth til JetBot og køre den.

  1. Tænd din robot fra USB -batteripakken
  2. Opret forbindelse til din robot ved at navigere til https://: jetbot-ip-adresse:: 8888
  3. Log ind med standardadgangskoden jetbot
  4. Luk alle andre kørende notesbøger ved at vælge Kernel -> Shutdown All Kernels …
  5. Naviger til ~/Notebooks/traffic_cones_driving
  6. Åbn og følg notesbogen live_demo_cones.ipynb

Start forsigtigt, og giv JetBot plads nok til at flytte rundt. Prøv forskellige keglekonfigurationer og se, hvor godt robotten klarer sig i forskellige miljøer, belysning osv. Mens notebook'en live_demo_cones.ipynb forklarer alle trin i detaljer, viser følgende diagram logikken i robotbevægelser givet de sandsynligheder, som modellerne forudsiger.

Notebook'en forklarer også, hvordan man opbevarer historien om robotbevægelser med frie/venstre/højre/blokerede sandsynligheder forudsagt af modellen, og hvordan man laver to FPV -videoer (First Person View) (med 1 fps og 15 fps -hastigheder) med overlejret telemetri og JetBot -handlinger. Disse er nyttige til fejlfinding, PID -controller -tuning og modelforbedringer.

God fornøjelse og lad mig vide, hvis du har spørgsmål!:-)

Koden er tilgængelig på Github

Anbefalede: