Innehållsförteckning:

Överföringsinlärning med NVIDIA JetBot - kul med trafikkoner: 6 steg
Överföringsinlärning med NVIDIA JetBot - kul med trafikkoner: 6 steg

Video: Överföringsinlärning med NVIDIA JetBot - kul med trafikkoner: 6 steg

Video: Överföringsinlärning med NVIDIA JetBot - kul med trafikkoner: 6 steg
Video: Давайте сделаем Neo QLED 8K #UnboxAndDiscover | Samsung 2024, Juli
Anonim

Av dvillevaldMy GithubFölj om: Jag gillar applikationer för AI och maskininlärning, särskilt inom robotik Mer om dvillevald »

Lär din robot att hitta en väg i en labyrint av trafikkoner med hjälp av kameran och den senaste djupinlärningsmodellen.

Tillbehör

  • NVIDIA JetBot

    NVIDIA JetBot Wiki's Bill of Materials -sida listar allt du behöver för att bygga JetBot, tillsammans med att köpa länkar från populära leverantörer

  • Dator med NVIDIA GPU

    Behövs för att träna modellen

  • BlueDot Trading 4”RC Racing Agility Cones, Orange - Set med 20 st

Steg 1: Motivation

Image
Image

Varje gång jag kör i kontraktionsområdet tänker jag på hur utmanande det skulle vara för en självkörande bil att navigera genom trafikkottarna. Det visar sig att det inte är så svårt med nya NVIDIA: s JetBot-med bara ett par hundra bilder kan du träna en toppmodern djupinlärningsmodell för att lära din robot hur man hittar en väg i en labyrint av leksakstrafikkottar endast med den inbyggda kameran och inga andra sensorer.

Steg 2: NVIDIA JetBot och projektöversikt

NVIDIA JetBot och projektöversikt
NVIDIA JetBot och projektöversikt

JetBot är en robot med öppen källkod baserad på NVIDIA Jetson Nano-kit. Du hittar detaljerade instruktioner om hur du bygger och konfigurerar det här.

Detta projekt är ett modifierat kollisionsundvikande exempel från NVIDIA JetBot Wiki. Den består av tre stora steg, var och en beskrivs i en separat Jupyter -anteckningsbok:

  • Samla in data på JetBot - notebook data_collection_cones.ipynb
  • Tågmodell på annan GPU -maskin - anteckningsbok train_model_cones.ipynb
  • Kör live demo på JetBot - anteckningsbok live_demo_cones.ipynb

Du hittar dessa tre Jupyter -anteckningsböcker här

Steg 3: Bygg JetBot och ladda upp Jupyter -anteckningsböcker

  1. Bygg och konfigurera JetBot enligt beskrivningen här
  2. Anslut till din robot genom att navigera till https://: 8888 Logga in med standardlösenordet jetbot
  3. Stäng av alla andra bärbara bärbara datorer genom att välja Kernel -> Shutdown All Kernels …
  4. Navigera till ~/Anteckningsböcker/
  5. Skapa ny undermapp ~/Anteckningsböcker/traffic_cones_driving/
  6. Ladda upp data_collection_cones.ipynb och live_demo_cones.ipynb till ~/Notebooks/traffic_cones_driving/

VIKTIGT: Jupyters anteckningsböcker data_collection_cones.ipynb och live_demo_cones.ipynb som refereras till i denna instruktion bör köras på JetBot medan train_model_cones.ipynb - på en dator med GPU.

Därför måste vi ladda upp data_collection_cones.ipynb och live_demo_cones.ipynb till JetBot och placera dem i ~/Notebooks/traffic_cones_driving/

Steg 4: Samla in träningsdata på JetBot

Vi kommer att samla en bildklassificeringsdatauppsättning som kommer att användas för att hjälpa JetBot att fungera i en labyrint av trafikkottarna. JetBot lär sig att uppskatta sannolikheter för fyra scenarier (klasser):

  • Gratis - när det är säkert att gå framåt
  • Blockerad - när det finns ett hinder framför roboten
  • Vänster - när roboten ska snurra till vänster
  • Höger - när roboten ska snurra till höger

För att samla in träningsdata på JetBot kommer vi att använda Jupyter notebook data_collection_cones.ipynb som innehåller detaljerade instruktioner om hur man gör det. För att köra den här anteckningsboken på JetBot, följ följande steg:

  1. Anslut till din robot genom att navigera till https://: jetbot-ip-address:: 8888
  2. Logga in med standardlösenordet jetbot
  3. Stäng av alla andra bärbara bärbara datorer genom att välja Kernel -> Shutdown All Kernels …
  4. Navigera till ~/Notebooks/traffic_cones_driving/
  5. Öppna och följ data_collection_cones.ipynb -anteckningsboken

Steg 5: Träna neuralt nätverk på GPU -maskinen

Därefter kommer vi att använda den insamlade data för att träna om djupinlärningsmodellen AlexNet på GPU-maskin (värd) genom att köra train_model_cones.ipynb.

Observera att train_model_cones.ipynb är den enda Jupyter -anteckningsboken i denna handledning som INTE körs på JetBot

  1. Anslut till en GPU -maskin med PyTorch installerat och en Jupyter Lab -server körs
  2. Ladda upp train_model_cones.ipynb anteckningsbok och till den här maskinen
  3. Ladda upp filen dataset_cones.zip som du skapade i data_collection_cones.ipynb -anteckningsboken och extrahera den här datasetet. (Efter detta steg bör du se en mapp med namnet dataset_cones visas i filbläddraren.)
  4. Öppna och följ anteckningsboken train_model_cones.ipynb. I slutet av detta steg skapar du en modell - filen best_model_cones.pth som sedan måste laddas upp till JetBot för att köra live -demon.

Steg 6: Kör Live Demo på JetBot

Kör Live Demo på JetBot
Kör Live Demo på JetBot

Detta sista steg är att ladda upp modellen best_model_cones.pth till JetBot och köra den.

  1. Driv din robot från USB -batteriet
  2. Anslut tillbaka till din robot genom att navigera till https://: jetbot-ip-address:: 8888
  3. Logga in med standardlösenordet jetbot
  4. Stäng av alla andra bärbara bärbara datorer genom att välja Kernel -> Shutdown All Kernels …
  5. Navigera till ~/Notebooks/traffic_cones_driving
  6. Öppna och följ anteckningsboken live_demo_cones.ipynb

Börja försiktigt och ge JetBot tillräckligt med utrymme för att röra sig. Prova olika konkonfigurationer och se hur bra roboten presterar i olika miljöer, belysning etc. Medan notebook -datorn live_demo_cones.ipynb förklarar alla steg i detalj, visar följande diagram logiken för robotrörelser med tanke på de sannolikheter som modellerna förutsäger.

Anteckningsboken förklarar också hur man lagrar historiken för robotrörelser med fria/vänster/höger/blockerade sannolikheter som modellen förutsäger och hur man gör två FPV (First Person View) -videor (med 1 fps och 15 fps) med överlagrad telemetri och JetBot -åtgärdsdata. De är användbara för felsökning, PID -kontrollinställning och modellförbättring.

Ha det så kul och hör av dig om du har frågor!:-)

Koden är tillgänglig på Github

Rekommenderad: