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

Ce guide complet fournit une procédure détaillée pour déployer Ultralytics YOLO26 sur des appareils Raspberry Pi. De plus, il présente des benchmarks de performance pour démontrer les capacités de YOLO26 sur ces appareils petits et puissants.



Watch: Raspberry Pi 5 updates and improvements.
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 des appareils Raspberry Pi plus anciens, tels que le Raspberry Pi 3, devrait fonctionner tant que la même version de Raspberry Pi OS Bookworm est installée.

Qu'est-ce que Raspberry Pi ?

Raspberry Pi est un petit ordinateur monocarte abordable. Il est devenu populaire pour une large gamme de projets et d'applications, de la domotique amateur aux usages industriels. Les cartes Raspberry Pi sont capables d'exécuter divers 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. Ils existent en différents modèles avec des spécifications variables, mais ils partagent tous la même philosophie de conception de base : être peu coûteux, compacts et polyvalents.

Comparaison de la gamme Raspberry Pi

Raspberry Pi 3Raspberry Pi 4Raspberry Pi 5
CPUBroadcom BCM2837, SoC Cortex-A53 64 bitsBroadcom BCM2711, SoC Cortex-A72 64 bitsBroadcom BCM2712, SoC Cortex-A76 64 bits
Fréquence max du CPU1,4 GHz1,8 GHz2,4 GHz
GPUVideocore IVVideocore VIVideoCore VII
Fréquence max du GPU400 Mhz500 Mhz800 Mhz
Mémoire1 Go LPDDR2 SDRAM1 Go, 2 Go, 4 Go, 8 Go LPDDR4-3200 SDRAM4 Go, 8 Go LPDDR4X-4267 SDRAM
PCIeN/AN/AInterface 1xPCIe 2.0
Consommation électrique maximale2,5 A à 5 V3 A à 5 V5 A à 5 V (PD activé)

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 d'ordinateurs monocartes compacts Raspberry Pi, distribuée par la Raspberry Pi Foundation. 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, avec un accent mis sur l'amélioration de la stabilité et des performances du plus grand nombre possible de paquets Debian 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 le système d'exploitation. Suis la documentation de démarrage par Raspberry Pi pour préparer ton appareil pour sa première utilisation.

Configurer Ultralytics

Il existe deux façons de configurer le paquet Ultralytics sur Raspberry Pi pour construire ton prochain projet de Computer Vision. Tu peux utiliser l'une ou l'autre.

Commencer avec Docker

Le moyen le plus rapide de commencer avec Ultralytics YOLO26 sur Raspberry Pi est de l'exécuter avec une image Docker pré-construite pour Raspberry Pi.

Exécute la commande ci-dessous pour récupérer le conteneur Docker et l'exécuter sur Raspberry Pi. Cela 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, passe à la section Utiliser NCNN sur Raspberry Pi.

Commencer sans Docker

Installer le package Ultralytics

Ici, nous allons installer le paquet Ultralytics sur le Raspberry Pi avec des dépendances optionnelles afin de pouvoir exporter les modèles PyTorch vers d'autres formats différents.

  1. Mettre à jour la liste des packages, installer pip et passer à la dernière version

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
  2. Installer le package pip ultralytics avec les dépendances optionnelles

    pip install ultralytics[export]
  3. Redémarrer 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 YOLO26n 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 YOLO26n PyTorch model
model = YOLO("yolo26n.pt")

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

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

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
Astuce

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

Améliorations de performance de YOLO26 par rapport à YOLO11

YOLO26 est spécifiquement conçu pour fonctionner sur des appareils aux ressources matérielles limitées tels que le Raspberry Pi 5. Par rapport à YOLO11n, YOLO26n atteint une augmentation de ~15% en FPS (6,79 → 7,79) tout en offrant également un mAP plus élevé (40,1 contre 39,5) à une taille d'entrée de 640 avec des modèles exportés en ONNX sur le Raspberry Pi 5. Le tableau et le graphique ci-dessous présentent cette comparaison.

YOLO26 benchmarks on RPi 5
Benchmarked with Ultralytics 8.4.14
Performance
ModèlemAP50-95(B)Temps d'inférence (ms/im)
YOLO26n40.1128,42
YOLO26s47.8352,84
YOLO26m52.5993,78
YOLO26l54.41259,46
YOLO26x56.92636,26

Benchmarqué avec Ultralytics 8.4.14.

Benchmarks YOLO26 sur Raspberry Pi 5

Les benchmarks YOLO26 ont été effectués par l'équipe Ultralytics sur dix formats de modèles différents en mesurant la vitesse et la précision : PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, MNN, NCNN, ExecuTorch. Les benchmarks ont été exécutés sur un Raspberry Pi 5 avec une précision FP32 et une taille d'image d'entrée par défaut de 640.

Tableau comparatif

Nous n'avons inclus les benchmarks que pour les modèles YOLO26n et YOLO26s car les autres tailles de modèles sont trop volumineuses pour fonctionner sur les Raspberry Pi et n'offrent pas des performances décentes.

YOLO26 benchmarks on RPi 5
Benchmarked with Ultralytics 8.4.1

Tableau de comparaison détaillé

Le tableau ci-dessous présente les résultats des benchmarks pour deux modèles différents (YOLO26n, YOLO26s) sur dix formats différents (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, MNN, NCNN, ExecuTorch), fonctionnant sur un Raspberry Pi 5, nous donnant le statut, la taille, la métrique mAP50-95(B) et le temps d'inférence pour chaque combinaison.

Performance
FormatStatutTaille sur le disque (Mo)mAP50-95(B)Temps d'inférence (ms/im)
PyTorch5.30.4798302,15
TorchScript9.80.4764357,58
ONNX9.50.4764130,33
OpenVINO9,60,481870,74
TF SavedModel24.60.4764213,58
TF GraphDef9.50.4764213,5
TF Lite9.90.4764251,41
MNN9.40.478490,89
NCNN9.40,480567,69
ExecuTorch9.40.4764148,36

Benchmarqué avec Ultralytics 8.4.1

Remarque

Le temps d'inférence n'inclut pas le pré/post-traitement.

Reproduis nos résultats

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

Exemple
from ultralytics import YOLO

# Load a YOLO26n PyTorch model
model = YOLO("yolo26n.pt")

# Benchmark YOLO26n speed and accuracy on the COCO128 dataset for all export formats
results = model.benchmark(data="coco128.yaml", imgsz=640)

Note 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 des résultats les plus fiables, utilise un jeu de données avec un grand nombre d'images, par exemple data='coco.yaml' (5000 images de validation).

Utiliser la caméra Raspberry Pi

Lorsque tu utilises un Raspberry Pi pour des projets de vision par ordinateur, il peut être essentiel de capturer 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 les modules de caméra officiels Raspberry Pi. Dans ce guide, nous avons utilisé un Raspberry Pi Camera Module 3 pour capturer les flux vidéo et effectuer des inférences à l'aide de modèles YOLO26.

Astuce
Remarque

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.

Tester la caméra

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

rpicam-hello
Astuce

Apprends-en davantage sur l'utilisation de rpicam-hello dans la documentation officielle de Raspberry Pi

Inférence avec la caméra

Il existe 2 méthodes pour utiliser la caméra Raspberry Pi afin d'exécuter des inférences sur des modèles YOLO26.

Utilisation

Nous pouvons utiliser picamera2, qui est préinstallé avec Raspberry Pi OS, pour accéder à la caméra et exécuter des inférences sur les modèles YOLO26.

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

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

    # Run YOLO26 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()
Astuce

Consulte notre document sur les Sources d'inférence si tu souhaites modifier le type d'entrée image/vidéo.

Meilleures pratiques lors de l'utilisation d'un Raspberry Pi

Il existe quelques bonnes pratiques à suivre pour obtenir des performances maximales sur les Raspberry Pi exécutant YOLO26.

  1. Utiliser un SSD

    Lorsque tu utilises un 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 résister aux écritures continues et risque de tomber en panne. Avec le connecteur PCIe intégré au Raspberry Pi 5, tu peux désormais connecter des SSD en utilisant un adaptateur tel que la NVMe Base pour Raspberry Pi 5.

  2. Flasher 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 RAM sur l'appareil, laissant ainsi plus d'espace pour le traitement de la vision par ordinateur.

  3. Overclocker le Raspberry Pi

    Si tu souhaites un léger boost de performance lors de l'exécution de modèles Ultralytics YOLO26 sur Raspberry Pi 5, tu peux overclocker le CPU de sa fréquence de base de 2,4 GHz à 2,9 GHz et le GPU de 800 MHz à 1 GHz. Si le système devient instable ou plante, réduis les valeurs d'overclocking par incréments de 100 MHz. Assure-toi qu'un refroidissement adéquat est en place, car l'overclocking augmente la génération de chaleur et peut entraîner une limitation thermique.

    a. Mets à jour le logiciel

    sudo apt update && sudo apt dist-upgrade

    b. Ouvre le fichier de configuration pour le modifier

    sudo nano /boot/firmware/config.txt

    c. Ajoute les lignes suivantes en bas

    arm_freq=3000
    gpu_freq=1000
    force_turbo=1

    d. Sauvegarde et quitte en appuyant sur CTRL + X, puis Y, et appuie sur ENTREE

    e. Redémarre le Raspberry Pi

Étapes suivantes

Tu as configuré avec succès YOLO sur ton Raspberry Pi. Pour aller plus loin et obtenir du support, consulte la Documentation Ultralytics YOLO26 et la Kashmir World Foundation.

Remerciements et citations

Ce guide a été initialement créé par Daan Eeltink pour la Kashmir World Foundation, une organisation dédiée à l'utilisation de YOLO pour la conservation des espèces menacées. Nous reconnaissons leur travail pionnier et leur orientation éducative dans le domaine des technologies de détection d'objets.

Pour plus d'informations sur les activités de la Kashmir World Foundation, tu peux visiter leur site web.

FAQ

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

Pour configurer Ultralytics YOLO26 sur un Raspberry Pi sans Docker, suis ces étapes :

  1. Mets à jour la liste des paquets et installe pip :
    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
  2. Installe le paquet 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, réfère-toi à la section Démarrer sans Docker.

Pourquoi devrais-je utiliser le format NCNN d'Ultralytics YOLO26 sur Raspberry Pi pour les tâches d'IA ?

Le format NCNN d'Ultralytics YOLO26 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 des 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 que d'autres formats. Pour plus de détails sur les options d'exportation prises en charge, visite la page de documentation d'Ultralytics sur les options de déploiement.

Comment puis-je convertir un modèle YOLO26 au format NCNN pour une utilisation sur Raspberry Pi ?

Tu peux convertir un modèle PyTorch YOLO26 au format NCNN en utilisant soit Python, soit des commandes CLI :

Exemple
from ultralytics import YOLO

# Load a YOLO26n PyTorch model
model = YOLO("yolo26n.pt")

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

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

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")

Pour plus de détails, consulte la section Utiliser NCNN sur Raspberry Pi.

Quelles sont les différences matérielles entre le Raspberry Pi 4 et le Raspberry Pi 5 pertinentes pour l'exécution de YOLO26 ?

Les principales différences incluent :

  • 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 : 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 LPDDR4-3200 SDRAM, tandis que le Raspberry Pi 5 propose de la LPDDR4X-4267 SDRAM, disponible en variantes de 4 Go et 8 Go.

Ces améliorations contribuent à de meilleurs benchmarks de performance pour les modèles YOLO26 sur Raspberry Pi 5 par rapport au Raspberry Pi 4. Réfère-toi au tableau Comparaison de la série Raspberry Pi pour plus de détails.

Comment puis-je configurer un module de caméra Raspberry Pi pour qu'il fonctionne avec Ultralytics YOLO26 ?

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

  1. 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("yolo26n.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("yolo26n.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.

Commentaires