Zum Inhalt springen

Sony IMX500 Export für Ultralytics YOLOv8

Dieser Leitfaden behandelt den Export und die Bereitstellung von Ultralytics YOLOv8 Modellen für Raspberry Pi AI-Kameras, die mit dem Sony IMX500 Sensor ausgestattet sind.

Der Einsatz von Computer-Vision-Modellen auf Geräten mit begrenzter Rechenleistung, wie z. B. der Raspberry Pi AI Camera, kann sich als schwierig erweisen. Die Verwendung eines für eine schnellere Leistung optimierten Modellformats macht einen großen Unterschied.

Das Modell IMX500 ist so konzipiert, dass es nur wenig Strom verbraucht und gleichzeitig eine hohe Leistung für neuronale Netze bietet. Es ermöglicht Ihnen die Optimierung Ihrer Ultralytics YOLOv8 Modelle für Hochgeschwindigkeits-Inferencing bei geringem Stromverbrauch zu optimieren. In diesem Leitfaden zeigen wir Ihnen, wie Sie Ihre Modelle in das IMX500-Format exportieren und bereitstellen, damit Ihre Modelle auf der Raspberry Pi AI Camera gut funktionieren.

Raspberry Pi AI-Kamera

Warum sollten Sie nach IMX500 exportieren?

Der IMX500 Intelligent Vision Sensor von Sony ist ein bahnbrechendes Stück Hardware für die KI-Verarbeitung. Er ist der weltweit erste intelligente Vision-Sensor mit On-Chip-KI-Funktionen. Dieser Sensor hilft bei der Überwindung vieler Herausforderungen im Bereich der Edge-KI, einschließlich Engpässen bei der Datenverarbeitung, Datenschutzbedenken und Leistungseinschränkungen.
Während andere Sensoren lediglich Bilder und Frames weitergeben, erzählt der IMX500 eine ganze Geschichte. Er verarbeitet die Daten direkt auf dem Sensor und ermöglicht es den Geräten, Erkenntnisse in Echtzeit zu gewinnen.

Sonys IMX500 Export für YOLOv8 Modelle

Der IMX500 wurde entwickelt, um die Art und Weise zu verändern, wie Geräte Daten direkt auf dem Sensor verarbeiten, ohne dass sie zur Verarbeitung an die Cloud gesendet werden müssen.

Der IMX500 arbeitet mit quantisierten Modellen. Durch die Quantisierung werden die Modelle kleiner und schneller, ohne an Genauigkeit zu verlieren. Sie ist ideal für die begrenzten Ressourcen des Edge Computing und ermöglicht es Anwendungen, schnell zu reagieren, indem sie die Latenzzeit reduziert und eine schnelle Datenverarbeitung vor Ort ermöglicht, ohne Abhängigkeit von der Cloud. Durch die lokale Verarbeitung bleiben die Nutzerdaten außerdem privat und sicher, da sie nicht an einen Remote-Server gesendet werden.

IMX500 Hauptmerkmale:

  • Ausgabe von Metadaten: Anstatt nur Bilder zu übertragen, kann der IMX500 sowohl Bilder als auch Metadaten (Inferenzergebnisse) ausgeben und nur Metadaten ausgeben, um die Datengröße zu minimieren, die Bandbreite zu reduzieren und die Kosten zu senken.
  • Berücksichtigt Datenschutzbelange: Durch die Verarbeitung der Daten auf dem Gerät geht der IMX500 auf Bedenken hinsichtlich des Datenschutzes ein und eignet sich daher ideal für Anwendungen, bei denen der Mensch im Mittelpunkt steht, wie z. B. Personenzählung und Belegungsüberwachung.
  • Verarbeitung in Echtzeit: Die schnelle Sensorverarbeitung unterstützt Echtzeitentscheidungen und eignet sich perfekt für KI-Anwendungen wie z. B. autonome Systeme.

Bevor Sie beginnen: Um die besten Ergebnisse zu erzielen, sollten Sie sicherstellen, dass Ihr YOLOv8 Modell gut auf den Export vorbereitet ist, indem Sie unseren Leitfaden zur Modellschulung, den Leitfaden zur Datenvorbereitung und den Leitfaden zur Abstimmung der Hyperparameter befolgen.

Beispiele für die Verwendung

Exportieren Sie ein Modell von Ultralytics YOLOv8 in das IMX500-Format und führen Sie Inferenzen mit dem exportierten Modell durch.

Hinweis

Hier führen wir eine Inferenz durch, um sicherzustellen, dass das Modell wie erwartet funktioniert. Für den Einsatz und die Inferenz auf der Raspberry Pi AI-Kamera springen Sie bitte zu IMX500-Export verwenden im Abschnitt Einsatz.

Beispiel

from ultralytics import YOLO

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

# Export the model
model.export(format="imx")  # exports with PTQ quantization by default

# Load the exported model
imx_model = YOLO("yolov8n_imx_model")

# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to imx format with Post-Training Quantization (PTQ)
yolo export model=yolov8n.pt format=imx

# Run inference with the exported model
yolo predict model=yolov8n_imx_model source='https://ultralytics.com/images/bus.jpg'

Der Exportprozess erstellt ein ONNX Modell für die Quantisierungsvalidierung, zusammen mit einem Verzeichnis namens <model-name>_imx_model. Dieses Verzeichnis enthält die packerOut.zip Datei, die für die Verpackung des Modells für den Einsatz auf der IMX500-Hardware unerlässlich ist. Außerdem muss die <model-name>_imx_model Ordner enthält eine Textdatei (labels.txt), in der alle mit dem Modell verbundenen Bezeichnungen aufgeführt sind.

yolov8n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolov8n_imx.onnx
├── yolov8n_imx500_model_MemoryReport.json
└── yolov8n_imx500_model.pbtxt

Argumente

Wenn Sie ein Modell in das IMX500-Format exportieren, können Sie verschiedene Argumente angeben:

Schlüssel Wert Beschreibung
format imx Format für den Export (imx)
int8 True Aktiviert die INT8-Quantisierung für das Modell (Standard: True)
imgsz 640 Bildgröße für die Modelleingabe (Standard: 640)

IMX500-Export bei der Bereitstellung verwenden

Nach dem Export des Modells Ultralytics YOLOv8n in das IMX500-Format kann es auf der Raspberry Pi AI-Kamera zur Inferenz eingesetzt werden.

Hardware-Voraussetzungen

Vergewissern Sie sich, dass Sie die folgende Hardware haben:

  1. Raspberry Pi 5 oder Raspberry Pi 4 Modell B
  2. Raspberry Pi AI-Kamera

Schließen Sie die Raspberry Pi AI-Kamera an den 15-poligen MIPI CSI-Anschluss des Raspberry Pi an und schalten Sie den Raspberry Pi ein

Software-Voraussetzungen

Hinweis

Diese Anleitung wurde mit dem Raspberry Pi OS Bookworm auf einem Raspberry Pi 5 getestet.

Schritt 1: Öffnen Sie ein Terminal-Fenster und führen Sie die folgenden Befehle aus, um die Software des Raspberry Pi auf die neueste Version zu aktualisieren.

sudo apt update && sudo apt full-upgrade

Schritt 2: Installieren Sie die IMX500-Firmware, die für den Betrieb des IMX500-Sensors erforderlich ist, zusammen mit einem Packager-Tool.

sudo apt install imx500-all imx500-tools

Schritt 3: Installieren Sie die Voraussetzungen für die Ausführung picamera2 Anwendung. Wir werden diese Anwendung später für den Bereitstellungsprozess verwenden.

sudo apt install python3-opencv python3-munkres

Schritt 4: Starten Sie den Raspberry Pi neu, damit die Änderungen wirksam werden.

sudo reboot

Modell verpacken und auf der AI-Kamera bereitstellen

Nach Erhalt der packerOut.zip aus dem IMX500-Konvertierungsprozess, können Sie diese Datei an das Packager-Tool übergeben, um eine RPK-Datei zu erhalten. Diese Datei kann dann direkt für die AI-Kamera bereitgestellt werden, indem Sie picamera2.

Schritt 1: Verpacken des Modells in eine RPK-Datei

imx500-package -i <path to packerOut.zip> -o <output folder>

Die obigen Angaben erzeugen eine network.rpk Datei im angegebenen Ausgabeordner.

Schritt 2: Klonen picamera2 Repository, installieren Sie es und navigieren Sie zu den imx500-Beispielen

git clone -b next https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e .  --break-system-packages
cd examples/imx500

Schritt 3: Führen Sie die Objekterkennung YOLOv8 anhand der Datei labels.txt aus, die beim IMX500-Export erstellt wurde.

python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --bbox-normalization --ignore-dash-labels --bbox-order xy --labels <path to labels.txt>

Dann können Sie die Live-Ausgabe der Inferenz wie folgt sehen

Rückschlüsse auf die Raspberry Pi AI-Kamera

Benchmarks

YOLOv8 Die folgenden Benchmarks wurden vom Ultralytics Team auf dem Raspberry Pi AI Camera mit imx Modellformat zur Messung von Geschwindigkeit und Genauigkeit.

Modell Format Status Größe (MB) mAP50-95(B) Inferenzzeit (ms/im)
YOLOv8n imx 2.9 0.522 66.66

Hinweis

Die Validierung des obigen Benchmarks wurde mit dem coco8-Datensatz durchgeführt

Was steckt unter der Haube?

IMX500-Einsatz

Sony Model Compression Toolkit (MCT)

Das Model Compression Toolkit (MCT) von Sony ist ein leistungsstarkes Tool zur Optimierung von Deep Learning-Modellen durch Quantisierung und Pruning. Es unterstützt verschiedene Quantisierungsmethoden und bietet fortschrittliche Algorithmen zur Reduzierung der Modellgröße und der Rechenkomplexität, ohne die Genauigkeit wesentlich zu beeinträchtigen. MCT ist besonders nützlich für den Einsatz von Modellen auf ressourcenbeschränkten Geräten und gewährleistet eine effiziente Inferenz und reduzierte Latenzzeiten.

Unterstützte Funktionen von MCT

MCT von Sony bietet eine Reihe von Funktionen zur Optimierung neuronaler Netzwerkmodelle:

  1. Graph-Optimierungen: Wandelt Modelle in effizientere Versionen um, indem Schichten wie die Stapelnormalisierung in vorhergehende Schichten gefaltet werden.
  2. Quantisierungsparameter-Suche: Minimiert das Quantisierungsrauschen anhand von Metriken wie mittlerer quadratischer Fehler, No-Clipping und mittlerer Durchschnittsfehler.
  3. Erweiterte Quantisierungsalgorithmen:
    • Negative Verschiebungskorrektur: Behebt Leistungsprobleme durch symmetrische Aktivierungsquantisierung.
    • Ausreißer-Filterung: Verwendet den Z-Score, um Ausreißer zu erkennen und zu entfernen.
    • Clustering: Verwendet ungleichmäßige Quantisierungsraster zur besseren Anpassung der Verteilung.
    • Mixed-Precision-Suche: Weist je nach Empfindlichkeit unterschiedliche Quantisierungs-Bitbreiten pro Schicht zu.
  4. Visualisierung: Verwenden Sie TensorBoard, um Einblicke in die Modellleistung, Quantisierungsphasen und Bitbreitenkonfigurationen zu erhalten.

Quantisierung

MCT unterstützt mehrere Quantisierungsmethoden, um die Modellgröße zu reduzieren und die Inferenzgeschwindigkeit zu erhöhen:

  1. Quantisierung nach dem Training (PTQ):
    • Verfügbar über Keras und PyTorch APIs.
    • Komplexität: Niedrig
    • Berechnungsaufwand: Gering (CPU Minuten)
  2. Gradientenbasierte Quantisierung nach dem Training (GPTQ):
    • Verfügbar über Keras und PyTorch APIs.
    • Komplexität: Mittel
    • Berechnungsaufwand: Mäßig (2-3 GPU Stunden)
  3. Quantisierungsorientiertes Training (QAT):
    • Komplexität: Hoch
    • Berechnungsaufwand: hoch (12-36 GPU Stunden)

MCT unterstützt auch verschiedene Quantisierungsschemata für Gewichte und Aktivierungen:

  1. Power-of-Two (hardwarefreundlich)
  2. Symmetrisch
  3. Uniform

Strukturiertes Beschneiden

MCT führt ein strukturiertes, hardwarenahes Model Pruning ein, das für bestimmte Hardware-Architekturen entwickelt wurde. Diese Technik nutzt die SIMD-Fähigkeiten (Single Instruction, Multiple Data) der Zielplattform, indem SIMD-Gruppen beschnitten werden. Dies reduziert die Modellgröße und -komplexität bei gleichzeitiger Optimierung der Kanalauslastung, abgestimmt auf die SIMD-Architektur für eine gezielte Ressourcennutzung des Gewichtsspeicher-Footprints. Verfügbar über Keras und PyTorch APIs.

IMX500 Konverter Werkzeug (Compiler)

Das IMX500 Converter Tool ist ein wesentlicher Bestandteil des IMX500-Toolsatzes und ermöglicht die Zusammenstellung von Modellen für den Einsatz auf dem IMX500-Sensor von Sony (z. B. Raspberry Pi AI-Kameras). Dieses Tool erleichtert den Übergang von Ultralytics YOLOv8 Modellen, die mit der Software Ultralytics verarbeitet wurden, und stellt sicher, dass sie kompatibel sind und auf der angegebenen Hardware effizient funktionieren. Das Exportverfahren im Anschluss an die Modellquantisierung umfasst die Erstellung von Binärdateien, die wichtige Daten und gerätespezifische Konfigurationen kapseln und den Bereitstellungsprozess auf der Raspberry Pi AI Camera vereinfachen.

Anwendungsfälle aus der realen Welt

Der Export in das IMX500-Format ist in vielen Branchen anwendbar. Hier sind einige Beispiele:

  • Edge AI und IoT: Ermöglichen Sie die Objekterkennung auf Drohnen oder Sicherheitskameras, wo Echtzeitverarbeitung auf Geräten mit geringem Stromverbrauch unerlässlich ist.
  • Wearable Devices: Einsatz von Modellen, die für die KI-Verarbeitung in kleinem Maßstab auf Wearables zur Gesundheitsüberwachung optimiert sind.
  • Intelligente Städte: Nutzen Sie IMX500-exportierte YOLOv8 Modelle zur Verkehrsüberwachung und Sicherheitsanalyse mit schnellerer Verarbeitung und minimaler Latenz.
  • Einzelhandelsanalyse: Verbessern Sie die Überwachung in den Geschäften, indem Sie optimierte Modelle in Kassensystemen oder intelligenten Regalen einsetzen.

Schlussfolgerung

Durch den Export von Ultralytics YOLOv8 Modellen in das IMX500-Format von Sony können Sie Ihre Modelle für eine effiziente Inferenz auf IMX500-basierten Kameras einsetzen. Durch den Einsatz fortschrittlicher Quantisierungstechniken können Sie die Modellgröße reduzieren und die Inferenzgeschwindigkeit erhöhen, ohne die Genauigkeit wesentlich zu beeinträchtigen.

Weitere Informationen und detaillierte Richtlinien finden Sie auf der IMX500-Website von Sony.

FAQ

Wie exportiere ich ein YOLOv8 Modell in das IMX500 Format für die Raspberry Pi AI Kamera?

Um ein Modell YOLOv8 in das IMX500-Format zu exportieren, verwenden Sie entweder die API Python oder den Befehl CLI :

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(format="imx")  # Exports with PTQ quantization by default

Der Exportvorgang erstellt ein Verzeichnis, das die für die Bereitstellung erforderlichen Dateien enthält, darunter packerOut.zip das mit dem IMX500-Packager-Tool auf dem Raspberry Pi verwendet werden kann.

Was sind die wichtigsten Vorteile der Verwendung des IMX500-Formats für den Einsatz von Edge-KI?

Das IMX500-Format bietet mehrere wichtige Vorteile für den Edge-Einsatz:

  • KI-Verarbeitung auf dem Chip reduziert Latenzzeit und Stromverbrauch
  • Gibt sowohl Bild als auch Metadaten (Schlussfolgerungsergebnis) aus, anstatt nur Bilder
  • Verbesserter Datenschutz durch lokale Datenverarbeitung ohne Cloud-Abhängigkeit
  • Echtzeit-Verarbeitungsfunktionen, ideal für zeitkritische Anwendungen
  • Optimierte Quantisierung für den effizienten Einsatz von Modellen auf Geräten mit eingeschränkten Ressourcen

Welche Hardware- und Softwarevoraussetzungen sind für den Einsatz von IMX500 erforderlich?

Für den Einsatz der IMX500-Modelle benötigen Sie:

Hardware:

  • Raspberry Pi 5 oder Raspberry Pi 4 Modell B
  • Raspberry Pi AI-Kamera mit IMX500-Sensor

Software:

  • Raspberry Pi OS Bücherwurm
  • IMX500-Firmware und -Tools (sudo apt install imx500-all imx500-tools)
  • Python Pakete für picamera2 (sudo apt install python3-opencv python3-munkres)

Welche Leistung kann ich von den YOLOv8 Modellen auf dem IMX500 erwarten?

Basierend auf Ultralytics Benchmarks auf Raspberry Pi AI Camera:

  • YOLOv8n erreicht 66,66 ms Inferenzzeit pro Bild
  • mAP50-95 von 0,522 auf dem COCO8-Datensatz
  • Modellgröße von nur 2,9 MB nach Quantisierung

Dies zeigt, dass das IMX500-Format eine effiziente Echtzeit-Inferenz bietet und gleichzeitig eine gute Genauigkeit für Edge-AI-Anwendungen gewährleistet.

Wie verpacke ich mein exportiertes Modell und stelle es auf der Raspberry Pi AI Kamera bereit?

Nach dem Export ins IMX500-Format:

  1. Verwenden Sie das Packager-Tool, um eine RPK-Datei zu erstellen:

    imx500-package -i <path to packerOut.zip> -o <output folder>
    
  2. Klonen und installieren Sie picamera2:

    git clone -b next https://github.com/raspberrypi/picamera2
    cd picamera2 && pip install -e . --break-system-packages
    
  3. Führen Sie die Inferenz unter Verwendung der erzeugten RPK-Datei durch:

    python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --bbox-normalization --labels <path to labels.txt>
    
📅 Erstellt vor 0 Tagen ✏️ Aktualisiert vor 0 Tagen

Kommentare