Table des matières:

Transfert d'apprentissage avec NVIDIA JetBot - Amusez-vous avec les cônes de circulation : 6 étapes
Transfert d'apprentissage avec NVIDIA JetBot - Amusez-vous avec les cônes de circulation : 6 étapes

Vidéo: Transfert d'apprentissage avec NVIDIA JetBot - Amusez-vous avec les cônes de circulation : 6 étapes

Vidéo: Transfert d'apprentissage avec NVIDIA JetBot - Amusez-vous avec les cônes de circulation : 6 étapes
Vidéo: Getting Started with JetBot 2024, Novembre
Anonim

Par dvillevaldMon GithubSuivez à propos de: J'aime les applications d'IA et d'apprentissage automatique, en particulier en robotique En savoir plus sur dvillevald »

Apprenez à votre robot à trouver un chemin dans un labyrinthe de cônes de circulation à l'aide de la caméra et du modèle d'apprentissage en profondeur à la pointe de la technologie.

Fournitures

  • NVIDIA JetBot

    La page Bill of Materials de NVIDIA JetBot Wiki répertorie tout ce dont vous avez besoin pour créer JetBot, ainsi que des liens d'achat auprès de fournisseurs populaires

  • Ordinateur avec GPU NVIDIA

    Nécessaire pour entraîner le modèle

  • BlueDot Trading 4" RC Racing Agility Cones, Orange - Lot de 20

Étape 1: Motivation

Image
Image

Chaque fois que je conduis dans la zone de contraction, je pense à quel point il serait difficile pour une voiture autonome de naviguer à travers les cônes de circulation. Il s'avère que ce n'est pas si difficile avec le nouveau JetBot de NVIDIA - avec seulement quelques centaines d'images, vous pouvez former un modèle d'apprentissage en profondeur à la pointe de la technologie pour apprendre à votre robot à trouver un chemin dans un labyrinthe de cônes de signalisation. en utilisant uniquement la caméra embarquée et aucun autre capteur.

Étape 2: NVIDIA JetBot et aperçu du projet

NVIDIA JetBot et aperçu du projet
NVIDIA JetBot et aperçu du projet

JetBot est un robot open source basé sur le kit NVIDIA Jetson Nano. Vous pouvez trouver des instructions détaillées sur la façon de le construire et de le configurer ici.

Ce projet est un exemple d'évitement de collision modifié de NVIDIA JetBot Wiki. Il se compose de trois étapes principales, chacune décrite dans un cahier Jupyter distinct:

  • Collecter des données sur JetBot - notebook data_collection_cones.ipynb
  • Entraîner le modèle sur une autre machine GPU - notebook train_model_cones.ipynb
  • Exécutez une démonstration en direct sur JetBot - notebook live_demo_cones.ipynb

Vous pouvez trouver ces trois carnets Jupyter ici

Étape 3: Construisez JetBot et téléchargez les notebooks Jupyter

  1. Construisez et configurez JetBot comme expliqué ici
  2. Connectez-vous à votre robot en accédant à https://:8888Connectez-vous avec le mot de passe par défaut jetbot
  3. Arrêtez tous les autres notebooks en cours d'exécution en sélectionnant Kernel -> Arrêter tous les noyaux…
  4. Accédez à ~/Notebooks/
  5. Créer un nouveau sous-dossier ~/Notebooks/traffic_cones_driving/
  6. Téléchargez data_collection_cones.ipynb et live_demo_cones.ipynb dans ~/Notebooks/traffic_cones_driving/

IMPORTANT: les notebooks Jupyter data_collection_cones.ipynb et live_demo_cones.ipynb référencés dans ces instructions doivent être exécutés sur JetBot tandis que train_model_cones.ipynb - sur un ordinateur avec GPU.

Par conséquent, nous devons télécharger data_collection_cones.ipynb et live_demo_cones.ipynb sur le JetBot et les placer dans ~/Notebooks/traffic_cones_driving/

Étape 4: Collecte des données d'entraînement sur JetBot

Nous collecterons un ensemble de données de classification d'images qui sera utilisé pour aider JetBot à fonctionner dans un labyrinthe de cônes de circulation. JetBot apprendra à estimer les probabilités de quatre scénarios (classes):

  • Gratuit - quand il est sûr d'avancer
  • Bloqué - lorsqu'il y a un obstacle devant le robot
  • Gauche - quand le robot doit tourner vers la gauche
  • Droite - quand le robot doit tourner vers la droite

Pour collecter les données d'entraînement sur JetBot, nous utiliserons le bloc-notes Jupyter data_collection_cones.ipynb qui contient des instructions détaillées sur la façon de le faire. Pour exécuter ce bloc-notes sur JetBot, suivez les étapes suivantes:

  1. Connectez-vous à votre robot en accédant à
  2. Connectez-vous avec le mot de passe par défaut jetbot
  3. Arrêtez tous les autres notebooks en cours d'exécution en sélectionnant Kernel -> Arrêter tous les noyaux…
  4. Accédez à ~/Notebooks/traffic_cones_driving/
  5. Ouvrez et suivez le bloc-notes data_collection_cones.ipynb

Étape 5: Former le réseau neuronal sur la machine GPU

Ensuite, nous utiliserons les données collectées pour réentraîner le modèle d'apprentissage en profondeur AlexNet sur la machine GPU (hôte) en exécutant train_model_cones.ipynb.

Notez que train_model_cones.ipynb est le seul bloc-notes Jupyter de ce didacticiel qui n'est PAS exécuté sur le JetBot

  1. Connectez-vous à une machine GPU avec PyTorch installé et un serveur Jupyter Lab en cours d'exécution
  2. Téléchargez le bloc-notes train_model_cones.ipynb et sur cette machine
  3. Téléchargez le fichier dataset_cones.zip que vous avez créé dans le bloc-notes data_collection_cones.ipynb et extrayez cet ensemble de données. (Après cette étape, vous devriez voir un dossier nommé dataset_cones apparaître dans le navigateur de fichiers.)
  4. Ouvrez et suivez le bloc-notes train_model_cones.ipynb. À la fin de cette étape, vous créerez un modèle - le fichier best_model_cones.pth qui doit ensuite être téléchargé sur le JetBot pour exécuter la démonstration en direct.

Étape 6: Exécutez la démo en direct sur JetBot

Exécuter une démo en direct sur JetBot
Exécuter une démo en direct sur JetBot

Cette dernière étape consiste à télécharger le modèle best_model_cones.pth sur le JetBot et à l'exécuter.

  1. Alimentez votre robot à partir de la batterie USB
  2. Reconnectez-vous à votre robot en accédant à
  3. Connectez-vous avec le mot de passe par défaut jetbot
  4. Arrêtez tous les autres notebooks en cours d'exécution en sélectionnant Kernel -> Arrêter tous les noyaux…
  5. Accédez à ~/Notebooks/traffic_cones_driving
  6. Ouvrez et suivez le bloc-notes live_demo_cones.ipynb

Commencez prudemment et donnez à JetBot suffisamment d'espace pour se déplacer. Essayez différentes configurations de cône et voyez les performances du robot dans différents environnements, éclairages, etc. Alors que le cahier live_demo_cones.ipynb explique toutes les étapes en détail, le tableau suivant montre la logique des mouvements du robot en fonction des probabilités prédites par les modèles.

Le cahier explique également comment stocker l'historique des mouvements du robot avec des probabilités libres/gauche/droite/bloquées prédites par le modèle et comment faire deux vidéos FPV (First Person View) (à 1 fps et 15 fps) avec télémétrie superposée et Données d'action JetBot. Ceux-ci sont utiles pour le débogage, le réglage du contrôleur PID et l'amélioration du modèle.

Amusez-vous et laissez-moi savoir si vous avez des questions!:-)

Le code est disponible sur Github

Conseillé: