Innholdsfortegnelse:

Overføringslæring med NVIDIA JetBot - moro med trafikkjegler: 6 trinn
Overføringslæring med NVIDIA JetBot - moro med trafikkjegler: 6 trinn

Video: Overføringslæring med NVIDIA JetBot - moro med trafikkjegler: 6 trinn

Video: Overføringslæring med NVIDIA JetBot - moro med trafikkjegler: 6 trinn
Video: Pratica 1 - Parte B: ROS e teleoperação do Turtlebot 2 pelo terminal e pelo MatLab 2024, November
Anonim

Av dvillevaldMy GithubFølg Om: Jeg liker AI og maskinlæringsapplikasjoner, spesielt innen robotikk Mer om dvillevald »

Lær roboten din å finne en bane i en labyrint av trafikkjegler ved hjelp av kameraet og den toppmoderne dype læringsmodellen.

Rekvisita

  • NVIDIA JetBot

    NVIDIA JetBot Wiki's Bill of Materials -side viser alt du trenger for å bygge JetBot, sammen med kjøp av lenker fra populære leverandører

  • Datamaskin med NVIDIA GPU

    Nødvendig for å trene modellen

  • BlueDot Trading 4”RC Racing Agility -kjegler, oransje - sett med 20 stk

Trinn 1: Motivasjon

Image
Image

Hver gang jeg kjører i sammentrekningsområdet, tenker jeg på hvor utfordrende det ville være for en selvkjørende bil å navigere gjennom trafikkjeglene. Det viser seg at det ikke er så vanskelig med nye NVIDIAs JetBot-med bare et par hundre bilder kan du trene en toppmoderne dyplæringsmodell for å lære roboten din hvordan du finner en bane i en labyrint av leke-trafikkjegler kun ved hjelp av det innebygde kameraet og ingen andre sensorer.

Trinn 2: Oversikt over NVIDIA JetBot og prosjekt

Oversikt over NVIDIA JetBot og prosjekt
Oversikt over NVIDIA JetBot og prosjekt

JetBot er en åpen kildekode-robot basert på NVIDIA Jetson Nano-sett. Du finner detaljerte instruksjoner om hvordan du bygger og konfigurerer det her.

Dette prosjektet er et modifisert kollisjonseksempel fra NVIDIA JetBot Wiki. Den består av tre hovedtrinn, hver beskrevet i en egen Jupyter -notatbok:

  • Samle data på JetBot - notatbok data_collection_cones.ipynb
  • Togmodell på en annen GPU -maskin - notatbok train_model_cones.ipynb
  • Kjør live demo på JetBot - notatbok live_demo_cones.ipynb

Du finner disse tre Jupyter -notatbøkene her

Trinn 3: Bygg JetBot og last opp Jupyter Notebooks

  1. Bygg og konfigurer JetBot som forklart her
  2. Koble til roboten din ved å navigere til https://: 8888 Logg deg på med standard passord jetbot
  3. Slå av alle andre bærbare datamaskiner som kjører ved å velge Kernel -> Shutdown All Kernels …
  4. Naviger til ~/Notebooks/
  5. Opprett ny undermappe ~/Notebooks/traffic_cones_driving/
  6. Last opp data_collection_cones.ipynb og live_demo_cones.ipynb til ~/Notebooks/traffic_cones_driving/

VIKTIG: Jupyter -notatbøkene data_collection_cones.ipynb og live_demo_cones.ipynb som refereres til i denne instruksjonen, bør kjøres på JetBot mens train_model_cones.ipynb - på en datamaskin med GPU.

Derfor må vi laste opp data_collection_cones.ipynb og live_demo_cones.ipynb til JetBot og plassere dem i ~/Notebooks/traffic_cones_driving/

Trinn 4: Samle opplæringsdata på JetBot

Vi vil samle et datasett for bildeklassifisering som skal brukes til å hjelpe JetBot med å operere i en labyrint av trafikkjeglene. JetBot vil lære å estimere sannsynligheter for fire scenarier (klasser):

  • Gratis - når det er trygt å gå videre
  • Blokkert - når det er et hinder foran roboten
  • Venstre - når roboten skal snurre til venstre
  • Høyre - når roboten skal snurre til høyre

For å samle treningsdataene på JetBot bruker vi Jupyter notebook data_collection_cones.ipynb som inneholder detaljerte instruksjoner om hvordan du gjør det. Følg de neste trinnene for å kjøre denne notatblokken på JetBot:

  1. Koble til roboten din ved å navigere til https://: jetbot-ip-adresse:: 8888
  2. Logg på med standardpassordet jetbot
  3. Slå av alle andre bærbare datamaskiner som kjører ved å velge Kernel -> Shutdown All Kernels …
  4. Naviger til ~/Notebooks/traffic_cones_driving/
  5. Åpne og følg datamaskinen data_collection_cones.ipynb

Trinn 5: Tren nevrale nettverk på GPU -maskinen

Deretter vil vi bruke de innsamlede dataene til å trene dyplæringsmodellen AlexNet på nytt på GPU-maskin (vert) ved å kjøre train_model_cones.ipynb.

Vær oppmerksom på at train_model_cones.ipynb er den eneste Jupyter -notatboken i denne opplæringen som IKKE kjøres på JetBot

  1. Koble til en GPU -maskin med PyTorch installert og en Jupyter Lab -server kjører
  2. Last opp train_model_cones.ipynb notatbok og til denne maskinen
  3. Last opp dataset_cones.zip -filen du opprettet i data_collection_cones.ipynb -notatboken, og trekk ut dette datasettet. (Etter dette trinnet bør du se en mappe med navnet dataset_cones vises i filleseren.)
  4. Åpne og følg notatblokken train_model_cones.ipynb. På slutten av dette trinnet vil du lage en modell - filen best_model_cones.pth som deretter må lastes opp til JetBot for å kjøre live -demoen.

Trinn 6: Kjør Live Demo på JetBot

Kjør Live Demo på JetBot
Kjør Live Demo på JetBot

Dette siste trinnet er å laste opp modellen best_model_cones.pth til JetBot og kjøre den.

  1. Kjør roboten fra USB -batteripakken
  2. Koble tilbake til roboten din ved å navigere til https://: jetbot-ip-adresse:: 8888
  3. Logg på med standardpassordet jetbot
  4. Slå av alle andre bærbare datamaskiner som kjører ved å velge Kernel -> Shutdown All Kernels …
  5. Naviger til ~/Notebooks/traffic_cones_driving
  6. Åpne og følg notatblokken live_demo_cones.ipynb

Begynn forsiktig og gi JetBot nok plass til å bevege seg rundt. Prøv en annen kjeglekonfigurasjon og se hvor godt roboten yter i forskjellige miljøer, belysning osv. Mens den bærbare datamaskinen live_demo_cones.ipynb forklarer alle trinnene i detalj, viser følgende diagram logikken for robotbevegelser gitt sannsynlighetene som modellene forutsier.

Notatboken forklarer også hvordan du lagrer historien til robotbevegelser med frie/venstre/høyre/blokkerte sannsynligheter forutsagt av modellen og hvordan du lager to FPV (First Person View) -videoer (med 1 fps og 15 fps) med overlagret telemetri og JetBot -handlinger. Disse er nyttige for feilsøking, tuning av PID -kontroller og modellforbedring.

Ha det gøy og gi meg beskjed hvis du har spørsmål!:-)

Koden er tilgjengelig på Github

Anbefalt: