Zum Inhalt springen

Schnellstartanleitung: Raspberry Pi mit Ultralytics YOLO11

Dieser umfassende Leitfaden bietet eine detaillierte Anleitung für die Bereitstellung von Ultralytics YOLO11 auf Raspberry Pi-Geräten. Darüber hinaus werden Performance-Benchmarks gezeigt, um die Fähigkeiten von YOLO11 auf diesen kleinen und leistungsstarken Geräten zu demonstrieren.



Ansehen: Raspberry Pi 5 Updates und Verbesserungen.

Hinweis

Dieser Leitfaden wurde mit Raspberry Pi 4 und Raspberry Pi 5 mit dem neuesten Raspberry Pi OS Bookworm (Debian 12) getestet. Die Verwendung dieses Leitfadens für ältere Raspberry Pi-Geräte wie den Raspberry Pi 3 sollte ebenfalls funktionieren, solange dasselbe Raspberry Pi OS Bookworm installiert ist.

Was ist Raspberry Pi?

Raspberry Pi ist ein kleiner, erschwinglicher Single-Board-Computer. Er ist populär geworden für eine Vielzahl von Projekten und Anwendungen, von Hobby-Hausautomation bis hin zu industriellen Anwendungen. Raspberry Pi-Boards sind in der Lage, eine Vielzahl von Betriebssystemen auszuführen, und sie bieten GPIO-Pins (General Purpose Input/Output), die eine einfache Integration mit Sensoren, Aktoren und anderen Hardwarekomponenten ermöglichen. Sie sind in verschiedenen Modellen mit unterschiedlichen Spezifikationen erhältlich, aber sie alle teilen die gleiche grundlegende Designphilosophie, nämlich kostengünstig, kompakt und vielseitig zu sein.

Raspberry Pi Serienvergleich

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
Maximale CPU-Frequenz 1.4GHz 1.8GHz 2.4GHz
GPU Videocore IV Videocore VI VideoCore VII
Maximale GPU-Frequenz 400Mhz 500Mhz 800Mhz
Arbeitsspeicher 1GB LPDDR2 SDRAM 1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM 4GB, 8GB LPDDR4X-4267 SDRAM
PCIe N/A N/A 1xPCIe 2.0 Schnittstelle
Maximale Leistungsaufnahme 2.5A@5V 3A@5V 5A@5V (PD aktiviert)

Was ist Raspberry Pi OS?

Raspberry Pi OS (ehemals bekannt als Raspbian) ist ein Unix-ähnliches Betriebssystem, das auf der Debian GNU/Linux-Distribution für die Raspberry Pi-Familie von kompakten Single-Board-Computern basiert, die von der Raspberry Pi Foundation vertrieben werden. Raspberry Pi OS ist hochgradig für den Raspberry Pi mit ARM-CPUs optimiert und verwendet eine modifizierte LXDE-Desktop-Umgebung mit dem Openbox Stacking Window Manager. Raspberry Pi OS wird aktiv weiterentwickelt, wobei der Schwerpunkt auf der Verbesserung der Stabilität und Leistung von möglichst vielen Debian-Paketen auf dem Raspberry Pi liegt.

Raspberry Pi OS auf Raspberry Pi flashen

Als Erstes sollte man nach Erhalt eines Raspberry Pi eine Micro-SD-Karte mit Raspberry Pi OS flashen, sie in das Gerät einsetzen und das Betriebssystem starten. Folgen Sie der ausführlichen Dokumentation zu den ersten Schritten von Raspberry Pi, um Ihr Gerät für die erste Verwendung vorzubereiten.

Ultralytics einrichten

Es gibt zwei Möglichkeiten, das Ultralytics-Paket auf dem Raspberry Pi einzurichten, um Ihr nächstes Computer Vision-Projekt zu erstellen. Sie können jede davon verwenden.

Start mit Docker

Der schnellste Weg, mit Ultralytics YOLO11 auf dem Raspberry Pi zu beginnen, ist die Ausführung mit einem vorgefertigten Docker-Image für Raspberry Pi.

Führen Sie den folgenden Befehl aus, um den Docker-Container zu ziehen und auf dem Raspberry Pi auszuführen. Dieser basiert auf dem arm64v8/debian Docker-Image, das Debian 12 (Bookworm) in einer Python3-Umgebung enthält.

t=ultralytics/ultralytics:latest-arm64
sudo docker pull $t && sudo docker run -it --ipc=host $t

Springen Sie danach zum Abschnitt Verwendung von NCNN auf dem Raspberry Pi.

Start ohne Docker

Ultralytics-Paket installieren

Hier installieren wir das Ultralytics-Paket auf dem Raspberry Pi mit optionalen Abhängigkeiten, damit wir die PyTorch-Modelle in andere Formate exportieren können.

  1. Paketliste aktualisieren, pip installieren und auf die neueste Version aktualisieren

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Installieren ultralytics pip-Paket mit optionalen Abhängigkeiten

    pip install ultralytics[export]
    
  3. Gerät neu starten

    sudo reboot
    

NCNN auf Raspberry Pi verwenden

Von allen von Ultralytics unterstützten Modellexportformaten bietet NCNN die beste Inferenzleistung bei der Arbeit mit Raspberry Pi-Geräten, da NCNN hochgradig für mobile/ eingebettete Plattformen (wie z. B. ARM-Architektur) optimiert ist.

Modell in NCNN konvertieren und Inferenz ausführen

Das YOLO11n-Modell im PyTorch-Format wird in NCNN konvertiert, um Inferenz mit dem exportierten Modell auszuführen.

Beispiel

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'

Tipp

Weitere Informationen zu den unterstützten Exportoptionen finden Sie auf der Ultralytics-Dokumentationsseite zu den Bereitstellungsoptionen.

Raspberry Pi 5 YOLO11 Benchmarks

YOLO11-Benchmarks wurden vom Ultralytics-Team in zehn verschiedenen Modellformaten durchgeführt, wobei Geschwindigkeit und Genauigkeit gemessen wurden: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, MNN, NCNN. Die Benchmarks wurden auf einem Raspberry Pi 5 bei FP32 Präzision mit einer Standard-Eingangsbildgröße von 640 durchgeführt.

Vergleichsübersicht

Wir haben nur Benchmarks für YOLO11n- und YOLO11s-Modelle aufgenommen, da andere Modellgrößen zu groß sind, um auf den Raspberry Pis ausgeführt zu werden, und keine anständige Leistung bieten.

YOLO11 Benchmarks auf RPi 5
Benchmarked mit Ultralytics 8.3.152

Detaillierte Vergleichstabelle

Die folgende Tabelle stellt die Benchmark-Ergebnisse für zwei verschiedene Modelle (YOLO11n, YOLO11s) über zehn verschiedene Formate (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, MNN, NCNN) dar, die auf einem Raspberry Pi 5 laufen, und gibt uns den Status, die Größe, die mAP50-95(B)-Metrik und die Inferenzzeit für jede Kombination.

Performance

Format Status Größe auf der Festplatte (MB) mAP50-95(B) Inferenzzeit (ms/Bild)
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 Status Größe auf der Festplatte (MB) mAP50-95(B) Inferenzzeit (ms/Bild)
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

Benchmarked mit Ultralytics 8.3.152

Hinweis

Die Inferenzzeit beinhaltet keine Vor- und Nachbearbeitung.

Unsere Ergebnisse reproduzieren

Um die oben genannten Ultralytics-Benchmarks für alle Exportformate zu reproduzieren, führen Sie diesen Code aus:

Beispiel

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

Beachten Sie, dass die Ergebnisse der Benchmarks je nach der genauen Hardware- und Softwarekonfiguration eines Systems sowie der aktuellen Auslastung des Systems zum Zeitpunkt der Ausführung der Benchmarks variieren können. Für die zuverlässigsten Ergebnisse verwenden Sie einen Datensatz mit einer großen Anzahl von Bildern, d. h. data='coco.yaml' (5000 Validierungsbilder).

Raspberry Pi Kamera verwenden

Bei der Verwendung von Raspberry Pi für Computer-Vision-Projekte kann es wichtig sein, Echtzeit-Video-Feeds zu erfassen, um Inferenz durchzuführen. Der Onboard-MIPI-CSI-Anschluss des Raspberry Pi ermöglicht es Ihnen, offizielle Raspberry PI-Kameramodule anzuschließen. In diesem Leitfaden haben wir ein Raspberry Pi Camera Module 3 verwendet, um die Video-Feeds zu erfassen und Inferenz mit YOLO11-Modellen durchzuführen.

Hinweis

Raspberry Pi 5 verwendet kleinere CSI-Anschlüsse als der Raspberry Pi 4 (15-polig vs. 22-polig), daher benötigen Sie ein 15-polig-auf-22-polig-Adapterkabel, um eine Verbindung zu einer Raspberry Pi-Kamera herzustellen.

Die Kamera testen

Führen Sie den folgenden Befehl aus, nachdem Sie die Kamera an den Raspberry Pi angeschlossen haben. Sie sollten einen Live-Video-Feed von der Kamera für etwa 5 Sekunden sehen.

rpicam-hello

Inferenz mit Kamera

Es gibt 2 Methoden, die Raspberry Pi-Kamera für die Inferenz von YOLO11-Modellen zu verwenden.

Nutzung

Wir können picamera2 verwenden, das bereits in Raspberry Pi OS vorinstalliert ist, um auf die Kamera zuzugreifen und YOLO11-Modelle abzuleiten.

Beispiel

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()

Wir müssen einen TCP-Stream mit rpicam-vid von der angeschlossenen Kamera initiieren, damit wir diese Stream-URL als Eingabe verwenden können, wenn wir später Inferenz betreiben. Führen Sie den folgenden Befehl aus, um den TCP-Stream zu starten.

rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888

Erfahren Sie mehr über rpicam-vid Nutzung in der offiziellen Raspberry Pi-Dokumentation

Beispiel

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"

Tipp

In unserem Dokument zu Inferenzquellen erfahren Sie, wie Sie den Bild-/Videoeingabetyp ändern können.

Bewährte Verfahren bei der Verwendung von Raspberry Pi

Es gibt einige Best Practices, die befolgt werden sollten, um die maximale Leistung auf Raspberry Pis mit YOLO11 zu erzielen.

  1. Verwenden Sie eine SSD

    Bei der Verwendung von Raspberry Pi für den kontinuierlichen 24x7-Betrieb wird empfohlen, eine SSD für das System zu verwenden, da eine SD-Karte kontinuierlichen Schreibvorgängen nicht standhält und möglicherweise beschädigt wird. Mit dem integrierten PCIe-Anschluss des Raspberry Pi 5 können Sie jetzt SSDs über einen Adapter wie den NVMe Base für Raspberry Pi 5 anschließen.

  2. Flash ohne GUI

    Beim Flashen von Raspberry Pi OS können Sie wählen, ob Sie die Desktop-Umgebung (Raspberry Pi OS Lite) nicht installieren möchten. Dadurch kann etwas RAM auf dem Gerät eingespart werden, wodurch mehr Speicherplatz für die Computer-Vision-Verarbeitung zur Verfügung steht.

  3. Raspberry Pi übertakten

    Wenn Sie die Leistung beim Ausführen von Ultralytics YOLO11-Modellen auf Raspberry Pi 5 ein wenig steigern möchten, können Sie die CPU von ihren Basiswerten von 2,4 GHz auf 2,9 GHz und die GPU von 800 MHz auf 1 GHz übertakten. Wenn das System instabil wird oder abstürzt, reduzieren Sie die Übertaktungswerte in Schritten von 100 MHz. Stellen Sie sicher, dass eine ordnungsgemäße Kühlung vorhanden ist, da die Übertaktung die Wärmeentwicklung erhöht und zu thermischer Drosselung führen kann.

    a. Software aktualisieren

    sudo apt update && sudo apt dist-upgrade
    

    b. Öffnen Sie die Konfigurationsdatei, um sie zu bearbeiten

    sudo nano /boot/firmware/config.txt
    

    c. Fügen Sie die folgenden Zeilen am Ende hinzu

    arm_freq=3000
    gpu_freq=1000
    force_turbo=1
    

    d. Speichern und beenden Sie, indem Sie STRG + X, dann J drücken und die EINGABETASTE drücken

    e. Starten Sie den Raspberry Pi neu

Nächste Schritte

Herzlichen Glückwunsch zur erfolgreichen Einrichtung von YOLO auf Ihrem Raspberry Pi! Für weitere Informationen und Unterstützung besuchen Sie die Ultralytics YOLO11-Dokumentation und die Kashmir World Foundation.

Danksagungen und Zitate

Dieser Leitfaden wurde ursprünglich von Daan Eeltink für die Kashmir World Foundation erstellt, einer Organisation, die sich dem Einsatz von YOLO für den Schutz gefährdeter Arten widmet. Wir würdigen ihre Pionierarbeit und ihren Bildungsschwerpunkt im Bereich der Objekterkennungstechnologien.

Weitere Informationen zu den Aktivitäten der Kashmir World Foundation finden Sie auf ihrer Website.

FAQ

Wie richte ich Ultralytics YOLO11 auf einem Raspberry Pi ein, ohne Docker zu verwenden?

Um Ultralytics YOLO11 auf einem Raspberry Pi ohne Docker einzurichten, führen Sie die folgenden Schritte aus:

  1. Aktualisieren Sie die Paketliste und installieren Sie pip:
    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Installieren Sie das Ultralytics-Paket mit optionalen Abhängigkeiten:
    pip install ultralytics[export]
    
  3. Starten Sie das Gerät neu, um die Änderungen zu übernehmen:
    sudo reboot
    

Detaillierte Anweisungen finden Sie im Abschnitt Start ohne Docker.

Warum sollte ich das NCNN-Format von Ultralytics YOLO11 auf Raspberry Pi für KI-Aufgaben verwenden?

Das NCNN-Format von Ultralytics YOLO11 ist hochoptimiert für mobile und eingebettete Plattformen und eignet sich daher ideal für die Ausführung von KI-Aufgaben auf Raspberry Pi-Geräten. NCNN maximiert die Inferenzleistung durch die Nutzung der ARM-Architektur und bietet eine schnellere und effizientere Verarbeitung im Vergleich zu anderen Formaten. Weitere Informationen zu den unterstützten Exportoptionen finden Sie auf der Ultralytics-Dokumentationsseite zu Bereitstellungsoptionen.

Wie kann ich ein YOLO11-Modell in das NCNN-Format zur Verwendung auf Raspberry Pi konvertieren?

Sie können ein PyTorch YOLO11-Modell mit Python- oder CLI-Befehlen in das NCNN-Format konvertieren:

Beispiel

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'

Weitere Informationen finden Sie im Abschnitt NCNN auf Raspberry Pi verwenden.

Was sind die Hardwareunterschiede zwischen Raspberry Pi 4 und Raspberry Pi 5, die für die Ausführung von YOLO11 relevant sind?

Die wichtigsten Unterschiede sind:

  • CPU: Raspberry Pi 4 verwendet Broadcom BCM2711, Cortex-A72 64-Bit SoC, während Raspberry Pi 5 Broadcom BCM2712, Cortex-A76 64-Bit SoC verwendet.
  • Maximale CPU-Frequenz: Raspberry Pi 4 hat eine maximale Frequenz von 1,8 GHz, während Raspberry Pi 5 2,4 GHz erreicht.
  • Speicher: Raspberry Pi 4 bietet bis zu 8 GB LPDDR4-3200 SDRAM, während Raspberry Pi 5 mit LPDDR4X-4267 SDRAM ausgestattet ist, das in Varianten mit 4 GB und 8 GB erhältlich ist.

Diese Verbesserungen tragen zu besseren Performance-Benchmarks für YOLO11-Modelle auf Raspberry Pi 5 im Vergleich zu Raspberry Pi 4 bei. Weitere Informationen finden Sie in der Tabelle Raspberry Pi-Serienvergleich.

Wie kann ich ein Raspberry Pi Kameramodul für die Verwendung mit Ultralytics YOLO11 einrichten?

Es gibt zwei Methoden, um eine Raspberry Pi-Kamera für die YOLO11-Inferenz einzurichten:

  1. Verwendung von 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()
    
  2. Verwenden eines TCP-Streams:

    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")
    

Detaillierte Anweisungen zur Einrichtung finden Sie im Abschnitt Inferenz mit Kamera.



📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 2 Monaten

Kommentare