1. Livres & vidéos
  2. Raspberry Pi 5
  3. Un Raspberry Pi taillé pour l’analyse d’images
Extrait - Raspberry Pi 5 De la programmation en Python à l’intelligence artificielle pour l'analyse d'images
Extraits du livre
Raspberry Pi 5 De la programmation en Python à l’intelligence artificielle pour l'analyse d'images Revenir à la page d'achat du livre

Un Raspberry Pi taillé pour l’analyse d’images

Introduction

Dans ce chapitre, nous allons parler d’intelligence artificielle appliquée au domaine de l’analyse d’images. L’analyse d’images, c’est la capacité à reconnaître, détecter, suivre des éléments particuliers dans des images ou des séquences vidéo. Conduite autonome, sécurité des grandes enceintes recevant du public, comptage de foule sont quelques-unes des applications concrètes qui se basent en premier lieu sur une reconnaissance d’éléments dans l’image. Son principe repose sur l’apprentissage par un réseau de neurones, de la reconnaissance de personnes, de différents objets, ou d’un contexte. Nous n’aborderons pas cet apprentissage qui est très compliqué et lourd à réaliser au regard de la puissance de calcul d’un Raspberry Pi 5, mais nous nous cantonnerons à utiliser des réseaux déjà entraînés et disponibles en open source ou sous licence gratuite.

L’analyse d’images ne se réduit pas uniquement à un réseau de neurones. Il y a en complément des algorithmes et des calculs qui permettent par exemple de suivre la trajectoire d’une personne, ou bien d’évaluer la qualité de l’image. Tous ces algorithmes et calculs forment une sorte de boîte...

La source des images

S’il y a quelque chose d’essentiel lorsque l’on se lance dans le traitement d’images, c’est la reproductibilité des séquences d’images en phase de mise au point. Il est quasi impossible avec une simple caméra réalisant une prise de vue en direct de reproduire exactement une même scène plusieurs fois de manière identique. Pendant cette phase de mise au point, on se basera alors sur des séquences vidéo contenues dans des fichiers vidéo. Mais par la suite, l’algorithme devra être testé sur d’autres images. Il faut donc décorréler complètement le décodage ou l’acquisition des images de leur analyse pour permettre d’utiliser des séquences vidéo en phase de test, puis d’étendre progressivement à d’autres séquences vidéo, voire utiliser un flux vidéo en direct. Parcourons les différentes sources d’images possibles.

1. Le fichier vidéo

Le fichier vidéo est bien connu de tous. Quel que soit son format *.mp4, *.ts, *.mkv, il produit une séquence d’images qui peut être rejouée à l’infini, voire même déroulée plus lentement que dans la vie de tous les jours. En phase de mise au point, on peut donc mettre de côté l’aspect temps réel et les optimisations, pour se concentrer sur l’algorithme.

Le fichier vidéo est constitué de deux éléments fondamentaux : le conteneur et les données d’images. Le conteneur régit les règles de format du fichier ainsi que le nombre de flux, qu’ils soient vidéo, audio, ou autres comme les éventuels sous-titres. C’est ce conteneur qui les organise et qui détermine l’extension du fichier et donc son format. Les données d’images rassemblent le ou les flux d’images selon une compression et une segmentation déterminée.

L’encodage et le décodage des flux vidéo sont un sujet aussi vaste que l’analyse d’images, et il existe nombre de conteneurs et de façons de compresser. Cette tâche doit donc être confiée à des composants logiciels déjà éprouvés afin...

Installation logicielle pour l’AI Camera

Notre système d’acquisition des images est donc désormais fonctionnel. C’est une étape importante avant d’explorer les possibilités d’analyse. Que ce soit pour l’AI Camera ou pour tous les autres modules caméra, les rpicam-apps se focalisent sur la partie capture des images.

Intéressons-nous maintenant à la spécificité de l’AI Camera, qui est son processeur d’analyse embarqué, le IMX500. Il peut recevoir dans sa mémoire interne un modèle d’analyse dédié à un traitement particulier.

La première étape à effectuer consiste à installer les logiciels dédiés à ce coprocesseur.

 Tapez la commande ci-dessous :

sudo apt-get install imx500-all 

Dans les éléments installés par cette commande, vous allez trouver le micrologiciel de chargement du réseau de neurones à charger dans l’AI Camera, des exemples de réseaux de neurones dans le répertoire /usr/share/imx500-models, et des exemples de fichiers de configuration utilisant le concept de post-traitement des rpicam-apps.

Commençons par un exemple de base, soit la détection d’objets sur l’image de la caméra.

 Tapez la commande suivante :

rpicam-hello -t 0s --post-process-file /usr/share/rpi-camera-...

Les kits AI Hailo-8

Les kits AI Hailo-8 se présentent sous la forme de cartes additionnelles à enficher sur un Raspberry Pi 5. Ces cartes ne sont exploitables que pour les Raspberry Pi 5, et excluent le Pi 500, car elles nécessitent une liaison haute vitesse offerte par le bus PCIe uniquement. Il est en revanche possible d’insérer le module M2 supportant le coprocesseur Hailo-8 dans le connecteur M2 d’un Raspberry Pi 500+.

Quel que soit le kit AI installé, il est fortement conseillé d’utiliser un système de refroidissement pour le Raspberry Pi 5 qui va être très fortement sollicité. Le système Raspberry Pi Active Cooler décrit au chapitre Le Raspberry Pi 5, section Le refroidissement, est particulièrement adapté à l’utilisation des kits AI Hailo-8.

Tous les kits prennent place au-dessus de la carte Raspberry Pi 5.

images/10RI_04000.PNG

Ils sont fournis avec entretoises et visserie de fixation, un connecteur stacking header à enficher sur le port GPIO établissant la liaison avec le port GPIO. L’utilisation du port GPIO reste donc possible. C’est la nappe de connexion vers le port PCIe qui réalisera la connexion haute vitesse. Une large encoche au-dessus des ports CSI facilite la connexion des caméras.

1. L’AI Kit

L’AI Kit est une carte additionnelle au format HAT+ disposant d’un connecteur au format M2 dans lequel est inséré un module M2 supportant un coprocesseur de calcul Hailo-8L.

images/10RI_04100.PNG

Ce coprocesseur de calcul offre une puissance de 13 TOPS (Tera Operations Per Second, ou « téra opérations par seconde » en français).

Son principal atout est la polyvalence de son connecteur au format M2 qui autorise la connexion d’autres périphériques disposant d’un connecteur M2, comme un disque SSD ou un autre module Hailo-8 par exemple. Son prix se situe aux alentours de 80 €.

2. L’AI HAT+

L’AI HAT+ est une carte additionnelle intégrant directement le coprocesseur de calcul Hailo-8.

images/10RI_04200.PNG

Deux versions sont actuellement disponibles, l’une avec un coprocesseur Hailo-8L de 13 TOPS, et l’autre avec un Hailo-8 de 26 TOPS.

Ces cartes sont donc moins polyvalentes à cause de l’absence de connecteur M2, mais l’une...

Réaliser un compteur de personnes

1. Principe

L’une des applications concrètes du suivi de personne est le comptage. Ce comptage est très souvent utilisé pour dénombrer les personnes entrant ou sortant d’un couloir de métro, d’un stade, ou d’un supermarché. Il repose sur l’incrémentation d’un compteur lorsqu’une personne franchit une ligne imaginaire fixée dans l’algorithme.

2. La vidéo de mise au point

Pour parfaire cet objectif, nous allons nous appuyer sur une vidéo qui peut être considérée comme un cas d’école : https://www.youtube.com/watch?v=fSo7Lk83uJU.

images/10RI_50000.png

Cette vidéo sert un peu de référence pour la mise au point de toutes sortes de détections. Elle présente une séquence de cinq minutes où des personnes arpentent une rue piétonne. Les trajectoires sont relativement droites, il y a peu de masquages et elle contient des vitesses de déplacement différentes avec quelques cyclistes et personnes en train de courir. Nous allons donc définir une ligne imaginaire, et incrémenter deux compteurs correspondant au nombre de personnes marchant dans chaque sens de la rue. Notez aussi que cette vidéo présente le cas particulier d’une personne arrivant par un côté de la rue, attendant pendant près de deux minutes au milieu de l’image et repartant dans le sens opposé. Cette vidéo permet aussi de qualifier les limites des algorithmes mis en jeu et donc d’extrapoler l’incertitude de mesure.

3. OpenCV

La bibliothèque OpenCV (pour Open Computer Vision, « vision par ordinateur open source » en français) est une bibliothèque mondialement connue pour la manipulation d’images. Elle offre tout un panel de fonctions et d’algorithmes autour des images, et ce pour de nombreuses plateformes matérielles et une grande variété de langages de programmation. Elle est largement utilisée dans nos scripts d’exemples à des fins de lecture d’un fichier vidéo, de tracé des rectangles à l’écran ou encore d’affichage dans une fenêtre.

Les exemples pour Raspberry Pi 5 créés par Hailo font appel à...

Conclusion

Nous voici arrivés à la fin de ce périple qui nous a fait voyager dans l’univers des Raspberry Pi 5 et 500, dans Linux et Raspberry Pi OS, avec quelques composants électroniques de base, le langage Python, et l’analyse d’images en temps réel. Ceci nous a montré que la carte Raspberry Pi 5 est désormais totalement adaptée à l’analyse d’images, issue des progrès de l’intelligence artificielle réalisés ces cinq à dix dernières années.

Cependant, il faut garder son esprit critique ! Ce n’est pas parce que l’intelligence artificielle bouleverse les échelles de gain de temps qu’elle est infaillible. Il faudra toujours améliorer et vérifier ce que fait la machine pour quantifier la confiance que l’on peut lui accorder.