DEEPX-Export für Ultralytics YOLO-Modelle#
Das Bereitstellen von Computer-Vision-Modellen auf spezieller NPU-Hardware erfordert ein kompatibles und optimiertes Modellformat. Das Exportieren von Ultralytics YOLO-Modellen in das DEEPX-Format ermöglicht eine effiziente, INT8-quantisierte Inferenz auf DEEPX-NPU-Beschleunigern. Diese Anleitung führt dich durch die Konvertierung deiner YOLO-Modelle in das DEEPX-Format und deren Bereitstellung auf DEEPX-basierter Hardware.
Was ist DEEPX?#
DEEPX ist ein KI-Halbleiterunternehmen, das sich auf Neuronale Prozessoreinheiten (NPUs) spezialisiert hat, die für eine energieeffiziente Deep-Learning-Inferenz am Edge entwickelt wurden. DEEPX-NPUs sind für anspruchsvolle eingebettete und industrielle KI-Anwendungen konzipiert und bieten einen hohen Durchsatz bei minimalem Stromverbrauch. Ihre Hardware eignet sich gut für Bereitstellungsszenarien, in denen die Cloud-Konnektivität unzuverlässig oder unerwünscht ist, wie etwa in der Robotik, bei intelligenten Kameras und in industriellen Automatisierungssystemen.
DEEPX-Exportformat#
Der DEEPX-Export erzeugt eine kompilierte .dxnn-Modellbinärdatei, die für die Ausführung auf DEEPX-NPU-Hardware optimiert ist. Die Kompilierungspipeline verwendet das dx_com-Toolkit, um eine INT8-Quantisierung und hardwarespezifische Optimierung durchzuführen, wodurch ein in sich geschlossenes Modellverzeichnis generiert wird, das für die Bereitstellung bereit ist.
Hauptmerkmale von DEEPX-Modellen#
DEEPX-Modelle bieten mehrere Vorteile für den Edge-Einsatz:
- INT8-Quantisierung: Modelle werden während des Exports auf INT8-Präzision quantisiert, was die Modellgröße deutlich reduziert und den NPU-Durchsatz maximiert. Erfahre mehr über die Modellquantisierung.
- NPU-optimiert: Das
.dxnn-Format ist speziell für DEEPX-NPU-Hardware kompiliert und nutzt dedizierte Beschleunigungseinheiten für eine schnelle und effiziente Inferenz. - Geringer Stromverbrauch: Durch das Auslagern der Inferenz auf die NPU verbrauchen DEEPX-Modelle weitaus weniger Strom als eine vergleichbare Inferenz auf CPU oder GPU.
- Kalibrierungsbasierte Genauigkeit: Der Export verwendet eine EMA-basierte Kalibrierung mit echten Datensatzbildern, um Genauigkeitsverluste während der Quantisierung zu minimieren.
- Eigenständige Ausgabe: Das exportierte Modellverzeichnis enthält die kompilierte Binärdatei, die Kalibrierungskonfiguration und Metadaten für eine unkomplizierte Bereitstellung.
Unterstützte Aufgaben#
Der DEEPX-Export unterstützt alle sieben Ultralytics-Aufgaben. Semantische Segmentierung und Tiefenschätzung sind nur mit YOLO26 verfügbar, der einzigen Familie, die diese Köpfe bereitstellt.
Export nach DEEPX: Konvertiere dein YOLO-Modell#
Exportiere ein Ultralytics YOLO-Modell in das DEEPX-Format und führe die Inferenz mit dem exportierten Modell aus.
Der DEEPX-Export wird nur auf x86-64 Linux-Systemen unterstützt. ARM64 (aarch64) wird für den Exportvorgang nicht unterstützt. Die exportierten dxnn-Modelle sind jedoch vollständig kompatibel und ausführbar auf ARM64-Plattformen.
Installation#
Um die erforderlichen Pakete zu installieren, führe aus:
# Install the required package for YOLO
pip install ultralyticsDas dx_com-Compilerpaket wird beim ersten Export automatisch aus dem DEEPX-SDK-Repository installiert. Detaillierte Anweisungen und Best Practices zum Installationsprozess findest du in unserem Ultralytics-Installationshandbuch. Solltest du bei der Installation der erforderlichen Pakete für YOLO auf Schwierigkeiten stoßen, ziehe unseren Leitfaden für häufige Probleme für Lösungen und Tipps zu Rate.
Verwendung#
Das DEEPX-Format unterstützt die Modi Export, Predict und Validate. Inferenz und Validierung werden auf DEEPX-NPU-Hardware ausgeführt. Exportiere dein Modell und lade dann das exportierte Modell, um eine Inferenz auszuführen oder dessen Genauigkeit zu validieren.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to DEEPX format (quantize=8 is enforced automatically)
model.export(format="deepx") # creates 'yolo26n_deepx_model/'from ultralytics import YOLO
# Load the exported DEEPX model
model = YOLO("yolo26n_deepx_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported DEEPX model
model = YOLO("yolo26n_deepx_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Export-Argumente#
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
format | str | 'deepx' | Zielformat für das exportierte Modell, das die Kompatibilität mit der DEEPX-NPU-Hardware definiert. |
imgsz | int oder tuple | 640 | Gewünschte Bildgröße für die Modelleingabe. Der DEEPX-Export erfordert eine quadratische Eingabe – übergibt eine Ganzzahl (z. B. 640) oder ein Tupel, bei dem die Höhe der Breite entspricht. |
quantize | int oder str | 8/auto | Quantisierungspräzision. 8 (INT8) ist für den DEEPX-Export erforderlich und wird automatisch aktiviert, falls nicht anders angegeben. Ersetzt die veralteten half/int8-Flags. |
simplify | bool | True | Vereinfacht den intermediären ONNX-Graphen mit onnxslim. |
opset | int | None | Gibt die ONNX opset-Version für den zwischengeschalteten ONNX-Graph an. Falls nicht festgelegt, wird die neueste unterstützte Version verwendet. |
data | str | None | Datensatz-YAML, die für die INT8-Kalibrierung verwendet wird; für die Klassifizierung wird stattdessen ein Datensatzverzeichnis oder ein integrierter Datensatzname verwendet. Wenn dies bei quantize=8 weggelassen wird, wählt Ultralytics den Standard-Kalibrierungsdatensatz für die Modellaufgabe aus. |
device | str | None | Gibt das Gerät für den Export an: GPU (device=0) oder CPU (device=cpu). |
optimize | bool | False | Aktiviert eine höhere Compiler-Optimierung, was die Inferenzlatenz reduziert, aber die Kompilierungszeit erhöht. |
Führe den DEEPX-Export immer auf einem x86-64 Linux-Host aus. Der dx_com-Compiler unterstützt kein ARM64.
Weitere Details zum Exportprozess findest du auf der Ultralytics-Dokumentationsseite zum Exportieren.
Ausgabestruktur#
Nach einem erfolgreichen Export wird ein Modellverzeichnis mit der folgenden Struktur erstellt:
yolo26n_deepx_model/
├── yolo26n.dxnn # Compiled DEEPX model binary (NPU executable)
├── config.json # Calibration and preprocessing configuration
└── metadata.yaml # Model metadata (classes, image size, task, etc.)Die .dxnn-Datei ist die kompilierte Modellbinärdatei, die die dx_engine-Laufzeitumgebung direkt auf der NPU lädt. Die metadata.yaml enthält Klassennamen, Bildgröße und andere Informationen, die von der Ultralytics-Inferenzpipeline verwendet werden.
Bereitstellung exportierter YOLO DEEPX-Modelle#
Sobald du dein Ultralytics YOLO-Modell erfolgreich in das DEEPX-Format exportiert hast, besteht der nächste Schritt darin, diese Modelle auf der DEEPX-NPU-Hardware bereitzustellen.
Installation der Laufzeitumgebung#
Für die Inferenz sind der DEEPX-NPU-Treiber, die libdxrt-Laufzeitumgebung und das dx_engine-Python-Paket erforderlich.
Die DEEPX-Laufzeitumgebung unterstützt sowohl x86-64 Linux als auch ARM64 (z. B. Raspberry Pi 5).
# Install the NPU driver and libdxrt runtime
sudo apt update
wget https://github.com/DEEPX-AI/dx_rt_npu_linux_driver/raw/main/release/2.4.1/dxrt-driver-dkms_2.4.1-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.4.1-2_all.deb
wget https://github.com/DEEPX-AI/dx_rt/raw/main/release/3.3.2/libdxrt_3.3.2_all.deb
sudo apt install ./libdxrt_3.3.2_all.deb
# Create dx-engine wheel
cd /usr/share/libdxrt/python_package && sudo ./make_whl.sh
# Install the bundled dx_engine Python wheel
pip install dx_engine-*.whlÜberprüfe mit dxrt-cli --version, ob die Laufzeitumgebung korrekt installiert ist. Du solltest eine Ausgabe ähnlich der folgenden sehen:
DXRT v3.3.2
Minimum Driver Versions
Device Driver: v2.4.0
PCIe Driver: v2.2.0
Firmware: v2.5.2
Minimum Compiler Versions
Compiler: v1.18.1
.dxnn File Format: v6Sobald die Laufzeitumgebung installiert ist, führe Inferenz und Validierung auf deinem DEEPX-Gerät genau wie im obigen Abschnitt Nutzung gezeigt aus – das exportierte _deepx_model wird direkt mit YOLO(...) geladen.
Visualisierung mit dxtron#
dxtron ist der Graphen-Visualisierer von DEEPX zum Untersuchen des kompilierten .dxnn-Modells.
Installiere dxtron auf x86-64 Linux, indem du das .deb-Paket aus dem DEEPX-SDK herunterlädst und über dpkg installierst:
wget https://sdk.deepx.ai/release/dxtron/v2.0.1/dxtron_2.0.1_amd64.deb
sudo dpkg -i dxtron_2.0.1_amd64.debÖffne dann dein exportiertes Modell:
dxtron yolo26n_deepx_model/yolo26n.dxnndxtron ist sowohl für x86-64- als auch für aarch64-Plattformen verfügbar.
Benchmarks#
Das Ultralytics-Team hat YOLO26-Modelle einem Benchmark unterzogen und dabei Geschwindigkeit und Genauigkeit zwischen PyTorch und DEEPX verglichen.
| Modell | Format | Status | Größe (MB) | Metriken/mAP50-95(B) | Inferenzzeit (ms/im) |
|---|---|---|---|---|---|
| YOLO26n | PyTorch | ✅ | 5.3 | 0.4760 | 315.2 |
| YOLO26n | DEEPX | ✅ | 6.6 | 0.4660 | 34.6 |
| YOLO26n-seg | PyTorch | ✅ | 6.5 | 0.4080 | 485.4 |
| YOLO26n-seg | DEEPX | ✅ | 7.9 | 0.3920 | 53.8 |
| YOLO26n-pose | PyTorch | ✅ | 7.6 | 0.4230 | 506.3 |
| YOLO26n-pose | DEEPX | ✅ | 8.8 | 0.4590 | 37.6 |
| YOLO26n-obb | PyTorch | ✅ | 5.7 | 0.817 | 1094.4 |
| YOLO26n-obb | DEEPX | ✅ | 7.3 | 0.783 | 56.4 |
| Modell | Format | Status | Größe (MB) | Gen (top1) | Gen (top5) | Inferenzzeit (ms/im) |
|---|---|---|---|---|---|---|
| YOLO26n-cls | PyTorch | ✅ | 5.6 | 0.431 | 0.716 | 23.8 |
| YOLO26n-cls | DEEPX | ✅ | 5.9 | 0.333 | 0.686 | 2.7 |
Die Validierung für die obigen Benchmarks wurde mit coco128 für Detektion, coco128-seg für Segmentierung, coco8-pose für Pose-Schätzung, imagenet100 für Klassifizierung und dota128 für OBB-Modelle durchgeführt. Die Inferenzzeit beinhaltet keine Vor- oder Nachbearbeitung.
Um den besten Inferenzdurchsatz vom DX-M1 NPU an einem Raspberry Pi 5 zu erhalten, öffne die Boot-Konfigurationsdatei und aktiviere die PCIe Gen 3 Unterstützung.
sudo nano /boot/firmware/config.txtFüge die folgenden Zeilen am Ende der Datei hinzu:
dtparam=pciex1
dtparam=pciex1_gen=3Speichere und beende (Strg+X, dann Y, dann Eingabetaste), starte dann neu:
sudo rebootÜberprüfe die PCIe-Generation. Die erwartete Geschwindigkeit beträgt 8GT/s für PCIe Gen3.
sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"Empfohlener Arbeitsablauf#
- Trainiere dein Modell mit dem Ultralytics Train-Modus
- Exportiere in das DEEPX-Format mit
model.export(format="deepx") - Validiere die Genauigkeit mit
yolo val, um einen minimalen Quantisierungsverlust zu verifizieren - Führe Vorhersagen mit
yolo predictfür die qualitative Validierung durch - Stelle das exportierte
_deepx_model/-Verzeichnis mithilfe derdx_engine-Laufzeitumgebung auf DEEPX-NPU-Hardware bereit
Anwendungen in der Praxis#
YOLO-Modelle, die auf DEEPX-NPU-Hardware bereitgestellt werden, eignen sich gut für eine Vielzahl von Edge-KI-Anwendungen:
- Intelligente Überwachung: Objekterkennung in Echtzeit für Sicherheits- und Überwachungssysteme bei geringem Stromverbrauch und ohne Cloud-Abhängigkeit.
- Industrielle Automatisierung: Qualitätskontrolle direkt auf dem Gerät, Fehlererkennung und Prozessüberwachung in Fabrikumgebungen.
- Robotik: Kamerabasierte Navigation, Hindernisvermeidung und Objekterkennung auf autonomen Robotern und Drohnen.
- Smart Farming: Überwachung des Pflanzengesundheitszustands, Schädlingserkennung und Ertragsschätzung unter Verwendung von Computer Vision in der Landwirtschaft.
- Einzelhandelsanalytik: Kundenstromanalyse, Regalüberwachung und Bestandsverfolgung mit Inferenz in Echtzeit an der Edge.
Zusammenfassung#
In diesem Leitfaden hast du gelernt, wie du Ultralytics YOLO-Modelle in das DEEPX-Format exportierst und auf DEEPX-NPU-Hardware bereitstellst. Die Exportpipeline verwendet eine INT8-Kalibrierung und den dx_com-Compiler, um eine hardwaresoptimierte .dxnn-Binärdatei zu erzeugen, während die dx_engine-Laufzeitumgebung die Inferenz auf dem Gerät übernimmt.
Die Kombination aus Ultralytics YOLO und der NPU-Technologie von DEEPX bietet eine effektive Lösung für die Ausführung fortgeschrittener Computer-Vision-Workloads auf eingebetteten und Edge-Geräten – und liefert einen hohen Durchsatz bei geringem Stromverbrauch für Echtzeitanwendungen.
Weitere Details zur Nutzung findest du auf der offiziellen DEEPX-Website.
Wenn du außerdem mehr über andere Ultralytics YOLO-Integrationen erfahren möchtest, besuche unsere Integrationsleitfaden-Seite. Dort findest du zahlreiche nützliche Ressourcen und Einblicke.
FAQ#
Du kannst dein Modell über die
export()-Methode in Python oder über das CLI exportieren. Der Export aktiviert automatisch die INT8-Quantisierung und verwendet einen Kalibrierungsdatensatz, um den Genauigkeitsverlust zu minimieren. Dasdx_com-Compilerpaket wird automatisch installiert, falls es noch nicht vorhanden ist.Beispielfrom ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="deepx")DEEPX-NPUs sind so konzipiert, dass sie INT8-Berechnungen mit maximaler Effizienz ausführen. Der
dx_com-Compiler quantisiert das Modell während des Exports mithilfe einer EMA-basierten Kalibrierung mit echten Datensatzbildern, sodass die NPU ihre volle Leistung entfalten kann. INT8 wird für DEEPX-Exporte immer erzwungen – wenn du eine andere Präzision anforderst, wird diese unter Ausgabe einer Warnung überschrieben.Der DEEPX-Modellexport (Kompilierung) erfordert einen x86-64 Linux-Host. Der Exportschritt wird auf ARM64- (aarch64) und Windows-Geräten nicht unterstützt. Die Inferenz mit dem exportierten
.dxnn-Modell kann auf jeder Linux-Plattform (x86-64 und ARM64) ausgeführt werden, die von derdx_engine-Laufzeitumgebung unterstützt wird.Der Export erstellt ein Verzeichnis (z. B.
yolo26n_deepx_model/), das Folgendes enthält:yolo26n.dxnn– die kompilierte NPU-Binärdateiconfig.json– Kalibrierungs- und Vorverarbeitungseinstellungenmetadata.yaml– Modellmetadaten einschließlich Klassennamen und Bildgröße
Ja. Jedes Modell, das mit dem Ultralytics Train-Modus trainiert und mit
format="deepx"exportiert wurde, kann auf DEEPX-NPU-Hardware bereitgestellt werden, vorausgesetzt, es verwendet unterstützte Ebenenoperationen. Der Export unterstützt alle sieben Ultralytics-Aufgaben: Erkennung, Instanzsegmentierung, semantische Segmentierung, Tiefenschätzung, Klassifizierung, Schätzung der Körperhaltung (Pose) und orientierte Bounding Box (OBB).Die DEEPX-Exportpipeline verwendet jedes Bild im Kalibrierungsdatensatz mit der EMA-Kalibrierungsmethode. Ein paar hundert Bilder reichen in der Regel für eine gute Quantisierungsgenauigkeit aus. Verweise mit
dataauf einen kleineren Datensatz, falls die Kompilierungszeit bei großen Datensätzen zum Problem wird.Die DEEPX-Laufzeitumgebung ist nicht in
ultralyticsenthalten und muss vor der Ausführung der Inferenz separat installiert werden. Installiere auf x86-64 Linux-Maschinen und ARM64 Linux-Maschinen (z. B. Raspberry Pi 5) den NPU-Treiber (dxrt-driver-dkms) und die Laufzeitumgebung (libdxrt) aus den DEEPX-AI GitHub Releases und installiere anschließend das gebündeltedx_enginePython Wheel. Siehe die obigen Befehle im Abschnitt Laufzeitinstallation.