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.
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")
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:
- Raspberry Pi 5 oder Raspberry Pi 4 Modell B
- 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.
Schritt 2: Installieren Sie die IMX500-Firmware, die für den Betrieb des IMX500-Sensors erforderlich ist, zusammen mit einem Packager-Tool.
Schritt 3: Installieren Sie die Voraussetzungen für die Ausführung picamera2
Anwendung. Wir werden diese Anwendung später für den Bereitstellungsprozess verwenden.
Schritt 4: Starten Sie den Raspberry Pi neu, damit die Änderungen wirksam werden.
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
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
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?
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:
- Graph-Optimierungen: Wandelt Modelle in effizientere Versionen um, indem Schichten wie die Stapelnormalisierung in vorhergehende Schichten gefaltet werden.
- Quantisierungsparameter-Suche: Minimiert das Quantisierungsrauschen anhand von Metriken wie mittlerer quadratischer Fehler, No-Clipping und mittlerer Durchschnittsfehler.
- 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.
- 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:
- Quantisierung nach dem Training (PTQ):
- Verfügbar über Keras und PyTorch APIs.
- Komplexität: Niedrig
- Berechnungsaufwand: Gering (CPU Minuten)
- Gradientenbasierte Quantisierung nach dem Training (GPTQ):
- Verfügbar über Keras und PyTorch APIs.
- Komplexität: Mittel
- Berechnungsaufwand: Mäßig (2-3 GPU Stunden)
- Quantisierungsorientiertes Training (QAT):
- Komplexität: Hoch
- Berechnungsaufwand: hoch (12-36 GPU Stunden)
MCT unterstützt auch verschiedene Quantisierungsschemata für Gewichte und Aktivierungen:
- Power-of-Two (hardwarefreundlich)
- Symmetrisch
- 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:
-
Verwenden Sie das Packager-Tool, um eine RPK-Datei zu erstellen:
-
Klonen und installieren Sie picamera2:
-
Führen Sie die Inferenz unter Verwendung der erzeugten RPK-Datei durch: