Zum Inhalt springen

ONNX-Export für YOLO26-Modelle

Bei der Bereitstellung von Computer Vision-Modellen benötigen Sie häufig ein Modellformat, das sowohl flexibel als auch mit mehreren Plattformen kompatibel ist.

Der Export von Ultralytics YOLO26-Modellen in das ONNX-Format optimiert die Bereitstellung und gewährleistet eine optimale Leistung in verschiedenen Umgebungen. Dieser Leitfaden zeigt Ihnen, wie Sie Ihre YOLO26-Modelle einfach nach ONNX konvertieren und deren Skalierbarkeit und Effektivität in realen Anwendungen verbessern können.

ONNX und ONNX Runtime

ONNX, was für Open Neural Network Exchange steht, ist ein Community-Projekt, das ursprünglich von Facebook und Microsoft entwickelt wurde. Die laufende Entwicklung von ONNX ist eine gemeinschaftliche Anstrengung, die von verschiedenen Organisationen wie IBM, Amazon (über AWS) und Google unterstützt wird. Ziel des Projekts ist die Schaffung eines offenen Dateiformats zur Darstellung von Machine-Learning-Modellen, das deren Verwendung in verschiedenen KI-Frameworks und auf unterschiedlicher Hardware ermöglicht.

ONNX-Modelle können verwendet werden, um nahtlos zwischen verschiedenen Frameworks zu wechseln. Beispielsweise kann ein in PyTorch trainiertes Deep-Learning-Modell in das ONNX-Format exportiert und dann einfach in TensorFlow importiert werden.

Portabilität von ONNX über Deep-Learning-Frameworks hinweg

Alternativ können ONNX-Modelle mit ONNX Runtime verwendet werden. ONNX Runtime ist ein vielseitiger, plattformübergreifender Beschleuniger für Machine-Learning-Modelle, der mit Frameworks wie PyTorch, TensorFlow, TFLite, scikit-learn usw. kompatibel ist.

ONNX Runtime optimiert die Ausführung von ONNX-Modellen, indem es hardwarespezifische Fähigkeiten nutzt. Diese Optimierung ermöglicht es den Modellen, effizient und mit hoher Leistung auf verschiedenen Hardwareplattformen zu laufen, einschließlich CPUs, GPUs und spezialisierten Beschleunigern.

ONNX plattformübergreifende Inferenzbeschleunigung

Ob unabhängig oder zusammen mit ONNX Runtime verwendet, ONNX bietet eine flexible Lösung für die Modellbereitstellung und Kompatibilität im Bereich des maschinellen Lernens.

Hauptmerkmale von ONNX-Modellen

Die Fähigkeit von ONNX, verschiedene Formate zu verarbeiten, lässt sich auf die folgenden Hauptmerkmale zurückführen:

  • Gemeinsame Modelldarstellung: ONNX definiert einen gemeinsamen Satz von Operatoren (wie Faltungen, Schichten usw.) und ein Standarddatenformat. Wenn ein Modell in das ONNX-Format konvertiert wird, werden seine Architektur und Gewichte in diese gemeinsame Darstellung übersetzt. Diese Einheitlichkeit stellt sicher, dass das Modell von jedem Framework verstanden werden kann, das ONNX unterstützt.

  • Versionierung und Abwärtskompatibilität: ONNX unterhält ein Versionierungssystem für seine Operatoren. Dies stellt sicher, dass auch bei Weiterentwicklung des Standards Modelle, die in älteren Versionen erstellt wurden, weiterhin verwendbar sind. Die Abwärtskompatibilität ist ein entscheidendes Merkmal, das verhindert, dass Modelle schnell veralten.

  • Graphenbasierte Modelldarstellung: ONNX stellt Modelle als Berechnungsgraphen dar. Diese graphenbasierte Struktur ist eine universelle Methode zur Darstellung von Modellen des maschinellen Lernens, bei der Knoten Operationen oder Berechnungen darstellen und Kanten die zwischen ihnen fließenden Tensoren darstellen. Dieses Format ist leicht an verschiedene Frameworks anpassbar, die Modelle ebenfalls als Graphen darstellen.

  • Tools und Ökosystem: Es gibt ein reichhaltiges Ökosystem von Tools rund um ONNX, die bei der Modellkonvertierung, Visualisierung und Optimierung helfen. Diese Tools erleichtern es Entwicklern, mit ONNX-Modellen zu arbeiten und Modelle nahtlos zwischen verschiedenen Frameworks zu konvertieren.

Häufige Verwendung von ONNX

Bevor wir uns damit befassen, wie YOLO26-Modelle in das ONNX-Format exportiert werden, werfen wir einen Blick darauf, wo ONNX-Modelle üblicherweise eingesetzt werden.

CPU-Bereitstellung

ONNX-Modelle werden aufgrund ihrer Kompatibilität mit ONNX Runtime oft auf CPUs eingesetzt. Diese Runtime ist für die CPU-Ausführung optimiert. Sie verbessert die Inferenzgeschwindigkeit erheblich und ermöglicht Echtzeit-CPU-Bereitstellungen.

Unterstützte Bereitstellungsoptionen

Während ONNX-Modelle häufig auf CPUs verwendet werden, können sie auch auf den folgenden Plattformen eingesetzt werden:

  • GPU-Beschleunigung: ONNX unterstützt vollständig die GPU-Beschleunigung, insbesondere NVIDIA CUDA. Dies ermöglicht eine effiziente Ausführung auf NVIDIA-GPUs für Aufgaben, die eine hohe Rechenleistung erfordern.

  • Edge- und Mobilgeräte: ONNX erstreckt sich auf Edge- und Mobilgeräte und ist perfekt für On-Device- und Echtzeit-Inferenzszenarien geeignet. Es ist leichtgewichtig und mit Edge-Hardware kompatibel.

  • Webbrowser: ONNX kann direkt in Webbrowsern ausgeführt werden und interaktive und dynamische webbasierte KI-Anwendungen unterstützen.

Export von YOLO26-Modellen nach ONNX

Sie können die Modellkompatibilität und Bereitstellungsflexibilität erweitern, indem Sie YOLO26-Modelle in das ONNX-Format konvertieren. Ultralytics YOLO26 bietet einen unkomplizierten Exportprozess, der die Leistung Ihres Modells auf verschiedenen Plattformen erheblich verbessern kann.

Installation

Um das erforderliche Paket zu installieren, führen Sie Folgendes aus:

Installation

# Install the required package for YOLO26
pip install ultralytics

Für detaillierte Anweisungen und Best Practices zum Installationsprozess konsultieren Sie unsere YOLO26 Installationsanleitung. Sollten Sie bei der Installation der erforderlichen Pakete für YOLO26 auf Schwierigkeiten stoßen, finden Sie Lösungen und Tipps in unserer Anleitung für häufige Probleme.

Nutzung

Bevor Sie sich mit den Nutzungsanweisungen befassen, sehen Sie sich unbedingt die Palette der von Ultralytics angebotenen YOLO26-Modelle an. Dies hilft Ihnen, das am besten geeignete Modell für Ihre Projektanforderungen auszuwählen.

Nutzung

from ultralytics import YOLO

# Load the YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo26n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolo26n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO26n PyTorch model to ONNX format
yolo export model=yolo26n.pt format=onnx # creates 'yolo26n.onnx'

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

Export-Argumente

Beim Exportieren Ihres YOLO26-Modells in das ONNX-Format können Sie den Prozess mithilfe verschiedener Argumente anpassen, um ihn für Ihre spezifischen Bereitstellungsanforderungen zu optimieren:

ArgumentTypStandardBeschreibung
formatstr'onnx'Zielformat für das exportierte Modell, das die Kompatibilität mit verschiedenen Deployment-Umgebungen definiert.
imgszint oder tuple640Gewünschte Bildgröße für die Modelleingabe. Kann eine ganze Zahl für quadratische Bilder oder ein Tupel (height, width) für bestimmte Abmessungen sein.
halfboolFalseAktiviert die FP16-Quantisierung (halbe Präzision), wodurch die Modellgröße reduziert und potenziell die Inferenz auf unterstützter Hardware beschleunigt wird.
dynamicboolFalseErmöglicht dynamische Eingabegrößen, wodurch die Flexibilität bei der Verarbeitung unterschiedlicher Bilddimensionen erhöht wird.
simplifyboolTrueVereinfacht den Modellgraphen mit onnxslim, was potenziell die Leistung und Kompatibilität verbessert.
opsetintNoneGibt die ONNX-Opset-Version für die Kompatibilität mit verschiedenen ONNX-Parsern und -Laufzeiten an. Wenn nicht festgelegt, wird die neueste unterstützte Version verwendet.
nmsboolFalseFügt Non-Maximum Suppression (NMS) hinzu, unerlässlich für eine genaue und effiziente Detektions-Nachbearbeitung.
batchint1Gibt die Batch-Inferenzgröße des Exportmodells oder die maximale Anzahl von Bildern an, die das exportierte Modell gleichzeitig verarbeitet predict Modus.
devicestrNoneGibt das Gerät für den Export an: GPU (device=0), CPU (device=cpu), MPS für Apple Silicon (device=mps), oder Auto-Modus mit angegebener Auslastungsfraktion (

Weitere Informationen zum Exportprozess finden Sie auf der Ultralytics-Dokumentationsseite zum Exportieren.

Bereitstellung exportierter YOLO26 ONNX-Modelle

Nachdem Sie Ihre Ultralytics YOLO26-Modelle erfolgreich in das ONNX-Format exportiert haben, besteht der nächste Schritt darin, diese Modelle in verschiedenen Umgebungen bereitzustellen. Für detaillierte Anweisungen zur Bereitstellung Ihrer ONNX-Modelle beachten Sie bitte die folgenden Ressourcen:

  • ONNX Runtime Python API Dokumentation: Dieser Leitfaden enthält wichtige Informationen zum Laden und Ausführen von ONNX-Modellen mit ONNX Runtime.

  • Bereitstellung auf Edge-Geräten: Auf dieser Dokumentationsseite finden Sie verschiedene Beispiele für die Bereitstellung von ONNX-Modellen auf Edge-Geräten.

  • ONNX-Tutorials auf GitHub: Eine Sammlung umfassender Tutorials, die verschiedene Aspekte der Verwendung und Implementierung von ONNX-Modellen in verschiedenen Szenarien abdecken.

  • Triton Inference Server: Erfahren Sie, wie Sie Ihre ONNX-Modelle mit dem NVIDIA Triton Inference Server für hochleistungsfähige, skalierbare Bereitstellungen bereitstellen.

Zusammenfassung

In diesem Leitfaden haben Sie gelernt, wie Sie Ultralytics YOLO26-Modelle in das ONNX-Format exportieren, um deren Interoperabilität und Leistung auf verschiedenen Plattformen zu erhöhen. Sie wurden auch mit der ONNX Runtime und den ONNX-Bereitstellungsoptionen vertraut gemacht.

Der ONNX-Export ist nur eines von vielen Exportformaten, die von Ultralytics YOLO26 unterstützt werden, wodurch Sie Ihre Modelle in praktisch jeder Umgebung bereitstellen können. Je nach Ihren spezifischen Anforderungen möchten Sie möglicherweise auch andere Exportoptionen erkunden, wie TensorRT für maximale GPU-Leistung oder CoreML für Apple-Geräte.

Weitere Informationen zur Verwendung finden Sie in der offiziellen ONNX-Dokumentation.

Wenn Sie mehr über andere Ultralytics YOLO26-Integrationen erfahren möchten, besuchen Sie unsere Integrationsanleitungsseite. Dort finden Sie zahlreiche nützliche Ressourcen und Einblicke.

FAQ

Wie exportiere ich YOLO26-Modelle mit Ultralytics in das ONNX-Format?

Um Ihre YOLO26-Modelle mit Ultralytics in das ONNX-Format zu exportieren, befolgen Sie diese Schritte:

Nutzung

from ultralytics import YOLO

# Load the YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo26n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolo26n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO26n PyTorch model to ONNX format
yolo export model=yolo26n.pt format=onnx # creates 'yolo26n.onnx'

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

Weitere Informationen finden Sie in der Export-Dokumentation.

Welche Vorteile bietet die Verwendung von ONNX Runtime für die Bereitstellung von YOLO26-Modellen?

Die Verwendung von ONNX Runtime zur Bereitstellung von YOLO26-Modellen bietet mehrere Vorteile:

  • Plattformübergreifende Kompatibilität: ONNX Runtime unterstützt verschiedene Plattformen wie Windows, macOS und Linux, wodurch sichergestellt wird, dass Ihre Modelle in unterschiedlichen Umgebungen reibungslos laufen.
  • Hardwarebeschleunigung: ONNX Runtime kann hardwarespezifische Optimierungen für CPUs, GPUs und dedizierte Beschleuniger nutzen und so eine hochleistungsfähige Inferenz ermöglichen.
  • Framework-Interoperabilität: Modelle, die in gängigen Frameworks wie PyTorch oder TensorFlow trainiert wurden, können einfach in das ONNX-Format konvertiert und mit ONNX Runtime ausgeführt werden.
  • Leistungsoptimierung: ONNX Runtime kann im Vergleich zu nativen PyTorch-Modellen eine bis zu 3-fache CPU-Beschleunigung bieten, was es ideal für Einsatzszenarien macht, in denen GPU-Ressourcen begrenzt sind.

Erfahren Sie mehr in der ONNX Runtime Dokumentation.

Welche Bereitstellungsoptionen gibt es für nach ONNX exportierte YOLO26-Modelle?

In ONNX exportierte YOLO26-Modelle können auf verschiedenen Plattformen bereitgestellt werden, darunter:

  • CPUs: Nutzung von ONNX Runtime für optimierte CPU-Inferenz.
  • GPUs: Nutzung von NVIDIA CUDA für hochleistungsfähige GPU-Beschleunigung.
  • Edge-Geräte: Ausführung von schlanken Modellen auf Edge- und Mobilgeräten für Echtzeit-Inferenz direkt auf dem Gerät.
  • Webbrowser: Ausführung von Modellen direkt in Webbrowsern für interaktive webbasierte Anwendungen.
  • Cloud-Dienste: Bereitstellung auf Cloud-Plattformen, die das ONNX-Format für skalierbare Inferenz unterstützen.

Weitere Informationen finden Sie in unserem Leitfaden zu Optionen für die Modellbereitstellung.

Warum sollte ich das ONNX-Format für Ultralytics YOLO26-Modelle verwenden?

Die Verwendung des ONNX-Formats für Ultralytics YOLO26-Modelle bietet zahlreiche Vorteile:

  • Interoperabilität: ONNX ermöglicht die nahtlose Übertragung von Modellen zwischen verschiedenen Machine-Learning-Frameworks.
  • Leistungsoptimierung: ONNX Runtime kann die Modellleistung durch Nutzung hardwarespezifischer Optimierungen verbessern.
  • Flexibilität: ONNX unterstützt verschiedene Bereitstellungsumgebungen, sodass Sie dasselbe Modell ohne Änderungen auf verschiedenen Plattformen verwenden können.
  • Standardisierung: ONNX bietet ein standardisiertes Format, das in der gesamten Branche breit unterstützt wird und eine langfristige Kompatibilität gewährleistet.

Beachten Sie den umfassenden Leitfaden zum Exportieren von YOLO26-Modellen nach ONNX.

Wie kann ich Probleme beim Export von YOLO26-Modellen nach ONNX beheben?

Beim Exportieren von YOLO26-Modellen nach ONNX können häufig Probleme wie nicht übereinstimmende Abhängigkeiten oder nicht unterstützte Operationen auftreten. Um diese Probleme zu beheben:

  1. Stellen Sie sicher, dass Sie die korrekte Version der erforderlichen Abhängigkeiten installiert haben.
  2. Überprüfen Sie die offizielle ONNX-Dokumentation auf unterstützte Operatoren und Funktionen.
  3. Überprüfen Sie die Fehlermeldungen auf Hinweise und konsultieren Sie den Ultralytics Leitfaden zu häufigen Problemen.
  4. Versuchen Sie, verschiedene Exportargumente zu verwenden, wie z.B. simplify=True oder Anpassen des opset Version.
  5. Bei Problemen mit dynamischer Eingabegröße setzen Sie dynamic=True während des Exports.

Wenn die Probleme weiterhin bestehen, wenden Sie sich an den Ultralytics-Support, um weitere Unterstützung zu erhalten.



📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 4 Tagen
glenn-jocherlakshanthadlakshanthadUltralyticsAssistantMatthewNoyceabirami-vina

Kommentare