Hey! Sie scheinen aus United Kingdom zu kommen, möchten Sie auf die Englisch Webseite wechseln?
Switch to Englisch site
Skip to main content

Erste Schritte mit dem NVIDIA Jetson Nano 2GB

main4_4091ec9c1d5a0b1b32e2bd9bee8c4baeed37725f.jpg

Einrichtung und Einführung in das Training und die Zertifizierung von Jetson KI.

Schon früher habe ich über den Jetson Nano geschrieben und bin dabei unter anderem auf CUDA und den Jetson Software Stack eingegangen, bevor ich eines der zur Verfügung gestellten Beispiele durchgegangen bin. In einem späteren Beitrag habe ich dann einen ersten Blick auf den neuen 2-GB-Jetson Nano geworfen und ihn mit dem ursprünglichen 4-GB-Modell sowie mit der Raspberry Pi 4 und Coral-Plattform verglichen.

Mit der Einführung des Jetson Nano 2 GB steht uns nicht nur eine noch leichter zugängliche CUDA Plattform zur Verfügung, sondern auch ein strukturiertes Training und ein Zertifizierungsprogramm, das dies begleitet. In diesem Beitrag befassen wir uns mit der Einrichtung der neuen Platine und dem Ausführen der neuesten Beispiele, bevor wir uns dann mit dem Training und der Zertifizierung befassen.

Hardware Einrichtung

Jetson nano

Computer Vision ist eine Schlüsselanwendung für den Jetson Nano und KI im Allgemeinen. Daher liegt es nahe, dass zusätzlich zum Jetson Nano-Entwicklerkit – mit 4 GB (199-9831) oder 2 GB (204-9968) – eine Kamera benötigt wird, um den Kurs „Jetson AI Fundamentals“ zu absolvieren. Wir empfehlen entweder eine Raspberry Pi-Kamera v2 (913-2664) , welche die CSI-2-Schnittstelle verwendet, oder eine Logitech C270 USB-Webcam. Außerdem ist ein USB-C-Netzteil erforderlich.

Für die Ersteinrichtung der Software haben wir eine USB-Tastatur und -Maus sowie einen HDMI-Monitor verwendet. Danach hatten wir die Möglichkeit, uns über das Netzwerk zu verbinden, z. B. via SSH, und unseren Bildschirm (X11) hierüber an einen entfernten Arbeitsplatzrechner weiterzureichen.

Software Einrichtung

Jetson nano software

Das Linux-Betriebssystem für den Jetson Nano basiert auf der Ubuntu-Distribution, mit einer Reihe von vorkonfigurierten Erweiterungen, die durch das NVIDIA Jetpack SDK ermöglicht werden. Es werden zwei Versionen der Kurzanleitung (Getting Started Guide) bereitgestellt, eine für den ursprünglichen Jetson Nano 4GB und eine für den 2GB. In beiden Fällen wird auf einen Downloadlink für ein entsprechendes SD-Karten-Image verwiesen, wobei das Image für das spätere 2-GB-Kit auf den geringeren Speicherplatz zugeschnitten ist und eine schlankere Desktop-Umgebung verwendet.

Sobald wir die Imagedatei heruntergeladen haben, kann diese auf eine Micro-SD-Karte geschrieben werden, genau wie bei einem Raspbian O/S-Image für den Raspberry Pi. Unter Linux ging das mit:

$ sudo dd if=sd-blob.img of=/dev/sda bs=1M

Wichtig: Bitte kopieren Sie den obigen Befehl nicht einfach unverändert und stellen Sie sicher, dass Sie den richtigen „of=“-Parameter für Ihre Micro-SD-Karte verwenden, da es sonst zu Datenverlusten kommen kann!

Nach dem Einstecken der Micro-SD-Karte in das Jetson Nano-Modul wurde die Stromversorgung zugeschaltet und nach einer kurzen Verzögerung ein grafisches Konfigurationsprogramm gestartet. Zu diesem Zeitpunkt mussten wir der Lizenzvereinbarung zustimmen und eine Reihe grundlegender Schritte durchführen, wie z. B. die Konfiguration der Tastatur und unseres ersten Benutzerkontos sowie die Einstellung der Partitionsgröße. Danach konnten wir neu starten, uns anmelden und ein Upgrade durchführen, um sicherzustellen, dass wir die neuesten Paketversionen installiert hatten:

$ sudo apt update

$ sudo apt dist-upgrade

Die Kurzanleitung enthält auch Anweisungen für die Ersteinrichtung im „Headless-Modus“, der besonders nützlich ist, wenn Sie keinen Zugang zu einem HDMI-Monitor usw. haben. Stattdessen wird hierfür eine USB-Verbindung verwendet, die einen UART für eine serielle Terminalsitzung zur Verfügung stellt.

Bitte beachten Sie, dass das Benutzerhandbuch (User Guide) des Jetson Nano-Entwicklerkits Informationen zur Hardware des Moduls und der Trägerplatine sowie eine Zusammenfassung der JetPack SDK-Komponenten und Links für weitere Details enthält.

Nächste Schritte

Im letzten Abschnitt der Kurzanleitung sind Links zu weiteren Anleitungen, Tutorials und Kursen sowie zu Community-Ressourcen wie einem Wiki und einem Forum aufgeführt. Wenn wir zu diesem Zeitpunkt zusätzliche Hardware anschließen wollen, können wir im oben erwähnten Benutzerhandbuch die Pinbelegung der Platine nachschlagen und danach die Peripheriegeräte über I2C, SPI und GPIO anschließen.

Außerdem sind Anleitungen zur Verwendung von Docker-Containern, zur Einrichtung von VNC – für den Zugriff auf grafische Anwendungen von einem entfernten Windows-Computer aus – und zur Verbindung von Bluetooth-Audiogeräten enthalten. NVIDIA hat nicht nur stark in die Optimierung von HPC-Software für die Bereiche KI und Data Science investiert, sondern diese auch als Docker-Container bereitgestellt, um die Nutzung zu vereinfachen. Der NGC-Katalog ist eine zentrale Anlaufstelle für GPU-optimierte Software, die in eine Docker-Registry integriert ist und online durchsucht werden kann.

In einem früheren Beitrag, „Hands on with the NVIDIA Jetson Nano“ (Erfahrungen mit dem NVIDIA Jetson Nano), habe ich mir „Hello AI World“ angeschaut, den klassischen Einstieg in den Jetson Nano. Dabei wird ein GitHub-Repository geklont und vorab trainierte neuronale Netzmodelle für die Klassifizierung von Bildern und die Lokalisierung von Objekten usw. ausgeführt. Es werden Beispiele für Inferenzanwendungen bereitgestellt, die in Python und C++ geschrieben sind, mit Trainingsbeispielen, in es um die Konzepte Transfer Learning und Re-Training geht.

Als ich über den ursprünglichen Jetson Nano 4 GB schrieb, gab es auch einen Kurs mit dem Titel „Einstieg in KI mit dem Jetson Nano“ (Getting Started with KI on Jetson Nano). Allerdings handelte es sich dabei um die Version v1 des Kurses, die nun durch die Version v2 ersetzt wurde. Diese bildet den ersten Teil des Kurses „Jetson KI – Grundlagen“ (Jetson AI Fundamentals), der wiederum die Grundlage für die beiden NVIDIA-Zertifizierungsprogramme bildet.

Jetson AI Grundlagen

Jetson nano AI

Die Anmeldung zum Kurs „Jetson AI Fundamentals“ ist denkbar einfach. Es ist nur ein NVIDIA-Konto erforderlich, und wer noch keines hat, kann sich im Rahmen des Anmeldeverfahrens registrieren lassen. Auf der Landing Page für den Kurs sind Details zu den Voraussetzungen aufgeführt und wir werden angewiesen, die Registerkarte „Course“ (Kurs) für „Getting Started with AI on Jetson Nano“ (Erste Schritte mit KI auf dem Jetson Nano) aufzurufen.

Auf der Registerkarte „Course“ ist ein Link zu einer Begrüßungsseite enthalten. Dort erhalten wir einen Überblick und erfahren, wie wir Folgendes erlernen:

  • Einrichtung des Jetson Nano-Entwicklerkits und der Kamera zur Durchführung dieses Kurses
  • Sammlung verschiedener Daten für Bildklassifizierungsprojekte
  • Training von auf neuronalen Netzen basierenden Modellen zur Klassifizierung
  • Annotieren von Bilddaten für die Regression
  • Trainieren von neuronalen Netzmodellen für die Regression zur Lokalisierung von Merkmalen
  • Durchführung von Inferenzen auf einer Live-Kameraübertragung mit Ihren trainierten Modellen

Außerdem sind einige allgemeine Hinweise zum Durcharbeiten des Kurses enthalten, wofür die Verwendung von zwei Browserfenstern erforderlich ist. Das erste Fenster ist für die Kursseiten gedacht, die eine geführte Lernerfahrung bieten, während das zweite Fenster dazu dient, eine JupyterLab-Schnittstelle für den Jetson Nano bereitzustellen. 

Für diejenigen, die noch nicht mit Jupyter-Notebooks vertraut sind: Jupyter-Notebooks sind JSON-formatierte Dokumente mit Eingabe-/Ausgabezellen, die Code, Text, mathematische Darstellungen, Diagramme und Medien enthalten können. JupyterLab bietet eine webbasierte, interaktive Entwicklungsumgebung, um mit ihnen zu arbeiten. Beide bieten eine funktionsreiche Umgebung für wissenschaftliches Rechnen, mit der sich Anwendungen leicht erstellen und gemeinsam nutzen lassen.

Nach der Begrüßungsseite folgt der Abschnitt Einrichten des Jetson Nano, in dem wir uns – wie bereits erwähnt – zunächst mit den grundlegenden Hardware- und Softwareeinstellungen befassen. Danach wird erläutert, wie man die Größe des Auslagerungsspeichers (Swap) erhöht (indem man die SD-Karte als „virtuellen Arbeitsspeicher“ verwendet). Dies kann erforderlich sein, wenn wir bei der Erstkonfiguration nicht genügend Speicherplatz zugewiesen haben, was besonders bei der 2-GB-Platine wichtig ist.

Jetson nano set up

Auf der dritten Einrichtungsseite erfahren wir, dass wir den Jetson Nano im Headless-Modus verwenden werden. Zudem werden wir durch die Einrichtung des Docker-Containers geführt, der JupyterLab zusammen mit den Notebooks bereitstellt, die wir in diesem Kurs verwenden werden.

Jetson nano docker

Danach können wir JupyterLab in unserem zweiten Browserfenster aufrufen, womit wir die Einrichtung des Kurses abgeschlossen haben.

Nach der Einrichtung folgen die Abschnitte:

  • Bildklassifizierung
  • Bildregression
  • Fazit
  • Feedback

Im Kursteil „Bildklassifizierung“ geht es um die Entwicklung von KI-Anwendungen, mit denen einfache visuelle Fragen beantwortet werden können, z. B. „Wirkt mein Gesicht fröhlich oder traurig?“ oder „Wie viele Finger halte ich hoch?“. Das heißt, die Zuordnung von Bildeingaben zu diskreten Ausgaben (Klassen). Bei der Bildregression werden die Eingangspixel eines Bildes inzwischen auf kontinuierliche Ausgaben abgebildet. Als Beispiele werden die Bestimmung der X- und Y-Koordinaten für verschiedene Gesichtsmerkmale – z. B. die Nase – und das Verfolgen einer Linie in der Robotik genannt.

Schauen wir uns einmal die Bildklassifizierung an.

Mehr als nur Beispiele

AI deep learning

In den Kursunterlagen geht es zunächst um die Anfänge von KI und Deep Learning mit einer Zeitleiste, die bis in die 1950er Jahre zurückreicht. Die obige Grafik wird auch verwendet, um zu erläutern, wie Deep-Learning-Modelle mit Gewichten, Training und letztendlich Inferenz funktionieren.

cnn_3d0e73d77e337d2df0b52a677c4c0d4a4e5da807.png

Als Nächstes werden faltende neuronale Netze (Convolutional Neural Networks) vorgestellt, wobei Konzepte wie Input Layer (Eingabeschicht), Feature Extraction (Merkmalsextraktion) und Output Layer (Ausgabeschicht), der die Klassifizierung vornimmt, erläutert werden. Anschließend gibt es eine Einführung in ResNet-18 und Residualnetze sowie in das Konzept Transfer Learning. Diese werden jeweils mit Diagrammen veranschaulicht, die zum Verständnis der Konzepte beitragen.

neural networks

Bis hierhin geht es natürlich etwas theoretischer zu, aber das wird sich jetzt ändern. Nachdem die Grundlagen geklärt sind, wird in den Kursunterlagen erklärt, dass wir das letzte Layer des neuronalen Netzes – das vollständig verknüpfte Layer – von den 18 Layern, aus denen das ResNet-18-Modell besteht, modifizieren werden. Das bereitgestellte Modell wurde für die Erkennung der 1.000 Klassen des Klassifizierungsdatensatzes ImageNet 2012 trainiert. Wir werden es jedoch so abändern, dass es nur noch 3 Ausgabeklassen hat. Dadurch muss das Netz auch für die Erkennung dieser 3 Klassen trainiert werden, aber da es bereits für die Erkennung von Merkmalen trainiert wurde, die bei den meisten Objekten vorkommen, kann das vorhandene Training wiederverwendet werden.

Am oberen Rand des Abschnitts Bildklassifizierung erhalten wir eine Einführung mit Hilfe des obigen Videos.

Jetson nano

In den Kursunterlagen werden wir angewiesen, die Codeblöcke im Notebook nacheinander auszuführen, wofür jeweils eine Erklärung gegeben wird. Dazu wird die Zelle markiert und dann Ausführen → Ausgewählte Zellen ausführen oder alternativ SHIFT + ENTER gedrückt.

Jetson nano review

Wie wir oben sehen, wurde bei der Ausführung des ersten Codeblocks die Ausgabe des Befehls ls angezeigt und die Ausführung beendet. Bei der Ausführung des zweiten Codeblocks, mit dem die Kamera geöffnet wurde, gab es jedoch keine Rückmeldung und der „Kernel“ lief weiter. Im Notebook gibt es eine Warnung, dass nur eine Instanz der Kamera gleichzeitig laufen kann. Wir können einen laufenden Kernel über das Menü „Kernel“ und durch Rechtsklick auf das Notebook und Auswahl von „Shut Down Kernel“ herunterfahren.

Als Nächstes führt uns das Notebook schrittweise durch den Aufbau unserer Anwendung, die Erstellung einer Aufgabe, Widgets, das Laden des Netzmodells, die Durchführung des Trainings und der Auswertung usw. Am Ende soll daraus eine Anwendung entstehen, mit der die Bedeutung von Handzeichen, Daumen hoch und Daumen runter ermittelt werden kann. Anstatt die einzelnen Schritte im Detail zu erläutern, ermutige ich diejenigen, die daran interessiert sind, mehr darüber zu erfahren, dazu, das ganze selbst auszuprobieren!

Beachten Sie, dass es zusätzlich zu den Kursmaterialien von Erste Schritte mit KI auf dem Jetson Nano zwei optionale Teile von Jetson AI Fundamentals gibt. Und zwar Folgende:

  • JetBot. Aufbau eines eigenen, mit dem Jetson Nano betriebenen Roboters, Konfiguration der Software und Einsatz von Deep Learning zur Kollisionsvermeidung und Fahrbahnverfolgung.
  • Hello AI World. Eine Reihe von Tutorials, die in dem Beitrag „Hands on with the NVIDIA Jetson Nano“ vorgestellt wurden.

Zertifizierung

Jetson AI

Im Kurs „Jetson AI Fundamentals“ werden die Grundlagen für die Jetson AI-Zertifizierung vermittelt. Sobald dieser abgeschlossen ist, geht es in einem nächsten Schritt darum, ein Projekt abzuschließen, in dem das Verständnis für Jetson AI nachgewiesen wird. Beispielhafte Projekte könnten sein: „ Erfassen Sie Ihren eigenen Datensatz und trainieren Sie ein neues DNN-Modell für eine bestimmte Anwendung, fügen Sie JetBot einen neuen autonomen Modus hinzu oder entwickeln Sie ein Smart-Home-/IoT-Gerät mit Hilfe von KI.“

Die Beurteilungskriterien lauten wie folgt:

  • KI (5 Punkte) – Im Projekt werden Deep Learning, maschinelles Lernen und/oder Computer Vision sinnvoll eingesetzt, und es wird ein grundlegendes Verständnis für die Erstellung von Anwendungen mit KI nachgewiesen. Faktoren sind unter anderem die Effektivität, die technische Komplexität und die Leistung Ihrer KI-Lösung auf Jetson.
  • Bedeutung / Originalität (5 Punkte) – Ihr Projektkonzept ist neuartig und greift auf KI zurück, um Herausforderungen oder Probleme zu lösen, mit denen Sie selbst oder die Gesellschaft konfrontiert sind. Unsere Ideen und Arbeiten sind also entweder originell oder eine bedeutende Weiterentwicklung von bestehenden Konzepten.
  • Reproduzierbarkeit (5 Punkte) – Alle Pläne, der Code und die Ressourcen, die jemand anderes benötigt, um das Projekt zu erstellen und zu verwenden, sind im Repository enthalten und leicht nachvollziehbar.
  • Präsentation und Dokumentation (5 Punkte) – Im Video werden verschiedene Aspekte des Projekts effektiv demonstriert und erklärt, und es gibt eine übersichtliche, umfassende Readme-Datei im Repository, die alle für die Erstellung/Ausführung des Projekts erforderlichen Schritte zusammen mit Diagrammen und Bildern dokumentiert. Zu beachten ist, dass die Dozenten eine mündliche Präsentation in ihr Video einbauen sollten, um ihre pädagogischen Fähigkeiten hervorzuheben.

Die Zertifizierung zum Jetson AI Ambassador richtet sich unterdessen an Pädagogen und Ausbilder, wobei ein zusätzlicher Interviewschritt und eine gewisse Lehr-/Ausbildungserfahrung erforderlich sind.

Abschließende Worte

Mit dem JetPack SDK und den sofort einsatzbereiten Images für den Jetson Nano können Sie in kürzester Zeit mit einem vorkonfigurierten Software-Stack loslegen, der mit einer Auswahl an beliebten Frameworks CUDA-beschleunigte Berechnungen ermöglicht. Ein von NVIDIA bereitgestellter Katalog von Docker-Containern, einschließlich eines Containers, der zur Unterstützung der Jetson AI-Schulung und -Zertifizierung verwendet wird, sorgt für eine noch komfortablere Anwendung. Durch die Verwendung von JupyterLab wird eine funktionsreiche und einfach zu bedienende Arbeitsumgebung bereitgestellt.

Andrew Back

Open source (hardware and software!) advocate, Treasurer and Director of the Free and Open Source Silicon Foundation, organiser of Wuthering Bytes technology festival and founder of the Open Source Hardware User Group.
DesignSpark Electrical Logolinkedin