Zum Inhalt springen

Schnellstart-Anleitung: Raspberry Pi mit Ultralytics YOLO11

Dieser umfassende Leitfaden bietet eine detaillierte Anleitung für den Einsatz von Ultralytics YOLO11 auf Raspberry Pi-Geräten. Außerdem werden Leistungsbenchmarks vorgestellt, um die Fähigkeiten von YOLO11 auf diesen kleinen und leistungsstarken Geräten zu demonstrieren.



Beobachten: Raspberry Pi 5 Updates und Verbesserungen.

Hinweis

Diese Anleitung wurde mit Raspberry Pi 4 und Raspberry Pi 5 getestet, auf denen das neueste Raspberry Pi OS Bookworm (Debian 12) läuft. Die Verwendung dieser Anleitung für ältere Raspberry Pi-Geräte wie den Raspberry Pi 3 wird voraussichtlich funktionieren, solange das gleiche Raspberry Pi OS Bookworm installiert ist.

Was ist Raspberry Pi?

Der Raspberry Pi ist ein kleiner, erschwinglicher Einplatinencomputer. Er ist für eine Vielzahl von Projekten und Anwendungen beliebt geworden, von der Heimautomatisierung für Hobbyisten bis hin zu industriellen Anwendungen. Auf Raspberry Pi-Platinen kann eine Vielzahl von Betriebssystemen ausgeführt werden, und sie bieten GPIO-Pins (General Purpose Input/Output), die eine einfache Integration mit Sensoren, Aktoren und anderen Hardwarekomponenten ermöglichen. Es gibt verschiedene Modelle mit unterschiedlichen Spezifikationen, aber alle haben die gleiche grundlegende Designphilosophie: Sie sind kostengünstig, kompakt und vielseitig.

Raspberry Pi-Serie im Vergleich

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

Was ist Raspberry Pi OS?

Raspberry Pi OS (früher bekannt als Raspbian) ist ein Unix-ähnliches Betriebssystem, das auf der Debian GNU/Linux-Distribution für die Raspberry Pi-Familie von kompakten Einplatinencomputern basiert und von der Raspberry Pi Foundation vertrieben wird. Raspberry Pi OS ist speziell 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 befindet sich in aktiver Entwicklung, wobei der Schwerpunkt auf der Verbesserung der Stabilität und Leistung so vieler Debian-Pakete wie möglich auf dem Raspberry Pi liegt.

Flash Raspberry Pi OS auf Raspberry Pi

Das erste, was Sie tun müssen, nachdem Sie einen Raspberry Pi in die Hände bekommen haben, ist, eine micro-SD-Karte mit Raspberry Pi OS zu flashen, in das Gerät einzulegen und das Betriebssystem zu starten. Folgen Sie der ausführlichen Getting Started Dokumentation von Raspberry Pi, um Ihr Gerät für den ersten Gebrauch vorzubereiten.

Einrichten Ultralytics

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 eine von beiden verwenden.

Start mit Docker

Der schnellste Weg, um mit Ultralytics YOLO11 auf dem Raspberry Pi zu beginnen, ist die Verwendung eines vorgefertigten Docker-Images für den Raspberry Pi.

Führen Sie den unten stehenden Befehl aus, um den Docker-Container zu ziehen und auf dem Raspberry Pi auszuführen. Dieser basiert auf dem Docker-Image arm64v8/debian, 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

Nachdem dies geschehen ist, fahren Sie mit dem Abschnitt NCNN auf dem Raspberry Pi verwenden fort.

Start ohne Docker

Ultralytics Paket installieren

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

  1. Paketliste aktualisieren, pip installieren und auf den neuesten Stand bringen

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

    pip install ultralytics[export]
    
  3. Neustart des Geräts

    sudo reboot
    

NCNN auf dem Raspberry Pi verwenden

Von allen Modell-Exportformaten, die von Ultralytics unterstützt werden, bietet NCNN die beste Inferenzleistung bei der Arbeit mit Raspberry Pi-Geräten, da NCNN in hohem Maße für mobile/eingebettete Plattformen (wie die ARM-Architektur) optimiert ist. Daher empfehlen wir die Verwendung von NCNN mit Raspberry Pi.

Modell in NCNN umwandeln und Inferenz durchführen

Das YOLO11n-Modell im Format PyTorch wird in NCNN konvertiert, um Inferenzen mit dem exportierten Modell durchzufü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 Einzelheiten zu den unterstützten Exportoptionen finden Sie auf der Dokumentationsseite zu den Bereitstellungsoptionen unter Ultralytics .

Raspberry Pi 5 YOLO11 Benchmarks

YOLO11 Benchmarks wurden vom Ultralytics Team auf neun verschiedenen Modellformaten durchgeführt, um Geschwindigkeit und Genauigkeit zu messen: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel , TF GraphDef , TF Lite, PaddlePaddle, NCNN. Die Benchmarks wurden auf einem Raspberry Pi 5 mit FP32-Präzision und einer Standard-Eingabebildgröße von 640 ausgeführt.

Vergleichstabelle

Wir haben nur Benchmarks für die Modelle YOLO11n und YOLO11s aufgenommen, da die anderen Modelle zu groß sind, um auf den Raspberry Pis zu laufen und keine vernünftige Leistung bieten.

YOLO11 Benchmarks auf RPi 5
Benchmarking mit Ultralytics 8.3.39

Detaillierte Vergleichstabelle

Die folgende Tabelle zeigt die Benchmark-Ergebnisse für zwei verschiedene Modelle (YOLO11n, YOLO11s) in neun verschiedenen Formaten (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel , TF GraphDef , TF Lite, PaddlePaddle, NCNN), die auf einem Raspberry Pi 5 ausgeführt werden, und gibt uns den Status, die Größe, die mAP50-95(B)-Metrik und die Inferenzzeit für jede Kombination.

Leistung

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

Benchmarking mit Ultralytics 8.3.39

Reproduzieren Sie unsere Ergebnisse

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 COCO8 dataset for all all export formats
results = model.benchmarks(data="coco8.yaml", imgsz=640)
# Benchmark YOLO11n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolo11n.pt data=coco8.yaml imgsz=640

Beachten Sie, dass die Benchmarking-Ergebnisse je nach der genauen Hardware- und Softwarekonfiguration eines Systems sowie der aktuellen Arbeitslast des Systems zum Zeitpunkt der Durchführung der Benchmarks variieren können. Die zuverlässigsten Ergebnisse erhalten Sie, wenn Sie einen Datensatz mit einer großen Anzahl von Bildern verwenden, d. h. data='coco8.yaml' (4 val images), ordata='coco.yaml'` (5000 val-Bilder).

Raspberry Pi Kamera verwenden

Bei der Verwendung des Raspberry Pi für Computer-Vision-Projekte kann es von wesentlicher Bedeutung sein, Echtzeit-Videobilder zu erfassen, um Inferenzen durchzuführen. Der integrierte MIPI CSI-Anschluss des Raspberry Pi ermöglicht den Anschluss offizieller Raspberry PI-Kameramodule. In dieser Anleitung haben wir ein Raspberry Pi Kameramodul 3 verwendet, um die Videofeeds zu erfassen und Inferenzen mit YOLO11 Modellen durchzuführen.

Hinweis

Der Raspberry Pi 5 verwendet kleinere CSI-Anschlüsse als der Raspberry Pi 4 (15-polig vs. 22-polig), daher benötigen Sie ein Adapterkabel von 15-polig auf 22-polig, um eine Raspberry Pi Kamera anzuschließen.

Testen Sie die Kamera

Führen Sie den folgenden Befehl aus, nachdem Sie die Kamera mit dem Raspberry Pi verbunden haben. Sie sollten für etwa 5 Sekunden ein Live-Video von der Kamera sehen.

rpicam-hello

Inferenz mit Kamera

Es gibt 2 Methoden, um die Raspberry Pi Kamera zur Inferenz von YOLO11 Modellen zu verwenden.

Verwendung

Wir können verwenden picamera2der mit Raspberry Pi OS vorinstalliert ist, um auf die Kamera und die Inferenzmodelle YOLO11 zuzugreifen.

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 initiieren mit rpicam-vid von der angeschlossenen Kamera, damit wir diese Stream-URL später beim Inferencing als Eingabe verwenden können. 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 Verwendung 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

Lesen Sie unser Dokument über Inferenzquellen, wenn Sie den Bild-/Videoeingangstyp ändern möchten.

Bewährte Praktiken bei der Verwendung von Raspberry Pi

Es gibt eine Reihe von Best Practices, die befolgt werden sollten, um eine maximale Leistung auf Raspberry Pis mit YOLO11 zu erreichen.

  1. Verwenden Sie eine SSD

    Wenn der Raspberry Pi rund um die Uhr im Einsatz ist, empfiehlt es sich, eine SSD für das System zu verwenden, da eine SD-Karte nicht in der Lage ist, ständige Schreibvorgänge zu überstehen und kaputt gehen könnte. Mit dem Onboard-PCIe-Anschluss des Raspberry Pi 5 können Sie nun SSDs mit einem Adapter wie der NVMe Base für Raspberry Pi 5 anschließen.

  2. Flash ohne GUI

    Wenn Sie Raspberry Pi OS flashen, können Sie wählen, die Desktop-Umgebung (Raspberry Pi OS Lite) nicht zu installieren. Dadurch können Sie etwas RAM auf dem Gerät einsparen, wodurch mehr Platz für die Bildverarbeitung zur Verfügung steht.

Nächste Schritte

Herzlichen Glückwunsch zur erfolgreichen Einrichtung von YOLO auf Ihrem Raspberry Pi! Für weitere Informationen und Unterstützung besuchen Sie Ultralytics YOLO11 Docs und 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 für den Einsatz von YOLO zum Schutz bedrohter Arten einsetzt. Wir danken Daan Eeltink für seine Pionierarbeit und sein pädagogisches Engagement im Bereich der Objekterkennungstechnologien.

Weitere Informationen über die Aktivitäten der Kashmir World Foundation finden Sie auf deren Website.

FAQ

Wie kann ich Ultralytics YOLO11 auf einem Raspberry Pi einrichten, ohne Docker zu verwenden?

Um Ultralytics YOLO11 auf einem Raspberry Pi ohne Docker einzurichten, folgen Sie diesen Schritten:

  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 Paket Ultralytics mit optionalen Abhängigkeiten:
    pip install ultralytics[export]
    
  3. Starten Sie das Gerät neu, um die Änderungen zu übernehmen:
    sudo reboot
    

Ausführliche Anweisungen finden Sie im Abschnitt Starten ohne Docker.

Warum sollte ich Ultralytics YOLO11 's NCNN Format auf dem Raspberry Pi für KI-Aufgaben verwenden?

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

Wie kann ich ein Modell von YOLO11 in das Format NCNN für die Verwendung auf dem Raspberry Pi konvertieren?

Sie können ein Modell PyTorch YOLO11 in das Format NCNN konvertieren, indem Sie die Befehle Python oder CLI verwenden:

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 Einzelheiten finden Sie im Abschnitt NCNN auf dem Raspberry Pi verwenden.

Was sind die Hardware-Unterschiede 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: Der Raspberry Pi 4 hat eine maximale Frequenz von 1,8 GHz, während der Raspberry Pi 5 2,4 GHz erreicht.
  • Speicher: Der Raspberry Pi 4 bietet bis zu 8 GB LPDDR4-3200 SDRAM, während der Raspberry Pi 5 mit LPDDR4X-4267 SDRAM ausgestattet ist, der in Varianten von 4 GB und 8 GB erhältlich ist.

Diese Verbesserungen tragen zu besseren Leistungsbenchmarks für YOLO11 Modelle auf dem Raspberry Pi 5 im Vergleich zum Raspberry Pi 4 bei. Weitere Einzelheiten finden Sie in der Tabelle " Raspberry Pi Series Comparison ".

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

Es gibt zwei Methoden, um eine Raspberry Pi Kamera für YOLO11 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. Verwendung 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 8 Tagen

Kommentare