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.
Au sommaire :
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 :
- 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
- 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 :
- imx500_posenet, qui récupère le tenseur de sortie brut du réseau neuronal PoseNet
- 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://www.kubii.com/fr/cameras-capteurs/4391-raspberry-pi-ai-camera-5056561803890.html
Ping : Sortie de l'AI Camera Raspberry Pi - Framboise 314, le Raspberry Pi à la sauce française....
Merci beaucoup François pour cet article très détaillé
Cela donne vraiment envie de tester cette caméra
Cordialement
Eric
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
Bonjour
en l’état non, elle reconnait formes, objets….
peut etre dans les développements futurs… vois également s’il existe des modèles ?
cdt
francois
Merci Francois pour cette première prise en main (vous n’arretez pas) !
@ landais il y a cet article (qui date un peux) sous tensorflow et à priori comme il y a une passerelle..
https://deeplylearning.fr/cours-pratiques-deep-learning/radar-automatique-partie-1-constitution-du-dataset-de-la-plaque-dimmatriculation/
Le github du projet:
https://github.com/Momotoculteur/LicencePlateScraper/blob/master/README.md
Tentez de le contacter
Cordialement
Bonjour François, Merci d’être le premier francophile as avoir expérimenter l’installation et la mise en place des de l’utilisation. Pour moi j’ai reçu le matériel de chez KUBII asser rapidement, mais je me retrouve dans une galére avec mon pi 4. La carte py ne veut pas detecter la caméra depuis hier. Je réinstalle et désinstaller à tout va…Et je viens de voir que les cables selon comment les met, peuvent être a l’origine de mes problémes de connection. Donc je lance une mise en garde aux possesseures de py 4.
Cordialement
Merci pour l’info
Bonjour François,
Merci pour toutes les ressources que vous mettez a notre disposition sur votre site.
Nous nous sommes rencontrés à la Maker Faire de Lille.
Mon groupe et moi sommes en dernière année à l’ESME Lille.
Pour notre projet de fin d’année, nous avons choisi de créer un collecteur de déchets intelligent.
Pour cela, nous avons pensé à utiliser la caméra AI de Raspberry Pi.
Nous aimerions entraîner nous-mêmes sa base de données (par exemple, une base de données pour le carton, le plastique, le verre, etc.). Puis contrôler des sorties de la Rasberry en fonction de l’objet détecté.
Pourriez-vous nous dire si cela est possible et si vous avez des pistes pour nous aider ?
Nous restons à votre disposition pour toute information supplémentaire.
En vous remerciant par avance,
Framboisement,
Maxime Poillot.
Je n’arrive pas a faire fonctionner les commandes
par exemple ,est ce que quelqu’un aurais une idée? j’ai bien tout installé et suis dans le bon répertoire…
bonjour
il n’y a pas assez d’infos pour vous aider
estce que les fichiers sont présents au bon endroit ?
avec vous vérifié /usr/share/imx500-models/imx500_network_yolov8n_pp.rpk
y a t il un message d’erreur ? si oui lequel ?
on ne peut pas aider sans infos
cdt
francois