Aus Raspberry Pi Geek 01/2025

Raspberry Pi AI Kit: KI-Modul für den RasPi 5 (Seite 2)

Die zweite Methode, die benötigte Software zu installieren, bedingt etwas mehr Aufwand. In der Developer Zone [3] von Hailo gibt es die Software in Form von Debian-Paketen sowie Python-Wheel-Paketen. Haben Sie zuvor bereits Version 4.17 aus den anderen Paketen installiert, müssen Sie sie jetzt erst vollständig entfernen, da sonst unterschiedliche Versionen des Kernel-Moduls und der Firmware installiert würden, die sich dann ins Gehege kämen. Dazu sei angemerkt, dass laut Erfahrungen des Autors und einiger Nutzer in der Hailo-Community der im nächsten Abschnitt beschriebene Beispielcode dann nicht mehr funktioniert.

Die Beispiele

Mittels git clone laden Sie das Repository mit dem Beispielcode [4] für die RasPi-Hailo-Kombination herunter. Das im Repository enthaltene Skript download_resources.sh zieht die benötigten Modelle im .hef-Format nach. Das Skript setup_env.sh baut eine Umgebung inklusive Python Virtual Environment auf, in die sich dann die notwendigen Python-Module installieren lassen.

Im Ordner basic_pipelines/ befinden sich drei Skripte, mit denen das Hailo-Board zeigen kann, wozu es imstande ist. Dabei dient detection.py zur klassischen Objekterkennung für einzelne Bilder oder Videos, instance_segmentation.py lässt sich zur Trennung mehrerer Objekte in einem Bild verwenden. Zu guter Letzt extrahiert pose_estimation.py aus einem Video-Stream ein “Strichmännchen” beziehungsweise die 3D-Koordinaten mehrerer Punkte einer Person wie Handgelenke, Knie, Füße, Augen und Nase. Als Eingabe kann dabei jeweils eine USB-Kamera, eine Pi-Cam oder eine Datei dienen.

Alle drei Skripte bauen eine Gstreamer-Pipeline auf. Sie wird von Python aus aufgerufen und steuert die Hailo-Hardware an. Dabei wird eine Python-Funktion im aufrufenden Skript als Callback angegeben. Ihr übergibt man die vom Netz ermittelten Daten (etwa den Objektnamen oder die 3D-Koordinaten), damit der Programmcode damit etwas anfangen kann.

Die Skripte setzen an das Ende der Pipeline jeweils eine grafische Ausgabe. Das setzt allerdings voraus, dass der Raspberry Pi mit grafischer Benutzeroberfläche läuft und entweder einen Monitor ansteuert oder per X-Forwarding die Ausgabe umleitet. Die Ausgabe markiert Objekte, die das Netz erkannt hat (Abbildung 2).

Abbildung 2: So sieht das Ergebnis der Object Detection am Ende aus.

Abbildung 2: So sieht das Ergebnis der Object Detection am Ende aus.

Der Autor änderte dazu den Code so, dass das Skript eine Videodatei erzeugt (Listing 3). Das geht sicherlich auch eleganter, genügte aber für die Tests im Rahmen dieses Artikels. Mit einem Modul, das Daten aufnimmt, ohne sie zu verarbeiten (Nullsink), wäre es auch möglich, nur den Callback arbeiten zu lassen, zum Beispiel um Code zu schreiben, der eine Aktion auslöst, sobald etwas Bestimmtes erkannt wird. Diese Art der Programmierung ist zwar etwas umständlich, führt aber zum Ziel.

Listing 3

Codeänderung

### Originalcode, auskommentiert
# pipeline_string += f"fpsdisplaysink video-sink={self.video_sink} \
# name=hailo_display sync={self.sync} text-overlay=\ {self.options_menu.show_fps} signal-fps-measurements=true "
### Ersatzcode für Video
pipeline_string += "matroskamux ! filesink name=hailo.display location=video.mkv"

Beispiele für die normale Art der Programmierung finden sich auf der Github-Seite von Hailo [5]. Dieser Code läuft mit Versionen ab 4.18. Allerdings laden die dort mitgelieferten Download-Skripte die notwendigen HEF-Dateien im Format für das Hailo-8 herunter, nicht für das Hailo-8L. Zudem fehlt hier eine Anleitung, welches Modell aus dem ebenfalls bei Github verfügbaren Model Zoo das richtige für das jeweilige Beispielskript ist.

Fazit

Das Raspberry Pi AI Kit ist relativ preisgünstig und zeichnet sich durch seinen im Verhältnis zu einer Grafikkarte sehr geringen Stromverbrauch aus. Die Boards sind nur zur Inferenz gedacht, helfen während der ML-Entwicklung also nicht beim Training der Netze. Das schränkt ihre Einsatzmöglichkeiten ein. Obendrein ist selbst ein fertig trainiertes neuronales Netz auf dem Board nicht gerade einfach zum Laufen zu bekommen.

Für den Anwendungsfall Bilderkennung eignet sich das Raspberry Pi AI Kit allerdings durch die Kombination aus Leistungsfähigkeit und geringem Stromverbrauch sehr gut und ergänzt den Raspberry Pi perfekt.

Eine interessante Ankündigung auf der Webseite von Hailo ist das Hailo-10H-Board, das sich laut Herstellerangabe für den Betrieb von Large Language Models im Stil von ChatGPT (freilich nur dessen kleinere Geschwister) eignet. Bewahrheitet sich das, könnte man auf einem Raspberry Pi ein LLM betreiben, was gerade aufgrund des minimalen Stromverbrauchs eine sehr interessante Variante wäre. (jcb/jlu)

Der Autor

Konstantin Agouros arbeitet als Head of Engineering & Security Solutions bei der matrix technology GmbH. Er berät dort mit seinem Team Kunden zu Themen rund um Open Source, Sicherheit und die Cloud. Sein Buch “Software Defined Networking: Praxis mit Controllern und OpenFlow” ist bei de Gruyter erschienen.

Infos

  1. Dokumentation zum Raspberry Pi AI Kit: https://www.raspberrypi.com/documentation/accessories/ai-kit.html
  2. Webseite von Hailo: https://hailo.ai
  3. Direkte Software-Downloads von Hailo: https://hailo.ai/developer-zone/software-downloads
  4. Repository für die RasPi-Beispiele von Hailo: https://github.com/hailo-ai/hailo-rpi5-examples
  5. Allgemeine Beispiele für die Hailo-Boards: https://github.com/hailo-ai/Hailo-Application-Code-Examples
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 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