Comment configurer la détection d’objets sur Raspberry Pi

Si vous cliquez sur nos liens et effectuez un achat, nous pouvons recevoir une commission d'affiliation. En savoir plus

La première fois que j’ai essayé la détection d’objets avec un Raspberry Pi, c’était pour un robot suiveur de ligne. La logique était simple : suivre la ligne blanche, et si un objet se trouvait sur le chemin, le déplacer. Avec le développement de l’IA, le Raspberry Pi peut maintenant faire bien plus que juste détecter un objet.

En combinant la caméra du Raspberry Pi avec des modèles d’IA performants, il est possible de voir, identifier et déterminer si l’objet devant la caméra est un visage humain, une plaque d’immatriculation, un animal de compagnie ou même une tasse.

Dans cet article, on va voir comment mettre en place la détection d’objets sur votre Raspberry Pi. De la configuration du matériel à l’installation des logiciels nécessaires, en passant par la partie la plus fun : interagir avec les différents modèles d’IA. C’est parti !

Si vous êtes à la recherche d’inspiration pour votre prochain projet Raspberry Pi, j’ai créé une liste avec plus de 75 idées avec une courte description, le niveau et matériel conseillé, et des liens vers des tutoriels. Que vous soyez débutant ou plus expérimenté, vous trouverez des idées adaptées à votre niveau. Accès gratuit ici !

Ce dont vous avez besoin pour la détection d’objets

Voici le matériel nécessaire pour ce projet :

Petit conseil : Pas envie de brancher clavier, souris et écran ? Vous pouvez très bien utiliser SSH ou VNC pour accéder et contrôler votre Raspberry Pi à distance.

Configurer l’environnement logiciel

À ce stade, j’espère que vous avez tout le matériel en place, avec le Raspberry Pi OS installé.

Normalement, vous avez aussi déjà installé et testé votre caméra. Sinon, lisez cet article d’abord : Installer une caméra sur votre Raspberry Pi : le guide complet.

On va maintenant préparer tout le logiciel nécessaire pour la détection d’objets.

Créer un environnement virtuel Python

Avant de créer un environnement virtuel Python, vérifiez d’abord que Python est bien installé. Ouvrez le Terminal et lancez cette commande :
python -V
ou
python --version

Vous devriez voir au moins Python 3. La version exacte peut être différente de la mienne, mais tant que c’est du Python 3, c’est bon. Si ce n’est pas le cas, consultez notre article sur comment installer la dernière version de Python sur votre Raspberry Pi.

Une fois que c’est réglé, on peut créer l’environnement virtuel.

Dans le terminal, lancez cette commande :
python3 -m venv --system-site-packages rpitips_object_detection

Un environnement virtuel, c’est comme une « boîte sécurisée » où vous faites tout votre Python sans risquer de casser le reste du système. La commande ci-dessus crée un dossier « rpitips_object_detection ».

Activez maintenant cet environnement :
source rpitips_object_detection/bin/activate

Vous verrez tout de suite votre invite de commande changer, comme sur l’image ci-dessus.

Accèder à ma liste des meilleurs projets !
Plus de 75 idées de projets pour votre Raspberry Pi (avec tutos, niveau et matériel nécessaire)
Télécharger maintenant

Si les commandes Linux ce n’est pas trop votre truc, n’hésitez pas à jeter un œil à cet article qui vous explique les commandes qu’il faut absolument connaître. Je vous donne aussi une antisèche à télécharger pour les avoir toujours sous la main !

Installer les packages Python nécessaires

L’environnement virtuel est prêt. Il faut maintenant installer les packages Python dont on a besoin pour ce projet.

Mettre à jour le système et installer les outils Python

Dans le terminal, mettez d’abord à jour la liste des paquets :
sudo apt update

Ensuite, installez le gestionnaire de paquets Python (PIP) :
sudo apt install python3-pip -y

Puis mettez PIP à jour. Même s’il vient d’être installé, la version du dépôt est souvent un peu ancienne. Cette commande garantit d’avoir les dernières fonctionnalités et corrections de bugs :
pip install -U pip

Installer Ultralytics

Ultralytics est une équipe open-source connue pour avoir créé les modèles YOLO (You Only Look Once). Ce sont parmi les modèles de détection d’objets et de vision par ordinateur les plus rapides et les plus populaires au monde.

Jetez un œil à leur compte X (Twitter), vous y trouverez des exemples vraiment impressionnants.

C’est l’équipe derrière les derniers modèles YOLO. Leur package s’occupe de la majeure partie du travail en installant OpenCV et toute l’infrastructure nécessaire pour faire tourner YOLO :
pip install ultralytics[export]

Petit conseil : Cette commande peut échouer plusieurs fois, c’est normal. Relancez-la simplement. Si ça bloque vraiment, voici ce que j’ai fait de mon côté :

Configurer Thonny pour Raspberry Pi

Thonny est un environnement de développement Python gratuit et open-source très populaire. C’est l’IDE que j’utilise pour ce projet. Il est simple à prendre en main et pensé pour les débutants.

Au premier lancement de Thonny, vous verrez peut-être un message en haut à droite : « Switch to regular mode« . Ça veut dire que Thonny tourne en mode simplifié, qui cache certains menus pour rester minimaliste — pratique sur les petits écrans.

Cliquez sur le lien « Switch to regular mode » pour activer le mode complet. Redémarrez ensuite Thonny en le fermant et en le rouvrant.

Le mode régulier de Thonny, c’est l’interface complète : tous les menus, outils et options de configuration sont accessibles.

Comme vous pouvez le voir sur l’image ci-dessous, l’interface a bien changé, avec de nouveaux menus et icônes.

La première chose à faire est de configurer Thonny pour qu’il utilise l’interpréteur Python de l’environnement virtuel qu’on vient de créer.

Cliquez sur Run -> Configure interpreter.

Et voilà ! Maintenant, chaque fois que vous ouvrirez Thonny, il utilisera automatiquement l’interpréteur Python de l’environnement virtuel rpitips_object_detection.

Si vous voulez revenir en arrière, sélectionnez simplement l’exécutable « /usr/bin/python3.***« .

Lancer votre premier exemple de détection d’objets

On arrive maintenant à la partie la plus intéressante. Si vous n’avez jamais travaillé sur un projet d’IA, bienvenue dans le monde de l’intelligence artificielle !

Pour ce projet, on va utiliser un modèle très connu : YOLOv8.

Ce que fait YOLOv8, en clair

YOLOv8 est un modèle de vision par ordinateur capable d’analyser une image ou un flux vidéo en direct pour reconnaître ce qu’il y a dedans.

Par exemple, vous pouvez faire tourner ce modèle sur un Raspberry Pi, pointer la caméra sur un chat, et le modèle le reconnaît instantanément et l’étiquette comme « cat ». Même chose pour les personnes, les voitures, les tasses et plein d’autres objets du quotidien, le tout en temps réel.

Accèder à ma liste des meilleurs projets !
Plus de 75 idées de projets pour votre Raspberry Pi (avec tutos, niveau et matériel nécessaire)
Télécharger maintenant

Lancer YOLOv8

Maintenant qu’on sait ce que fait YOLOv8, on va écrire un script Python (en anglais) qui le fait tourner sur le flux vidéo en direct de la caméra du Raspberry Pi.

Quand vous lancerez ce script, il téléchargera des modèles dans votre répertoire. Je vous recommande donc de créer un dossier dédié pour ce script :
mkdir yolov8_script

On va parcourir le script ligne par ligne. Mais vous pouvez aussi copier-coller le code complet directement.

1. Configurer la caméra du Raspberry Pi.
from ultralytics import YOLO
model = YOLO("yolov8n.pt")

  • Configure la résolution et le format de la caméra.
  • Démarre la caméra pour capturer les images en direct.

2. Charger le modèle YOLOv8.

from ultralytics import YOLO
model = YOLO("yolov8n.pt")

  • Charge un modèle YOLOv8 pré-entraîné (yolov8n.pt).
  • Ce modèle est prêt à détecter des objets comme des personnes, des chats, des voitures, des tasses, etc.

3. Capturer les images et lancer la détection en temps réel.

frame = picam2.capture_array()
results = model(frame)

  • Capture une image depuis la caméra.
  • YOLOv8 analyse l’image et identifie les objets.
  • Les résultats incluent les boîtes de détection, les étiquettes et les scores de confiance.

4. Afficher les détections sur l’image.

annotated_frame = results[0].plot()

  • Dessine des rectangles autour des objets détectés.
  • Ajoute des étiquettes comme « cat », « person » ou « car » sur l’image.

5. Calculer et afficher les FPS (images par seconde).

inference_time = results[0].speed['inference']
fps = 1000 / inference_time

  • Mesure la vitesse de détection du modèle.
  • Affiche les FPS dans la fenêtre pour voir la vitesse en temps réel.

6. Afficher le flux vidéo annoté en direct.

cv2.imshow("Camera", annotated_frame)

  • Ouvre une fenêtre avec le flux caméra, les objets détectés et les FPS.
  • Se met à jour en temps réel quand la caméra voit de nouveaux objets.

7. Quitter en appuyant sur q.

if cv2.waitKey(1) == ord("q"):
break

  • Arrête le programme et ferme la fenêtre quand vous appuyez sur q.

Voici le script complet. Copiez-collez le code dans Thonny. Sauvegardez le fichier dans le dossier que vous avez créé, avec l’extension « .py ».

import cv2
from picamera2 import Picamera2
from ultralytics import YOLO

# Set up the camera with Picam
picam2 = Picamera2()
picam2.preview_configuration.main.size = (1280, 1280)
picam2.preview_configuration.main.format = "RGB888"
picam2.preview_configuration.align()
picam2.configure("preview")
picam2.start()

# Load YOLOv8
model = YOLO("yolov8n.pt")

while True:
# Capture a frame from the camera
frame = picam2.capture_array()

# Run YOLO model on the captured frame and store the results
results = model(frame)

# Output the visual detection data, we will draw this on our camera preview window
annotated_frame = results[0].plot()

# Get inference time
inference_time = results[0].speed['inference']
fps = 1000 / inference_time # Convert to milliseconds
text = f'FPS: {fps:.1f}'

# Define font and position
font = cv2.FONT_HERSHEY_SIMPLEX
text_size = cv2.getTextSize(text, font, 1, 2)[0]
text_x = annotated_frame.shape[1] - text_size[0] - 10 # 10 pixels from the right
text_y = text_size[1] + 10 # 10 pixels from the top

# Draw the text on the annotated frame
cv2.putText(annotated_frame, text, (text_x, text_y), font, 1, (255, 255, 255), 2, cv2.LINE_AA)

# Display the resulting frame
cv2.imshow("Camera", annotated_frame)

# Exit the program if q is pressed
if cv2.waitKey(1) == ord("q"):
break

# Close all windows
cv2.destroyAllWindows()

Cliquez sur le bouton vert pour lancer le script.

Le téléchargement du modèle peut prendre quelques minutes. Une fois terminé, une fenêtre s’ouvre avec le flux vidéo en direct et les objets détectés par YOLO mis en évidence.

Sur l’image ci-dessous, on me voit détecté par le modèle YOLO.

Pour arrêter le script, appuyez sur la touche « Q » de votre clavier.

Télécharger mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Vous voulez discuter avec d'autres passionnés de Raspberry Pi ? Rejoignez la communauté, partagez vos projets en cours et posez vos questions sur le forum (en anglais).

Aller plus loin avec la détection d’objets

Maintenant qu’on a une base qui fonctionne, voici quelques ajustements pour améliorer votre code.

Utiliser d’autres modèles de détection

Un point important à garder en tête : votre Raspberry Pi peut détecter des personnes et des objets courants comme des chaises, des télés ou des tasses, mais pas tout. C’est parce que YOLOv8 a été entraîné sur le dataset COCO, qui ne couvre qu’environ 88 catégories d’objets. Des choses comme les lunettes, par exemple, ne seront pas reconnues.

Jusqu’ici, vous avez utilisé la version « nano » de YOLOv8, ultra-rapide mais pas la plus puissante. La bonne nouvelle avec le package Ultralytics, c’est qu’on peut changer de modèle avec une seule ligne de code :
model = YOLO("yolov8n.pt")

Remplacez le n après v8 par s (small), m (medium), l (large) ou x (extra-large), et le script téléchargera automatiquement le modèle correspondant.

Les modèles plus grands sont plus lents, donc vos FPS vont baisser. Mais ils voient mieux et reconnaissent les objets avec plus de précision. Une tasse dans la main sera moins souvent confondue avec un téléphone, et les objets éloignés de la caméra seront plus faciles à détecter.

Convertir le modèle au format NCNN

NCNN est un format de modèle optimisé pour les processeurs ARM comme celui du Raspberry Pi. En convertissant votre modèle YOLOv8 en NCNN, vous pouvez gagner jusqu’à 4x en vitesse, sans perte de précision. Voici comment faire :

from ultralytics import YOLO
# Load a YOLOv8 model
model = YOLO("yolov8n.pt")
# Export the model to NCNN format
model.export(format="ncnn", imgsz=640) # creates 'yolov8n_ncnn_model'
  • Remplacez simplement « yolov8n.pt » par le modèle que vous voulez convertir.
  • Gardez imgsz à 640 pour l’instant.
  • Au premier lancement, des fichiers supplémentaires peuvent être téléchargés, mais la conversion ne prend que quelques secondes.

Après la conversion, un nouveau dossier yolov8n_ncnn_model apparaît. Mettez à jour votre script principal pour utiliser ce modèle :

# Load the converted NCNN model
model = YOLO("yolov8n_ncnn_model")

Relancez le script, tout fonctionne exactement comme avant, mais bien plus vite.

Réduire la résolution de traitement

Baisser la résolution, c’est donner moins de pixels à traiter à YOLO, ce qui le rend plus rapide. Passer de 640 à 320 pixels peut augmenter significativement les FPS. Pour ça, définissez la résolution souhaitée lors de l’export du modèle NCNN :
model.export(format="ncnn", imgsz=320) # must be multiple of 32

Dans votre script principal, assurez-vous de :

  • Charger le modèle NCNN exporté.
  • Utiliser la même résolution lors des prédictions :
    results = model.predict(frame, imgsz=320)

Une résolution plus basse sacrifie un peu de précision pour gagner en vitesse. Les objets éloignés seront un peu moins bien détectés, mais entre 160 et 320 pixels, vous trouverez généralement le meilleur compromis vitesse/performance.

Et voilà ! On a installé YOLOv8 sur un Raspberry Pi, fait tourner la détection sur un flux vidéo en direct, exploré différentes tailles de modèles, et même boosté les performances avec NCNN et la réduction de résolution. Vous êtes maintenant prêt à détecter des objets en temps réel et à expérimenter vos propres projets IA (en anglais).

Télécharger mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Ressources supplémentaires pour votre Raspberry Pi

Initiation au Raspberry Pi en vidéo
Si vous débutez et voulez passer rapidement à la vitesse supérieure, j’ai exactement ce qu’il vous faut.
Regardez ma formation vidéo qui vous aidera à démarrer du bon bien, choisir votre matériel, installer les meilleures applications et vous lancer directement dans vos premiers projets avec mon aide.
Regarder les vidéos dès maintenant

Maîtrisez votre Raspberry Pi en 30 jours
Vous avez besoin de plus ? Si vous êtes à la recherche des meilleures astuces pour devenir expert sur Raspberry Pi, ce livre est fait pour vous. Développez vos compétences sous Linux et pratiquez via de nombreux projets en suivant mes guides étape par étape. 10% de remise aujourd’hui !
Télécharger le livre au format PDF ici

Maîtrisez Python sur Raspberry Pi
Pas besoin d’être un génie pour coder quelques lignes pour votre Raspberry Pi.
Je vous apprends juste ce qu’il faut sur Python afin de réaliser n’importe quel projet. La seconde partie du livre est d’ailleurs consacrée à des exemples de projets où je vous guide pas à pas.
Ne perdez pas de temps, apprenez le strict nécessaire et économisez 10% avec ce lien :
Télécharger maintenant

Autres ressources pour profiter de votre Raspberry Pi
J’ai regroupé toutes mes recommandations de logiciels, sites utiles et de matériel sur cette page de ressources. Je vous invite à la consulter régulièrement pour faire les bons choix et rester à jour.
Visiter les pages ressources


Ce tutoriel ne marche plus à 100%? Prévenez-moi pour que je le mette à jour!

Publications similaires

Laisser un commentaire

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