Zum Inhalt springen

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 Max Frequenz 1,4GHz 1.8GHz 2,4GHz
GPU Videocore IV Videocore VI VideoCore VII
GPU Max 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.

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

Wenn das erledigt ist, kannst du mit dem Abschnitt NCNN auf dem Raspberry Pi fortfahren.

Start ohne Docker

Ultralytics Paket installieren

Here we will install Ultralytics package on the Raspberry Pi with optional dependencies so that we can export the PyTorch models to other different formats.

  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. Installiere ultralytics Pip-Paket mit optionalen AbhÀngigkeiten

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

    sudo reboot
    

NCNN auf dem Raspberry Pi verwenden

Out of all the model export formats supported by Ultralytics, NCNN delivers the best inference performance when working with Raspberry Pi devices because NCNN is highly optimized for mobile/ embedded platforms (such as ARM architecture). Therefor our recommendation is to use NCNN with Raspberry Pi.

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")
# Export a YOLOv8n PyTorch model to NCNN format
yolo export model=yolov8n.pt format=ncnn  # creates 'yolov8n_ncnn_model'

# Run inference with the exported model
yolo predict model='yolov8n_ncnn_model' source='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 were run by the Ultralytics team on nine different model formats measuring speed and accuracy: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, NCNN. Benchmarks were run on both Raspberry Pi 5 and Raspberry Pi 4 at FP32 precision with default input image size of 640.

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

NVIDIA Jetson Ökosystem

NVIDIA Jetson Ökosystem

Detaillierte Vergleichstabelle

The below table represents the benchmark results for two different models (YOLOv8n, YOLOv8s) across nine different formats (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, NCNN), running on both Raspberry Pi 4 and Raspberry Pi 5, giving us the status, size, mAP50-95(B) metric, and inference time for each combination.

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

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
results = model.benchmarks(data="coco8.yaml", imgsz=640)
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco8.yaml imgsz=640

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), ordata='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.

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.

rpicam-hello

Inferenz mit Kamera

Es gibt 2 Methoden, um mit der Raspberry Pi Kamera auf YOLOv8 Modelle zu schließen.

Verwendung

Wir können picamera2der 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.

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

Erfahre mehr ĂŒber rpicam-vid Verwendung in der offiziellen Raspberry Pi Dokumentation

Beispiel

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Run inference
results = model("tcp://127.0.0.1:8888")
yolo predict model=yolov8n.pt source="tcp://127.0.0.1:8888"

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.

  1. 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.

  2. 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.



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (7), IvorZhu331 (1), lakshanthad (2)

Kommentare