Skip to content

Guide de démarrage rapide : Raspberry Pi avec Ultralytics YOLOv8

Ce guide complet fournit une marche à suivre détaillée pour déployer Ultralytics YOLOv8 sur les appareils Raspberry Pi. En outre, il présente des repères de performance pour démontrer les capacités de YOLOv8 sur ces appareils petits et puissants.



Regarde : Mises à jour et améliorations du Raspberry Pi 5.

Note

Ce guide a été testé avec les Raspberry Pi 4 et Raspberry Pi 5 fonctionnant avec 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 ?

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 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 avec des spécifications variables, 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, SoC Cortex-A72 64 bits Broadcom BCM2712, SoC Cortex-A76 64 bits
CPU Fréquence maximale 1.4GHz 1,8 GHz 2.4GHz
GPU Videocore IV Videocore 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 par empilement Openbox. Raspberry Pi OS est en cours de 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 Raspberry Pi.

Flash 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 avec le système d'exploitation. Suis la documentation de démarrage détaillée de Raspberry Pi pour préparer ton 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 ton prochain projet de vision par ordinateur. Tu peux utiliser l'une ou l'autre.

Commence avec Docker

La façon la plus rapide de commencer avec Ultralytics YOLOv8 sur Raspberry Pi est de fonctionner avec une image docker préconstruite pour Raspberry Pi.

Exécute la commande ci-dessous pour tirer le conteneur Docker et l'exécuter sur le Raspberry Pi. Celui-ci 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 que c'est fait, passe Ă  la section Utiliser NCNN sur Raspberry Pi.

DĂ©marrer sans Docker

Installer le paquet Ultralytics

Ici, nous allons installer Ultralytics sur le Raspberry Pi avec des dépendances optionnelles afin que nous puissions exporter le PyTorch modèles à d’autres formats différents.

  1. 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
    
  2. Installer ultralytics paquet pip avec dépendances optionnelles

    pip install ultralytics[export]
    
  3. Redémarre l'appareil

    sudo reboot
    

Utilise 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 de périphériques Raspberry Pi car NCNN est hautement optimisé pour les plates-formes mobiles/embarquées (telles que l’architecture ARM). Par conséquent, notre recommandation est d’utiliser NCNN avec Raspberry Pi.

Convertir le modèle en NCNN et lancer l'inférence

Le modèle YOLOv8n au format PyTorch est converti en NCNN pour effectuer une inférence avec le modèle exporté.

Exemple

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Export the model to NCNN format
model.export(format="ncnn")  # creates 'yolov8n_ncnn_model'

# Load the exported NCNN model
ncnn_model = YOLO("yolov8n_ncnn_model")

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to NCNN format
yolo export model=yolov8n.pt format=ncnn  # creates 'yolov8n_ncnn_model'

# Run inference with the exported model
yolo predict model='yolov8n_ncnn_model' source='https://ultralytics.com/images/bus.jpg'

Astuce

Pour plus de détails sur les options d'exportation prises en charge, visite la page de documentationUltralytics sur les options de déploiement.

Raspberry Pi 5 vs Raspberry Pi 4 YOLOv8 Benchmarks

YOLOv8 ont été effectués par le Ultralytics Équipe sur neuf formats de modèles différents mesurant la vitesse et la précision : PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite PaddlePaddle, NCNN. Les benchmarks ont été exécutés sur Raspberry Pi 5 et Raspberry Pi 4 avec une précision FP32 avec une taille d’image d’entrée par défaut de 640.

Note

Nous n'avons inclus des benchmarks que pour les modèles YOLOv8n et YOLOv8s car les autres modèles sont trop grands pour fonctionner sur le Raspberry Pis et n'offrent pas de performances décentes.

Tableau de comparaison

Performance

NVIDIA L'écosystème Jetson

NVIDIA L'écosystème Jetson

Tableau comparatif détaillé

Le tableau ci-dessous présente les résultats de référence pour deux modèles différents (YOLOv8n, YOLOv8s) dans neuf formats différents (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite PaddlePaddle, NCNN), fonctionnant à la fois sur Raspberry Pi 4 et 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 âś… 6.2 0.6381 508.61
TorchScript âś… 12.4 0.6092 558.38
ONNX âś… 12.2 0.6092 198.69
OpenVINO âś… 12.3 0.6092 704.70
TF SavedModel âś… 30.6 0.6092 367.64
TF GraphDef âś… 12.3 0.6092 473.22
TF Lite âś… 12.3 0.6092 380.67
PaddlePaddle âś… 24.4 0.6092 703.51
NCNN âś… 12.2 0.6034 94.28
Format Statut Taille sur le disque (MB) mAP50-95(B) Temps d'inférence (ms/im)
PyTorch âś… 21.5 0.6967 969.49
TorchScript âś… 43.0 0.7136 1110.04
ONNX âś… 42.8 0.7136 451.37
OpenVINO âś… 42.9 0.7136 873.51
TF SavedModel âś… 107.0 0.7136 658.15
TF GraphDef âś… 42.8 0.7136 946.01
TF Lite âś… 42.8 0.7136 1013.27
PaddlePaddle âś… 85.5 0.7136 1560.23
NCNN âś… 42.7 0.7204 211.26
Format Statut Taille sur le disque (MB) mAP50-95(B) Temps d'inférence (ms/im)
PyTorch âś… 6.2 0.6381 1068.42
TorchScript âś… 12.4 0.6092 1248.01
ONNX âś… 12.2 0.6092 560.04
OpenVINO âś… 12.3 0.6092 534.93
TF SavedModel âś… 30.6 0.6092 816.50
TF GraphDef âś… 12.3 0.6092 1007.57
TF Lite âś… 12.3 0.6092 950.29
PaddlePaddle âś… 24.4 0.6092 1507.75
NCNN âś… 12.2 0.6092 414.73
Format Statut Taille sur le disque (MB) mAP50-95(B) Temps d'inférence (ms/im)
PyTorch âś… 21.5 0.6967 2589.58
TorchScript âś… 43.0 0.7136 2901.33
ONNX âś… 42.8 0.7136 1436.33
OpenVINO âś… 42.9 0.7136 1225.19
TF SavedModel âś… 107.0 0.7136 1770.95
TF GraphDef âś… 42.8 0.7136 2146.66
TF Lite âś… 42.8 0.7136 2945.03
PaddlePaddle âś… 85.5 0.7136 3962.62
NCNN âś… 42.7 0.7136 1042.39

Reproduis nos résultats

Pour reproduire les repères ci-dessus Ultralytics sur tous les formats d'exportation, exécute ce code :

Exemple

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
results = model.benchmarks(data="coco8.yaml", imgsz=640)
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco8.yaml imgsz=640

Note que les résultats des analyses comparatives 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 des analyses comparatives. Pour obtenir les résultats les plus fiables, utilise un ensemble de données contenant un grand nombre d'images, c'est-à-dire data='coco8.yaml' (4 val images), ordata='coco.yaml'` (5000 val images).

Utilise la caméra du Raspberry Pi

Lorsque l'on utilise le 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 des inférences. Le connecteur MIPI CSI intégré au Raspberry Pi te 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 YOLOv8 .

Note

Le Raspberry Pi 5 utilise des connecteurs CSI plus petits que le Raspberry Pi 4 (15 broches contre 22 broches), tu auras donc besoin d'un câble adaptateur 15 broches vers 22 broches pour te connecter à une caméra Raspberry Pi.

Teste l'appareil photo

Exécute la commande suivante après avoir connecté la caméra au Raspberry Pi. Tu devrais voir un flux vidéo en direct de la caméra pendant environ 5 secondes.

rpicam-hello

Inférence avec la caméra

Il existe deux méthodes pour utiliser la caméra du Raspberry Pi afin d'inférer des modèles YOLOv8 .

Utilisation

Nous pouvons utiliser picamera2qui est livré préinstallé avec Raspberry Pi OS pour accéder à la caméra et inférer les modèles YOLOv8 .

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 YOLOv8 model
model = YOLO("yolov8n.pt")

while True:
    # Capture frame-by-frame
    frame = picam2.capture_array()

    # Run YOLOv8 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 l'URL de ce flux comme entrée lors de l'inférence ultérieure. Exécute 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 de la documentation officielle du Raspberry Pi

Exemple

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Run inference
results = model("tcp://127.0.0.1:8888")
yolo predict model=yolov8n.pt source="tcp://127.0.0.1:8888"

Astuce

Consulte notre document sur les sources d'inférence si tu veux changer le type d'entrée image/vidéo.

Meilleures pratiques lors de l'utilisation de Raspberry Pi

Il y a quelques bonnes pratiques Ă  suivre afin d'obtenir des performances maximales sur les Raspberry Pis fonctionnant sous YOLOv8.

  1. Utilise un disque dur SSD

    Lorsque l'on utilise le Raspberry Pi pour une utilisation continue 24x7, il est recommandé d'utiliser un SSD pour le système, car une carte SD ne pourra pas supporter les écritures continues et risque de se casser. Avec le connecteur PCIe embarqué sur le Raspberry Pi 5, tu peux maintenant connecter des disques SSD à l'aide d'un adaptateur tel que la base NVMe pour Raspberry Pi 5.

  2. Flash sans interface graphique

    Lors du flashage de Raspberry Pi OS, tu peux choisir de ne pas installer l'environnement de bureau (Raspberry Pi OS Lite), ce qui permet d'économiser un peu de mémoire vive sur l'appareil, laissant ainsi plus d'espace pour le traitement de la vision par ordinateur.

Prochaines Ă©tapes

Félicitations pour avoir réussi à installer YOLO sur ton Raspberry Pi ! Pour plus d'informations et de soutien, visite Ultralytics YOLOv8 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 en voie de disparition. Nous reconnaissons leur travail de pionnier et leur souci d'éducation dans le domaine des technologies de détection d'objets.

Pour plus d'informations sur les activités de la Fondation mondiale du Cachemire, tu peux visiter son site Internet.

FAQ

Comment configurer Ultralytics YOLOv8 sur un Raspberry Pi sans utiliser Docker ?

Pour configurer Ultralytics YOLOv8 sur un Raspberry Pi sans Docker, suis les Ă©tapes suivantes :

  1. Mets Ă  jour la liste des paquets et installe-les pip:
    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Installe le paquetage Ultralytics avec les dépendances optionnelles :
    pip install ultralytics[export]
    
  3. Redémarre l'appareil pour appliquer les changements :
    sudo reboot
    

Pour des instructions détaillées, reporte-toi à la section Démarrer sans Docker.

Pourquoi devrais-je utiliser le format Ultralytics YOLOv8 's NCNN sur Raspberry Pi pour des tâches d'intelligence artificielle ?

Ultralytics YOLOv8Le format NCNN 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, ce qui permet un traitement plus rapide et plus efficace par rapport à d'autres formats. Pour plus de détails sur les options d'exportation prises en charge, visite la page de documentationUltralytics sur les options de déploiement.

Comment puis-je convertir un modèle YOLOv8 au format NCNN pour l'utiliser sur Raspberry Pi ?

Tu peux convertir un modèle PyTorch YOLOv8 au format NCNN en utilisant les commandes Python ou CLI :

Exemple

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Export the model to NCNN format
model.export(format="ncnn")  # creates 'yolov8n_ncnn_model'

# Load the exported NCNN model
ncnn_model = YOLO("yolov8n_ncnn_model")

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to NCNN format
yolo export model=yolov8n.pt format=ncnn  # creates 'yolov8n_ncnn_model'

# Run inference with the exported model
yolo predict model='yolov8n_ncnn_model' source='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 YOLOv8?

Les principales différences sont les suivantes :

  • CPU: Raspberry Pi 4 utilise Broadcom BCM2711, SoC Cortex-A72 64 bits, tandis que Raspberry Pi 5 utilise Broadcom BCM2712, SoC Cortex-A76 64 bits.
  • FrĂ©quence maximale CPU : 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 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 YOLOv8 sur le Raspberry Pi 5 par rapport au Raspberry Pi 4. Reporte-toi 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 YOLOv8 ?

Il existe deux méthodes pour configurer une caméra Raspberry Pi pour l'inférence YOLOv8 :

  1. 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("yolov8n.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()
    
  2. 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("yolov8n.pt")
    results = model("tcp://127.0.0.1:8888")
    

Pour des instructions de configuration détaillées, visite la section Inférence avec la caméra.



Créé le 2023-11-12, Mis à jour le 2024-07-05
Auteurs : glenn-jocher (9), IvorZhu331 (1), lakshanthad (2)

Commentaires