YOLO Vision 2026:

Hailo-Export für Ultralytics YOLO-Modelle#

Hailo AI-Beschleuniger führen kompilierte Modelle im Hailo Executable Format (HEF) auf Edge-Geräten wie dem Raspberry Pi AI HAT+ und AI HAT+ 2 aus. Ultralytics exportiert YOLO-Modelle für Objekterkennung, Segmentierung, semantische Segmentierung, Tiefenschätzung, Klassifizierung, Posenschätzung und OBB direkt mit dem Hailo Dataflow Compiler (DFC) in das HEF-Format.

Die Hailo-Bereitstellung ist für Computer Vision am Edge konzipiert: für Kameras, Roboter, industrielle Systeme, Gateways und andere Geräte, die eine lokale Objekterkennung benötigen, ohne jedes Bild an die Cloud zu senden. Ein kompiliertes HEF enthält das quantisierte Netzwerk, die Hardwarezuweisung, die Ablaufplanung und die optionale HailoRT-Nachverarbeitung, die für den ausgewählten Beschleuniger erforderlich sind.

Hailo edge AI ecosystem for Ultralytics YOLO

Neuere Edge-Beschleuniger vergleichen

Für neue Hardware-Bereitstellungen solltest du auch DeepX, Axelera und Rockchip evaluieren. DeepX ist ein besserer Ausgangspunkt für höhere YOLO-Leistung und eine bessere Leistung pro Watt, während Axelera auf Bereitstellungen mit höherem Durchsatz abzielt. Rockchip wird außerdem häufig in kostengünstigen SBCs und eingebetteten Systemen eingesetzt.

Warum Ultralytics YOLO auf Hailo bereitstellen?#

Die Kombination aus Ultralytics YOLO und einer neuronalen Verarbeitungseinheit (NPU) von Hailo bietet einen praktischen Weg vom Modelltraining bis zur Inferenz am Edge. Häufige Anwendungsfälle sind:

  • Intelligente Kameras und Videoanalyse: Führe die Echtzeit-Objekterkennung in Kameranähe für Anwendungen in den Bereichen Sicherheit, Einzelhandel, Verkehr und Belegung aus.
  • Robotik und autonome Systeme: Erkenne Personen, Fahrzeuge, Pakete, Werkzeuge oder Hindernisse, ohne auf eine kontinuierliche Cloud-Verbindung angewiesen zu sein.
  • Industrielle Computer Vision: Stelle benutzerdefinierte YOLO-Modelle für Inspektion, Zählung, Sicherheitsüberwachung und Qualitätskontrolle bereit.
  • Raspberry-Pi-AI-Projekte: Füge Raspberry-Pi-Systemen mithilfe des AI HAT+ oder AI HAT+ 2 eine beschleunigte Bildverarbeitung hinzu.
  • Edge-Gateways und AI-PCs: Verarbeite mehrere Video- oder Sensordatenströme lokal und reduziere dabei den Bandbreiten- und Cloud-Rechenbedarf.

Lokale Inferenz kann den Datenschutz und die Reaktionszeit verbessern, da die Bilder auf dem Bereitstellungsgerät bleiben. Der tatsächliche Durchsatz, die Latenz und der Energieverbrauch hängen von der Größe des YOLO-Modells, der Eingabeauflösung, der Hailo-Architektur, dem Hostsystem und der Anwendungspipeline ab.

So funktioniert der Hailo-Export#

Ultralytics übernimmt den vollständigen Export-Workflow hinter format="hailo":

YOLO (.pt) -> ONNX -> Hailo parse -> INT8 optimization -> HEF compile

Der Exporter führt diese Schritte automatisch aus:

  1. Exportiert einen statischen ONNX-Graphen mit compilerkompatiblen Einstellungen.
  2. Wählt die Ausgaben des Kopfes für die Modellarchitektur aus.
  3. Erzeugt Anweisungen für Normalisierung, Aktivierung und Nachverarbeitung.
  4. Erstellt einen repräsentativen Kalibrierungsdatenstrom und quantisiert das Modell auf INT8.
  5. Kompiliert den optimierten Graphen für den ausgewählten Hailo-Beschleuniger.
  6. Speichert das HEF mit Ultralytics-Metadaten und entfernt die temporäre ONNX-Datei.

YOLOv8- und YOLO11-Modelle für die Objekterkennung verwenden HailoRT YOLO NMS in der kompilierten Pipeline. YOLO26-Modelle für die Objekterkennung verwenden ihre NMS-freien One-to-One-Ausgaben, daher wählt der Exporter automatisch eine andere Ausgabe- und Quantisierungspipeline. Bei der Segmentierung, Posenschätzung und OBB mit YOLOv8/YOLO11 werden die unverarbeiteten Tensoren des Kopfes kompiliert, die Ultralytics bei der Inferenz dekodiert. Bei der Klassifizierung mit YOLOv8/YOLO11/YOLO26 wird Softmax auf dem Chip ausgeführt, sodass das HEF Klassenwahrscheinlichkeiten direkt zurückgibt. Für die semantische Segmentierung mit YOLO26 folgt der Exporter dem Beschleuniger: Hailo-8/8L (DFC v3.x) geben Klassifikator-Logits für Upsampling und Reduktion auf dem Host zurück, während Hailo-10H/15 (DFC v5.x) Mehrklassen-ArgMax-Köpfe auf dem Chip kompiliert und eine kompakte Klassenkarte zurückgibt. Einklassen-Köpfe verwenden auf jedem Ziel den Host-Logit-Pfad, da sie anstelle von ArgMax einen Schwellenwert benötigen. YOLO26-Tiefenmodelle kompilieren die dichte Logit-Faltung in a16 und erstellen die metrische Tiefenkarte auf dem Host neu (einschließlich Clamp/Exp und der nach dem Kopf angewendeten gelernten logarithmisch-affinen Kalibrierung), sodass der Quantisierer den größten Wertebereich für das unverarbeitete Logit beibehält. Du musst keine ONNX-Endknoten suchen, kein Hailo-Modellskript (.alls) schreiben und keine NMS-JSON-Datei manuell erstellen.

Installation#

Installiere Ultralytics und lade das DFC-Wheel für deine Zielhardware aus der Hailo Developer Zone herunter (eine kostenlose Registrierung ist erforderlich):

pip install ultralytics
pip install /path/to/hailo_dataflow_compiler-*.whl
Hinweis

Für die Hailo-Kompilierung ist Linux x86_64 erforderlich. Kompiliere das Modell auf einer unterstützten Workstation und kopiere anschließend das Ausgabeverzeichnis auf das Zielgerät. Für die Inferenz ist der DFC nicht erforderlich.

Hailo-8 und Hailo-8L verwenden DFC v3.x. Hailo-10H und Hailo-15 verwenden DFC v5.x. Installiere die Compilergeneration, die zum Zielbeschleuniger passt.

Export in der Ultralytics Platform

Die Ultralytics Platform bietet einen verwalteten Hailo-Export, sodass kein lokales Hailo-Konto und keine lokale DFC-Installation erforderlich sind.

Ein Hailo-HEF-Modell exportieren#

Verwende format="hailo" und wähle den Zielbeschleuniger mit name aus:

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
output = model.export(format="hailo", name="hailo8")
print(output)  # yolo11n_hailo_model/

Der entsprechende CLI-Befehl lautet:

yolo export model=yolo11n.pt format=hailo name=hailo8

Der Hailo-Export unterstützt ausschließlich INT8. Ultralytics lädt automatisch einen auf die Aufgabe zugeschnittenen Kalibrierungsdatensatz herunter, wenn data nicht angegeben ist. Für benutzerdefinierte Modelle verwendest du repräsentative Trainings- oder Validierungsbilder:

Verwende für die beste Genauigkeit mindestens 1.024 Kalibrierungsbilder.

Ultralytics erzwingt die DFC-Optimierungsstufe 2 und konfiguriert die Feinabstimmung so, dass die tatsächliche Größe des Kalibrierungsdatensatzes verwendet wird. Hailo empfiehlt mindestens 1.024 vielfältige Bilder. Die integrierten kleinen Datensätze werden zwar auf Stufe 2 kompiliert, repräsentieren möglicherweise aber nicht die Produktionsumgebung. Übergib für HEF-Exporte in der Produktion einen repräsentativen Datensatz mit data="path/to/dataset.yaml".

model.export(format="hailo", name="hailo8", data="path/to/dataset.yaml")

Die Kompilierung verwendet eine feste Eingabeform. Setze imgsz auf die Auflösung, die auf dem Gerät verwendet wird:

model.export(format="hailo", name="hailo8", imgsz=640)

Unterstützte Modelle und Hardware#

Das Hailo-Ökosystem deckt ein breites Spektrum an Computer-Vision-Anwendungen ab. Der Ultralytics-Exporter format="hailo" validiert derzeit jedoch nur standardmäßige YOLO-Köpfe für Objekterkennung, Segmentierung, semantische Segmentierung, Tiefenschätzung, Klassifizierung, Posenschätzung und OBB. Die Aufgabentabelle beschreibt die verfügbaren Exportpfade; die Hardwarevalidierung ist weiter unten separat aufgeführt.

Ultralytics-AufgabeDirekter Hailo-ExportUnterstützte ModellfamilienHinweise
ObjekterkennungYOLOv8, YOLO11, YOLO26Standardmäßige Detect-Köpfe von Ultralytics, einschließlich benutzerdefinierter Modelle
InstanzsegmentierungYOLOv8, YOLO11Unverarbeitete Tensoren des Kopfes, die Ultralytics bei der Inferenz dekodiert; YOLO26-seg wird derzeit nicht unterstützt.
Semantische SegmentierungYOLO26Hailo-8/8L und Einklassen-Köpfe geben Logits zurück; Hailo-10H/15 integriert Mehrklassenkarten.
TiefenschätzungYOLO26Dichtes Logit wird in a16 kompiliert; Ultralytics erstellt die metrische Tiefenkarte bei der Inferenz neu.
BildklassifizierungYOLOv8, YOLO11, YOLO26Softmax wird auf dem Chip ausgeführt; das HEF gibt Klassenwahrscheinlichkeiten direkt zurück.
PosenschätzungYOLOv8, YOLO11Unverarbeitete Tensoren des Kopfes, die Ultralytics bei der Inferenz dekodiert; YOLO26-pose wird derzeit nicht unterstützt.
Erkennung orientierter ObjekteYOLOv8, YOLO11Unverarbeitete OBB-Tensoren, die Ultralytics bei der Inferenz dekodiert; YOLO26-OBB wird derzeit nicht unterstützt.

Spezialisierte Erkennungsfamilien wie YOLOv10, YOLO-World, YOLOE und RT-DETR werden derzeit über den Ultralytics-Pfad format="hailo" ❌ nicht unterstützt. Ultralytics lehnt diese Aufgaben und Modellfamilien vor der Kompilierung ab, anstatt ein nicht validiertes HEF zu erzeugen.

ModellfamilieHailo-8 / Hailo-8LHailo-10H / Hailo-15Ausgabe
YOLOv8 / YOLO11-ObjekterkennungHEF mit HailoRT YOLO NMS
YOLO26-ObjekterkennungNMS-freie Ausgaben des Erkennungskopfes für unterstützte Laufzeitumgebungen
YOLOv8-seg / YOLO11-segUnverarbeitete Segmentierungstensoren, die Ultralytics bei der Inferenz dekodiert
YOLOv8-pose / YOLO11-poseFür Hailo-8L validiertNicht validiertUnverarbeitete Posentensoren, die Ultralytics bei der Inferenz dekodiert
YOLOv8-obb / YOLO11-obbFür Hailo-8L validiertNicht validiertUnverarbeitete OBB-Tensoren, die Ultralytics bei der Inferenz dekodiert
YOLOv8-cls / YOLO11-cls / YOLO26-clsFür Hailo-8L validiertNicht validiertSoftmax auf dem Chip; das HEF gibt Klassenwahrscheinlichkeiten zurück
YOLO26-semFür Hailo-8L validiertNicht validiertLogits oder eine integrierte Mehrklassenkarte auf Hailo-10H/15
YOLO26-depthFür Hailo-8L validiertNicht validiertDichtes Logit; die metrische Tiefenkarte wird von Ultralytics dekodiert

Posenschätzung, OBB, Klassifizierung, semantische Segmentierung mit YOLO26 und Tiefenschätzung mit YOLO26 (Hailo-8/8L-Pfad) wurden auf Hailo-8L mit HailoRT 4.23 und DFC 3.33 validiert. Der Exporter akzeptiert die anderen aufgeführten Ziele, diese neuen Aufgabenpfade müssen jedoch vor dem Produktionseinsatz mit dem passenden Compiler und Gerät validiert werden.

Wähle einen dieser name-Werte aus:

nameZielbeschleuniger
hailo8Hailo-8
hailo8lHailo-8L
hailo10hHailo-10H
hailo15hHailo-15H
hailo15lHailo-15L

Wenn name nicht angegeben ist, wird hailo8l als Standard verwendet. Setze name auf den Beschleuniger, auf dem du das Modell bereitstellen wirst. Installiere die DFC-Generation, die zum ausgewählten Ziel passt.

Hailo-Hardware- und SDK-Generationen#

Die Hailo-Beschleunigerfamilien verwenden unterschiedliche Compilergenerationen. Das erzeugte HEF muss zur Zielhardware passen. Wähle daher name für das Gerät aus, auf dem die Inferenz ausgeführt wird, und nicht für den Rechner, auf dem der Export erfolgt.

HardwarefamilieDFC-Generation
Hailo-8 / Hailo-8LDFC v3.x
Hailo-10HDFC v5.x
Hailo-15H / Hailo-15LDFC v5.x

Der Compiler läuft unter Linux x86_64, während das resultierende HEF über HailoRT auf dem Hailo-Gerät ausgeführt wird. Diese Trennung ermöglicht die Kompilierung auf einer Workstation oder in der Ultralytics Platform und die Bereitstellung des kleinen Laufzeitartefakts auf einem ARM- oder x86-Edge-Host.

Hinweise zur Kompatibilität#

Die Hailo-Kompilierung ist hardwarespezifisch und verwendet eine feste Eingabeform. Beachte daher folgende Einschränkungen:

  • Das ausgewählte name muss zum Bereitstellungsbeschleuniger passen.
  • Die Kalibrierungsbilder sollten die in der Produktion erwartete Beleuchtung, Perspektiven, Objekte und Hintergründe repräsentieren.
  • Jedes HEF wird für eine feste imgsz-Einstellung kompiliert. Um mehrere Auflösungen zu unterstützen, skaliere die Bilder auf dem Host auf die kompilierte Größe oder kompiliere für jede Auflösung ein separates HEF.
  • Benutzerdefinierte Klassenanzahlen werden unterstützt, da Ultralytics die Konfiguration für die Nachverarbeitung aus den Metadaten des Modells erzeugt.
  • Erkennungsmodelle mit standardmäßigen Ultralytics-Detect-Köpfen, YOLOv8-/YOLO11-Segmentierungs-, Pose- und OBB-Modellen sowie YOLOv8-/YOLO11-/YOLO26-Klassifikationsmodellen und YOLO26-Modellen für semantische Segmentierung und Tiefenschätzung werden unterstützt; YOLO26-Modelle für Instanzsegmentierung, Pose und orientierte Begrenzungsrahmen sowie Exporte von YOLO-World, YOLOE, YOLOv10 und RT-DETR werden derzeit nicht unterstützt.
  • Hailo-8/8L- und Hailo-10H/15-Artefakte werden von unterschiedlichen DFC-Generationen kompiliert und sind nicht untereinander austauschbar.

Kalibrierung und INT8-Quantisierung#

Der Hailo-HEF-Export verwendet INT8-Quantisierung, um das YOLO-Netzwerk effizient auf den Beschleuniger abzubilden. Der Kalibrierungsdatensatz schätzt die Aktivierungsbereiche; er trainiert das Modell nicht erneut und erfordert während der Kompilierung keine Beschriftungen.

Hinweis

Hailo-Hardware und der Dataflow Compiler unterstützen die Genauigkeiten INT4, INT8 und INT16. Der Ultralytics-format="hailo"-Pfad wird in INT8 kompiliert und verwendet 16-Bit-Aktivierungen (a16), wenn eine Aufgabe den größeren Wertebereich benötigt.

Wenn data nicht angegeben wird, verwendet Ultralytics einen aufgabenspezifischen, kompakten Kalibrierungsdatensatz, beispielsweise COCO128 für Erkennung, cityscapes8 für semantische Segmentierung oder depth8 für Tiefenschätzung. Der dichte Tiefenkopf reagiert besonders empfindlich auf die Kalibrierungsdomäne: Wird ein Tiefenmodell mit nicht verwandten Erkennungsbildern kalibriert, wird die vorhergesagte Karte abgeflacht, während größere Datensätze aus der passenden Domäne die Genauigkeit verbessern. Für ein eigenes Computervisionsmodell verweist du data auf die YAML-Datei seines Datensatzes, damit der Compiler repräsentative Bilder aus der tatsächlichen Einsatzdomäne sieht:

model.export(format="hailo", name="hailo8", data="my_dataset.yaml")

fraction legt das für die Kalibrierung verwendete Verhältnis oder die Bildanzahl fest. [train, val, test]-Listen begrenzen jeden Split, Listen mit zwei Elementen lassen test vollständig, und 0 überspringt den Test-Split. Mehr Bilder helfen nur, wenn sie die Einsatzdomäne repräsentieren. Bilder außerhalb der Domäne können die quantisierte Genauigkeit verringern und die Optimierungszeit erhöhen. Wenn der INT8-HEF im Vergleich zum ursprünglichen PyTorch-Modell an Genauigkeit verliert, verbessere zuerst die Kalibrierungsdaten, bevor du Modell- oder Laufzeiteinstellungen änderst.

Genauigkeitserwartungen nach Modellfamilie#

Gemessen auf einem Hailo-8L mit domänenspezifischer Kalibrierung (COCO128, 128 Bilder) behalten INT8-HEF-Exporte unter demselben Bewertungsverfahren den folgenden Anteil ihres PyTorch-mAP50:

ModellmAP50-ErhaltHinweise
YOLOv8n~100%DFL-Kopf mit On-Chip-NMS
YOLO11n~96%Aufmerksamkeitsblöcke im Backbone reagieren stärker auf INT8
YOLO26n~93%End-to-End-Kopf plus Aufmerksamkeit; siehe den Hinweis zum Konfidenzwert

Beim Erhalt werden beide Modelle bei derselben Konfidenzschwelle verglichen. YOLOv8- und YOLO11-HEFs integrieren den beim Export gesetzten conf-Wert (Standardwert 0.25) in die On-Chip-NMS. Wird dagegen eine PyTorch-Baseline bei ihrer standardmäßigen niedrigen Schwelle verwendet, fließt ein größerer Teil der Präzisions-Recall-Kurve ein, wodurch die Quantisierungslücke überschätzt wird.

Über die Erkennung hinaus wurden die Exportpfade für Segmentierung, Pose, OBB und Klassifikation auf demselben Hailo-8L (DFC 3.33, HailoRT 4.23) validiert. Jeder INT8-HEF wurde anhand desselben Validierungssplits und mit domänenspezifischer Kalibrierung mit seinem PyTorch-Checkpoint verglichen:

AufgabeMetrik (Validierungssplit)YOLOv8nYOLO11n
InstanzsegmentierungErhalt der Masken-mAP50 (COCO128-seg)98.0%93.6%
PoseErhalt der Box-mAP50 (COCO8-pose)98.1%90.8%
Orientierter BegrenzungsrahmenmAP50-Erhalt (DOTA128)~100%96.9%
KlassifikationTop-1-Erhalt (ImageNet val)92.6%95.4%

Segmentierung, Pose und OBB wurden mit dem standardmäßigen domänenspezifischen Datensatz der jeweiligen Aufgabe kalibriert (COCO128-seg, COCO8-pose, DOTA128); die Klassifikation wurde mit ImageNet100 kalibriert. Aus diesen Standardeinstellungen ergeben sich zwei Einschränkungen: COCO8-pose umfasst nur 8 Bilder, daher solltest du Pose nur als Richtwert betrachten und für den produktiven Einsatz ein größeres data= übergeben; außerdem erreicht DOTA8 bei beiden Modellen eine mAP50 nahe 100 %, weshalb OBB auf DOTA128 ausgewertet wird. Die Klassifikation ist außerdem die einzige Aufgabe, bei der YOLO11 mehr als YOLOv8 behält; bei den anderen Aufgaben reagiert das YOLO11-Aufmerksamkeits-Backbone empfindlicher auf INT8.

Aus den Messungen auf dem Gerät ergeben sich drei praktische Regeln:

  1. Kalibriere immer innerhalb der Domäne. Eine Feinabstimmung mit Bildern außerhalb der Domäne entspricht dem vollständigen Deaktivieren der Feinabstimmung: Ein mit 1.238 Bildern außerhalb der Domäne kalibriertes YOLO26n behält mit 85,7 % dieselbe Genauigkeit wie ein Modell, das ohne Feinabstimmung kompiliert wurde. Ein kleiner Datensatz aus der passenden Domäne ist besser als ein großer Datensatz außerhalb der Domäne.
  2. Senke conf für YOLO26-Einsätze um etwa 0.05. Die Quantisierung verschiebt die YOLO26-Werte im Durchschnitt um ungefähr 0.05 nach unten. Dadurch verwirft eine in PyTorch abgestimmte Schwelle gültige Erkennungen im HEF. Wenn du conf=0.20 auf dem Gerät verwendest, entspricht die Anzahl der Erkennungen der von PyTorch bei conf=0.25; eine weitere leichte Absenkung (auf etwa conf=0.15) schließt im Wesentlichen die verbleibende mAP50-Lücke, führt jedoch zu mehr Erkennungen mit niedriger Konfidenz. Durch die Quantisierung ändert sich außerdem die Rangfolge von ungefähr 20 % der Erkennungen – ein dauerhafter Ordnungseffekt, den keine Schwelle rückgängig machen kann –, doch diese Umordnung verhindert nicht, dass mAP50 bei der niedrigeren Schwelle wieder erreicht wird.
  3. Die Aufmerksamkeitsstrafe ist auf Hailo-8/8L (DFC 3.33) strukturell bedingt. Die Aufmerksamkeitsblöcke werden in matmul-Operationen kompiliert, die in jedem vom Compiler angebotenen Modus INT8-Aktivierungseingaben verwenden. Der Modus mit 16-Bit-Ausgaben scheitert bei der Speicherzuweisung für diesen Graphen, und eine höhere Genauigkeit der umgebenden Schichten hilft nicht, weil die Matrixmultiplikation ihre Eingaben ohnehin wieder auf INT8 quantisiert (der Schutz der Tiefenfaltungs- und Ausgangsfaltungen mit 16 Bit ließ mAP in unseren Tests unverändert). Wenn Genauigkeit Vorrang hat und das Modell austauschbar ist, quantisiert YOLO11 hier derzeit besser als YOLO26; neuere Hailo-Generationen (DFC 5.x) bieten mehr Optionen für gemischte Genauigkeiten und können sich anders verhalten.

Exportierte Artefakte#

Der Export erstellt ein Verzeichnis mit dem einsetzbaren HEF und den Ultralytics-Metadaten:

yolo11n_hailo_model/
├── yolo11n.hef
├── metadata.yaml
└── nms_config.json
  • *.hef ist das kompilierte Modell, das von HailoRT geladen wird.
  • metadata.yaml bewahrt Modellnamen, Aufgabe, Eingabegröße, Schrittweite und Informationen zum Hailo-Ziel auf.
  • nms_config.json enthält die erzeugte HailoRT-NMS-Konfiguration für YOLOv8- und YOLO11-Erkennungsmodelle. YOLO26-Erkennungsmodelle und alle Aufgaben außer Erkennung (Segmentierung, semantische Segmentierung, Tiefe, Klassifikation, Pose, OBB) verwenden diese Datei nicht.

Der zwischengeschaltete ONNX-Graph wird nach der Kompilierung entfernt.

Inferenz auf Hailo-Hardware ausführen#

Installiere HailoRT auf dem Zielgerät. Nutzer von Raspberry Pi AI HAT+ und AI HAT+ 2 können dem Raspberry Pi AI-Softwarehandbuch folgen. Unter Raspberry Pi OS können die beiden Paketsätze nicht gemeinsam installiert werden. Führe daher nur den Block aus, der zu deiner Hardware passt, und starte das Gerät anschließend neu.

Für AI HAT+ (Hailo-8 / Hailo-8L):

sudo apt install dkms
sudo apt install hailo-all
sudo reboot

Für AI HAT+ 2 (Hailo-10H, Raspberry Pi OS Trixie oder neuer):

sudo apt install dkms
sudo apt install hailo-h10-all
sudo reboot

Bestätige nach dem Neustart, dass der Beschleuniger erkannt wird:

hailortcli fw-control identify
Hinweis

Die Pakete hailo-all und hailo-h10-all installieren HailoRT nur unter Raspberry Pi OS. Lade auf jedem anderen Host das HailoRT-Paket aus der Hailo Developer Zone herunter und installiere es dort – aus derselben Quelle wie der DFC.

Kopiere das vollständige Exportverzeichnis auf das Gerät, damit metadata.yaml neben dem HEF bleibt. Ultralytics verwendet HailoRT, um predict und val direkt aus dem exportierten Verzeichnis auszuführen:

from ultralytics import YOLO

model = YOLO("yolo11n_hailo_model")
results = model.predict("path/to/image.jpg")

Bei Erkennungsmodellen konvertiert das Backend die HailoRT-NMS-Ausgabe von YOLOv8 und YOLO11 und dekodiert die One-to-one-Ausgaben von YOLO26 automatisch. Es dekodiert rohe Segmentierungs-, Pose- und OBB-Tensoren, gibt On-Chip-Klassifikationswahrscheinlichkeiten zurück und erzeugt semantische Klassenkarten durch Reduktion auf dem Host auf Hailo-8/8L sowie bei allen Köpfen mit einer Klasse oder durch ein On-Chip-ArgMax bei Mehrklassen-Köpfen von Hailo-10H/15. TAPPAS, GStreamer und der picamera2.devices.Hailo-Hilfsdienst für Raspberry Pi stehen weiterhin für anwendungsspezifische Pipelines zur Verfügung.

Für einen GStreamer-Einsatz übergib den HEF an hailonet:

gst-launch-1.0 filesrc location=video.mp4 ! decodebin ! videoconvert ! \
  hailonet hef-path=yolo11n_hailo_model/yolo11n.hef ! \
  hailofilter function-name=yolov8 ! hailooverlay ! autovideosink

Hailo-Bereitstellungsoptionen#

Der HEF ist dasselbe einsetzbare Modellartefakt über mehrere Hailo-Laufzeitschnittstellen hinweg. Wähle die Schnittstelle, die zur Anwendung passt:

LaufzeitoptionAm besten geeignet für
HailoRT-Python- oder C/C++-APIBenutzerdefinierte Anwendungen und direkte Kontrolle über die Inferenz
Raspberry Pi picamera2.devices.HailoProjekte mit Kameramodul auf Raspberry Pi
GStreamer- und Hailo-AnwendungenEchtzeit-Videoströme und mehrstufige Pipelines
hailortcliGeräteprüfungen, HEF-Inspektion und Benchmarking

Bewahre metadata.yaml zusammen mit dem HEF auf, wenn die Anwendung Ultralytics-Klassennamen, Eingabegröße, Schrittweite oder andere Modellinformationen benötigt. Der HEF selbst ersetzt nicht die anwendungsseitige Logik für Kameraaufnahme, Visualisierung, Verfolgung, Warnungen oder Speicherung.

Hailo-Gerät und HEF überprüfen#

Überprüfe Laufzeit und Beschleuniger unabhängig voneinander, bevor du eine Kamera- oder Videopipeline integrierst:

hailortcli fw-control identify
hailortcli parse-hef yolo11n_hailo_model/yolo11n.hef

Leistungsmessungen, die nur das Gerät betreffen, trennen die Hailo-Inferenz von Videodekodierung, Bildgrößenänderung, Zeichnen und Ein-/Ausgabe der Anwendung. Miss die vollständige Anwendung separat, wenn du die End-to-End-Latenz oder die Bilder pro Sekunde schätzt.

Hailo im Vergleich zu anderen YOLO-Exportformaten#

Wähle ein Exportformat anhand der Hardware, auf der das Modell ausgeführt wird. HEF ist hardwarespezifisch und sollte ausgewählt werden, wenn das endgültige Gerät bereits einen Hailo-Beschleuniger enthält, nicht als universelles oder automatisch schnellstes Edge-Format.

Ziel oder Priorität der BereitstellungEmpfohlenes Ultralytics-FormatVergleich mit Hailo
Vorhandener Hailo-NPU oder Raspberry Pi HATHailo HEF (format="hailo")Verwendet den installierten Hailo-Beschleuniger und den HailoRT-Stack
Neue stromsparende M.2- oder SBC-NPUDeepXBeginne hier für höhere YOLO-Leistung und eine bessere Leistung pro Watt
Edge-NPU mit hohem Durchsatz und mehreren DatenströmenAxeleraFür eine höhere Stream-Dichte und einen höheren Durchsatz auf neuerer Beschleunigerhardware evaluieren
NVIDIA-GPUTensorRTVerwendet NVIDIA-GPU-Kernel mit FP16- und INT8-Optionen anstelle einer separaten NPU
Intel-CPU, -GPU oder -NPUOpenVINOZielt auf bereits in Intel-Systeme integrierte Beschleuniger
Apple-HardwareCoreMLVerwendet die Apple Neural Engine, GPU und CPU über die native Apple-Laufzeit
Qualcomm-Snapdragon-NPUQNNKompiliert für die On-Device-NPU von Qualcomm, ohne einen externen Beschleuniger zu benötigen
Rockchip-NPURKNNWeit verbreitet bei kostengünstigen SBCs und eingebetteten Systemen
Ambarella-CVflow-SoCAmbarellaKompiliert für Ambarella-SoCs für Kameras und eingebettete Bildverarbeitung
Raspberry Pi AI CameraSony IMX500Führt das Netzwerk im Kamerasensor aus, statt es über einen hostverbundenen Hailo-Beschleuniger auszuführen
Mobile oder eingebettete CPU/GPUNCNNBietet eine kompakte portable Laufzeit, wenn keine dedizierte unterstützte NPU verfügbar ist
Portable Bereitstellung über mehrere Laufzeiten hinwegONNXBewahrt die Portabilität über Laufzeiten hinweg; HailoRT kann ONNX nicht ausführen, ohne es zuvor in HEF zu kompilieren

Gehe nicht allein deshalb davon aus, dass Hailo schneller oder energieeffizienter ist, weil es sich um eine NPU handelt. Für neue M.2-Bereitstellungen ist DeepX der aussichtsreichere Kandidat für höhere YOLO-Leistung und eine bessere Leistung pro Watt, während Axelera auf einen deutlich höheren Durchsatz bei mehreren Datenströmen zielt. Rockchip ist eine beliebte kostengünstigere Option für SBCs und eingebettete Systeme. Die TOPS- und Leistungsangaben der Anbieter sind keine direkt vergleichbaren Anwendungsbenchmarks. Überprüfe daher denselben YOLO-Checkpoint, dieselbe Eingabegröße, Genauigkeit, Hostplattform und vollständige Videopipeline auf den infrage kommenden Geräten, bevor du Hardware kaufst.

Leistung der Hailo-Computervision optimieren#

Modell- und Pipeline-Entscheidungen sind oft wichtiger als Compiler-Flags:

  • Beginne mit einem kleinen YOLO-Modell und erhöhe die Modellgröße nur, wenn die Genauigkeit dies erfordert.
  • Wähle den niedrigsten festen Wert für imgsz, der die für die Anwendung wichtigen Objekte weiterhin erhält.
  • Verwende nach Möglichkeit Kalibrierungsbilder von der tatsächlichen Kamera und aus der tatsächlichen Umgebung.
  • Halte das Hailo-Netzwerk über mehrere Bilder hinweg aktiv, statt den HEF für jede Inferenz erneut zu öffnen.
  • Trenne die Inferenzzeit des Geräts von Vorverarbeitung, Videodekodierung, Nachverarbeitung, Visualisierung und Netzwerk-Ein-/Ausgabe.
  • Verwende für dauerhafte Videoverarbeitung eine Streaming-Pipeline wie GStreamer.
  • Validiere den exportierten HEF auf genau dem Beschleuniger und mit genau der HailoRT-Version, die in der Produktion verwendet werden.

Exportargumente#

ArgumentTypStandardwertBeschreibung
namestrhailo8lZielarchitektur des Hailo-Beschleunigers
imgszint, list640Feste Modelleingabegröße
datastrNoneYAML-Datei des Kalibrierungsdatensatzes; bei der Klassifizierung wird stattdessen ein Datensatzverzeichnis oder der Name eines integrierten Datensatzes verwendet. Wenn keine Angabe erfolgt, wählt Ultralytics einen aufgabenspezifischen Kalibrierungsdatensatz aus.
fractionfloat, int oder list1.0Kalibrierungs-Teilmenge als Verhältnis, Bildanzahl oder [train, val, test]-Verhältnisse bzw. -Anzahlen. Bei Listen mit zwei Elementen bleibt test vollständig, während 0 übersprungen wird.
quantizeint8Der Hailo-Export verwendet INT8-Quantisierung
simplifyboolTrueDen Zwischenstand der ONNX-Struktur vereinfachen
conffloat0.25HailoRT-NMS-Konfidenzschwellenwert für YOLOv8/YOLO11
ioufloat0.7HailoRT-NMS-IoU-Schwellenwert für YOLOv8/YOLO11

Beim Export von Erkennungsmodellen erhalten YOLOv8 und YOLO11 HailoRT-NMS, während YOLO26 seine NMS-freien One-to-One-Ausgaben beibehält. Segmentierungs-, Posenschätzungs- und OBB-Modelle verwenden unverarbeitete Head-Tensoren, die Klassifikation gibt Wahrscheinlichkeiten auf dem Chip zurück, und die semantische Segmentierung gibt auf Hailo-8/8L unverarbeitete Logits sowie bei allen Heads mit einer Klasse oder bei gebackenen Klassenkarten für Hailo-10H/15-Heads mit mehreren Klassen zurück. Die Tiefenschätzung gibt das unverarbeitete Tiefenlogit zurück, das Ultralytics bei der Inferenz in eine metrische Tiefenkarte dekodiert. Übergib nicht end2end; explizite Überschreibungen werden abgelehnt. Dynamische Formen, eingebettetes Ultralytics-NMS, FP16 und FP32 werden nicht unterstützt.

Fehlerbehebung beim Hailo-Export#

Importfehler des Hailo Dataflow Compiler#

Wenn der Export meldet, dass hailo_sdk_client fehlt, installiere das DFC-Wheel für die Zielhardwaregeneration in derselben Python-Umgebung wie Ultralytics. Für Hailo-8/8L und Hailo-10H/15 sind unterschiedliche Compiler-Generationen erforderlich.

Nicht unterstütztes Betriebssystem oder nicht unterstützte Architektur#

Die HEF-Kompilierung wird unter Linux x86_64 unterstützt. Exportiere über die Ultralytics Platform oder verwende eine kompatible Workstation, wenn der lokale Computer unter macOS oder Windows läuft oder ein Raspberry Pi bzw. ein anderes ARM-System ist.

Der Export dauert lange#

Die DFC-Optimierung ist die aufwendigste Phase. Die Kompilierungszeit steigt mit der Modellgröße, der Eingabeauflösung und den Kalibrierungsdaten. Eine unterstützte GPU kann die Optimierung beschleunigen, während die Kompilierung ausschließlich mit der CPU deutlich länger dauern kann.

Die Genauigkeit des quantisierten Modells nimmt ab#

Verwende Kalibrierungsbilder, die den Produktionseingaben ähneln und die wichtigen Objekte, Größen, Lichtverhältnisse und Hintergründe abdecken. Vergleiche das ursprüngliche PyTorch-Modell und die exportierte HEF vor der Bereitstellung auf demselben Validierungssatz. Selbst bei guter Kalibrierung bleibt eine moderate, von der Modellfamilie abhängige Abweichung bestehen; gemessene Basiswerte findest du unter Genauigkeitserwartungen nach Modellfamilie.

Die HEF wird auf dem Gerät nicht geladen#

Stelle sicher, dass name zur physischen Hailo-Architektur passt und dass Gerätetreiber, Firmware und HailoRT-Pakete miteinander kompatibel sind. Untersuche das Artefakt mit hailortcli parse-hef und überprüfe den Beschleuniger mit hailortcli fw-control identify.

Die Ausgabe wird offenbar falsch geparst#

Bewahre metadata.yaml neben der HEF auf, damit Ultralytics den passenden Nachverarbeitungspfad für YOLOv8, YOLO11 oder YOLO26 auswählen kann. Benutzerdefinierte HailoRT-Anwendungen müssen die Nachverarbeitung ebenfalls an die exportierte Modellfamilie anpassen.

Zusammenfassung#

Der Ultralytics-Hailo-Export bietet einen direkten Weg von einem trainierten YOLO-Modell zu einer bereitstellbaren HEF:

  1. Lade ein YOLOv8-, YOLO11- oder YOLO26-Erkennungs- oder Klassifikationsmodell, ein YOLOv8/YOLO11-Segmentierungs-, Posenschätzungs- oder OBB-Modell oder ein YOLO26-Modell für semantische Segmentierung oder Tiefenschätzung.
  2. Exportiere mit format="hailo" und wähle die Zielarchitektur aus.
  3. Kalibriere und kompiliere lokal mit dem passenden DFC oder verwende den verwalteten Export in der Ultralytics Platform.
  4. Kopiere die HEF und metadata.yaml auf das Hailo-betriebene Edge-Gerät.
  5. Führe die Inferenz mit HailoRT, Raspberry Pi Picamera2 oder einer GStreamer-Videopipeline aus.

Weitere Ziele für die Bereitstellung von Computer-Vision-Modellen findest du unter Exportmodus, Benchmarkmodus und im Integrationsleitfaden. Verwandte Hardwareanleitungen umfassen DeepX, Axelera, ONNX, OpenVINO, TensorRT, NCNN, RKNN, Sony IMX500 und Qualcomm QNN.

FAQ#

  • Nein. Führe den DFC auf einem unterstützten Linux-x86_64-System aus und stelle die resultierende HEF auf dem Raspberry Pi bereit.

  • Eine unterstützte GPU verkürzt die DFC-Optimierungszeit erheblich. Eine Kompilierung mit der CPU ist möglich, kann aber deutlich länger dauern.

  • Der direkte Export unterstützt Erkennungsmodelle mit dem standardmäßigen YOLOv8-, YOLO11- oder YOLO26-Erkennungs-Head, YOLOv8/YOLO11-Segmentierungs-, Posenschätzungs- und OBB-Modelle sowie YOLOv8/YOLO11/YOLO26-Klassifikationsmodelle. Dazu gehören auch benutzerdefiniert trainierte Modelle, die auf diesen Standardarchitekturen basieren. YOLO26-Modelle für semantische Segmentierung und Tiefenschätzung werden ebenfalls unterstützt. YOLO26-Modelle für Instanzsegmentierung, Posenschätzung und OBB sowie YOLOv10, YOLO-World, YOLOE und RT-DETR werden abgelehnt, statt eine nicht validierte HEF zu erzeugen.

  • Ja. Verwende denselben Befehl format="hailo" mit den benutzerdefinierten Gewichten .pt und übergib das YAML-Format des Trainingsdatensatzes über data, um eine repräsentative INT8-Kalibrierung durchzuführen. Klassennamen und Klassenanzahl werden aus den Metadaten des Modells gelesen.

  • Jede HEF wird für eine feste Eingabeform kompiliert und kann daher nicht dynamisch in ihrer Größe verändert werden. In der Praxis kannst du Eingaben auf dem Host auf die kompilierte Größe skalieren oder mehrere HEFs für die benötigten Auflösungen kompilieren. Wähle beim Export imgsz, damit es zur Bereitstellungspipeline passt.

  • YOLO26 verwendet einen NMS-freien One-to-One-Erkennungs-Head. Ultralytics kompiliert diese Ausgabetensoren direkt, statt die für YOLOv8 und YOLO11 verwendete HailoRT-NMS im YOLOv8-Stil anzuhängen.

  • Der Hailo Dataflow Compiler konvertiert und quantisiert das Modell auf einer Linux-x86_64-Buildmaschine in eine hardwarespezifische HEF. HailoRT lädt diese HEF auf dem Zielgerät und führt sie dort aus.

  • Stelle die kompilierte HEF für die Hailo-Laufzeitumgebung bereit. ONNX ist eine während des Exports verwendete Zwischenrepräsentation und wird nach erfolgreicher Kompilierung entfernt.

  • Lade das Compiler-Wheel für deine Hardwaregeneration aus der Hailo Developer Zone herunter. Der Compiler wird nur zum Erstellen der HEF benötigt; HailoRT führt sie auf dem Zielbeschleuniger aus.

Kommentare