Guide de démarrage rapide : Raspberry Pi avec Ultralytics YOLO11
Ce guide complet fournit une procédure détaillée pour le déploiement d'Ultralytics YOLO11 sur les appareils Raspberry Pi. De plus, il présente des benchmarks de performance pour démontrer les capacités de YOLO11 sur ces appareils petits mais puissants.
Regarder : Mises à jour et améliorations de Raspberry Pi 5.
Remarque
Ce guide a été testé avec Raspberry Pi 4 et Raspberry Pi 5 exécutant la dernière version de Raspberry Pi OS Bookworm (Debian 12). L'utilisation de ce guide pour les anciens appareils Raspberry Pi tels que le Raspberry Pi 3 devrait fonctionner tant que le même Raspberry Pi OS Bookworm est installé.
Qu'est-ce que Raspberry Pi ?
Raspberry Pi est un petit ordinateur monocarte abordable. Il est devenu populaire pour un large éventail de projets et d'applications, de l'automatisation domestique amateur aux utilisations industrielles. Les cartes Raspberry Pi sont capables d'exécuter une variété de systèmes d'exploitation, et elles offrent des broches GPIO (General Purpose Input/Output) qui permettent une intégration facile avec des capteurs, des actionneurs et d'autres composants matériels. Elles sont disponibles en différents modèles avec des spécifications variables, mais elles partagent toutes la même philosophie de conception de base, à savoir être peu coûteuses, compactes et polyvalentes.
Comparaison des séries Raspberry Pi
Raspberry Pi 3 | Raspberry Pi 4 | Raspberry Pi 5 | |
---|---|---|---|
CPU | Broadcom BCM2837, Cortex-A53 64Bit SoC | Broadcom BCM2711, Cortex-A72 64Bit SoC | Broadcom BCM2712, Cortex-A76 64Bit SoC |
Fréquence CPU maximale | 1,4 GHz | 1,8 GHz | 2,4 GHz |
GPU | Videocore IV | Videocore VI | VideoCore VII |
Fréquence maximale du GPU | 400 Mhz | 500 MHz | 800 MHz |
Mémoire | 1 Go LPDDR2 SDRAM | 1 Go, 2 Go, 4 Go, 8 Go LPDDR4-3200 SDRAM | 4 Go, 8 Go SDRAM LPDDR4X-4267 |
PCIe | N/A | N/A | 1x Interface PCIe 2.0 |
Consommation électrique maximale | 2,5 A à 5 V | 3A@5V | 5A@5V (compatible PD) |
Qu'est-ce que Raspberry Pi OS ?
Raspberry Pi OS (anciennement connu sous le nom de Raspbian) est un système d'exploitation de type Unix basé sur la distribution Debian GNU/Linux pour la famille Raspberry Pi d'ordinateurs monocartes compacts distribués par la Raspberry Pi Foundation. Raspberry Pi OS est hautement optimisé pour le Raspberry Pi avec des CPU ARM et utilise un environnement de bureau LXDE modifié avec le gestionnaire de fenêtres à empilement Openbox. Raspberry Pi OS est en développement actif, avec un accent sur l'amélioration de la stabilité et des performances d'autant de paquets Debian que possible sur Raspberry Pi.
Flasher Raspberry Pi OS sur Raspberry Pi
La première chose à faire après avoir mis la main sur un Raspberry Pi est de flasher une carte micro-SD avec Raspberry Pi OS, de l'insérer dans l'appareil et de démarrer dans le système d'exploitation. Suivez la documentation de démarrage détaillée de Raspberry Pi pour préparer votre appareil à sa première utilisation.
Configurer Ultralytics
Il existe deux façons de configurer le package Ultralytics sur Raspberry Pi pour construire votre prochain projet de vision par ordinateur. Vous pouvez utiliser l'une ou l'autre.
Commencer avec Docker
Le moyen le plus rapide de démarrer avec Ultralytics YOLO11 sur Raspberry Pi est d'utiliser une image Docker pré-construite pour Raspberry Pi.
Exécutez la commande ci-dessous pour extraire le conteneur Docker et l'exécuter sur Raspberry Pi. Ceci est basé sur l'image Docker arm64v8/debian qui contient Debian 12 (Bookworm) dans un environnement Python3.
t=ultralytics/ultralytics:latest-arm64
sudo docker pull $t && sudo docker run -it --ipc=host $t
Une fois cela fait, passez à la section Utiliser NCNN sur Raspberry Pi.
Commencer sans Docker
Installer le paquet Ultralytics
Ici, nous allons installer le package Ultralytics sur le Raspberry Pi avec les dépendances optionnelles afin de pouvoir exporter les modèles PyTorch vers d'autres formats différents.
-
Mettre à jour la liste des paquets, installer pip et mettre à niveau vers la dernière version
sudo apt update sudo apt install python3-pip -y pip install -U pip
-
Installer
ultralytics
Paquet pip avec des dépendances optionnellespip install ultralytics[export]
-
Redémarrez l'appareil
sudo reboot
Utiliser NCNN sur Raspberry Pi
Parmi tous les formats d'exportation de modèles pris en charge par Ultralytics, NCNN offre les meilleures performances d'inférence lors de l'utilisation d'appareils Raspberry Pi, car NCNN est hautement optimisé pour les plateformes mobiles/embarquées (telles que l'architecture ARM).
Convertir le modèle en NCNN et exécuter l'inférence
Le modèle YOLO11n au format PyTorch est converti en NCNN pour exécuter l'inférence avec le modèle exporté.
Exemple
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates 'yolo11n_ncnn_model'
# Load the exported NCNN model
ncnn_model = YOLO("yolo11n_ncnn_model")
# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to NCNN format
yolo export model=yolo11n.pt format=ncnn # creates 'yolo11n_ncnn_model'
# Run inference with the exported model
yolo predict model='yolo11n_ncnn_model' source='https://ultralytics.com/images/bus.jpg'
Astuce
Pour plus de détails sur les options d'exportation prises en charge, consultez la page de la documentation Ultralytics sur les options de déploiement.
Raspberry Pi 5 YOLO11 Benchmarks
Les benchmarks YOLO11 ont été exécutés par l'équipe Ultralytics sur dix formats de modèles différents, mesurant la vitesse et la précision : PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, MNN, NCNN. Les benchmarks ont été exécutés sur un Raspberry Pi 5 à une précision FP32 avec une taille d'image d'entrée par défaut de 640.
Tableau comparatif
Nous n'avons inclus que des benchmarks pour les modèles YOLO11n et YOLO11s, car les autres tailles de modèles sont trop importantes pour être exécutées sur les Raspberry Pi et n'offrent pas des performances correctes.

Tableau comparatif détaillé
Le tableau ci-dessous représente les résultats de référence pour deux modèles différents (YOLO11n, YOLO11s) dans dix formats différents (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, MNN, NCNN), fonctionnant sur un Raspberry Pi 5, nous donnant l'état, la taille, la métrique mAP50-95(B) et le temps d'inférence pour chaque combinaison.
Performance
Format | Statut | Taille sur le disque (Mo) | mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 5.4 | 0.5101 | 387.63 |
TorchScript | ✅ | 10.5 | 0.5077 | 457.84 |
ONNX | ✅ | 10.2 | 0.5077 | 191.09 |
OpenVINO | ✅ | 10.4 | 0.5058 | 84.76 |
TF SavedModel | ✅ | 25.9 | 0.5077 | 306.94 |
TF GraphDef | ✅ | 10.3 | 0.5077 | 309.82 |
TF Lite | ✅ | 10.3 | 0.5077 | 425.77 |
PaddlePaddle | ✅ | 20.5 | 0.5077 | 463.93 |
MNN | ✅ | 10.1 | 0.5059 | 114.97 |
NCNN | ✅ | 10.2 | 0.5031 | 94.03 |
Format | Statut | Taille sur le disque (Mo) | mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 18.4 | 0.5791 | 962.69 |
TorchScript | ✅ | 36.5 | 0.5782 | 1181.94 |
ONNX | ✅ | 36.3 | 0.5782 | 449.85 |
OpenVINO | ✅ | 36.4 | 0.5810 | 181.53 |
TF SavedModel | ✅ | 91.0 | 0.5782 | 660.62 |
TF GraphDef | ✅ | 36.4 | 0.5782 | 669.23 |
TF Lite | ✅ | 36.3 | 0.5782 | 1093.41 |
PaddlePaddle | ✅ | 72.6 | 0.5782 | 1140.61 |
MNN | ✅ | 36.2 | 0.5805 | 274.63 |
NCNN | ✅ | 36.2 | 0.5784 | 224.20 |
Étalonné avec Ultralytics 8.3.152
Remarque
Le temps d'inférence n'inclut pas le prétraitement ni le post-traitement.
Reproduire nos résultats
Pour reproduire les benchmarks Ultralytics ci-dessus sur tous les formats d’exportation, exécutez ce code :
Exemple
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Benchmark YOLO11n speed and accuracy on the COCO128 dataset for all all export formats
results = model.benchmark(data="coco128.yaml", imgsz=640)
# Benchmark YOLO11n speed and accuracy on the COCO128 dataset for all all export formats
yolo benchmark model=yolo11n.pt data=coco128.yaml imgsz=640
Notez que les résultats des benchmarks peuvent varier en fonction de la configuration matérielle et logicielle exacte d'un système, ainsi que de la charge de travail actuelle du système au moment où les benchmarks sont exécutés. Pour obtenir les résultats les plus fiables, utilisez un ensemble de données contenant un grand nombre d'images, c'est-à-dire data='coco.yaml'
(5000 images de validation).
Utiliser la caméra Raspberry Pi
Lors de l'utilisation de Raspberry Pi pour des projets de vision par ordinateur, il peut être essentiel de saisir des flux vidéo en temps réel pour effectuer l'inférence. Le connecteur MIPI CSI intégré au Raspberry Pi vous permet de connecter des modules de caméra Raspberry PI officiels. Dans ce guide, nous avons utilisé un module de caméra Raspberry Pi 3 pour saisir les flux vidéo et effectuer l'inférence à l'aide des modèles YOLO11.
Astuce
Apprenez-en davantage sur les différents modules de caméra proposés par Raspberry Pi et aussi comment démarrer avec les modules de caméra Raspberry Pi.
Remarque
Le Raspberry Pi 5 utilise des connecteurs CSI plus petits que le Raspberry Pi 4 (15 broches contre 22 broches). Vous aurez donc besoin d’un câble adaptateur 15 broches vers 22 broches pour vous connecter à une caméra Raspberry Pi.
Tester la caméra
Exécutez la commande suivante après avoir connecté la caméra au Raspberry Pi. Vous devriez voir un flux vidéo en direct de la caméra pendant environ 5 secondes.
rpicam-hello
Astuce
En savoir plus sur rpicam-hello
utilisation dans la documentation officielle de Raspberry Pi
Inférence avec caméra
Il existe 2 méthodes pour utiliser la caméra Raspberry Pi afin de réaliser l'inférence de modèles YOLO11.
Utilisation
Nous pouvons utiliser picamera2
qui est préinstallé avec Raspberry Pi OS pour accéder à la caméra et aux modèles d'inférence YOLO11.
Exemple
import cv2
from picamera2 import Picamera2
from ultralytics import YOLO
# Initialize the Picamera2
picam2 = Picamera2()
picam2.preview_configuration.main.size = (1280, 720)
picam2.preview_configuration.main.format = "RGB888"
picam2.preview_configuration.align()
picam2.configure("preview")
picam2.start()
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
while True:
# Capture frame-by-frame
frame = picam2.capture_array()
# Run YOLO11 inference on the frame
results = model(frame)
# Visualize the results on the frame
annotated_frame = results[0].plot()
# Display the resulting frame
cv2.imshow("Camera", annotated_frame)
# Break the loop if 'q' is pressed
if cv2.waitKey(1) == ord("q"):
break
# Release resources and close windows
cv2.destroyAllWindows()
Nous devons initier un flux TCP avec rpicam-vid
de la caméra connectée afin que nous puissions utiliser cette URL de flux comme entrée lors de l'inférence ultérieure. Exécutez la commande suivante pour démarrer le flux TCP.
rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888
En savoir plus sur rpicam-vid
utilisation dans la documentation officielle de Raspberry Pi
Exemple
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Run inference
results = model("tcp://127.0.0.1:8888")
yolo predict model=yolo11n.pt source="tcp://127.0.0.1:8888"
Astuce
Consultez notre document sur les Sources d’inférence si vous souhaitez modifier le type d’entrée image/vidéo.
Meilleures pratiques lors de l'utilisation de Raspberry Pi
Il existe quelques bonnes pratiques à suivre afin d'optimiser les performances sur les Raspberry Pi exécutant YOLO11.
-
Utiliser un SSD
Lors de l'utilisation de Raspberry Pi pour une utilisation continue 24h/24 et 7j/7, il est recommandé d'utiliser un SSD pour le système, car une carte SD ne pourra pas supporter les écritures continues et pourrait être endommagée. Avec le connecteur PCIe intégré sur le Raspberry Pi 5, vous pouvez désormais connecter des SSD à l'aide d'un adaptateur tel que le NVMe Base for Raspberry Pi 5.
-
Flasher sans interface graphique
Lors du flashage de Raspberry Pi OS, vous pouvez choisir de ne pas installer l'environnement de bureau (Raspberry Pi OS Lite), ce qui peut économiser un peu de RAM sur l'appareil, laissant plus d'espace pour le traitement de la vision par ordinateur.
-
Overclocker Raspberry Pi
Si vous souhaitez améliorer un peu les performances lors de l'exécution de modèles Ultralytics YOLO11 sur Raspberry Pi 5, vous pouvez overclocker le CPU de sa base de 2,4 GHz à 2,9 GHz et le GPU de 800 MHz à 1 GHz. Si le système devient instable ou se bloque, réduisez les valeurs d'overclocking par incréments de 100 MHz. Assurez-vous qu'un refroidissement adéquat est en place, car l'overclocking augmente la production de chaleur et peut entraîner une limitation thermique.
a. Mettre à niveau le logiciel
sudo apt update && sudo apt dist-upgrade
b. Ouvrez pour modifier le fichier de configuration
sudo nano /boot/firmware/config.txt
c. Ajoutez les lignes suivantes en bas
arm_freq=3000 gpu_freq=1000 force_turbo=1
d. Enregistrez et quittez en appuyant sur CTRL + X, puis sur Y, et appuyez sur ENTRÉE
e. Redémarrez le Raspberry Pi
Prochaines étapes
Félicitations pour avoir configuré YOLO avec succès sur votre Raspberry Pi ! Pour plus d’informations et d’assistance, consultez Ultralytics YOLO11 Docs et Kashmir World Foundation.
Remerciements et citations
Ce guide a été initialement créé par Daan Eeltink pour Kashmir World Foundation, une organisation dédiée à l'utilisation de YOLO pour la conservation des espèces menacées. Nous reconnaissons leur travail de pionnier et leur orientation pédagogique dans le domaine des technologies de détection d'objets.
Pour plus d'informations sur les activités de la Kashmir World Foundation, vous pouvez consulter leur site web.
FAQ
Comment configurer Ultralytics YOLO11 sur un Raspberry Pi sans utiliser Docker ?
Pour configurer Ultralytics YOLO11 sur un Raspberry Pi sans Docker, suivez ces étapes :
- Mettez à jour la liste des paquets et installez
pip
:sudo apt update sudo apt install python3-pip -y pip install -U pip
- Installer le paquet Ultralytics avec les dépendances optionnelles :
pip install ultralytics[export]
- Redémarrez l'appareil pour appliquer les modifications :
sudo reboot
Pour des instructions détaillées, consultez la section Démarrer sans Docker.
Pourquoi devrais-je utiliser le format NCNN d'Ultralytics YOLO11 sur Raspberry Pi pour les tâches d'IA ?
Le format NCNN d'Ultralytics YOLO11 est hautement optimisé pour les plateformes mobiles et embarquées, ce qui le rend idéal pour exécuter des tâches d'IA sur les appareils Raspberry Pi. NCNN maximise les performances d'inférence en tirant parti de l'architecture ARM, offrant ainsi un traitement plus rapide et plus efficace par rapport aux autres formats. Pour plus de détails sur les options d'exportation prises en charge, consultez la page de documentation Ultralytics sur les options de déploiement.
Comment puis-je convertir un modèle YOLO11 au format NCNN pour l'utiliser sur Raspberry Pi ?
Vous pouvez convertir un modèle PyTorch YOLO11 au format NCNN en utilisant des commandes Python ou CLI :
Exemple
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates 'yolo11n_ncnn_model'
# Load the exported NCNN model
ncnn_model = YOLO("yolo11n_ncnn_model")
# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to NCNN format
yolo export model=yolo11n.pt format=ncnn # creates 'yolo11n_ncnn_model'
# Run inference with the exported model
yolo predict model='yolo11n_ncnn_model' source='https://ultralytics.com/images/bus.jpg'
Pour plus de détails, consultez la section Utiliser NCNN sur Raspberry Pi.
Quelles sont les différences matérielles entre Raspberry Pi 4 et Raspberry Pi 5 qui sont pertinentes pour l'exécution de YOLO11 ?
Principales différences :
- CPU : Le Raspberry Pi 4 utilise un SoC Broadcom BCM2711 Cortex-A72 64 bits, tandis que le Raspberry Pi 5 utilise un SoC Broadcom BCM2712 Cortex-A76 64 bits.
- Fréquence CPU maximale : Raspberry Pi 4 a une fréquence maximale de 1,8 GHz, tandis que Raspberry Pi 5 atteint 2,4 GHz.
- Mémoire: Raspberry Pi 4 offre jusqu'à 8 Go de SDRAM LPDDR4-3200, tandis que Raspberry Pi 5 est doté de SDRAM LPDDR4X-4267, disponible en versions 4 Go et 8 Go.
Ces améliorations contribuent à de meilleures performances des modèles YOLO11 sur Raspberry Pi 5 par rapport à Raspberry Pi 4. Consultez le tableau de comparaison des séries Raspberry Pi pour plus de détails.
Comment puis-je configurer un module de caméra Raspberry Pi pour qu'il fonctionne avec Ultralytics YOLO11 ?
Il existe deux méthodes pour configurer une caméra Raspberry Pi pour l'inférence YOLO11 :
-
L'utilisation de
picamera2
:import cv2 from picamera2 import Picamera2 from ultralytics import YOLO picam2 = Picamera2() picam2.preview_configuration.main.size = (1280, 720) picam2.preview_configuration.main.format = "RGB888" picam2.preview_configuration.align() picam2.configure("preview") picam2.start() model = YOLO("yolo11n.pt") while True: frame = picam2.capture_array() results = model(frame) annotated_frame = results[0].plot() cv2.imshow("Camera", annotated_frame) if cv2.waitKey(1) == ord("q"): break cv2.destroyAllWindows()
-
Utilisation d’un flux TCP :
rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888
from ultralytics import YOLO model = YOLO("yolo11n.pt") results = model("tcp://127.0.0.1:8888")
Pour des instructions de configuration détaillées, consultez la section Inférence avec caméra.