Künstliche Intelligenz auf dem Raspberry Pi

Aus LinuxUser 06/2023

Künstliche Intelligenz auf dem Raspberry Pi

© Nadiya Prokhorova / 123RF.com

Lernfähig

Für den Einsatz von KI braucht es nicht unbedingt leistungsstarke Computersysteme. Wir zeigen, was KI auf dem Raspberry Pi voraussetzt, und für welche Aufgaben sich der Kleincomputer eignet.

Künstliche Intelligenz (KI) ist nicht zuletzt dank des Chatbots und Textgenerators ChatGPT in aller Munde. Die Fähigkeiten, die KI entwickelt hat, gehen selbstverständlich weit über kleine Schwätzchen mit einem Chatbot auf unzähligen Webseiten hinaus – Beispielsweise lassen sich mithilfe künstlicher Intelligenz akustische Sprachsignale verarbeiten, auch autonomes Fahren wird erst durch sie ermöglicht. Doch für bestimmte Anwendungen ebenso wie für das Generieren von KI-Modellen sind Rechner mit leistungsstarken Prozessoren, viel Speicherplatz und ausreichend RAM nötig. Kleincomputer wie der Raspberry Pi profitieren dagegen eher von vorgefertigten Methoden und Anwendungen, in denen künstliche Intelligenz dazu dient, sie in der Praxis einzusetzen.

Die Grundlage all dieser Prozesse bildet das maschinelle Lernen (ML), das auf selbstadaptiven Algorithmen beruht, die mithilfe von Referenzdaten Informationen verarbeiten. Deep Learning als Untermenge des maschinellen Lernens nutzt dabei künstliche neuronale Netze, die aus mehreren hierarchischen Verarbeitungsschichten bestehen. Die Neuronen des Netzes sind vielfältig untereinander verbunden, wobei die einzelnen Schichten die erhaltenen Referenzdaten zunehmend abstrahieren. Anschließend werden aus den Ergebnissen Lösungen oder Aktionen abgeleitet.

TensorFlow

Hinter dem im Jahr 2015 von Google AI veröffentlichten TensorFlow [1] steckt ein Open-Source-Framework, das verspricht, die Entwicklung und das Training von Deep-Learning-Modellen zu vereinfachen. Es unterstützt zahlreiche Programmiersprachen und lässt sich zu unterschiedlichen Zwecken gebrauchen: Es kommt bei der linguistischen Datenverarbeitung in Form verschiedener Google-Dienste zum Einsatz, lässt aber genauso zum Erkennen und Klassifizieren von Mustern und Objekten in Bildern heranziehen.

TensorFlow Lite [2] ist eine speziell für den Embedded- und IoT-Bereich entworfene Lösung, die deren hardwareseitige Einschränkungen adressiert. Die Version kommt ohne Internetzugang aus, da sie keine Daten an Server sendet. Das trägt nicht nur dem Datenschutz Rechnung, sondern vermeidet zudem Latenzen und der Energiebedarf sinkt. Allerdings taugt TensorFlow Lite nicht zum Training von Modellen, sondern lediglich dazu bereits trainierte Modelle anzuwenden. Dabei nutzt das Framework reduzierte Modellgrößen, wobei die Modelle sich jedoch ebenfalls für verschiedene Zwecke verwenden lassen. Google stellt darüber hinaus eine Webseite zum Generieren von Modellen anhand von Objektklassifizierungen zur Verfügung, mit deren Hilfe Sie Ihr eigenes Modell anlegen und in TensorFlow Lite nutzen können.

Um auf dem Raspberry Pi mithilfe von TensorFlow Lite Objekte erkennen zu können, benötigen Sie ein Gerät der vierten Generation mit einer zusätzlich angeschlossenen Kamera. Zwar eignen sich Vertreter der dritten Generation prinzipiell für KI-Anwendungen, arbeiten aber aufgrund ihrer Hardwareeinschränkungen vor allem beim Arbeitsspeicher dabei sehr langsam. Bei der Kamera für KI-Applikationen spielt es keine Rolle, ob Sie sich für eine speziell für den Kleincomputer entwickelte und direkt an diesen angeschlossene Kamera oder eine beliebige USB-Kamera entscheiden. Wenn Sie eine externe Kamera bevorzugen, sollten Sie allerdings darauf achten, dass Raspberry Pi OS Ihr Modell unterstützt.

Im ersten Schritt laden Sie sich die aktuelle 64-Bit-Release von Raspberry Pi OS [3] herunter und transferieren sie auf eine mindestens 16 GByte umfassende MicroSD-Karte. Dazu bedienen Sie Sich entweder eines grafischen Werkzeugs wie Balena Etcher oder geben am Prompt folgenden Befehl ein.

dd if=<I>/<Pfad>/<zum>/\
  <Betriebssystemabbild>\
    <I> of=/dev/mmcblk0 bs=4M

Achten Sie darauf, dass die MicroSD-Karte einen schnellen Lese- und Schreibmodus erlaubt: Sie sollte mindestens die Class-10-Spezifikation verwenden. Starten Sie Ihren Raspberry Pi von der MicroSD-Karte und wenden Sie sich der grafischen Grundkonfiguration des Systems zu. Dabei sollten Sie mithilfe der Kommandos sudo apt-get update und sudo apt-get upgrade das Betriebssystem aktualisieren.

Möchten Sie eine externe Kamera für die Objekterkennung nutzen, schließen Sie sie an den Kleincomputer an und installieren im System eine Anwendung, die auf die Kamera zugreift. Hierzu kommen beispielsweise das grafische Programm Cheese oder das Kommandozeilenwerkzeug Fswebcam infrage. Darüber hinaus sollten Sie sich bei einer externen USB-Kamera vergewissern, dass sie eine ausreichende Auflösung bietet. Hier gilt die Regel: Je weniger deutliche Unterscheidungsmerkmale die zu erkennenden Objekte aufweisen, desto höher sollte die Auflösung der Kamera ausfallen. Verwenden Sie die RasPi-Kamera, muss sie bereits vor dem ersten Hochfahren des Systems an den Kameraport des Einplatinencomputers angeschlossen sein.

Installieren

Aufgrund der rasanten technischen Entwicklung im Bereich des Deep Learning und der vielen benötigten Komponenten gestaltet sich die Installation von TensorFlow Lite auf dem Raspberry Pi alles andere als trivial und ist mitnichten schnell erledigt. Wegen ständig wechselnder Abhängigkeiten und neuer Versionen, lässt sich an dieser Stelle keine universelle Anleitung gegeben. Allerdings sollten Sie unbedingt sicherstellen, dass Sie die 64-Bit-Variante von Raspberry Pi OS einsetzen. Der Befehl uname -a am Prompt überprüft die korrekte Version des Betriebssystems. In der Ausgabe muss daraufhin der Parameter aarch64 auftauchen. Fehlt er, liegt die 32-Bit-Variante von Raspberry Pi OS vor, die ein befriedigendes Arbeiten mit TensorFlow Lite ausschließt. Außerdem muss die korrekte, dazu passende Version des C++-Compilers installiert sein. Diese liefert Ihnen das Eingeben des Befehls gcc -v am Prompt. Die Ausgabe hierbei muss --target=aarch64-linux-gnu lauten.

Treffen diese Voraussetzungen zu, müssen Sie im nächsten Schritt die Swap-Größe des Systems anpassen. Voreingestellt werden beim Raspberry Pi 4 lediglich 100 MByte als Swap-Laufwerk reserviert. Diesen Wert sollten Sie, sofern Sie einen Raspberry Pi 4 mit 4 GByte RAM nutzen, auf 4 Gbyte Swap-Umfang erhöhen. Da Raspberry Pi OS den Swap-Speicher jedoch auf maximal 2 Gbyte limitiert, müssen Sie dazu zwei Dateien bearbeiten. Zunächst deaktivieren Sie den Swapspeicher mit dem Befehl sudo dphys-swapfile swapoff. Danach öffnen Sie mit einem Editor die Datei /sbin/dphys-swapfile und suchen darin den Parameter CONF_MAXSWAP. Den dahinter angegebenen Wert setzen Sie auf 4096 und speichern ihre Änderung. In einer zweiten Datei /etc/dphys-swapfile halten Sie Ausschau nach der Option CONF_SWAPSIZE=100. Den Wert 100 ersetzen Sie dann bei einem Raspberry Pi 4 mit 4 GByte RAM durch 4096. Bei einem Gerät mit lediglich 2 GByte RAM sollte die Swap-Größe ebenfalls auf 4096 MByte betragen, bei einem Modell mit 8 GByte RAM genügen dagegen 2048 MByte. Nach dem Sichern der modifizierten Datei aktivieren Sie die neue Swap-Größe mithilfe des Befehls sudo dphys-swapfile swapon. Letztlich überprüfen Sie die Größe via free -m im Terminal (Abbildung 1).

Abbildung 1: Raspberry&nbsp;Pi&nbsp;OS ben&ouml;tigt f&uuml;r die Nutzung mit KI-Anwendungen zun&auml;chst einige Anpassungen.

Abbildung 1: Raspberry Pi OS benötigt für die Nutzung mit KI-Anwendungen zunächst einige Anpassungen.

Entspricht alles den Vorgaben, können Sie TensorFlow Lite installieren. Die Software kann mit Python arbeiten, allerdings sind die C++-API-Bibliotheken aus Gründen einer wesentlich besseren Verarbeitungsgeschwindigkeit vorzuziehen. Listing 1 zeigt, wie Sie TensorFlow Lite in der Version 2.6.0 inklusive aller Abhängigkeiten beziehen und mithilfe von C++ kompilieren. Der Kompiliervorgang dauert etwa eine halbe Stunde.

Listing 1

Installieren von TensorFlow Lite

$ sudo apt-get install cmake curl
$ wget -O tensorflow.zip \ https://github.com/tensorflow/tensorflow/archive/v2.6.0.zip
$ unzip tensorflow.zip
$ mv tensorflow-2.6.0 tensorflow
$ cd tensorflow
$ ./tensorflow/lite/tools/make/download_dependencies.sh
$ ./tensorflow/lite/tools/make/build_aarch64_lib.sh

Nach dem Kompilieren müssen Sie modifizierte TensorFlow-Lite-Flatbuffers [4] installieren, weil ansonsten zahlreiche GCC-Fehlermeldungen auftauchen. In Listing 2 sehen Sie, wie Sie die alten Flatbuffers entfernen, und sie durch eine fehlerbereinigte Version ersetzen.

Listing 2

Flatbuffers installieren

$ cd tensorflow/lite/tools/make/downloads
$ rm -rf flatbuffers
$ git clone -b v2.0.0 --depth=1 --recursive \ https://github.com/google/flatbuffers.git
$ cd flatbuffers
$ mkdir build
$ cd build
$ cmake ..
$ make -j4
$ sudo make install
$ sudo ldconfig
$ cd ~
$ rm tensorflow.zip

Diese Anpassung ist nötig, da die ursprünglichen TensorFlow-Flatbuffers nicht mehr mit aktuellen GCC-Versionen harmonieren. Die fehlerbereinigte Variante ersetzt die veralteten Serialisierungsbibliotheken durch angepasste Versionen.

Optionen

TensorFlow Lite bietet Anwendern die Option, anhand vorgefertigter Modelle Objekte zu erkennen. Darüber hinaus lassen sich Gegenstände in Bildern klassifizieren. Eigene Modelle können Sie jedoch nur in der “ausgewachsenen” Variante TensorFlow anlegen. TensorFlow Lite und ein Raspberry Pi scheiden aus, da es hierzu sehr viel Rechenleistung braucht. Vielfach wird daher empfohlen, neue Modelle anhand von Referenzdaten mithilfe von GPU-Prozessoren kreieren zu lassen, da diese die nötigen Berechnungen deutlich schneller ausführen als CPUs. Die in TensorFlow generierten Modelle sind zudem nicht kompatibel mit TensorFlow Lite, sodass Sie sie erst konvertieren müssen, bevor Sie sie in der Lite-Variante gebrauchen können. Google hat für TensorFlow Lite bereits zahlreiche Modelle angelegt, die Sie auf dem Raspberry Pi verwenden können. Für die Konvertierung von Modellen in das TensorFlow Lite-Format stellt Ihnen die Webseite des TensorFlow-Projekts detaillierte Informationen zur Verfügung [5].

OpenCV

Mit der Open Source Computer Vision Library (OpenCV) [6] können Sie ein weiteres Set von Bibliotheken mit Ihrem Raspberry Pi nutzen. OpenCV dient der Gesten- und Gesichts- und Objekterkennung sowie der Klassifizierung von Objekten. Das DNN-Modul von OpenCV kann dazu mit vortrainierten Netzen arbeiten und lässt sich gemeinsam mit TensorFlow Lite einsetzen. Um OpenCV auf dem Raspberry Pi zu installieren, müssen Sie allerdings extrem viele Abhängigkeiten berücksichtigen. Zusätzlich müssen Sie beim Kompilieren sehr viele Flags manuell angeben. Der niederländische KI-Spezialist Q-engineering [7] hat deswegen ein frei verfügbares und unter einer BSD-Lizenz stehendes Skript auf Github publiziert, mit dem Sie diese Arbeitsschritte umgehen. Dazu nutzen Sie den Code aus Listing 3.

Listing 3

OpenCV-Skript installieren und ausführen

$ wget https://github.com/Qengineering/Install-OpenCV-Raspberry-Pi-64-bits/raw/main/OpenCV-4-5-5.sh
$ sudo chmod 755 ./OpenCV-4-5-5.sh
$ ./OpenCV-4-5-5.sh

In einem letzten Schritt müssen Sie die grafische Code::Blocks-Entwicklungsumgebung [8] in das System integrieren. Mit ihrer Hilfe können Sie anschließend unter Mitwirkung von TensorFlow Lite und OpenCV verschiedene Beispielnetze dazu heranziehen, Objekte zu erkennen und zu klassifizieren. Darüber hinaus wenden Sie diese Möglichkeiten nicht nur auf Fotos an, sondern auch in einem Live-Stream von der angeschlossenen Kamera. Code::Blocks harmoniert mit den Programmiersprachen C und C++ und eignet sich deswegen hervorragend für KI-Anwendungen. Der Befehl sudo apt-get install codeblocks installiert das Paket. Dabei legt die Routine auf dem Desktop und in der Menühierarchie von Raspberry Pi OS selbsttätig einen Starter an (Abbildung 2).

Abbildung 2: Mithilfe der Entwicklungsumgebung Code::Blocks nutzen Sie KI-Modelle.

Abbildung 2: Mithilfe der Entwicklungsumgebung Code::Blocks nutzen Sie KI-Modelle.

Beispiele

Nach Abschluss der Installation können Sie einige Beispielszenarien testen. Dazu können Sie auf eine ganze Reihe bereits vorgefertigter und trainierter Codebeispiele von Q-engineering zurückgreifen, die auf dem Raspberry Pi 4 sogar bei Live-Streams sehr gute Ergebnisse erzielen [9]. Auch hier kommt Code::Blocks zum Einsatz, wobei es in den englischsprachigen Tutorials sogar Slide-Shows von Screenshots gibt, um Programmierlaien zu ermöglichen, erste Erfahrungen mit KI-Anwendungen zu sammeln [10]. Anstelle der mitgelieferten Beispielfotos und MP4-Videos können Sie selbstverständlich eigene Bilder oder Videodateien von der Raspberry-Pi-Kamera verwenden. Dazu brauchen Sie sie lediglich in die entsprechenden Verzeichnisse kopieren und in Code::Blocks als Parameter angeben (Abbildung 3).

Abbildung 3: Die Elemente der Objekterkennung sehen Sie im originalen Bild mitsamt einer Prozentangabe, die die Wahrscheinlichkeit der korrekten Erkennung ausdr&uuml;ckt.

Abbildung 3: Die Elemente der Objekterkennung sehen Sie im originalen Bild mitsamt einer Prozentangabe, die die Wahrscheinlichkeit der korrekten Erkennung ausdrückt.

Eigene Modelle generieren

Da sich eigene Modelle auf Kleincomputern nicht trainieren lassen, bietet Google Anwendern mit der Webseite https://teachablemachine.withgoogle.com/train/image ein webbasiertes Werkzeug, mit dessen Hilfe sie eigene Modelle kreieren. Das Tool eignet sich für verschiedene Modelltypen und gibt sie anschließend als Datei im TensorFlow-Format aus, sodass Sie das Modell nach einer entsprechenden Konvertierung in der Lite-Variante nutzen können. Bitte beachten Sie jedoch, dass für das Generieren eines Modells beispielsweise für die Objekterkennung auf Bildern und Fotografien mehrere hundert Vorlagen erforderlich sind, die Sie hochladen müssen. Die Vorlagen sollten zudem hochauflösend sein, um später eine hohe Treffergenauigkeit zu erzielen. Für die Nutzung des Werkzeugs sollten Sie daher mehrere Stunden Zeitaufwand einplanen (Abbildung 4).

Abbildung 4: Mithilfe eines webbasierten Werkzeugs k&ouml;nnen Sie auch eigene Modelle anlegen.

Abbildung 4: Mithilfe eines webbasierten Werkzeugs können Sie auch eigene Modelle anlegen.

Fazit

KI-Anwendungen mit TensorFlow Lite und OpenCV gelten längst als etablierte Werkzeuge und lassen sich produktiv einsetzen. Die einzelnen Bibliotheken und Frameworks auf dem Raspberry Pi zu installieren, verlangt allerdings viel Zeit und Mühe – zumal die Dokumentationen häufig entweder veraltet sind oder äußerst dürftig ausfallen. Nicht zuletzt deswegen empfiehlt es sich, auf vorhandene Tutorials aktuellen Datums und Beispiele zurückzugreifen, um sich sukzessive in KI-Anwendungen auf dem Kleincomputer einzuarbeiten. csi

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 06/2023 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben