Das offizielle Raspberry Pi KI-Kameramodul kann auf die gleiche Weise angeschlossen werden wie die bisherigen Kameramodule. Der CSI-Kameraanschluss befindet sich an der Haupteinheit und die Grundlagen sind dieselben.
Das KI-Kameramodul unterscheidet sich von den vorherigen Modulen dadurch, dass es einen kleinen KI-Beschleuniger (RP2040) auf der Kameraseite hat.
Der RP2040 ist die gleiche MCU wie der Raspberry Pi Pico.
Der RP2040 ermöglicht es der Kamera, einen Teil der für die KI erforderlichen Verarbeitung durchzuführen, so dass die Rechenleistung des Raspberry Pi selbst dafür genutzt werden kann.
Der industrielle Raspberry Pi wurde getestet mit Compute Modul 5 (CM5 ). Der herkömmliche PL-R4 ist mit CM4 ausgestattet, kann aber durch CM5 mit demselben Formfaktor ersetzt werden. In diesem Fall haben wir das Modell PL-R5-M mit CM5 verwendet. Außerdem haben wir Hailo, einen der KI-Beschleuniger, angeschlossen.
Die grundlegende Bedienung wurde anhand der offiziellen Dokumentation geübt.
KI-Kameramodule und Hailo sind im Handel erhältlich und jeder kann sie ausprobieren.
Unterschiede zwischen herkömmlichen Kameramodulen und KI-Kameramodulen
In der offiziellen Dokumentation finden Sie ein klares Diagramm. Die linke Seite stellt das bisherige Kameramodul dar. Der optionale KI-Beschleuniger kann ein- und ausgegeben werden.
Rechts ist das KI-Kameramodul zu sehen, das den KI-Beschleuniger im Inneren des IMX500 zeigt.
Der Chip (MCU) im KI-Kameramodul ist der RP2040, der aus dem Raspberry Pi Pico bekannt ist.
Der Chip wird als Zusatzchip verwendet, so dass er auch in einer Umgebung ohne den optionalen KI-Beschleuniger arbeiten kann.

Die Umwelt dieser Zeit
Diesmal ist nicht nur das KI-Kameramodul, sondern auch Hailo (KI-Beschleuniger) als Option bereits an den M.2-Steckplatz des Hauptgeräts angeschlossen.
Das Gerät ist mit PL-R5-M mit ComputeModule 5 eingerichtet.
- PL-R5-M USB IP20 mit Compute Module 5 (Industrie-Raspi)
- Raspberry Pi OS Bücherwurm
- KI-Kameramodul (IMX500)
- Hailo (KI-Beschleuniger)

Die Einrichtung von Hailo wird hier ausgelassen. Bitte lesen Sie die offizielle Dokumentation.
Für das KI-Kameramodul gibt es ein eigenes Paket. Ich habe es nach der Aktualisierung des Betriebssystems mit apt installiert.
sudo apt update && sudo apt full-upgrade
sudo apt install imx500-all
Wie bereits berichtet, müssen die Parameter in der config.txt geändert werden, damit das Kameramodul funktioniert. (Referenz: Einfacher Anschluss von Kameras auch auf einem industriellen Raspberry Pi. )
Für den Pi 5 (Bookworm) finden Sie die config.txt unter Firmware.
sudo nano /boot/firmware/config.txt
Die Änderungen in der config.txt deaktivieren ausdrücklich die automatische Kameraerkennung und geben das KI-Kameramodul, IMX500, an.
camera_auto_detect=0
[all]
dtoverlay=imx500,cam0
*Das PL-R5-M, das in der Studie verwendet wurde, ist ein proprietäres Gerät mit Compute Module 5, so dass weitere Teile hinzugefügt oder geändert werden müssen.
Verwenden Sie nach dem Neustart den Befehl, um zu sehen, ob die KI-Kamera automatisch erkannt wurde.
imx500 wurde gefunden. Sie sind jetzt startklar.
libcamera-hello --list-cameras
Available cameras
-----------------
0 : imx500 [4056x3040 10-bit RGGB] (/base/axi/pcie@120000/rp1/i2c@88000/imx500@1a)
Modes: 'SRGGB10_CSI2P' : 2028x1520 [30.02 fps - (0, 0)/4056x3040 crop]
4056x3040 [10.00 fps - (0, 0)/4056x3040 crop]
Versuchen Sie die Objekterkennung
Jetzt, da die KI-Kamera erkannt wurde, haben wir die Probe ausgeführt. /usr/share/rpi-camera-assetsDie Dateien, die mit rpicam-app verwendet werden können, werden unter installiert. Sie liegen im json-Format vor.
Auch das KI-Modell wird unter /usr/share/imx500-models installiert.
Wie ich sehe, kann dies mit dem Python-Befehl angegeben werden. Die Erweiterung ist rpk.
Wie dokumentiert, konnte ich einen kastenartigen Rahmen um das Objekt zeichnen, indem ich imx500_mobilenet_ssd.jsonmit dem Befehl rpicam-hello ausgeführt habe.
rpicam-hello -t 0s --post-process-file /usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json

Da wir dieses Mal Hailo einrichten, haben wir auch die json-Datei mit der Bezeichnung Hailo ausgeführt.
Das Ergebnis zeigt den gleichen Rahmen.
rpicam-hello -t 0s --post-process-file /usr/share/rpi-camera-assets/Hailo_yolov6_inference.json

Wenn Sie die beiden vergleichen, sind die Erkennungsraten unterschiedlich.
Zuvor waren es 62%, aber in Hailo_yolov6_inference.json sind es 91%.
Nach der Ausführung erscheint auf dem Bildschirm des Terminals ein Fortschrittsbalken (Network Firmware Update), der bei installiertem Hailo schnell war (einige Sekunden).
Übrigens können Sie mit der Befehlsoption --viewfinder-width 1920 --viewfinder-height 1080 --framerate 30das Bildformat, die Bildrate usw. angeben.
Das „YOLO“ in Hailo_yolov6~ ist der Algorithmus zur Objekterkennung. Sie haben Version 6, Version 8, usw.
Wenn Sie einen Blick in die imx500_mobilenet_ssd.jsonDatei werfen, die ich bereits erwähnt habe, werden Sie sehen, dass ich das KI-Modell unter /usr/share/imx500-models(rpk-Datei) verwende.
{
"imx500_object_detection":
{
"max_detections" : 5,
"threshold" : 0.6,
"network_file": "/usr/share/imx500-models/imx500_network_ssd_mobilenetv2_fpnlite_320x320_pp.rpk",
...(以下、略)
Andere Asset-Dateien
Ich habe versucht, andere json-Dateien zu installieren.
Sie können jeden Parameter in der json-Datei angeben.
Hier sind einige Ergebnisse, wenn Sie das Programm so ausführen, wie es ist.
./usr/share/rpi-camera-assets
├── annotate_cv.json
├── face_detect_cv.json
├── Hailo_classifier.json
├── Hailo_pose_inf_fl.json
├── Hailo_scrfd.json
├── Hailo_yolov5_personface.json
├── Hailo_yolov5_segmentation.json
├── Hailo_yolov6_inference.json
├── Hailo_yolov8_inference.json
├── Hailo_yolov8_pose.json
├── Hailo_yolox_inference.json
├── hdr.json
├── imx500_mobilenet_ssd.json
├── imx500_posenet.json
├── motion_detect.json
├── negate.json
└── sobel_cv.json
annotate_cv.json
Die Anzahl der Frames und andere Verarbeitungsdetails (Annotationen) wurden angezeigt.

Hailo_classifier.json
Sie können sehen, wie sich die Worte in der oberen linken Ecke ändern, wenn Sie die Ausrichtung der Kamera ändern.

Hailo_scrfd.json
Ein weiteres Fenster wurde geöffnet und ich konnte hineinzoomen, in die Zwischenablage kopieren usw.

negate.json
Negative Anzeige.

sobel_cv.json
Sobel-Filter zur Verbesserung der Kanten.

Bis zu diesem Punkt wurde der Befehl rpicam verwendet.
Als nächstes werden wir Picamera2 verwenden, um eine Demo der Python-Datei auszuführen.
Installation von Picamera2
Um das Kameramodul im Python-Code zu steuern, müssen wir Picamera2 in den Code importieren.
Picamera2 wird mit dem aktuellen Betriebssystem vorinstalliert. Es muss separat mit einer Betriebssystem-Image-Datei vor Raspberry Pi OS Bullseye oder mit einem OS lite-Image installiert werden.
(Referenz: https://github.com/raspberrypi/picamera2 )
Die meisten Beispiele verwenden OpenCV. Installieren Sie die Abhängigkeiten.
sudo apt install python3-opencv python3-munkres
Ich habe Picamera2 mit git geklont und ein Verzeichnis für das KI-Kameramodul (IMX500) in den Beispielen mit der Demo gefunden.
git clone https://github.com/raspberrypi/picamera2.git
cd picamera2/examples/imx500
Fünf in Python geschriebene Demo-Dateien.
./picamera2/examples/imx500
├── imx500_classification_demo.py
├── imx500_object_detection_demo_mp.py
├── imx500_object_detection_demo.py
├── imx500_pose_estimation_higherhrnet_demo.py
└── imx500_segmentation_demo.py
Es gab auch drei im Hailo-Verzeichnis.
./picamera2/examples/Hailo
├── coco.txt
├── detect.py
├── pose.py
└── pose_utils.py
Probieren Sie das Python-Demoprogramm aus
Wie in der offiziellen Dokumentation beschrieben, führen Sie imx500_object_detection_demo.pymit dem KI-Modell imx500_network_ssd_mobilenetv2_fpnlite_320x320_pp.rpk aus.
python imx500_object_detection_demo.py --model /usr/share/imx500-models/imx500_network_ssd_mobilenetv2_fpnlite_320x320_pp.rpk

Mit dem Teddybär haben Sie recht.
Dieses Plüschtier ist das offizielle Maskottchen des Raspberry Pi. Es wird Babbage Bear genannt, aber es wurde nicht mit diesem Namen identifiziert, ohne ihn zu lernen. Der Teddybär ist als Plüschtier vordatiert, und da es sich tatsächlich um einen Teddybären handelt, gibt es kein Problem.
ssd_mobilenetv2″ ist ein Modell zur Erkennung von Objekten in Umgebungen, in denen die Ressourcen knapp sind, wie z.B. mobile Geräte, wie das Wort „mobil“ andeutet.
Es ist bis zu MobileNET v3 freigegeben worden.
Als Nächstes haben wir auch eine Demo zur Erkennung von Posen (Skeletten) ausprobiert.
Hier musste die Demo nur so ausgeführt werden, wie sie ist.
python imx500_pose_estimation_higherhrnet_demo.py

Leider habe ich ein Problem mit dem Abstand zum Kameramodul und nur dem Arm.
Ohne etwas zu tun, wurden die drei Punkte? Ich musste nichts tun, aber 3 Punkte wurden erkannt und als ein Skelett verbunden. Mir wurde gesagt, dass die Anzahl der Skelette angepasst werden kann, indem man die maximale Anzahl der Skelette angibt und so weiter.
Wenn der Abstand zu gering war, funktionierte es nicht, aber wenn der Abstand 60 cm betrug, erschienen die Skelettlinien automatisch.
Es gab insgesamt 24 Dateien für rpk, das KI-Modell.
Wenn Sie sich mit Deep Learning, KI und der Sprache Python auskennen, warum schreiben Sie dann nicht ein Python-Programm, das jedes KI-Modell spezifiziert?
./usr/share/imx500-models
├── imx500_network_deeplabv3plus.rpk
├── imx500_network_efficientdet_lite0_pp.rpk
├── imx500_network_efficientnet_bo.rpk
├── imx500_network_efficientnet_lite0.rpk
├── imx500_network_efficientnetv2_b0.rpk
├── imx500_network_efficientnetv2_b1.rpk
├── imx500_network_efficientnetv2_b2.rpk
├── imx500_network_higherhrnet_coco.rpk
├── imx500_network_inputtensoronly.rpk
├── imx500_network_levit_128s.rpk
├── imx500_network_mnasnet1.0.rpk
├── imx500_network_mobilenet_v2.rpk
├── imx500_network_mobilevit_xs.rpk
├── imx500_network_mobilevit_xxs.rpk
├── imx500_network_nanodet_plus_416x416_pp.rpk
├── imx500_network_nanodet_plus_416x416.rpk
├── imx500_network_posenet.rpk
├── imx500_network_regnetx_002.rpk
├── imx500_network_regnety_002.rpk
├── imx500_network_regnety_004.rpk
├── imx500_network_resnet18.rpk
├── imx500_network_shufflenet_v2_x1_5.rpk
├── imx500_network_squeezenet1.0.rpk
└── imx500_network_ssd_mobilenetv2_fpnlite_320x320_pp.rpk
Probieren Sie die KI-Kamera aus.
Auch wenn es sich um ein Beispiel handelt: Wenn Sie den Befehl ausführen und etwas vor die Kamera halten, scheint sie es ohne Stress zu erkennen.
Der Prozess verlief sehr reibungslos, da wir sowohl das KI-Kameramodul als auch den KI-Beschleuniger verwendet haben.
Nur beim KI-Kameramodul dauert es nach der Ausführung des Befehls Network Firmware Update ein wenig, bis der Befehl ausgeführt wird. Sobald es funktioniert, ist der Rest wie immer.
Es gibt viele Begriffe und Mechanismen, die in der KI verwendet werden, wie YOLO, TensorFlow und Hailo, die ohne Vorkenntnisse kompliziert erscheinen. Da es sich hier um eine Kamera handelt, ist es auch von Vorteil, wenn Sie sich mit Bildern und Videos auskennen.
Andererseits, wenn Sie sich damit auskennen, werden Sie vielleicht überrascht sein, was Sie mit einem Raspberry Pi erreichen können.
Obwohl die veröffentlichte Dokumentation recht ausführlich ist, können Sie anhand der Beispiele besser verstehen, was mit dem KI-Kameramodul möglich ist.
Referenz:KI-Kameramodul Offizielles Dokument
Artikel beigetragen von Raspida
Raspberry Pi-Informationsseite, die auch von Nicht-Ingenieuren genutzt werden kann raspida.com eine Raspberry Pi-Informationsseite, die auch für Nicht-Ingenieure interessant ist und mit der sie umgehen können. Er schreibt auch technische Blogartikel auf der PiLink-Website über den Raspberry Pi für den industriellen Einsatz.

