Zum Inhalt springen

ONNX-Export für YOLO11-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.

Das Exportieren von Ultralytics YOLO11-Modellen in das ONNX-Format optimiert die Bereitstellung und gewährleistet eine optimale Leistung in verschiedenen Umgebungen. Dieser Leitfaden zeigt Ihnen, wie Sie Ihre YOLO11-Modelle einfach in ONNX konvertieren und ihre 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.

ONNX

Alternativ können ONNX-Modelle mit ONNX Runtime verwendet werden. ONNX Runtime ist ein vielseitiger, plattformübergreifender Beschleuniger für Modelle des maschinellen Lernens, 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 mit ONNX Runtime

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 beschäftigen, wie YOLO11-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.

Exportieren von YOLO11-Modellen nach ONNX

Sie können die Modellkompatibilität und Bereitstellungsflexibilität erweitern, indem Sie YOLO11-Modelle in das ONNX-Format konvertieren. Ultralytics YOLO11 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 YOLO11
pip install ultralytics

Detaillierte Anweisungen und Best Practices zum Installationsprozess finden Sie in unserem YOLO11 Installationshandbuch. Wenn Sie bei der Installation der erforderlichen Pakete für YOLO11 auf Schwierigkeiten stoßen, konsultieren Sie unseren Leitfaden zu häufigen Problemen für Lösungen und Tipps.

Nutzung

Bevor Sie sich mit den Anwendungsanweisungen befassen, sollten Sie sich das Angebot an YOLO11-Modellen von Ultralytics ansehen. Dies wird Ihnen helfen, das am besten geeignete Modell für Ihre Projektanforderungen auszuwählen.

Nutzung

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

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

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

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

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

Export-Argumente

Wenn Sie Ihr YOLO11-Modell in das ONNX-Format exportieren, können Sie den Prozess mithilfe verschiedener Argumente anpassen, um es für Ihre spezifischen Bereitstellungsanforderungen zu optimieren:

Argument Typ Standard Beschreibung
format str 'onnx' Zielformat für das exportierte Modell, das die Kompatibilität mit verschiedenen Deployment-Umgebungen definiert.
imgsz int oder tuple 640 Gewü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.
half bool False Aktiviert die FP16-Quantisierung (halbe Präzision), wodurch die Modellgröße reduziert und potenziell die Inferenz auf unterstützter Hardware beschleunigt wird.
dynamic bool False Ermöglicht dynamische Eingabegrößen, wodurch die Flexibilität bei der Verarbeitung unterschiedlicher Bilddimensionen erhöht wird.
simplify bool True Vereinfacht den Modellgraphen mit onnxslim, was potenziell die Leistung und Kompatibilität verbessert.
opset int None Gibt 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.
nms bool False Fügt Non-Maximum Suppression (NMS) hinzu, die für eine genaue und effiziente Nachbearbeitung der Erkennung unerlässlich ist.
batch int 1 Gibt die Batch-Inferenzgröße des Exportmodells oder die maximale Anzahl von Bildern an, die das exportierte Modell gleichzeitig verarbeitet predict Modus.
device str None Gibt 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.

Bereitstellen von exportierten YOLO11 ONNX-Modellen

Sobald Sie Ihre Ultralytics YOLO11-Modelle erfolgreich in das ONNX-Format exportiert haben, ist der nächste Schritt die Bereitstellung dieser Modelle in verschiedenen Umgebungen. Detaillierte Anweisungen zur Bereitstellung Ihrer ONNX-Modelle finden Sie in den 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 YOLO11-Modelle in das ONNX-Format exportieren, um ihre Interoperabilität und Leistung auf verschiedenen Plattformen zu verbessern. Sie wurden auch in die ONNX Runtime und die ONNX-Bereitstellungsoptionen eingeführt.

Der ONNX-Export ist nur eines von vielen von Ultralytics YOLO11 unterstützten Exportformaten, mit dem Sie Ihre Modelle in nahezu jeder Umgebung bereitstellen können. Abhängig von Ihren spezifischen Anforderungen sollten Sie möglicherweise auch andere Exportoptionen wie TensorRT für maximale GPU-Leistung oder CoreML für Apple-Geräte in Betracht ziehen.

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

Wenn Sie mehr über andere Ultralytics YOLO11-Integrationen erfahren möchten, besuchen Sie unsere Seite mit dem Integrationsleitfaden. Dort finden Sie viele nützliche Ressourcen und Einblicke.

FAQ

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

Um Ihre YOLO11-Modelle mit Ultralytics in das ONNX-Format zu exportieren, führen Sie die folgenden Schritte aus:

Nutzung

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

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

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

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

# Run inference with the exported model
yolo predict model=yolo11n.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 YOLO11-Modellen?

Die Verwendung von ONNX Runtime für die Bereitstellung von YOLO11-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 YOLO11-Modelle, die nach ONNX exportiert wurden?

In ONNX exportierte YOLO11-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 YOLO11-Modelle verwenden?

Die Verwendung des ONNX-Formats für Ultralytics YOLO11-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.

Weitere Informationen finden Sie im umfassenden Leitfaden zum Exportieren von YOLO11-Modellen nach ONNX.

Wie kann ich Probleme beim Exportieren von YOLO11-Modellen nach ONNX beheben?

Beim Exportieren von YOLO11-Modellen nach ONNX können häufige Probleme auftreten, wie z. B. nicht übereinstimmende Abhängigkeiten oder nicht unterstützte Operationen. So beheben Sie diese Probleme:

  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 Monaten

Kommentare