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.
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.
-
Paketliste aktualisieren, pip installieren und auf den neuesten Stand bringen
-
Installieren Sie
ultralytics
pip-Paket mit optionalen Abhängigkeiten -
Neustart des Geräts
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")
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.
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
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), or
data='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.
Tipp
Erfahren Sie mehr über die verschiedenen Kameramodule, die Raspberry Pi anbietet, und wie Sie mit den Raspberry Pi-Kameramodulen beginnen können.
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.
Tipp
Erfahren Sie mehr über rpicam-hello
Verwendung in der offiziellen Raspberry Pi-Dokumentation
Inferenz mit Kamera
Es gibt 2 Methoden, um die Raspberry Pi Kamera zur Inferenz von YOLO11 Modellen zu verwenden.
Verwendung
Wir können verwenden picamera2
der 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.
Erfahren Sie mehr über rpicam-vid
Verwendung in der offiziellen Raspberry Pi-Dokumentation
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.
-
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.
-
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:
- Aktualisieren Sie die Paketliste und installieren Sie
pip
: - Installieren Sie das Paket Ultralytics mit optionalen Abhängigkeiten:
- Starten Sie das Gerät neu, um die Änderungen zu übernehmen:
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")
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:
-
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()
-
Verwendung eines TCP-Streams:
Detaillierte Anweisungen zur Einrichtung finden Sie im Abschnitt Inferenz mit Kamera.