Inhaltsverzeichnis:

Lerntransfer mit NVIDIA JetBot - Spaß mit Verkehrskegeln - Gunook
Lerntransfer mit NVIDIA JetBot - Spaß mit Verkehrskegeln - Gunook

Video: Lerntransfer mit NVIDIA JetBot - Spaß mit Verkehrskegeln - Gunook

Video: Lerntransfer mit NVIDIA JetBot - Spaß mit Verkehrskegeln - Gunook
Video: MIT 6.S191 (2022 г.): Рекуррентные нейронные сети и преобразователи 2024, November
Anonim

Von dvillevaldMy GithubFolgen Über: Ich mag KI- und maschinelle Lernanwendungen, insbesondere in der Robotik Mehr über dvillevald »

Bringen Sie Ihrem Roboter mit der Kamera und dem hochmodernen Deep-Learning-Modell bei, einen Weg in einem Labyrinth aus Verkehrskegeln zu finden.

Lieferungen

  • NVIDIA JetBot

    Die Seite mit der Materialliste von NVIDIA JetBot Wiki listet alles auf, was Sie zum Erstellen von JetBot benötigen, zusammen mit Kauflinks von beliebten Anbietern

  • Computer mit NVIDIA-GPU

    Wird benötigt, um das Modell zu trainieren

  • BlueDot Trading 4” RC Racing Agility Cones, Orange – Set mit 20

Schritt 1: Motivation

Image
Image

Jedes Mal, wenn ich im Engpassbereich fahre, denke ich daran, wie herausfordernd es für ein selbstfahrendes Auto wäre, durch die Leitkegel zu navigieren. Es stellt sich heraus, dass es mit dem neuen JetBot von NVIDIA nicht so schwierig ist - mit nur ein paar hundert Bildern können Sie ein hochmodernes Deep-Learning-Modell trainieren, um Ihrem Roboter beizubringen, einen Weg in einem Labyrinth aus Spielzeugverkehrskegeln zu finden Verwenden Sie nur die Onboard-Kamera und keine anderen Sensoren.

Schritt 2: NVIDIA JetBot & Projektübersicht

NVIDIA JetBot & Projektübersicht
NVIDIA JetBot & Projektübersicht

JetBot ist ein Open-Source-Roboter, der auf dem NVIDIA Jetson Nano-Kit basiert. Eine ausführliche Anleitung zum Aufbau und zur Einrichtung finden Sie hier.

Dieses Projekt ist ein modifiziertes Beispiel zur Kollisionsvermeidung aus dem NVIDIA JetBot Wiki. Es besteht aus drei Hauptschritten, die jeweils in einem separaten Jupyter-Notebook beschrieben werden:

  • Sammeln Sie Daten auf JetBot - Notebook data_collection_cones.ipynb
  • Trainieren Sie das Modell auf einem anderen GPU-Computer - Notebook train_model_cones.ipynb
  • Live-Demo auf JetBot ausführen - Notebook live_demo_cones.ipynb

Diese drei Jupyter-Notizbücher findet ihr hier

Schritt 3: JetBot erstellen und Jupyter-Notebooks hochladen

  1. Bauen und konfigurieren Sie JetBot wie hier beschrieben
  2. Verbinden Sie sich mit Ihrem Roboter, indem Sie zu https://:8888 navigierenMit dem Standardpasswort jetbot anmelden
  3. Fahren Sie alle anderen laufenden Notebooks herunter, indem Sie Kernel -> Shutdown All Kernels… auswählen.
  4. Navigieren Sie zu ~/Notizbücher/
  5. Neuen Unterordner erstellen ~/Notebooks/traffic_cones_driving/
  6. Laden Sie data_collection_cones.ipynb und live_demo_cones.ipynb in ~/Notebooks/traffic_cones_driving/ hoch.

WICHTIG: Die in dieser Anleitung erwähnten Jupyter-Notebooks data_collection_cones.ipynb und live_demo_cones.ipynb sollten auf JetBot ausgeführt werden, während train_model_cones.ipynb auf einem Computer mit GPU ausgeführt wird.

Dazu müssen wir data_collection_cones.ipynb und live_demo_cones.ipynb auf den JetBot hochladen und in ~/Notebooks/traffic_cones_driving/ ablegen.

Schritt 4: Sammeln von Trainingsdaten auf JetBot

Wir werden einen Bildklassifizierungsdatensatz sammeln, der verwendet wird, um JetBot dabei zu helfen, in einem Labyrinth aus Verkehrskegeln zu operieren. JetBot lernt, Wahrscheinlichkeiten von vier Szenarien (Klassen) zu schätzen:

  • Kostenlos - wenn es sicher ist, vorwärts zu kommen
  • Blockiert – wenn sich ein Hindernis vor dem Roboter befindet
  • Links - wenn der Roboter nach links drehen soll
  • Rechts – wenn der Roboter nach rechts drehen soll

Um die Trainingsdaten auf JetBot zu sammeln, verwenden wir das Jupyter-Notebook data_collection_cones.ipynb, das detaillierte Anweisungen dazu enthält. Führen Sie die nächsten Schritte aus, um dieses Notebook auf JetBot auszuführen:

  1. Verbinden Sie sich mit Ihrem Roboter, indem Sie zu https://:jetbot-ip-address::8888. navigieren
  2. Melden Sie sich mit dem Standardpasswort jetbot an
  3. Fahren Sie alle anderen laufenden Notebooks herunter, indem Sie Kernel -> Shutdown All Kernels… auswählen.
  4. Navigieren Sie zu ~/Notebooks/traffic_cones_driving/
  5. Öffnen und folgen Sie dem Notizbuch data_collection_cones.ipynb

Schritt 5: Trainieren des neuronalen Netzwerks auf der GPU-Maschine

Als Nächstes verwenden wir die gesammelten Daten, um das Deep-Learning-Modell AlexNet auf dem GPU-Rechner (Host) neu zu trainieren, indem wir train_model_cones.ipynb ausführen.

Beachten Sie, dass train_model_cones.ipynb das einzige Jupyter-Notebook in diesem Tutorial ist, das NICHT auf dem JetBot ausgeführt wird

  1. Stellen Sie eine Verbindung zu einem GPU-Computer her, auf dem PyTorch installiert ist und ein Jupyter Lab-Server ausgeführt wird
  2. Laden Sie das Notebook train_model_cones.ipynb und auf diese Maschine hoch
  3. Laden Sie die Datei dataset_cones.zip hoch, die Sie im Notebook data_collection_cones.ipynb erstellt haben, und extrahieren Sie dieses Dataset. (Nach diesem Schritt sollten Sie einen Ordner namens dataset_cones im Dateibrowser sehen.)
  4. Öffnen und folgen Sie dem Notizbuch train_model_cones.ipynb. Am Ende dieses Schrittes erstellen Sie ein Modell - die Datei best_model_cones.pth, die dann auf den JetBot hochgeladen werden muss, um die Live-Demo auszuführen.

Schritt 6: Live-Demo auf JetBot ausführen

Live-Demo auf JetBot ausführen
Live-Demo auf JetBot ausführen

Dieser letzte Schritt besteht darin, das Modell best_model_cones.pth auf den JetBot hochzuladen und auszuführen.

  1. Versorgen Sie Ihren Roboter über den USB-Akku
  2. Verbinden Sie sich wieder mit Ihrem Roboter, indem Sie zu https://:jetbot-ip-address::8888. navigieren
  3. Melden Sie sich mit dem Standardpasswort jetbot an
  4. Fahren Sie alle anderen laufenden Notebooks herunter, indem Sie Kernel -> Shutdown All Kernels… auswählen.
  5. Navigieren Sie zu ~/Notebooks/traffic_cones_driving
  6. Öffnen und folgen Sie dem Notizbuch live_demo_cones.ipynb

Beginnen Sie vorsichtig und geben Sie JetBot genügend Platz, um sich zu bewegen. Probieren Sie verschiedene Konuskonfigurationen aus und sehen Sie, wie gut der Roboter in verschiedenen Umgebungen, Beleuchtung usw. funktioniert. Während das Notebook live_demo_cones.ipynb alle Schritte detailliert erklärt, zeigt das folgende Diagramm die Logik der Roboterbewegungen unter Berücksichtigung der von den Modellen vorhergesagten Wahrscheinlichkeiten.

Das Notebook erklärt auch, wie man den Verlauf von Roboterbewegungen mit freien/links/rechts/blockierten Wahrscheinlichkeiten speichert, die vom Modell vorhergesagt werden, und wie man zwei FPV-Videos (First Person View) (mit 1 fps und 15 fps) mit überlagerter Telemetrie erstellt und JetBot-Aktionsdaten. Diese sind nützlich für Debugging, PID-Regler-Tuning und Modellverbesserung.

Viel Spaß und lass es mich wissen, wenn du Fragen hast!:-)

Code ist auf Github verfügbar

Empfohlen: