Aus Raspberry Pi Geek 04/2021

Jetson Nano: KI-Einstieg zum moderaten Preis

© Nvidia

Flotter Zwerg

Konstantin Agouros

Kaum teurer als ein Raspberry Pi 4, bietet Nvidias Jetson Nano 2GB einen idealen Einstieg in die Welt des Machine Learning.

Nvidia beschränkt sich schon lange nicht mehr nur auf Grafikkarten. Spätestens seit dem Kauf von ARM schließt das Unternehmen langsam zu Intel und AMD auf, längst ist der Einsatz von GPUs im Bereich des Machine Learning ein wichtiger Aspekt in den Verkaufszahlen. Nvidia bietet aber auch Entwicklerkits an, die im Formfaktor einem Raspberry Pi ähneln, aber auf einer GPU aufbauen.

Den kleinsten Vertreter, den Jetson Nano, gibt es jetzt in einer Variante mit 2 GByte RAM für erschwingliche 75 bis 80 Euro (ohne Netzteil und SD-Karte). Der Prozessor, ein Quadcore-ARM-A57 (“Tegra”) taktet mit 1,43 GHz und schnitt in einem einfachen Leistungstest (openssl speed) etwas schneller ab als ein Raspberry Pi 4. Der Onboard-GBE-Adapter des Jetson Nano hängt am PCI-Bus und nicht wie bei anderen Kleinstcomputern an der USB-Schnittstelle. Außerdem verfügt der Winzling über zwei USB-2-Typ-A-Buchsen, einen USB-2-Micro-B-Port, einen USB-3-Anschluss sowie einen Slot für eine MicroSD-Karte. Daneben besitzt er einen HDMI-Ausgang, einen MIPI-CSI-2-Port für Kameras (an den auch die Pi Cam passt) sowie eine 40-Pin-GPIO. Die Stromversorgung erfolgt über ein USB-C-Kabel. Auf der Platine finden sich Konnektoren für einen Reset-Knopf und einen An/Aus-Schalter.

Bei der wesentlichen Komponente, dem Grafikchip, handelt es sich um eine GPU auf Basis der “Maxwell”-Architektur mit 128 Cores. Der Chip integriert Hardware-En- und -Decoder für diverse Videoformate inklusive H.264 und H.265, was im Machine Learning der Bilderkennung zugute kommt. Optisch fällt der sehr große Kühlkörper auf dem Grafikchip auf, der mit einem Symbol vor Hitzeentwicklung warnt. Auch in Trainingsvideos weist Nvidia mehrfach darauf hin, dass der Chip wirklich heiß werden kann, wenn die GPU wirklich arbeitet, etwa beim Trainieren eines neuronalen Netzes. Die Luft rund um den Kühlkörper heizt sich merklich auf, worauf man beim Aufbau des Jetson Nano unbedingt achten sollte.

Software

Nvidia beschreibt die Ersteinrichtung auf einer eigenen Webseite [1], auf der sich auch ein Link zum Download des Betriebssystems findet. Das entsprechende Image spielen Sie per Dd oder mit vergleichbaren Werkzeugen auf eine SD-Karte. Es handelt sich um ein Ubuntu 18 für ARM64, der Nano läuft also standardmäßig mit 64 Bit. Dem Image hat Nvidia einige Repositories hinzugefügt, sodass Treiber für die Hardware sowie Werkzeuge und Bibliotheken für das Machine Learning bereitstehen.

Zur Ersteinrichtung gibt es zwei Möglichkeiten: Bei Anschluss von Monitor, Tastatur und Maus melden Sie sich wie an jedem normalen Linux-Rechner an. In einem grafischen Desktop findet eine dialoggeführte Installation statt, bei der Sie einen Benutzer anlegen sowie Hostnamen und Netzwerk konfigurieren. Die SD-Karte lässt sich dabei direkt so umpartitionieren, dass der maximale Platz ausgenutzt wird. Steht kein Monitor zur Verfügung, erledigen Sie die Installation über eine serielle Konsole auf dem Micro-USB-Port, die Sie mit einem Terminalprogramm wie Minicom oder Screen erreichen. Danach erfolgt der Zugriff per SSH.

Jedem Kenner der Materie fällt direkt auf, dass auf dem System Docker läuft. Die meisten Nvidia-Schulungsvideos greifen auf Docker-Container zurück, innerhalb derer der Hersteller die Umgebungen passend zum Video vorbereitet hat. Andernfalls müsste der Schüler vor dem Start jede Menge Python-Module installieren. Allerdings macht diese Vorgehensweise den Start der Trainingseinheiten etwas komplizierter, weil man den Docker-Run-Kommandos jeweils Volume-Mounts mitgeben muss. Das könnte Docker-Einsteiger etwas verwirren.

Machine-Learning-Training

Auf der letzten Seite der Beschreibung zur Ersteinrichtung [1] bietet Nvidia bei den weiterführenden Links auch Trainingsvideos [2] an, die einen guten Einstieg in den Umgang mit dem Jetson Nano vermitteln. Eine weitere Videoreihe [3] zeigt auch das vollständige Einrichten inklusive Auspacken und Bespielen der SD-Karte, wobei Jupyter Notebooks (im Container) zum Einsatz kommt, um dem ML-Schüler die Anwendung und das Trainieren von Netzen zu zeigen. Die Videos vermitteln ein Verständnis dafür, an welchen Schrauben man beim Training drehen kann, um die Erkennungsrate zu verbessern. Dabei geht es im Wesentlichen um Bilderkennung, weshalb Sie eine passende USB-Kamera zur Hand haben sollten, um selbst mit den Netzen zu arbeiten.

Ein anderer Video-Track [2] ist etwas kommandozeilenorientierter. Das zugehörige Git-Repository laden Sie entweder herunter und arbeiten dann wie im Video vorgeschlagen mit Containern, oder Sie installieren die Software aus dem Repository, sodass Sie sich die Container-Aufrufe ersparen. Auch hier werden nacheinander Bild- und Objekterkennung vorgeführt. Dabei geht das Training allerdings davon aus, dass Sie mit Monitor und Tastatur direkt am Jetson Nano sitzen. Gegebenenfalls lässt sich die Fensterausgabe der verwendeten Programme Imagenet und Detectnet aber per RTP an den Rechner weiterleiten, von dem aus Sie den Jetson Nano headless nutzen. Dort müssen Sie nur einen passenden RTP-Empfänger starten (siehe Kasten “RTP-Empfang”).

RTP-Empfang

Um via VLC oder MPlayer einen eingehenden RTP-Strom anzunehmen und anzuzeigen, erstellen Sie zunächst eine SDP-Datei (Session Description Protocol), die beschreibt, was da auf welchem Port ankommt. Anschließend übergeben Sie dem Player die fraglichen Daten zum Abspielen. Eine SDP-Datei für den Empfang der Ausgabe der Jetson Utilities sieht etwa wie in Listing 1 aus. Die Tools verschicken ihre Ausgabe in H.264-Kodierung.

Listing 1

SDP-Datei

v=0
c=IN IP4 127.0.0.1
m=video 1234 RTP/AVP 96
a=rtpmap:96 H264/90000

Beide Videoreihen verwenden vordefinierte Netze und Netzmodelle, erläutern aber auch, wie man diese austauschen kann. In den Kursteilen, bei denen trainiert wird, kommt jeweils ein bereits vortrainiertes Netz zum Einsatz, dem Sie neue Objekte zur Erkennung beibringen. Das vermittelt einen guten Eindruck davon, mit welchen Freiheitsgraden Sie spielen können, um die Ergebnisse zu verbessern, ohne gleich am Anfang mit zu viel Wissen zu überfrachten. Die Möglichkeit, verschiedene Netze mit derselben Aufgabe auszuprobieren, erlaubt Ihnen auch einen Vergleich der Netzarchitekturen.

Anwendungsfall

Der Autor besitzt eine IP-Kamera von Edimax, die eine einfache Bewegungserkennung bietet. Die Bilder, die die Kamera auf einen FTP-Server hochlädt, sehen nach Embedded Linux und dem Programm Motion aus. Die Kamera bietet aber auch einen Live-Stream im MJPEG-Format an. Um zu erkennen, ob Personen durchs Bild laufen, lässt sich das Programm Detectnet verwenden. Anhand der Anweisungen aus den Trainingsvideos können Sie dabei vortrainierte neuronale Netze herunterladen und verwenden.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben