Guide de démarrage rapide : Raspberry Pi avec Ultralytics YOLO11
Ce guide complet fournit une marche à suivre détaillée pour déployer Ultralytics YOLO11 sur des appareils Raspberry Pi. En outre, il présente des repères de performance pour démontrer les capacités de YOLO11 sur ces appareils petits et puissants.
Regarder : Mises à jour et améliorations du Raspberry Pi 5.
Note
Ce guide a été testé avec les Raspberry Pi 4 et Raspberry Pi 5 utilisant le dernier Raspberry Pi OS Bookworm (Debian 12). L'utilisation de ce guide pour des appareils Raspberry Pi plus anciens tels que le Raspberry Pi 3 devrait fonctionner tant que le même Raspberry Pi OS Bookworm est installé.
Qu'est-ce que le Raspberry Pi ?
Le Raspberry Pi est un petit ordinateur monocarte abordable. Il est devenu populaire pour un large éventail de projets et d'applications, de la domotique 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. Il existe différents modèles aux spécifications variées, mais ils partagent tous la même philosophie de conception de base, à savoir être peu coûteux, compacts et polyvalents.
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 |
CPU Fréquence maximale | 1.4GHz | 1,8 GHz | 2.4GHz |
GPU | Vidéocore IV | Vidéocore VI | VideoCore VII |
GPU Fréquence maximale | 400Mhz | 500Mhz | 800Mhz |
MĂ©moire | 1GB LPDDR2 SDRAM | 1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM | 4GB, 8GB LPDDR4X-4267 SDRAM |
PCIe | N/A | N/A | Interface 1xPCIe 2.0 |
Puissance maximale absorbée | 2,5A@5V | 3A@5V | 5A@5V (PD activé) |
Qu'est-ce que le 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 Fondation Raspberry Pi. Raspberry Pi OS est hautement optimisé pour le Raspberry Pi avec des processeurs ARM et utilise un environnement de bureau LXDE modifié avec le gestionnaire de fenêtres Openbox. Raspberry Pi OS est en développement actif, l'accent étant mis sur l'amélioration de la stabilité et des performances du plus grand nombre possible de paquets Debian sur le Raspberry Pi.
Flash Raspberry Pi OS to 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 avec le système d'exploitation. Suivez la documentation de démarrage détaillée de Raspberry Pi pour préparer votre appareil à la première utilisation.
Mise en place Ultralytics
Il y a deux façons de configurer le paquet Ultralytics sur Raspberry Pi pour construire votre prochain projet de vision par ordinateur. Vous pouvez utiliser l'une ou l'autre.
Commencer avec Docker
La façon la 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 le Raspberry Pi. Ceci est basé sur l'image Docker arm64v8/debian qui contient Debian 12 (Bookworm) dans un environnement Python3.
Après cela, passez à la section Utiliser NCNN sur Raspberry Pi.
DĂ©marrer sans Docker
Installer le paquet Ultralytics
Ici, nous allons installer le paquet Ultralytics sur le Raspberry Pi avec les dépendances optionnelles afin que nous puissions exporter les modèles PyTorch vers d'autres formats différents.
-
Mise à jour de la liste des paquets, installation de pip et mise à niveau vers la dernière version
-
Installer
ultralytics
paquetage pip avec dépendances optionnelles -
Redémarrer l'appareil
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 lorsque l'on travaille avec des appareils Raspberry Pi, car NCNN est hautement optimisé pour les plates-formes mobiles/embarquées (telles que l'architecture ARM). Nous recommandons donc d'utiliser NCNN avec le Raspberry Pi.
Convertir le modèle en NCNN et lancer 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")
Conseil
Pour plus de détails sur les options d'exportation prises en charge, consultez la page de documentationUltralytics sur les options de déploiement.
Raspberry Pi 5 YOLO11 Benchmarks
YOLO11 L'équipe de Ultralytics a effectué des tests de référence sur neuf modèles différents, en mesurant la vitesse et la précision: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel , TF GraphDef , TF Lite, PaddlePaddle, NCNN. Les tests ont été effectués sur un Raspberry Pi 5 à la précision FP32 avec une taille d'image d'entrée par défaut de 640.
Tableau de comparaison
Nous n'avons inclus des benchmarks que pour les modèles YOLO11n et YOLO11s, car les autres modèles sont trop grands pour fonctionner sur les Raspberry Pis et n'offrent pas de performances décentes.
Tableau comparatif détaillé
Le tableau ci-dessous représente les résultats du benchmark pour deux modèles différents (YOLO11n, YOLO11s) sur neuf formats différents (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel , TF GraphDef , TF Lite, PaddlePaddle, 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 (MB) | mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|
PyTorch | âś… | 5.4 | 0.6100 | 405.238 |
TorchScript | âś… | 10.5 | 0.6082 | 526.628 |
ONNX | âś… | 10.2 | 0.6082 | 168.082 |
OpenVINO | âś… | 10.4 | 0.6082 | 81.192 |
TF SavedModel | âś… | 25.8 | 0.6082 | 377.968 |
TF GraphDef | âś… | 10.3 | 0.6082 | 487.244 |
TF Lite | âś… | 10.3 | 0.6082 | 317.398 |
PaddlePaddle | âś… | 20.4 | 0.6082 | 561.892 |
MNN | âś… | 10.1 | 0.6106 | 112.554 |
NCNN | âś… | 10.2 | 0.6106 | 88.026 |
Format | Statut | Taille sur le disque (MB) | mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|
PyTorch | âś… | 18.4 | 0.7526 | 1011.60 |
TorchScript | âś… | 36.5 | 0.7416 | 1268.502 |
ONNX | âś… | 36.3 | 0.7416 | 324.17 |
OpenVINO | âś… | 36.4 | 0.7416 | 179.324 |
TF SavedModel | âś… | 91.1 | 0.7416 | 714.382 |
TF GraphDef | âś… | 36.4 | 0.7416 | 1019.83 |
TF Lite | âś… | 36.4 | 0.7416 | 849.86 |
PaddlePaddle | âś… | 72.5 | 0.7416 | 1276.34 |
MNN | âś… | 36.2 | 0.7409 | 273.032 |
NCNN | âś… | 36.2 | 0.7419 | 194.858 |
Testé avec Ultralytics 8.3.39
Reproduire nos résultats
Pour reproduire les résultats de Ultralytics sur tous les formats d'exportation, exécutez le code suivant :
Exemple
Notez que les résultats de l'évaluation comparative 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 de l'exécution de l'évaluation comparative. Pour obtenir les résultats les plus fiables, utilisez un ensemble de données contenant un grand nombre d'images, c'est-à -dire un ensemble de données contenant un grand nombre d'images, c'est-à -dire un ensemble de données contenant un grand nombre d'images. data='coco8.yaml' (4 val images), or
data='coco.yaml'` (5000 val images).
Utiliser la caméra Raspberry Pi
Lorsque l'on utilise le Raspberry Pi pour des projets de vision par ordinateur, il peut être essentiel d'obtenir des flux vidéo en temps réel pour effectuer l'inférence. Le connecteur MIPI CSI embarqué sur le 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 .
Conseil
En savoir plus sur les différents modules de caméra proposés par Raspberry Pi et sur la manière de commencer à utiliser les modules de caméra Raspberry Pi.
Note
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 l'appareil photo
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.
Conseil
En savoir plus sur rpicam-hello
utilisation de la documentation officielle du Raspberry Pi
Inférence avec la caméra
Il existe deux méthodes pour utiliser la caméra Raspberry Pi afin d'inférer des 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 de pouvoir utiliser l'URL de ce flux comme entrée lors de l'inférence ultérieure. Exécutez la commande suivante pour démarrer le flux TCP.
En savoir plus sur rpicam-vid
utilisation de la documentation officielle du Raspberry Pi
Conseil
Consultez notre document sur les sources d'inférence si vous souhaitez modifier le type d'entrée image/vidéo.
Meilleures pratiques pour l'utilisation du Raspberry Pi
Il existe quelques bonnes pratiques Ă suivre afin d'obtenir des performances maximales sur les Raspberry Pis fonctionnant sous YOLO11.
-
Utiliser un disque dur SSD
Lorsque le Raspberry Pi est utilisé en continu 24x7, il est recommandé d'utiliser un SSD pour le système, car une carte SD ne pourra pas supporter des écritures continues et risque de se briser. Avec le connecteur PCIe embarqué sur le Raspberry Pi 5, vous pouvez désormais connecter des SSD à l'aide d'un adaptateur tel que la NVMe Base pour Raspberry Pi 5.
-
Flash sans interface graphique
Lors du flashage du Raspberry Pi OS, vous pouvez choisir de ne pas installer l'environnement de bureau (Raspberry Pi OS Lite), ce qui permet d'Ă©conomiser un peu de RAM sur l'appareil, laissant ainsi plus d'espace pour le traitement de la vision par ordinateur.
Prochaines Ă©tapes
Félicitations pour avoir réussi à configurer YOLO sur votre Raspberry Pi ! Pour plus d'informations et de soutien, visitez Ultralytics YOLO11 Docs et Kashmir World Foundation.
Remerciements et citations
Ce guide a été initialement créé par Daan Eeltink pour la Kashmir World Foundation, une organisation qui se consacre à l'utilisation de YOLO pour la conservation des espèces menacées. Nous saluons leur travail de pionnier et leur action éducative 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 son 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 :
- Mise Ă jour de la liste des paquets et installation
pip
: - Installer le paquetage Ultralytics avec les dépendances optionnelles :
- Redémarrez l'appareil pour appliquer les modifications :
Pour des instructions détaillées, reportez-vous à la section Démarrer sans Docker.
Pourquoi utiliser le format NCNN de Ultralytics YOLO11 sur Raspberry Pi pour des tâches d'intelligence artificielle ?
Ultralytics YOLO11Le format NCNN est hautement optimisé pour les plateformes mobiles et embarquées, ce qui le rend idéal pour l'exécution de tâches d'IA sur les appareils Raspberry Pi. NCNN maximise les performances d'inférence en tirant parti de l'architecture ARM, offrant 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, visitez la page de documentationUltralytics 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 les 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")
Pour plus de détails, voir la section Utiliser NCNN sur Raspberry Pi.
Quelles sont les différences matérielles entre le Raspberry Pi 4 et le Raspberry Pi 5 en ce qui concerne l'exécution de YOLO11?
Les principales différences sont les suivantes :
- CPU: Le Raspberry Pi 4 utilise Broadcom BCM2711, Cortex-A72 64-bit SoC, tandis que le Raspberry Pi 5 utilise Broadcom BCM2712, Cortex-A76 64-bit SoC.
- Fréquence maximale CPU : Le Raspberry Pi 4 a une fréquence maximale de 1,8 GHz, tandis que le Raspberry Pi 5 atteint 2,4 GHz.
- MĂ©moire: Le Raspberry Pi 4 offre jusqu'Ă 8 Go de SDRAM LPDDR4-3200, tandis que le Raspberry Pi 5 dispose de SDRAM LPDDR4X-4267, disponible en variantes de 4 Go et 8 Go.
Ces améliorations contribuent à de meilleurs benchmarks de performance pour les modèles YOLO11 sur Raspberry Pi 5 par rapport à Raspberry Pi 4. Reportez-vous au 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 :
-
Utilisation
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:
Pour des instructions d'installation détaillées, consultez la section Inférence avec la caméra.