Bildverarbeitung mit dem Nvidia Jetson Nano (Teil 1)
über
KI hält mehr und mehr Einzug in unseren Alltag. Neuronale Netze ermöglichen es, Objekte zu erkennen, Bilder zu verbessern oder die Worte einer Unterhaltung in Text umzuwandeln. Dieses spannende Feld neuer Möglichkeiten wird unsere Zukunft mitbestimmen. Damit unsere Leser und (wir) erste eigene Schritte in Sachen KI unternehmen können, haben wir uns schon den Sipeed Maixduino (Bild 1) und das Maxim MAX78000 FTHR-Board (Bild 2) angeschaut. Beiden Boards ist gemein, dass Mikrocontroller und Beschleuniger für Neuronale Netzwerke verbaut sind, jedoch mit beschränkten Ressourcen. Das Nvidia Jetson Nano (Bild 3) ist eine deutlich leistungsfähigere Hardware aus der Klasse der Single Bord Computer (SBC).
Ausgestattet mit einem Vierkern-ARM-Prozessor, 4 GB RAM und einer GPU mit 128 CUDA Kernen stellt er eine gute Plattform dar, um mit dem Thema KI und Neuronale Netze zu beginnen. Dabei reichen die Anwendungen von der Spracherkennung über die Klassifizierung von Objekten in aufgenommenen Videobildern bis hin zur ausgewachsenen Robotersteuerung. Für alle Bereiche steht reichlich „Zubehör” zur Verfügung - zum Beispiel die Roboterplattform JetBot von Sparkfun.
Die GPU macht den Unterschied
Beim Nvidia Jetson Nano liegt ein Vergleich mit dem beliebten Raspberry Pi 4B (Bild 4) nahe. Beides sind SBCs, beide haben vier Prozessorkerne, und beide sind mit 4 GB RAM erhältlich. Auf beiden Boards lässt sich auch ein Ubuntu 20.04 installieren und auch eine Stiftleiste für Erweiterungen ist beiden gemeinsam. Beim Raspberry Pi◦4 ist ein Broadcom VideoCore6 als GPU (Graphics Processing Unit) verbaut. Im Jetson Nano steckt eine Maxwell-basierte GPU mit 128 CUDA Kernen (GM20B). Diese Kerne geben dem Jetson Nano seine Leistungsfähigkeit. Die CUDA-Kerne stellen programmierbare Rechenwerke innerhalb der GPU dar, die nicht nur zur Verarbeitung von Grafikdaten gedacht sind, sondern generische Rechenoperation parallel ausführen können - also auch jene, die zum Trainieren und Anwenden eines Neuronalen Netzes benötigt werden.
Training mit dem Jetson
Hier erkennt man den Unterschied zu einem MAX78000: Das Training des Neuronalen Netzes sollte dabei auf einem Linux-PC erfolgen, der am besten noch mit einer CUDA-fähige Nvidia-Karte ausgestattet ist. Dafür kommen PyTorch und weitere Software-Tools zum Einsatz.
Der Jetson dagegen hält schon alle Zutaten bereit, um ein Neuronales Netz selbst trainieren zu können. Sicherlich geht das nicht so schnell wie auf einem aktuellen PC mit einer Geforce 1660 oder Geforce 1050Ti. Dafür erhält man den Jetson Nano aber schon für etwa 100 Euro. Eine Grafikkarte, wenn momentan überhaupt verfügbar, verschlingt allein das Zweifache.
Nvidia stellt eine große Zahl von Tutorials , Videos und selbstverständlich Software zur Verfügung. Sie zeigen unter anderem, wie sich mit Hilfe einer Webcam Neuronale Netze für die Bilderkennung/-verarbeitung auf dem Nvidia Jetson Nano anlernen lassen.
Jetson Nano und der fahrende JetBot
Wenn man sich mit der Umgebung vertraut gemacht hat, mag der Wunsch nach einer handfesten Anwendung aufkommen. Durch den Fokus auf Bildverarbeitung bietet sich ein selbst fahrender Roboter an. Der JetBot (Bild 5) von Nvidia ist ein solcher; maker-freundlich sind eine Bauteileliste sowie 3D-Modelle für den Selbstdruck der Teile verfügbar. Ein fahrender Roboter mit Objekterkennung und Interaktion erlaubt es, die Intelligenz der selbst trainierten Neuronalen Netze direkt in Aktion zu sehen. Das Webinar „Ai for Makers◦- Learn with JetBot“ demonstriert, wie man einem solchen Roboter eine Interaktion mit der Umgebung beibringen kann.
Entwicklung per Webbrowser
Für die Entwicklung der Software des JetBot ist ein Webbrowser ausreichend. Die Entwicklungsumgebung, die im Browser läuft, ist das JupyterLab (Bild 6), sie erlaubt das Anlegen, Editieren und Ausführen von Python-Skripten. Dies erlaubt auch Zugriff auf etliche Bibliotheken von Drittanbietern. Motortreiber oder Sensoren, z.B. von Sparkfun oder Adafruit, lassen sich direkt aus Python ansprechen.
Mit dem JupyterLab kann dann auch das Training von Neuronalen Netzwerken gestartet werden. Es lassen sich auch neue Trainingsdaten für die Neuronalen Netzwerke generieren, um das Verhalten eines Roboters mit Daten aus dem laufenden Betrieb zu verbessern und neue Funktionen hinzuzufügen. Die IDE hat man ja immer in einem Browser dabei.
Die Steuerung des Roboters und andere Dienste immer von Grund auf neu zu entwickeln ist zeitraubend und nicht notwendig. Als flexible Basis für Roboter aller Art kann das ROS™ (Robot Operation System) eingesetzt werden. Es erlaubt, auf einem definierten Kern und einer gut dokumentierten Softwarebasis aufzubauen. ROS als Betriebssystem auf Linux-Basis ermöglicht aber auch Funktionen wie das Erstellen von Karten der Umgebung und andere Aktionen. Für den Nvidia Jetson und JetBot steht ein passendes OS-Image mit vorinstalliertem ROS zur Verfügung.
All in One Kit - SparkFun JetBot AI Kit v2.1
Images downloaden, den Jetson Nano vorbereiten, Bauteile für den JetBot von unterschiedlichen Quellen beschaffen und eventuell noch 3D-drucken? Die einzelnen Softwareteile passend konfigurieren und dann erst mit dem Thema KI anfangen? Einfacher ist es, ein fertiges Kit zu nutzen, um gleich eine definierte und funktionstüchtige Hardware zu haben, so dass man sich ganz in das Thema KI vertiefen kann. Das SparkFun JetBot AI Kit v2.1 (Bild 7) beinhaltet die gesamte Hardware, die nötig ist, um mit dem Thema KI und Robotik zu starten. Basierend auf dem JetBot von Nvidia erhält man so Zugriff auf ein großes Ökosystem an Tutorials und Software, mit der gewohnt guten Hardwaredokumentation von SparkFun.
Auch das Zusammenstellen von Softwarekomponenten entfällt. Das Kit enthält eine fertige SD-Karte, die schon alles Nötige beinhaltet. Die Anschaffung eines solchen Kits mag mit etwa 270 € hochpreisig erscheinen. Jedoch beinhaltet es den Jetson Nano, die mechanischen Teile des Roboters, Motoren, Motortreiber, ein OLED, WiFi-Adapter, Kamera, SD-Karte und alle anderen Teile, die für den Start benötigt werden (Bild 8).
Was kommt als Nächstes?
Wie in diesem kurzen Artikel zu sehen ist, gibt es viel zu lernen und viel zu entdecken. KI zeigt viele neue spannende Wege, ein Fahrzeug mit einer autonomen Steuerung auszustatten.
Für die meisten Leser müssen Begriffe wie PyTorch und ROS jedoch sicherlich noch in den passenden Kontext gebracht werden. PyTorch übernimmt das Modifizieren und Anlernen der KI. Wie jede Software will auch PyTorch passend bedient werden, und wie bei vielen Programmen aus der Linux-Welt üblich, bevorzugt mit Konfigurationsdateien. Die Steuerung des Fahrzeuges/Roboters erfolgt dann durch das ROS.
Allein der Umgang mit diesen zwei Tools bietet genug Stoff, um ganze Bücher zu füllen. Daher werden wir uns langsam an die einzelnen Bestandteile herantasten und immer weiter in die Details eintauchen!
Diskussion (0 Kommentare)