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

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

Hier werden wir installieren Ultralytics auf dem Raspberry Pi mit optionalen AbhÀngigkeiten, so dass wir die PyTorch Modelle in andere verschiedene Formate.

  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

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

NVIDIA Jetson Ökosystem

NVIDIA Jetson Ökosystem

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

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.

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:

  1. Aktualisiere die Paketliste und installiere pip:
    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Installiere das Paket Ultralytics mit optionalen AbhÀngigkeiten:
    pip install ultralytics[export]
    
  3. Starte das GerĂ€t neu, um die Änderungen zu ĂŒbernehmen:
    sudo reboot
    

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

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:

  1. 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()
    
  2. Einen TCP-Stream verwenden:

    rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888
    
    from ultralytics import YOLO
    
    model = YOLO("yolov8n.pt")
    results = model("tcp://127.0.0.1:8888")
    

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)

Kommentare