Sommario:

Trasferisci l'apprendimento con NVIDIA JetBot - Divertiti con i coni del traffico: 6 passaggi
Trasferisci l'apprendimento con NVIDIA JetBot - Divertiti con i coni del traffico: 6 passaggi

Video: Trasferisci l'apprendimento con NVIDIA JetBot - Divertiti con i coni del traffico: 6 passaggi

Video: Trasferisci l'apprendimento con NVIDIA JetBot - Divertiti con i coni del traffico: 6 passaggi
Video: Waveshare Jetbot - Collision Avoidance using Transfer Learning! 2024, Luglio
Anonim

Di dvillevaldMy GithubFollow Informazioni su: Mi piacciono le applicazioni di intelligenza artificiale e di apprendimento automatico, in particolare nella robotica Ulteriori informazioni su dvillevald »

Insegna al tuo robot a trovare un percorso in un labirinto di coni stradali utilizzando la fotocamera e un modello di apprendimento profondo all'avanguardia.

Forniture

  • NVIDIA JetBot

    La pagina Bill of Materials di NVIDIA JetBot Wiki elenca tutto il necessario per creare JetBot, insieme ai collegamenti per l'acquisto da fornitori famosi

  • Computer con GPU NVIDIA

    Necessario per addestrare il modello

  • BlueDot Trading 4” RC Racing Agility Coni, Arancio – Set di 20

Passaggio 1: motivazione

Image
Image

Ogni volta che guido nell'area di contrazione penso a quanto sarebbe difficile per un'auto a guida autonoma navigare tra i coni del traffico. Si scopre che non è così difficile con il nuovo JetBot di NVIDIA: con solo un paio di centinaia di immagini, puoi addestrare un modello di deep learning all'avanguardia per insegnare al tuo robot come trovare un percorso in un labirinto di coni di traffico giocattolo utilizzando solo la fotocamera di bordo e nessun altro sensore.

Passaggio 2: NVIDIA JetBot e panoramica del progetto

NVIDIA JetBot e panoramica del progetto
NVIDIA JetBot e panoramica del progetto

JetBot è un robot open source basato sul kit NVIDIA Jetson Nano. Puoi trovare istruzioni dettagliate su come costruirlo e configurarlo qui.

Questo progetto è un esempio di prevenzione delle collisioni modificato da NVIDIA JetBot Wiki. Consiste di tre passaggi principali, ciascuno descritto in un taccuino Jupyter separato:

  • Raccogli dati su JetBot - notebook data_collection_cones.ipynb
  • Addestra modello su un'altra macchina GPU - notebook train_model_cones.ipynb
  • Esegui demo live su JetBot - notebook live_demo_cones.ipynb

Puoi trovare questi tre quaderni Jupyter qui

Passaggio 3: crea JetBot e carica i notebook Jupyter

  1. Costruisci e configura JetBot come spiegato qui
  2. Connettiti al tuo robot navigando su https://:8888Accedi con la password predefinita jetbot
  3. Spegni tutti gli altri notebook in esecuzione selezionando Kernel -> Shutdown All Kernels…
  4. Vai a ~/Notebook/
  5. Crea una nuova sottocartella ~/Notebook/traffic_cones_driving/
  6. Carica data_collection_cones.ipynb e live_demo_cones.ipynb su ~/Notebooks/traffic_cones_driving/

IMPORTANTE: i notebook Jupyter data_collection_cones.ipynb e live_demo_cones.ipynb a cui si fa riferimento in queste istruzioni devono essere eseguiti su JetBot mentre train_model_cones.ipynb - su un computer con GPU.

Quindi dobbiamo caricare data_collection_cones.ipynb e live_demo_cones.ipynb sul JetBot e metterli in ~/Notebooks/traffic_cones_driving/

Passaggio 4: raccolta dei dati di allenamento su JetBot

Raccoglieremo un set di dati di classificazione delle immagini che verrà utilizzato per aiutare JetBot a operare in un labirinto di coni di traffico. JetBot imparerà a stimare le probabilità di quattro scenari (classi):

  • Gratuito - quando è sicuro andare avanti
  • Bloccato - quando c'è un ostacolo davanti al robot
  • Sinistra - quando il robot dovrebbe girare a sinistra
  • Destra - quando il robot dovrebbe girare a destra

Per raccogliere i dati di addestramento su JetBot utilizzeremo Jupyter notebook data_collection_cones.ipynb che contiene istruzioni dettagliate su come farlo. Per eseguire questo notebook su JetBot, segui i passaggi seguenti:

  1. Connettiti al tuo robot navigando su
  2. Accedi con la password predefinita jetbot
  3. Spegni tutti gli altri notebook in esecuzione selezionando Kernel -> Shutdown All Kernels…
  4. Vai a ~/Notebook/traffic_cones_driving/
  5. Apri e segui il taccuino data_collection_cones.ipynb

Passaggio 5: addestrare la rete neurale sulla macchina GPU

Successivamente, utilizzeremo i dati raccolti per addestrare nuovamente il modello di deep learning AlexNet sulla macchina GPU (host) eseguendo train_model_cones.ipynb.

Nota che train_model_cones.ipynb è l'unico notebook Jupyter in questo tutorial che NON viene eseguito su JetBot

  1. Connettiti a una macchina GPU con PyTorch installato e un server Jupyter Lab in esecuzione
  2. Carica il taccuino train_model_cones.ipynb e su questa macchina
  3. Carica il file dataset_cones.zip che hai creato nel notebook data_collection_cones.ipynb ed estrai questo set di dati. (Dopo questo passaggio dovresti vedere una cartella denominata dataset_cones apparire nel browser di file.)
  4. Apri e segui il taccuino train_model_cones.ipynb. Alla fine di questo passaggio, creerai un modello, il file best_model_cones.pth che deve essere caricato sul JetBot per eseguire la demo live.

Passaggio 6: esegui la demo live su JetBot

Esegui demo live su JetBot
Esegui demo live su JetBot

Questo passaggio finale consiste nel caricare il modello best_model_cones.pth sul JetBot ed eseguirlo.

  1. Alimenta il tuo robot dalla batteria USB
  2. Connettiti nuovamente al tuo robot navigando su
  3. Accedi con la password predefinita jetbot
  4. Spegni tutti gli altri notebook in esecuzione selezionando Kernel -> Shutdown All Kernels…
  5. Vai a ~/Notebook/traffic_cones_driving
  6. Apri e segui il taccuino live_demo_cones.ipynb

Inizia con cautela e dai a JetBot abbastanza spazio per muoversi. Prova diverse configurazioni del cono e guarda come si comporta il robot in diversi ambienti, illuminazione, ecc. Mentre il notebook live_demo_cones.ipynb spiega tutti i passaggi in dettaglio, il grafico seguente mostra la logica dei movimenti del robot date le probabilità previste dai modelli.

Il taccuino spiega anche come memorizzare la cronologia dei movimenti del robot con probabilità libere/sinistre/destre/bloccate previste dal modello e come realizzare due video FPV (First Person View) (a velocità di 1 fps e 15 fps) con telemetria sovrapposta e Dati sulle azioni JetBot. Questi sono utili per il debug, l'ottimizzazione del controller PID e il miglioramento del modello.

Divertiti e fammi sapere se hai domande!:-)

Il codice è disponibile su Github

Consigliato: