Publié le 2 octobre 2024 - par

Configurer et utiliser la Caméra Pi AI Raspberry Pi

Elle était en route mis je ne l’ai reçue que le lendemain du lancement de la nouvelle caméra AI Raspberry Pi. Merci à Kubii pour la rapidité de l’envoi, qui va me permettre de vous présenter les caractéristiques et les possibilités de cette caméra.

Configurer et utiliser la Caméra Pi AI Raspberry Pi

Cet article s’appuie sur la documentation fournie par la Fondation Raspberry Pi pour la mise en œuvre de la caméra. Vous pouvez retrouver l’article original [en Anglais] en suivant ce lien.

Déballage et connexion de la Caméra AI

La boîte est arrivée le lendemain de la sortie du produit. Merci Kubii 😉

On trouve la caméra et deux nappes adaptées au Pi4 et au Pi 5 dont le connecteur est plus petit. un anneau blanc est l’outil de réglage de netteté de la caméra.
La caméra : on distingue le circuit intégré « intelligent » sous le capteur IMX500

L’outil de réglage du focus de la caméra. Les « dents » rentrent dans les encoches de l’objectif.

On voit ici les encoches qui servent au réglage de la mise au point

Pour changer la nappe, soulevez le verrou délicatement

Quand le verrou est ouvert, enlevez la nappe, mettez l’autre nappe à la place.

Enfoncez bien la nappe à fond, perpendiculairement au connecteur, puis renfoncez le verrou pour bloquer le câble plat.

Sur le Raspberry Pi, soulevez le verrou de la prise DSI

Insérez la nappe et reverrouillez le câble en enfonçant le verrou.

Sur le boîtier que j’utilise il n’y a pas d’ouverture pour le câble caméra. Comme je ne voulais pas sortir la Dremel, j’ai sorti le câble au dessus du connecteur Ethernet (rigolez pas, hein ?)

Préparation du Raspberry Pi pour la CaméraPi AI

Pour les essais j’ai utilisé un Raspberry Pi 5 avec 4Go de RAM, une carte SD de 64Go avec la dernière version de Raspberry Pi OS.
Comme d’habitude commencez par mettre votre système d’exploitation à jour

sudo apt update && sudo apt full-upgrade

Installer le micrologiciel IMX500

La caméra AI doit téléverser le firmware sur le capteur IMX500 lors du démarrage. Pour installer ces fichiers du firmware sur votre Raspberry Pi, exécutez la commande suivante :

sudo apt install imx500-all

Répondez O ou Y selon la configuration de votre OS.

On voit que cette cette commande installe les fichiers de firmware /lib/firmware/imx500_loader.fpk et /lib/firmware/imx500_firmware.fpk nécessaires au fonctionnement du capteur IMX500, ainsi que les modèles modèles de réseaux neuronaux dans /usr/share/imx500-models/,  utilisés pour le traitement de l’image. Le logiciel de post traitement IMX500 est installé dans rpicam-apps.

Nota : Le pilote de périphérique du noyau IMX500 charge tous les fichiers du firmware au démarrage de la caméra. Cette opération peut prendre plusieurs minutes si le micrologiciel du modèle de réseau neuronal n’a pas été préalablement mis en cache. Les démonstrations ci-dessous affichent une barre de progression sur la console pour indiquer la progression du chargement du micrologiciel. Soyez patient(e).

Redémarrer le Raspberry Pi

Maintenant que le firmware et les logiciels de la caméra sont installés, redémarrez le Raspberry Pi

sudo reboot

Exécuter les programmes exemples

Une fois tous les paquets système mis à jour et les fichiers firmware installés, nous pouvons commencer à exécuter quelques exemples d’applications. La caméra Raspberry Pi AI Camera s’intègre parfaitement à libcamera, rpicam-apps et Picamera2.

rpicam-apps

Les applications de caméra rpicam-apps comprennent des étapes de détection d’objet IMX500 et d’estimation de la pose qui peuvent être exécutées dans le pipeline de post-traitement. Pour plus d’informations sur le pipeline de post-traitement, consultez la documentation sur le post-traitement.
Les exemples de cette page utilisent des fichiers JSON de post-traitement situés dans /usr/share/rpicam-assets/.

Détection d’objets

Le réseau neuronal MobileNet SSD effectue une détection d’objet de base, en dessinant des boîtes de délimitation et des valeurs de confiance pour chaque objet trouvé. imx500_mobilenet_ssd.json contient les paramètres de configuration pour l’étape de post-traitement de détection d’objet IMX500 à l’aide du réseau neuronal MobileNet SSD.

imx500_mobilenet_ssd.json déclare un pipeline de post-traitement qui contient deux étapes :

  1. imx500_mobilenet_ssd, qui récupère les boîtes de délimitation et les valeurs de confiance générées par le réseau neuronal dans le tenseur de sortie
  2. object_detect_draw_cv, qui dessine les boîtes de délimitation et les étiquettes sur l’image.

Le tenseur SSD de MobileNet ne nécessite aucun post-traitement significatif sur votre Raspberry Pi pour générer la sortie finale des boîtes de délimitation. Toute la détection d’objets s’exécute directement sur la caméra AI.

La commande suivante (sur une seule ligne) lance rpicam-hello avec le post-traitement de détection d’objets :

rpicam-hello -t 0s –post-process-file /usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json –viewfinder-width 1920 –viewfinder-height 1080 –framerate 30

Après avoir exécuté la commande, vous devriez voir une fenêtre avec des boîtes de délimitation sur les objets reconnus par le réseau neuronal IMX500 MobileNet

On voit que la charge CPU (flèche jaune) reste faible (~35%) et que la reconnaissance fonctionne (flèche blanche).
Le même module reconnait la souris sur le bureau (meilleur que lors des tests de la carte Hailo qui prenait ma souris pour une banane ou pour une valise ).

Pour enregistrer une vidéo avec des superpositions de détection d’objets, utilisez plutôt rpicam-vid. La commande suivante exécute rpicam-hello avec le post-traitement de détection d’objets :

rpicam-vid -t 10s -o output.264 –post-process-file /usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json –width 1920 –height 1080 –framerate 30

Cela a créé un fichier output.264 qui s’ouvre sur le Raspberry Pi avec VLC.

Vous pouvez configurer imx500_object_detection de plusieurs façons.

Par exemple, max_detections définit le nombre maximum d’objets que le pipeline détectera à un moment donné. threshold définit la valeur de confiance minimale requise pour que le pipeline considère toute entrée comme un objet.

Les données brutes de sortie d’inférence de ce réseau peuvent être assez bruitées, c’est pourquoi cette étape effectue également un filtrage temporel et applique l’hystérésis. Pour désactiver ce filtrage, supprimez le bloc de configuration temporal_filter.

Estimation de la pose

Le réseau neuronal PoseNet effectue l’estimation de la pose, en étiquetant les points clés du corps associés aux articulations et aux membres. imx500_posenet.json contient les paramètres de configuration de l’étape de post-traitement de l’estimation de la pose par l’IMX500 à l’aide du réseau neuronal PoseNet.

imx500_posenet.json déclare un pipeline de post-traitement qui contient deux étapes :

  1. imx500_posenet, qui récupère le tenseur de sortie brut du réseau neuronal PoseNet
  2. plot_pose_cv, qui dessine des superpositions de lignes sur l’image.

La caméra IA effectue une détection de base, mais le tenseur de sortie nécessite un post-traitement supplémentaire sur votre Raspberry Pi hôte pour produire la sortie finale.

La commande suivante (sur une seule ligne) lance rpicam-hello avec un post-traitement d’estimation de la pose :

rpicam-hello -t 0s –post-process-file /usr/share/rpi-camera-assets/imx500_posenet.json –viewfinder-width 1920 –viewfinder-height 1080 –framerate 30

La caméra superpose des lignes pour indiquer la position du corps.

Vous pouvez configurer l’étape imx500_posenet de plusieurs façons.

Par exemple, max_detections définit le nombre maximum de corps que le pipeline détectera à un moment donné. threshold définit la valeur de confiance minimale requise pour que le pipeline considère l’entrée comme un corps.

Picamera2

Pour des exemples de classification d’images, de détection d’objets, de segmentation d’objets et d’estimation de la pose à l’aide de Picamera2, consultez le dépôt GitHub picamera2.

La plupart des exemples utilisent OpenCV pour certains traitements supplémentaires. Pour installer les dépendances nécessaires à l’exécution d’OpenCV, exécutez la commande suivante :

sudo apt install python3-opencv python3-munkres

Téléchargez maintenant le dépôt picamera2 sur votre Raspberry Pi pour exécuter les exemples. Vous trouverez les fichiers d’exemple dans le répertoire racine, avec des informations supplémentaires dans le fichier README.md.

git clone https://github.com/raspberrypi/picamera2
cd picamera2
cd examples

cd imx500

Exécutez le script suivant (sur une seule ligne) depuis le dépôt pour lancer la détection d’objets YOLOv8 :

python imx500_object_detection_demo.py –model /usr/share/imx500-models/imx500_network_yolov8n_pp.rpk –ignore-dash-labels -r


Il faut un certain temps pour transférer le firmware dans la caméra… Soyez patient(e). Une barre indique la progression du téléversement.

Ensuite la détection fonctionne et ici une personne est identifiée (vous avez vu comme il est sérieux, le gars quand il fait des essais ?)
La souris est bien détectée également.

Si vous voulez essayer l’estimation de la pose dans Picamera2, exécutez le script suivant à partir de ~/picamera2/examples/imx500 :

python imx500_pose_estimation_higherhrnet_demo.py

La détection de pose fonctionne et on a plus d’informations sur les points identifiés (épaules, yeux, oreilles…) que lors de l’essai précédent !

Conclusion

Cet article constitue une base pour démarrer avec la nouvelle CameraPi AI. Les commandes proposées permettent de tester la caméra. Pour aller plus loin, reportez vous à l’article d’origine qui fournit plus d’informations sur le fonctionnement « interne » (sous le capot) de l’IMX500.

Vous trouverez aussi des informations sur la création et le déploiement de nouveaux modèles de réseaux neuronaux. Tout ceci devrait permettre d’adapter la caméra à vos besoins. Il y a des tutoriels pour apprendre à préparer vos propres modèles mais ça, c’est une autre histoire…

Il y a déjà eu des retours par rapport au prix de la caméra (trop cher !). Pour mémoire, j’avais testé une caméra Pixy en 2017. Elle était vendue autour de 100€ à l’époque pour des caractéristiques pas très éloignées. La CameraPi AI va sans doute plus intéresser les concepteurs de robots et les industriels que les makers, mais c’est aussi une avancée vers des systèmes de reconnaissance d’image abordables et disponibles facilement.

La caméra est disponible en France chez Kubii au prix de 80€.

Sources

https://www.raspberrypi.com/documentation/accessories/ai-camera.html

https://aitrios-portal.wpp.developer.sony.com/en/raspberrypi-ai-camera/develop/ai-tutorials#github-tutorials

https://www.hackster.io/news/raspberry-pi-s-ai-eye-hands-on-with-the-raspberry-pi-ai-camera-module-383fb34afcf7

https://developer.aitrios.sony-semicon.com/en/raspberrypi-ai-camera/documentation/imx500-packager?version=2024-09-27&progLang=

https://www.kubii.com/fr/cameras-capteurs/4391-raspberry-pi-ai-camera-5056561803890.html

 

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

3 réflexions au sujet de « Configurer et utiliser la Caméra Pi AI Raspberry Pi »

  1. Landais

    Rebonjour François,

    j’ai une petite question, est ce que cette caméra peut effectuer de la reconnaissance de numéro de plaque d’immatriculation ?

    Merci d’avance pour votre retour

    Cordialement

    Eric

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.