Schnellstart-Anleitung: Raspberry Pi mit Ultralytics YOLOv8
Dieser umfassende Leitfaden bietet eine detaillierte Anleitung fĂŒr den Einsatz von Ultralytics YOLOv8 auf Raspberry Pi-GerĂ€ten. AuĂerdem werden Leistungsbenchmarks vorgestellt, um die FĂ€higkeiten von YOLOv8 auf diesen kleinen und leistungsstarken GerĂ€ten zu demonstrieren.
Pass auf: Raspberry Pi 5 Updates und Verbesserungen.
Hinweis
Diese Anleitung wurde mit dem Raspberry Pi 4 und Raspberry Pi 5 getestet, auf denen das neueste Raspberry Pi OS Bookworm (Debian 12) lĂ€uft. Wenn du diese Anleitung fĂŒr Ă€ltere Raspberry Pi-GerĂ€te wie den Raspberry Pi 3 verwendest, wird sie voraussichtlich funktionieren, solange das gleiche Raspberry Pi OS Bookworm installiert ist.
Was ist der Raspberry Pi?
Der Raspberry Pi ist ein kleiner, erschwinglicher Einplatinencomputer. Er ist fĂŒr eine Vielzahl von Projekten und Anwendungen beliebt, von der Heimautomatisierung bis hin zu industriellen Anwendungen. Auf den Raspberry Pi-Boards können verschiedene Betriebssysteme ausgefĂŒhrt werden und sie verfĂŒgen ĂŒber GPIO-Pins (General Purpose Input/Output), die eine einfache Integration von Sensoren, Aktoren und anderen Hardwarekomponenten ermöglichen. Es gibt verschiedene Modelle mit unterschiedlichen Spezifikationen, aber alle haben die gleiche Designphilosophie: Sie sind kostengĂŒnstig, kompakt und vielseitig.
Raspberry Pi Serie 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 | Videocore IV | Videocore 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 | 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 (frĂŒher bekannt als Raspbian) ist ein Unix-Ă€hnliches Betriebssystem, das auf der Debian GNU/Linux-Distribution fĂŒr die Raspberry Pi-Familie kompakter Einplatinencomputer 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-Desktopumgebung mit dem Openbox Stacking Window Manager. Raspberry Pi OS wird aktiv weiterentwickelt, wobei der Schwerpunkt auf der Verbesserung der StabilitĂ€t und Leistung möglichst vieler Debian-Pakete auf dem Raspberry Pi liegt.
Flash Raspberry Pi OS auf Raspberry Pi
Nachdem du einen Raspberry Pi in die HĂ€nde bekommen hast, musst du als Erstes eine micro-SD-Karte mit Raspberry Pi OS flashen, in das GerĂ€t einlegen und das Betriebssystem starten. Folge der ausfĂŒhrlichen Getting Started Dokumentation von Raspberry Pi, um dein GerĂ€t fĂŒr den ersten Gebrauch vorzubereiten.
Einrichten Ultralytics
Es gibt zwei Möglichkeiten, das Ultralytics Paket auf dem Raspberry Pi einzurichten, um dein nÀchstes Computer Vision Projekt zu realisieren. Du kannst eine von beiden nutzen.
Mit Docker beginnen
Der schnellste Weg, um mit Ultralytics YOLOv8 auf dem Raspberry Pi loszulegen, ist die Verwendung eines vorgefertigten Docker-Images fĂŒr den Raspberry Pi.
FĂŒhre den unten stehenden Befehl aus, um den Docker-Container zu ziehen und auf dem Raspberry Pi auszufĂŒhren. Er basiert auf dem Docker-Image arm64v8/debian, das Debian 12 (Bookworm) in einer Python3-Umgebung enthĂ€lt.
Wenn das erledigt ist, kannst du mit dem Abschnitt NCNN auf dem Raspberry Pi fortfahren.
Start ohne Docker
Ultralytics Paket installieren
Hier werden wir installieren Ultralytics auf dem Raspberry Pi mit optionalen AbhÀngigkeiten, so dass wir die PyTorch Modelle in andere verschiedene Formate.
-
Paketliste aktualisieren, pip installieren und auf den neuesten Stand bringen
-
Installiere
ultralytics
Pip-Paket mit optionalen AbhÀngigkeiten -
Das GerÀt neu starten
NCNN auf dem Raspberry Pi verwenden
Von allen Modell-Exportformaten, die von Ultralytics unterstĂŒtzt werden, NCNN bietet die beste Inferenzleistung bei der Arbeit mit Raspberry Pi-GerĂ€ten, da NCNN speziell fĂŒr mobile/eingebettete Plattformen (wie die ARM-Architektur) optimiert ist. Daher empfehlen wir, NCNN fĂŒr den Raspberry Pi zu verwenden.
Modell in NCNN umwandeln und Inferenz durchfĂŒhren
Das Modell YOLOv8n im Format PyTorch wird in NCNN konvertiert, um die Inferenz mit dem exportierten Modell durchzufĂŒhren.
Beispiel
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")
Tipp
Weitere Details zu den unterstĂŒtzten Exportoptionen findest du auf der Ultralytics Dokumentationsseite zu den Bereitstellungsoptionen.
Raspberry Pi 5 vs. Raspberry Pi 4 YOLOv8 Benchmarks
YOLOv8 Benchmarks wurden von der Ultralytics Team an neun verschiedenen Modellformaten, die Geschwindigkeit und Genauigkeit messen: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Leicht PaddlePaddle, NCNN. Benchmarks wurden sowohl auf dem Raspberry Pi 5 als auch auf dem Raspberry Pi 4 mit FP32-PrĂ€zision mit einer Standard-EingabebildgröĂe von 640 durchgefĂŒhrt.
Hinweis
Wir haben nur Benchmarks fĂŒr die Modelle YOLOv8n und YOLOv8s aufgenommen, da andere Modelle zu groĂ sind, um auf den Raspberry Pis zu laufen und keine vernĂŒnftige Leistung bieten.
Vergleichstabelle
Leistung
Detaillierte Vergleichstabelle
Die folgende Tabelle zeigt die Benchmark-Ergebnisse fĂŒr zwei verschiedene Modelle (YOLOv8n, YOLOv8s) in neun verschiedenen Formaten (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Leicht PaddlePaddle, NCNN), die sowohl auf Raspberry Pi 4 als auch auf Raspberry Pi 5 lĂ€uft und uns den Status, die GröĂe, die mAP50-95(B)-Metrik und die Inferenzzeit fĂŒr jede Kombination liefert.
Leistung
Format | Status | GröĂe auf der Festplatte (MB) | mAP50-95(B) | Inferenzzeit (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 | Status | GröĂe auf der Festplatte (MB) | mAP50-95(B) | Inferenzzeit (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 | Status | GröĂe auf der Festplatte (MB) | mAP50-95(B) | Inferenzzeit (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 | Status | GröĂe auf der Festplatte (MB) | mAP50-95(B) | Inferenzzeit (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 |
Reproduziere unsere Ergebnisse
Um die oben genannten Ultralytics Benchmarks fĂŒr alle Exportformate zu reproduzieren, fĂŒhre diesen Code aus:
Beispiel
Beachte, dass die Benchmarking-Ergebnisse je nach der genauen Hardware- und Softwarekonfiguration eines Systems sowie der aktuellen Arbeitsbelastung des Systems zum Zeitpunkt der DurchfĂŒhrung der Benchmarks variieren können. Die zuverlĂ€ssigsten Ergebnisse erhĂ€ltst du, wenn du einen Datensatz mit einer groĂen Anzahl von Bildern verwendest, d. h. data='coco8.yaml' (4 val images), or
data='coco.yaml'` (5000 val-Bilder).
Raspberry Pi Kamera verwenden
Wenn du den Raspberry Pi fĂŒr Computer-Vision-Projekte verwendest, kann es wichtig sein, Echtzeit-Videobilder zu erfassen, um Inferenzen durchzufĂŒhren. Der integrierte MIPI CSI-Anschluss des Raspberry Pi ermöglicht es dir, offizielle Raspberry PI-Kameramodule anzuschlieĂen. In diesem Leitfaden haben wir ein Raspberry Pi Kameramodul 3 verwendet, um die Videobilder zu erfassen und Inferenzen mit YOLOv8 Modellen durchzufĂŒhren.
Tipp
Erfahre mehr ĂŒber die verschiedenen Kameramodule, die der Raspberry Pi anbietet, und darĂŒber , wie du mit den Raspberry Pi Kameramodulen loslegen kannst.
Hinweis
Der Raspberry Pi 5 verwendet kleinere CSI-AnschlĂŒsse als der Raspberry Pi 4 (15-polig vs. 22-polig), daher brauchst du ein Adapterkabel von 15-polig auf 22-polig, um eine Raspberry Pi Kamera anzuschlieĂen.
Teste die Kamera
FĂŒhre den folgenden Befehl aus, nachdem du die Kamera mit dem Raspberry Pi verbunden hast. Du solltest fĂŒr etwa 5 Sekunden ein Live-Video von der Kamera sehen.
Tipp
Erfahre mehr ĂŒber rpicam-hello
Verwendung in der offiziellen Raspberry Pi Dokumentation
Inferenz mit Kamera
Es gibt 2 Methoden, um mit der Raspberry Pi Kamera auf YOLOv8 Modelle zu schlieĂen.
Verwendung
Wir können picamera2
der mit Raspberry Pi OS vorinstalliert ist, um auf die Kamera und die Inferenz YOLOv8 Modelle 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 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()
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ĂŒhre den folgenden Befehl aus, um den TCP-Stream zu starten.
Erfahre mehr ĂŒber rpicam-vid
Verwendung in der offiziellen Raspberry Pi Dokumentation
Tipp
Sieh dir unser Dokument ĂŒber Inferenzquellen an, wenn du den Bild-/Videoeingangstyp Ă€ndern möchtest.
Best Practices bei der Verwendung des Raspberry Pi
Es gibt einige Best Practices, die du befolgen solltest, um die maximale Leistung auf Raspberry Pis mit YOLOv8 zu erreichen.
-
Verwende eine SSD
Wenn du den Raspberry Pi rund um die Uhr benutzt, ist es empfehlenswert, eine SSD fĂŒr das System zu verwenden, da eine SD-Karte den stĂ€ndigen SchreibvorgĂ€ngen nicht standhalten kann und kaputt gehen könnte. Mit dem integrierten PCIe-Anschluss des Raspberry Pi 5 kannst du jetzt SSDs mit einem Adapter wie der NVMe Base for Raspberry Pi 5 anschlieĂen.
-
Flash ohne GUI
Wenn du Raspberry Pi OS flashen möchtest, kannst du auf die Installation der Desktop-Umgebung (Raspberry Pi OS Lite) verzichten, um etwas Arbeitsspeicher auf dem GerĂ€t zu sparen und mehr Platz fĂŒr die Bildverarbeitung zu schaffen.
NĂ€chste Schritte
Herzlichen GlĂŒckwunsch zur erfolgreichen Einrichtung von YOLO auf deinem Raspberry Pi! Weitere Informationen und UnterstĂŒtzung findest du unter Ultralytics YOLOv8 Docs und Kashmir World Foundation.
Danksagungen und Zitate
Dieser Leitfaden wurde ursprĂŒnglich von Daan Eeltink fĂŒr die Kashmir World Foundation erstellt, eine 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 auf dem Gebiet der Objekterkennungstechnologien.
Weitere Informationen ĂŒber die AktivitĂ€ten der Kashmir World Foundation findest du auf deren Website.
FAQ
Wie kann ich Ultralytics YOLOv8 auf einem Raspberry Pi einrichten, ohne Docker zu benutzen?
Um Ultralytics YOLOv8 auf einem Raspberry Pi ohne Docker einzurichten, befolge diese Schritte:
- Aktualisiere die Paketliste und installiere
pip
: - Installiere das Paket Ultralytics mit optionalen AbhÀngigkeiten:
- Starte das GerĂ€t neu, um die Ănderungen zu ĂŒbernehmen:
AusfĂŒhrliche Anweisungen findest du im Abschnitt Starten ohne Docker.
Warum sollte ich Ultralytics YOLOv8 's NCNN Format auf dem Raspberry Pi fĂŒr KI-Aufgaben verwenden?
Ultralytics YOLOv8Das Format NCNN ist speziell 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 die Nutzung der ARM-Architektur und bietet im Vergleich zu anderen Formaten eine schnellere und effizientere Verarbeitung. Weitere Details zu den unterstĂŒtzten Exportoptionen findest du auf der Ultralytics Dokumentationsseite zu den Einsatzoptionen.
Wie kann ich ein Modell von YOLOv8 in das Format NCNN konvertieren, um es auf dem Raspberry Pi zu verwenden?
Du kannst ein PyTorch YOLOv8 Modell mit den Befehlen Python oder CLI in das NCNN Format umwandeln:
Beispiel
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")
Weitere Informationen findest du im Abschnitt NCNN auf dem Raspberry Pi verwenden.
Was sind die Hardware-Unterschiede zwischen dem Raspberry Pi 4 und dem Raspberry Pi 5, die fĂŒr die AusfĂŒhrung von YOLOv8 relevant sind?
Zu den wichtigsten Unterschieden gehören:
- 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,8GHz, wÀhrend der Raspberry Pi 5 2,4GHz 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 YOLOv8 Modelle auf dem Raspberry Pi 5 im Vergleich zum Raspberry Pi 4 bei. Weitere Informationen findest du in der Tabelle " Vergleich der Raspberry Pi-Serien ".
Wie kann ich ein Raspberry Pi Kameramodul so einrichten, dass es mit Ultralytics YOLOv8 funktioniert?
Es gibt zwei Methoden, um eine Raspberry Pi Kamera fĂŒr YOLOv8 einzurichten:
-
Mit
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()
-
Einen TCP-Stream verwenden:
Detaillierte Anweisungen zur Einrichtung findest du im Abschnitt Inferenz mit Kamera.
Erstellt am 2023-11-12, Aktualisiert am 2024-07-05
Autoren: glenn-jocher (9), IvorZhu331 (1), lakshanthad (2)