Reconnaissance d’objets par IA avec une caméra sur Raspberry Pi : guide pas à pas

Raspberry Pi avec caméra HQ montée sur un mini trépied, prête pour la vision par ordinateur

Montrer un objet devant une caméra et voir apparaître son nom à l’écran : « pomme », « chaise », « personne ». Ce n’est plus réservé aux labos. Avec un Raspberry Pi, un module caméra et un petit modèle d’intelligence artificielle déjà entraîné, vous pouvez monter un prototype de reconnaissance d’objets en un après-midi.

Dans ce guide, on avance pas à pas : le matériel, l’idée derrière la détection, l’installation sur Raspberry Pi OS, un premier programme Python, puis des conseils de lumière et de vie privée. On choisit une seule méthode réaliste pour débuter : Picamera2 pour capturer l’image, et OpenCV avec un modèle MobileNet-SSD déjà prêt (80 catégories du jeu COCO). Pas besoin d’entraîner quoi que ce soit pour commencer.

À quoi ça sert, concrètement ?

La reconnaissance d’objets, c’est simplement demander à l’ordinateur : « qu’est-ce qu’il y a dans cette image ? » Voici des usages du quotidien, sans jargon :

  • Projet scolaire : compter des pièces sur un tapis, reconnaître des formes, montrer comment une machine « voit ».
  • Petit tri : distinguer deux types d’objets sur un convoyeur artisanal ou une table de travail.
  • Démo sécurité : détecter la présence d’une personne dans une zone, avec une LED ou un buzzer en signal.
  • Comptage : combien de bouteilles passent devant la caméra en une minute.

Si vous préférez d’abord parler à votre Pi plutôt que de le faire regarder, notre guide pour créer un assistant vocal ChatGPT sur Raspberry Pi 5 complète bien ce projet vision.

Ce qu’il vous faut

La liste reste courte. L’essentiel, c’est une carte assez récente et une caméra stable :

  • Un Raspberry Pi 4 ou 5 : 2 Go de RAM suffisent pour commencer. Sur notre boutique, le Raspberry Pi 4 Model B 2 Go est une base solide. Le Pi 5 ira plus vite si vous en avez un.
  • Une caméra : module officiel CSI (Camera Module v2, v3, HQ ou AI Camera) branché sur le connecteur caméra, ou une webcam USB. Les deux marchent ; le câble CSI est plus propre, l’USB plus simple à brancher.
  • Une carte microSD de 32 Go minimum, avec Raspberry Pi OS 64 bits (Bookworm) déjà installé.
  • Une alimentation correcte : 5 V via USB-C, capable de fournir assez de courant (surtout sur Pi 4/5). Un chargeur téléphone trop faible provoque des redémarrages bizarres.
  • Un écran ou un accès distant : clavier + écran, ou simplement SSH / bureau à distance depuis votre PC.
  • Optionnel : un petit trépied ou un support pour fixer la caméra, et un boîtier si le montage doit rester posé longtemps.

Pour comparer les cartes de la gamme, jetez un œil à notre rayon Raspberry dans les kits et cartes de développement.

Raspberry Pi dans un boîtier noir relié à un module caméra par un nappe CSI blanche
Le module caméra se branche sur le connecteur CSI du Raspberry Pi avec une nappe plate. Photo : ZippeyKeys12, CC BY-SA 4.0, via Wikimedia Commons

Comment la caméra et l’IA se parlent (en mots simples)

Imaginez trois étapes, comme une chaîne de montage :

  • 1. La photo : la caméra capture une image, par exemple 30 fois par seconde.
  • 2. Le modèle : un fichier déjà entraîné (ici MobileNet-SSD) a « vu » des milliers d’images de chats, voitures, chaises… Il ne comprend pas vraiment ; il reconnaît des motifs de pixels.
  • 3. Les étiquettes : le programme dessine un rectangle autour de chaque objet trouvé et écrit un nom avec un score de confiance, par exemple « bottle 0.87 ».

Vous n’entraînez rien au début : vous utilisez un modèle public. Plus tard, si vous voulez reconnaître vos propres pièces d’usine, il faudra un entraînement dédié. Notre dossier sur l’IA embarquée sur ESP32 et Raspberry Pi explique les limites du local versus le cloud.

Module Raspberry Pi AI Camera vu de face, avec objectif au centre et logo Raspberry Pi
La Raspberry Pi AI Camera intègre un petit accélérateur pour faire tourner des modèles de détection sur la carte. Photo : Suyash Dwivedi, CC BY-SA 4.0, via Wikimedia Commons

Étape 1 : brancher et activer la caméra

Éteignez la carte avant de brancher une caméra CSI. La nappe se connecte au port camera, contacts métalliques vers le bon côté (suivez le guide de votre module). Pour une webcam USB, branchez-la simplement après le démarrage.

Sur Raspberry Pi OS Bookworm, Picamera2 est en général déjà disponible. Vérifiez que la caméra est vue :

# Caméra CSI (module officiel)
rpicam-hello -t 2000

# Ou liste des périphériques vidéo (USB inclus)
v4l2-ctl --list-devices

Si rpicam-hello affiche une image pendant deux secondes, la partie matérielle est bonne. Sinon, revérifiez la nappe (souvent à l’envers) et redémarrez.

Étape 2 : installer Python et les bibliothèques

On crée un environnement isolé, comme pour tout projet Python sur le Pi :

sudo apt update
sudo apt install -y python3-venv python3-picamera2 libopencv-dev python3-opencv
python3 -m venv --system-site-packages ~/vision
source ~/vision/bin/activate
pip install --upgrade pip
pip install numpy

L’option --system-site-packages laisse votre venv utiliser Picamera2 et OpenCV installés par le système, ce qui évite bien des galères de compilation.

Étape 3 : télécharger un modèle prêt à l’emploi

MobileNet-SSD est léger et tourne correctement sur un Pi 4. Téléchargez les fichiers du modèle (réseau + noms de classes) dans un dossier dédié. Les liens officiels OpenCV / TensorFlow évoluent parfois : gardez les deux fichiers côte à côte, par exemple MobileNetSSD_deploy.prototxt, MobileNetSSD_deploy.caffemodel, et une liste de labels COCO.

Pour ce tutoriel, on suppose que vous avez placé dans ~/vision/modele/ :

  • deploy.prototxt — la structure du réseau
  • mobilenet_iter_73000.caffemodel — les poids entraînés
  • labels.txt — une ligne par classe (background, aeroplane, bicycle…)

Vous trouverez ces fichiers dans de nombreux dépôts d’exemples OpenCV DNN « MobileNet-SSD ». L’important : un seul jeu cohérent (prototxt + caffemodel + labels).

Étape 4 : le premier programme de détection

Ce script ouvre la caméra CSI avec Picamera2, envoie chaque image au modèle, dessine les rectangles et affiche le résultat. Adaptez les chemins des fichiers modèle si besoin :

import cv2
import numpy as np
from picamera2 import Picamera2

PROTOTXT = "modele/deploy.prototxt"
MODEL = "modele/mobilenet_iter_73000.caffemodel"
LABELS = [l.strip() for l in open("modele/labels.txt")]
SEUIL = 0.5  # ignorer les détections trop hésitantes

net = cv2.dnn.readNetFromCaffe(PROTOTXT, MODEL)
picam = Picamera2()
picam.configure(picam.create_preview_configuration(
    main={"format": "RGB888", "size": (640, 480)}))
picam.start()

while True:
    frame = picam.capture_array()
    (h, w) = frame.shape[:2]
    blob = cv2.dnn.blobFromImage(cv2.resize(frame, (300, 300)),
                                0.007843, (300, 300), 127.5)
    net.setInput(blob)
    detections = net.forward()

    for i in range(detections.shape[2]):
        conf = float(detections[0, 0, i, 2])
        if conf < SEUIL:
            continue
        idx = int(detections[0, 0, i, 1])
        box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
        (x1, y1, x2, y2) = box.astype(int)
        label = f"{LABELS[idx]}: {conf:.2f}"
        cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
        cv2.putText(frame, label, (x1, y1 - 8),
                    cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1)

    cv2.imshow("Detection", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

picam.stop()
cv2.destroyAllWindows()

Lancez-le depuis l’environnement activé : cd ~/vision && source bin/activate && python detect.py. Une fenêtre s’ouvre. Placez une bouteille, un livre ou votre main devant la caméra. Quand un rectangle vert apparaît avec un nom, ça marche !

Vous utilisez une webcam USB plutôt qu’un module CSI ? Remplacez le bloc Picamera2 par cap = cv2.VideoCapture(0) et lisez les images avec ret, frame = cap.read(). Le reste du code (blob, réseau, rectangles) ne change pas.

Que signifient les chiffres à l’écran ?

Le score (0.50, 0.87…) est une confiance, pas une vérité absolue. En dessous de 0.5, on ignore souvent le résultat pour limiter les fausses alertes. Si le modèle annonce « bottle » alors que c’est une tasse, ce n’est pas cassé : la forme se ressemble, et le modèle n’a pas été entraîné sur vos objets. Augmentez la lumière, rapprochez l’objet, ou montez le seuil à 0.6.

Étape 5 : éclairage, distance et fausses détections

La caméra voit mal dans le noir, et l’IA aussi. Quelques règles simples changent tout :

  • Lumière homogène : évitez le contre-jour (fenêtre derrière l’objet). Une lampe de bureau sur le côté aide beaucoup.
  • Distance : commencez entre 30 cm et 1 m. Trop près, l’objet déborde ; trop loin, il devient un point.
  • Fond simple : un fond uni réduit les confusions. Un bureau encombré multiplie les fausses étiquettes.
  • Stabilité : fixez la caméra. Un flou de mouvement fait chuter la confiance.
  • Seuil : montez SEUIL si trop de rectangles inutiles ; baissez-le un peu si rien n’est détecté alors que l’objet est clair.

Vie privée : quelques gestes responsables

Une caméra qui « reconnaît » des personnes reste une caméra. Même pour un projet amateur :

  • Prévenez les gens filmés, surtout dans un lieu partagé.
  • Ne diffusez pas le flux sur Internet sans protection (mot de passe, réseau local seulement).
  • Stockez le moins d’images possible ; pour un compteur, un nombre suffit souvent.
  • Ajoutez un interrupteur physique ou un voyant LED allumé quand la caméra est active.

Pour signaler une détection sans écran, une colonne lumineuse LED avec buzzer branchée sur le GPIO donne un retour immédiat : vert = rien, orange = objet vu, rouge = alerte.

Pour aller plus loin

Quand le premier rectangle vert vous fait sourire, voici des suites naturelles, une à la fois :

  • Compter au lieu d’afficher : incrémentez un compteur à chaque nouvelle détection stable, puis envoyez le total sur une page web (comme pour notre station météo ESP32 + BME280).
  • Passer à un modèle plus moderne : YOLO nano ou un modèle TensorFlow Lite, plus précis, un peu plus gourmand.
  • Caméra IA dédiée : la Raspberry Pi AI Camera exécute une partie du modèle sur la caméra elle-même, ce qui soulage le processeur.
  • Mélanger capteurs et vision : détecter une personne puis lire une température, ou déclencher un autre module. Notre comparatif Arduino ou ESP32 aide si vous ajoutez un microcontrôleur à côté du Pi.

En résumé

Une carte Raspberry Pi, une caméra, Picamera2, OpenCV et un modèle MobileNet-SSD déjà entraîné : voilà une base claire pour la reconnaissance d’objets. Le plus important n’est pas le modèle le plus récent, c’est une image nette, bien éclairée, et un seuil de confiance raisonnable.

Choisissez votre carte dans le rayon Raspberry, branchez la caméra, lancez le script, et testez avec ce que vous avez sous la main. Si une étape bloque, écrivez-nous : on vous aidera à faire apparaître ce premier rectangle vert.

Ce site utilise des cookies pour vous offrir une meilleure expérience de navigation. En naviguant sur ce site, vous acceptez notre utilisation des cookies.