INHOUDSOPGAWE:

Oordragleer met NVIDIA JetBot - pret met verkeerskegels: 6 stappe
Oordragleer met NVIDIA JetBot - pret met verkeerskegels: 6 stappe

Video: Oordragleer met NVIDIA JetBot - pret met verkeerskegels: 6 stappe

Video: Oordragleer met NVIDIA JetBot - pret met verkeerskegels: 6 stappe
Video: Jetson AI Fundamentals - S2E3 - JetBot Collision Avoidance 2024, Julie
Anonim

Deur dvillevaldMy GithubVolg oor: Ek hou van toepassings vir AI en masjienleer, veral in robotika Meer oor dvillevald »

Leer u robot om 'n pad in 'n doolhof van verkeerskegels te vind met behulp van die kamera en die nuutste model vir diep leer.

Voorrade

  • NVIDIA JetBot

    NVIDIA JetBot Wiki se Bill of Materials -bladsy bevat alles wat u nodig het om JetBot te bou, asook die aankoop van skakels van gewilde verskaffers

  • Rekenaar met NVIDIA GPU

    Nodig om die model op te lei

  • BlueDot Trading 4”RC Racing Agility Kegels, Oranje - Stel van 20

Stap 1: Motivering

Image
Image

Elke keer as ek in die kontraksie ry, dink ek hoe uitdagend dit sou wees vir 'n selfbestuurder om deur die verkeerskegels te navigeer. Dit blyk dat dit nie so moeilik is met die nuwe JetBot van NVIDIA nie-met slegs 'n paar honderd beelde kan u 'n moderne, diep-leermodel leer om u robot te leer hoe om 'n pad in 'n doolhof van speelgoedkegels te vind slegs met die ingeboude kamera en geen ander sensors nie.

Stap 2: NVIDIA JetBot en projekoorsig

NVIDIA JetBot en projekoorsig
NVIDIA JetBot en projekoorsig

JetBot is 'n open-source robot gebaseer op die NVIDIA Jetson Nano-stel. Hier vind u gedetailleerde instruksies oor hoe om dit te bou en op te stel.

Hierdie projek is 'n aangepaste voorbeeld van botsingsvoorkoming van NVIDIA JetBot Wiki. Dit bestaan uit drie hoofstappe, elk beskryf in 'n aparte Jupyter -notaboek:

  • Versamel data op JetBot - notaboek data_collection_cones.ipynb
  • Treinmodel op ander GPU -masjien - notaboek train_model_cones.ipynb
  • Begin lewendige demo op JetBot - notaboek live_demo_cones.ipynb

U kan hierdie drie Jupyter -notaboeke hier vind

Stap 3: Bou JetBot en laai Jupyter -notaboeke op

  1. Bou en stel JetBot op soos hier verduidelik
  2. Koppel aan u robot deur na https://: 8888 te gaan Meld aan met die standaard wagwoord jetbot
  3. Sluit alle ander lopende notaboeke af deur Kernel te kies -> Sluit alle kerne af …
  4. Gaan na ~/Notebooks/
  5. Skep nuwe submap ~/Notebooks/traffic_cones_driving/
  6. Laai data_collection_cones.ipynb en live_demo_cones.ipynb op na ~/Notebooks/traffic_cones_driving/

BELANGRIK: Die Jupyter -notaboeke data_collection_cones.ipynb en live_demo_cones.ipynb waarna in hierdie instruksies verwys word, moet op JetBot uitgevoer word terwyl train_model_cones.ipynb - op 'n rekenaar met GPU.

Daarom moet ons data_collection_cones.ipynb en live_demo_cones.ipynb na die JetBot oplaai en dit in ~/Notebooks/traffic_cones_driving/plaas

Stap 4: Versamel opleidingsdata op JetBot

Ons sal 'n beeldklassifikasie -datastel versamel wat gebruik sal word om JetBot te help om in 'n doolhof van die verkeerskegels te werk. JetBot sal leer hoe om die waarskynlikheid van vier scenario's (klasse) te skat:

  • Gratis - as dit veilig is om vorentoe te beweeg
  • Geblokkeer - as daar 'n hindernis voor die robot is
  • Links - wanneer die robot na links moet draai
  • Regs - wanneer die robot na regs moet draai

Om die opleidingsdata op JetBot te versamel, gebruik ons die Jupyter notebook data_collection_cones.ipynb, wat besonderhede bevat oor hoe om dit te doen. Volg die volgende stappe om hierdie notaboek op JetBot uit te voer:

  1. Koppel aan u robot deur na https://: jetbot-ip-adres:: 8888 te gaan
  2. Meld aan met die standaard wagwoord jetbot
  3. Sluit alle ander lopende notaboeke af deur Kernel te kies -> Sluit alle kerne af …
  4. Gaan na ~/Notebooks/traffic_cones_driving/
  5. Maak die notaboek data_collection_cones.ipynb oop en volg dit

Stap 5: Leer neurale netwerk op GPU -masjien op

Vervolgens sal ons die versamelde data gebruik om die diepleermodel AlexNet op GPU-masjien (gasheer) weer op te lei deur trein_model_cones.ipynb uit te voer.

Let daarop dat train_model_cones.ipynb die enigste Jupyter -notaboek in hierdie tutoriaal is wat NIE op die JetBot uitgevoer word nie

  1. Koppel aan 'n GPU -masjien met PyTorch geïnstalleer en 'n Jupyter Lab -bediener loop
  2. Laai die train_model_cones.ipynb -notaboek en na hierdie masjien op
  3. Laai die dataset_cones.zip -lêer op wat u in die notaboek data_collection_cones.ipynb geskep het en haal hierdie dataset uit. (Na hierdie stap moet 'n gids met die naam dataset_cones in die lêerblaaier verskyn.)
  4. Maak die notaboek train_model_cones.ipynb oop en volg dit. Aan die einde van hierdie stap sal u 'n model skep - die lêer best_model_cones.pth wat dan na die JetBot opgelaai moet word om die lewendige demo uit te voer.

Stap 6: Begin Live Demo op JetBot

Begin Live Demo op JetBot
Begin Live Demo op JetBot

Hierdie laaste stap is om die model best_model_cones.pth na die JetBot op te laai en uit te voer.

  1. Voer u robot uit die USB -battery
  2. Koppel weer aan u robot deur na https://: jetbot-ip-adres:: 8888 te gaan
  3. Meld aan met die standaard wagwoord jetbot
  4. Sluit alle ander lopende notaboeke af deur Kernel te kies -> Sluit alle kerne af …
  5. Gaan na ~/Notebooks/traffic_cones_driving
  6. Maak die notaboek live_demo_cones.ipynb oop en volg dit

Wees versigtig en gee JetBot genoeg ruimte om rond te beweeg. Probeer verskillende keëlkonfigurasies en kyk hoe goed die robot presteer in verskillende omgewings, beligting, ens. Terwyl die notaboek live_demo_cones.ipynb alle stappe in detail verduidelik, toon die volgende grafiek die logika van robotbewegings, gegewe die waarskynlikhede wat deur die modelle voorspel word.

Die notaboek verduidelik ook hoe u die geskiedenis van robotbewegings kan stoor met vry/links/regs/geblokkeerde waarskynlikhede wat deur die model voorspel word en hoe u twee FPV -video's (First Person View) kan maak (teen 1 fps en 15 fps) met telemetrie en JetBot -aksiedata. Dit is nuttig vir ontfouting, afstemming van PID -beheerder en modelverbetering.

Geniet dit en laat weet my as u vrae het!:-)

Kode is beskikbaar op Github

Aanbeveel: