Ultralytics YOLO27:

DEEPX-Export für Ultralytics-YOLO-Modelle#

Für die Bereitstellung von Computer-Vision-Modellen auf spezialisierter NPU-Hardware ist ein kompatibles und optimiertes Modellformat erforderlich. Der Export von Ultralytics YOLO-Modellen ins DEEPX-Format ermöglicht effiziente, INT8-quantisierte Inferenz auf DEEPX-NPU-Beschleunigern. Diese Anleitung führt dich durch die Konvertierung deiner YOLO-Modelle ins DEEPX-Format und ihre Bereitstellung auf DEEPX-Hardware.

Was ist DEEPX?#

DEEPX NPU Inference

DEEPX ist ein Halbleiterunternehmen für KI, das sich auf neuronale Verarbeitungseinheiten (NPUs) spezialisiert hat, die für energieeffiziente Deep-Learning-Inferenz am Netzwerkrand entwickelt wurden. DEEPX-NPUs sind für anspruchsvolle eingebettete und industrielle KI-Anwendungen ausgelegt und bieten einen hohen Durchsatz bei minimalem Stromverbrauch. Die Hardware eignet sich besonders für Bereitstellungsszenarien, in denen die Cloud-Verbindung unzuverlässig oder unerwünscht ist, etwa in der Robotik, bei intelligenten Kameras und in industriellen Automatisierungssystemen.

DEEPX-Exportformat#

Beim DEEPX-Export entsteht eine kompilierte .dxnn-Modelldatei, die für die Ausführung auf DEEPX-NPU-Hardware optimiert ist. Die Kompilierungspipeline verwendet das Toolkit dx_com für die INT8-Quantisierung und hardwarespezifische Optimierungen. Dabei entsteht ein eigenständiges Modellverzeichnis, das für die Bereitstellung bereit ist.

Wichtige Merkmale von DEEPX-Modellen#

DEEPX-Modelle bieten mehrere Vorteile für die Bereitstellung am Netzwerkrand:

  • INT8-Quantisierung: Beim Export werden die Modelle auf INT8-Genauigkeit quantisiert. Dadurch wird die Modellgröße deutlich verringert und der Durchsatz der NPU maximiert. Erfahre mehr über die Modellquantisierung.
  • Für NPUs optimiert: Das Format .dxnn wird speziell für DEEPX-NPU-Hardware kompiliert und nutzt dedizierte Beschleunigungseinheiten für schnelle, effiziente Inferenz.
  • Niedriger Stromverbrauch: Indem die Inferenz auf die NPU ausgelagert wird, verbrauchen DEEPX-Modelle deutlich weniger Strom als vergleichbare Inferenz auf CPU oder GPU.
  • Genauigkeit durch Kalibrierung: Beim Export wird eine EMA-basierte Kalibrierung mit Bildern aus echten Datensätzen verwendet, um Genauigkeitsverluste während der Quantisierung zu minimieren.
  • Eigenständige Ausgabe: Das exportierte Modellverzeichnis enthält die kompilierte Binärdatei, die Kalibrierungskonfiguration und Metadaten, sodass sich das Modell unkompliziert bereitstellen lässt.

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 Modellfamilie, die diese Ausgabeköpfe enthält.

AufgabeYOLOv8YOLO11YOLO26
Erkennen✅✅✅
Segmentieren✅✅✅
Semantisch❌❌✅
Tiefe❌❌✅
Klassifizieren✅✅✅
Pose✅✅✅
OBB✅✅✅

Export nach DEEPX: YOLO-Modell konvertieren#

Exportiere ein Ultralytics-YOLO-Modell ins DEEPX-Format und führe mit dem exportierten Modell Inferenz aus.

Hinweis

Der DEEPX-Export wird nur auf x86-64-Linux-Rechnern unterstützt. ARM64 (aarch64) wird für den Exportschritt nicht unterstützt. Die exportierten dxnn-Modelle sind jedoch vollständig mit ARM64-Plattformen kompatibel und können dort ausgeführt werden.

Installation#

Führe zum Installieren der erforderlichen Pakete folgenden Befehl aus:

Installation
# Install the required package for YOLO
pip install ultralytics

Der Compiler dx_com wird beim ersten Export automatisch aus dem DEEPX-SDK-Repository installiert. Der aktuelle Exportablauf verwendet DX-COM 2.3.0, das Wheels für Python 3.8–3.12 auf x86-64 Linux mit glibc 2.31 oder neuer bereitstellt.

Die PyPI-Versionen des Compilers wurden zurückgezogen. Um die Exportabhängigkeiten vorab zu installieren, gib die SDK-Wheel-Seite mit --find-links an. Dies funktioniert sowohl mit pip als auch mit uv pip:

pip install "ultralytics[export-deepx]" --find-links https://sdk.deepx.ai/release/dxcom/v2.3.0/index.html

Für eine bearbeitbare Installation aus dem Repository ersetze "ultralytics[export-deepx]" durch -e ".[export-base,export-deepx]". Um die Python-3.12-Umgebung und den von CI verwendeten kurzen Exporttest nachzustellen, führe den vorhandenen Umgebungs-Builder im Stammverzeichnis des Repositorys aus:

ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepx

Der Umgebungs-Builder benötigt uv und eine installierte Ultralytics-Arbeitskopie. Er installiert den Compiler aus der SDK-Quelle und wendet automatisch die getesteten Abhängigkeitsbeschränkungen an.

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 es anschließend, um Inferenz auszuführen oder seine Genauigkeit zu validieren.

Exportieren
from ultralytics import YOLO

# YOLO26-Modell laden
model = YOLO("yolo26n.pt")

# Modell ins DEEPX-Format exportieren (quantize=8 wird automatisch erzwungen)
model.export(format="deepx")  # creates 'yolo26n_deepx_model/'
Vorhersagen
from ultralytics import YOLO

# Das exportierte DEEPX-Modell laden
model = YOLO("yolo26n_deepx_model")

# Inference ausführen
results = model("https://ultralytics.com/images/bus.jpg")
Validieren
from ultralytics import YOLO

# Das exportierte DEEPX-Modell laden
model = YOLO("yolo26n_deepx_model")

# Genauigkeit anhand des COCO8-Datensatzes validieren
metrics = model.val(data="coco8.yaml")

Exportargumente#

ArgumentTypStandardBeschreibung
formatstr'deepx'Zielformat für das exportierte Modell, das die Kompatibilität mit DEEPX-NPU-Hardware festlegt.
imgszint oder tuple640Gewünschte Bildgröße für die Modelleingabe. Der DEEPX-Export erfordert eine quadratische Eingabe – übergib eine Ganzzahl (z. B. 640) oder ein Tupel, bei dem Höhe und Breite gleich sind.
quantizeint oder str8/autoQuantisierungsgenauigkeit. Für den DEEPX-Export ist 8 (INT8) erforderlich und wird automatisch aktiviert, wenn keine Angabe erfolgt. Ersetzt die veralteten Flags half/int8.
simplifyboolTrueVereinfacht den zwischengeschalteten ONNX-Graphen mit onnxslim.
opsetintNoneLegt die ONNX-Operatorensatzversion für den zwischengeschalteten ONNX-Graphen fest. Wenn keine Version angegeben ist, wird die neueste unterstützte Version verwendet.
datastrNoneDataset-YAML-Datei für die INT8-Kalibrierung; bei der Klassifizierung wird stattdessen ein Dataset-Verzeichnis oder ein integrierter Dataset-Name verwendet. Wenn quantize=8 nicht angegeben ist, wählt Ultralytics das Standard-Kalibrierungsdataset für die jeweilige Modellaufgabe.
devicestrNoneLegt das Gerät für den Export fest: GPU (device=0) oder CPU (device=cpu).
optimizeboolFalseAktiviert eine stärkere Compileroptimierung, die die Inferenzlatenz verringert und die Kompilierungszeit verlängert.
Tipp

Führe den DEEPX-Export immer auf einem x86-64-Linux-Host aus. Der Compiler dx_com unterstützt ARM64 nicht.

Weitere Informationen zum Export findest du auf der Ultralytics-Dokumentationsseite zum Export.

Ausgabestruktur#

Nach einem erfolgreichen Export wird ein Modellverzeichnis mit folgender 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 Datei .dxnn ist die kompilierte Modelldatei, die die Laufzeitumgebung dx_engine direkt auf der NPU lädt. metadata.yaml enthält Klassennamen, Bildgröße und weitere Informationen, die von der Ultralytics-Inferenzpipeline verwendet werden.

Exportierte YOLO-DEEPX-Modelle bereitstellen#

Nachdem du dein Ultralytics-YOLO-Modell erfolgreich ins DEEPX-Format exportiert hast, kannst du es als Nächstes auf DEEPX-NPU-Hardware bereitstellen.

Laufzeitumgebung installieren#

Für die Inferenz benötigst du den DEEPX-NPU-Treiber, die Laufzeitumgebung libdxrt und das Python-Paket dx_engine.

Hinweis

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

Prüfe mit dxrt-cli --version, ob die Laufzeitumgebung korrekt installiert ist. Die Ausgabe sollte in etwa so aussehen:

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: v6

Sobald die Laufzeitumgebung installiert ist, führe Inferenz und Validierung auf deinem DEEPX-Gerät genau wie im Abschnitt Verwendung oben beschrieben aus – das exportierte _deepx_model lässt sich direkt mit YOLO(...) laden.

Visualisierung mit dxtron#

dxtron ist der DEEPX-Graph-Visualisierer zum Untersuchen des kompilierten Modells .dxnn.

Installiere dxtron unter x86-64 Linux, indem du das Paket .deb vom DEEPX-SDK herunterlädst und mit 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 anschließend dein exportiertes Modell:

dxtron yolo26n_deepx_model/yolo26n.dxnn
Hinweis

dxtron ist für x86-64- und aarch64-Plattformen verfügbar.

Benchmarks#

Das Ultralytics-Team hat YOLO26-Modelle getestet und dabei Geschwindigkeit und Genauigkeit von PyTorch und DEEPX verglichen.

Leistung
Raspberry Pi 5 DEEPX M1 NPU vs PyTorch benchmarks
ModellFormatStatusGröße (MB)metrics/mAP50-95(B)Inferenzzeit (ms/Bild)
YOLO26nPyTorch✅5.30.4760315.2
YOLO26nDEEPX✅6.60.466034.6
YOLO26n-segPyTorch✅6.50.4080485.4
YOLO26n-segDEEPX✅7.90.392053.8
YOLO26n-posePyTorch✅7.60.4230506.3
YOLO26n-poseDEEPX✅8.80.459037.6
YOLO26n-obbPyTorch✅5.70.8171094.4
YOLO26n-obbDEEPX✅7.30.78356.4
ModellFormatStatusGröße (MB)Genauigkeit (Top 1)Genauigkeit (Top 5)Inferenzzeit (ms/Bild)
YOLO26n-clsPyTorch✅5.60.4310.71623.8
YOLO26n-clsDEEPX✅5.90.3330.6862.7
Hinweis

Die Validierung für die obigen Benchmark-Ergebnisse erfolgte mit COCO128 für die Objekterkennung, COCO128-seg für die Segmentierung, COCO8-pose für die Posenschätzung, ImageNet100 für die Klassifizierung und DOTA128 für OBB-Modelle. Die Inferenzzeit umfasst keine Vor- und Nachverarbeitung.

Tipps zur Leistungsoptimierung

Um den bestmöglichen Inferenzdurchsatz mit der an einen Raspberry Pi 5 angeschlossenen DX-M1-NPU zu erzielen, öffne die Boot-Konfigurationsdatei und aktiviere die PCIe-Gen-3-Unterstützung.

sudo nano /boot/firmware/config.txt

Füge am Ende der Datei die folgenden Zeilen hinzu:

dtparam=pciex1
dtparam=pciex1_gen=3

Speichere die Datei und beende den Editor (Ctrl+X, dann Y, dann Enter). Starte anschließend das Gerät neu:

sudo reboot

Prüfe die PCIe-Generation. Die erwartete Geschwindigkeit für PCIe Gen3 beträgt 8GT/s.

sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"

Empfohlener Ablauf#

  1. Trainiere dein Modell mit dem Train-Modus von Ultralytics.
  2. Exportiere mit model.export(format="deepx") ins DEEPX-Format
  3. Überprüfe die Genauigkeit mit yolo val, um minimale Quantisierungsverluste zu bestätigen.
  4. Führe Vorhersagen aus mit yolo predict, um die Ergebnisse qualitativ zu überprüfen.
  5. Stelle das exportierte Verzeichnis _deepx_model/ mithilfe der Laufzeitumgebung dx_engine auf DEEPX-NPU-Hardware bereit

Anwendungen in der Praxis#

Auf DEEPX-NPU-Hardware bereitgestellte YOLO-Modelle eignen sich für zahlreiche Edge-KI-Anwendungen:

  • Intelligente Überwachung: Echtzeit-Objekterkennung für Sicherheits- und Überwachungssysteme bei niedrigem Stromverbrauch und ohne Abhängigkeit von der Cloud.
  • Industrielle Automatisierung: Qualitätskontrolle direkt auf dem Gerät, Fehlererkennung und Prozessüberwachung in Fabriken.
  • Robotik: Visionsgestützte Navigation, Hindernisvermeidung und Objekterkennung auf autonomen Robotern und Drohnen.
  • Intelligente Landwirtschaft: Überwachung des Pflanzenzustands, Erkennung von Schädlingen und Ertragsschätzung mithilfe von Computer Vision in der Landwirtschaft.
  • Einzelhandelsanalysen: Analyse von Kundenströmen, Überwachung von Regalen und Bestandsverfolgung mit Echtzeit-Inferenz am Netzwerkrand.

Zusammenfassung#

In dieser Anleitung hast du erfahren, wie du Ultralytics-YOLO-Modelle ins DEEPX-Format exportierst und auf DEEPX-NPU-Hardware bereitstellst. Die Exportpipeline verwendet die INT8-Kalibrierung und den Compiler dx_com, um eine für die Hardware optimierte Binärdatei .dxnn zu erstellen. Die Laufzeitumgebung dx_engine führt die Inferenz auf dem Gerät aus.

Die Kombination aus Ultralytics YOLO und der NPU-Technologie von DEEPX bietet eine effektive Lösung für anspruchsvolle Computer-Vision-Aufgaben auf eingebetteten Geräten und Edge-Geräten – mit hohem Durchsatz und niedrigem Stromverbrauch für Echtzeitanwendungen.

Weitere Informationen zur Verwendung findest du auf der offiziellen DEEPX-Website.

Wenn du mehr über andere Ultralytics-YOLO-Integrationen erfahren möchtest, findest du auf unserer Seite mit Integrationsanleitungen zahlreiche hilfreiche Ressourcen und Einblicke.

Häufig gestellte Fragen#

  • Du kannst dein Modell in Python mit der Methode export() oder über die CLI exportieren. Beim Export wird die INT8-Quantisierung automatisch aktiviert und ein Kalibrierungsdataset verwendet, um Genauigkeitsverluste zu minimieren. Das Compilerpaket dx_com wird automatisch installiert, falls es noch nicht vorhanden ist.

    Beispiel
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="deepx")
  • DEEPX-NPUs sind darauf ausgelegt, INT8-Berechnungen mit maximaler Effizienz auszuführen. Der Compiler dx_com quantisiert das Modell beim Export mithilfe einer EMA-basierten Kalibrierung mit Bildern aus echten Datensätzen. So kann die NPU ihre volle Leistung entfalten. Bei DEEPX-Exporten wird INT8 immer erzwungen – wenn du eine andere Genauigkeit anforderst, wird diese mit einer Warnung überschrieben.

  • Der Export (die Kompilierung) von DEEPX-Modellen erfordert einen x86-64-Linux-Host. Der Exportschritt wird auf ARM64- (aarch64) und Windows-Rechnern nicht unterstützt. Inferenz mit dem exportierten Modell .dxnn kann auf jeder Linux-Plattform (x86-64 und ARM64) ausgeführt werden, die von der Laufzeitumgebung dx_engine unterstützt wird.

  • Beim Export wird ein Verzeichnis (z. B. yolo26n_deepx_model/) mit folgendem Inhalt erstellt:

    • yolo26n.dxnn — die kompilierte NPU-Binärdatei
    • config.json — Kalibrierungs- und Vorverarbeitungseinstellungen
    • metadata.yaml — Modellmetadaten mit Klassennamen und Bildgröße
  • Ja. Jedes Modell, das mit dem Trainingsmodus von Ultralytics trainiert und mit format="deepx" exportiert wurde, kann auf DEEPX-NPU-Hardware bereitgestellt werden, sofern es unterstützte Layer-Operationen verwendet. Der Export unterstützt alle sieben Ultralytics-Aufgaben: Objekterkennung, Instanzsegmentierung, semantische Segmentierung, Tiefenschätzung, Klassifizierung, Posenschätzung und orientierte Begrenzungsrahmen (OBB).

  • Die DEEPX-Exportpipeline konfiguriert den Compiler dx_com für 100 EMA-Kalibrierungsschritte mit Bildern aus dem Kalibrierungsdataset. Für eine gute Quantisierungsgenauigkeit reichen normalerweise einige Hundert Bilder aus. Verweise data auf ein kleineres Dataset, wenn die Kompilierungszeit bei großen Datensätzen zum Problem wird.

  • Die DEEPX-Laufzeitumgebung ist nicht im Paket ultralytics enthalten und muss vor der Inferenz separat installiert werden. Installiere auf x86-64-Linux- und ARM64-Linux-Rechnern (z. B. Raspberry Pi 5) den NPU-Treiber (dxrt-driver-dkms) und die Laufzeitumgebung (libdxrt) aus den GitHub-Releases von DEEPX-AI. Installiere anschließend das enthaltene Python-Wheel dx_engine. Eine Schritt-für-Schritt-Anleitung mit den Befehlen findest du im Abschnitt Laufzeitumgebung installieren oben.

Kommentare