ONNX (Open Neural Network Exchange)
Entdecke das Format Open Neural Network Exchange (ONNX). Erfahre, wie du Ultralytics YOLO26 für schnelle, plattformübergreifende Bereitstellungen und Hardwareoptimierung nach ONNX exportierst.
ONNX (offener Austausch neuronaler Netze) ist ein Open-Source-Format zur Darstellung von Machine-Learning-Modellen und ermöglicht die Interoperabilität zwischen verschiedenen KI-Frameworks und -Werkzeugen. Es dient als universeller Übersetzer für Deep Learning und ermöglicht es Entwicklern, Modelle in einem Framework – etwa PyTorch, TensorFlow oder Scikit-learn – zu erstellen und anschließend nahtlos in einer anderen, für die Inferenz optimierten Umgebung bereitzustellen. Durch die Definition eines einheitlichen Satzes von Operatoren und eines standardisierten Dateiformats macht ONNX komplexe, benutzerdefinierte Konvertierungsskripte überflüssig, die früher erforderlich waren, um Modelle von der Forschung in die Produktion zu überführen. Diese Flexibilität ist für moderne KI-Workflows entscheidend, bei denen das Training auf leistungsstarken Cloud-GPUs erfolgen kann, während die Bereitstellung auf unterschiedlichster Hardware wie Edge-Geräten, Mobiltelefonen oder Webbrowsern erfolgt.
Die Rolle von ONNX in der modernen KI#
In der sich rasant entwickelnden Welt der künstlichen Intelligenz verwenden Forscher und Ingenieure in verschiedenen Phasen des Entwicklungszyklus häufig unterschiedliche Werkzeuge. Ein Data Scientist bevorzugt möglicherweise die Flexibilität von PyTorch für Experimente und das Training, während ein Produktionsingenieur die optimierte Leistung von TensorRT oder OpenVINO für die Bereitstellung benötigt. Ohne ein standardisiertes Austauschformat ist es schwierig und fehleranfällig, ein Modell zwischen diesen Ökosystemen zu übertragen.
ONNX schließt diese Lücke, indem es eine gemeinsame Definition des Berechnungsgraphen bereitstellt. Beim Export eines Modells nach ONNX wird es in ein Format serialisiert, das die Netzwerkstruktur (Layer, Verbindungen) und Parameter (Gewichte, Biases) unabhängig vom verwendeten Framework erfasst. Dadurch können speziell für Hardwarebeschleunigung optimierte Inferenz-Engines wie die ONNX Runtime das Modell effizient auf mehreren Plattformen ausführen, darunter Linux, Windows, macOS, Android und iOS.
Wichtige Vorteile der Verwendung von ONNX#
Die Verwendung des Formats Open Neural Network Exchange bietet KI-Projekten mehrere strategische Vorteile:
- Framework-Interoperabilität: Entwickler können zwischen Frameworks wechseln, ohne an ein einzelnes Ökosystem gebunden zu sein. Du kannst ein Modell mit der benutzerfreundlichen Ultralytics Python API trainieren und für die Verwendung in einer C++-Anwendung oder einer webbasierten JavaScript-Umgebung exportieren.
- Hardwareoptimierung: Viele Hardwarehersteller stellen spezielle Ausführungsanbieter bereit, die mit ONNX verbunden werden können. Dadurch kann eine einzelne Datei
.onnxauf NVIDIA GPUs, Intel CPUs oder mobilen NPUs mit Werkzeugen wie OpenVINO oder CoreML beschleunigt werden. - Schnellere Inferenz: Die ONNX Runtime wendet Graphoptimierungen wie das Zusammenfassen von Knoten und das Falten von Konstanten an, die die Inferenzlatenz deutlich reduzieren können. Das ist für Echtzeitanwendungen wie autonome Fahrzeuge oder Hochgeschwindigkeits-Produktionslinien entscheidend.
- Vereinfachte Bereitstellung: Statt separate Bereitstellungspipelines für jedes Trainings-Framework zu verwalten, können Engineering-Teams ONNX als Bereitstellungsformat standardisieren und dadurch ModelOps-Prozesse effizienter gestalten.
Anwendungen in der Praxis#
Die Vielseitigkeit von ONNX macht es in unterschiedlichsten Branchen zu einem festen Bestandteil. Hier sind zwei konkrete Beispiele für seine Anwendung:
1. Edge-KI auf Mobilgeräten#
Betrachte eine mobile Anwendung zur Echtzeitüberwachung der Pflanzengesundheit. Das Modell könnte auf einem leistungsstarken Cloud-Server mit einem großen Datensatz von Pflanzenbildern trainiert worden sein. Die App muss jedoch offline auf dem Smartphone eines Landwirts ausgeführt werden. Durch den Export des trainierten Modells nach ONNX können Entwickler es mithilfe von ONNX Runtime Mobile in die mobile App integrieren. Dadurch kann der Prozessor des Telefons die Objekterkennung lokal ausführen und Schädlinge oder Krankheiten sofort erkennen, ohne eine Internetverbindung zu benötigen.
2. Plattformübergreifende Web-Inferenz#
Im E-Commerce könnte eine Funktion zur „virtuellen Anprobe“ Posenschätzung verwenden, um Kleidung über das Webcam-Bild eines Benutzers zu legen. Das Training dieses Modells könnte in Python erfolgen, die Zielplattform für die Bereitstellung ist jedoch ein Webbrowser. Mit ONNX kann das Modell konvertiert und über ONNX Runtime Web direkt im Browser des Benutzers ausgeführt werden. Dabei werden die Ressourcen des Geräts des Benutzers (WebGL oder WebAssembly) für Computer-Vision-Aufgaben genutzt. So wird eine reibungslose und datenschutzfreundliche Nutzung gewährleistet, da die Videodaten den Computer des Benutzers zu keinem Zeitpunkt verlassen.
Vergleich mit verwandten Begriffen#
Es ist hilfreich, ONNX von anderen Modellformaten und Werkzeugen zu unterscheiden:
- vs. TensorRT: ONNX ist ein Austauschformat, während TensorRT eine Inferenz-Engine und ein Optimierer speziell für NVIDIA GPUs ist. Ein gängiger Workflow besteht darin, ein Modell zunächst nach ONNX zu exportieren und anschließend die ONNX-Datei in TensorRT einzulesen, um auf NVIDIA-Hardware den maximalen Durchsatz zu erzielen.
- vs. TensorFlow SavedModel: SavedModel ist das native Serialisierungsformat für TensorFlow. Obwohl es innerhalb des Google-Ökosystems robust ist, ist es weniger universell kompatibel als ONNX. Häufig stehen Werkzeuge zur Verfügung, um SavedModels in ONNX zu konvertieren und dadurch eine breitere Plattformunterstützung zu erhalten.
- vs. CoreML: CoreML ist Apples Framework für Machine Learning auf dem Gerät. Obwohl es sich um ein anderes Format handelt, werden Modelle häufig von PyTorch nach ONNX und anschließend von ONNX nach CoreML (oder direkt) konvertiert, um sie effizient auf iPhones und iPads auszuführen.
Export nach ONNX mit Ultralytics#
Das Ultralytics-Ökosystem vereinfacht die Konvertierung moderner Modelle wie YOLO26 in das ONNX-Format. Die Exportfunktion ist direkt in die Bibliothek integriert und übernimmt die komplexe Durchquerung des Graphen sowie die Zuordnung der Operatoren automatisch.
Das folgende Beispiel zeigt, wie du ein vortrainiertes Ultralytics-YOLO26-Modell für die Bereitstellung in das ONNX-Format exportierst:
from ultralytics import YOLO
# Load the YOLO26n model (Nano version recommended for edge deployment)
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
# The 'dynamic' argument enables variable input sizes
path = model.export(format="onnx", dynamic=True)
print(f"Model exported successfully to: {path}")Nach dem Export kann diese Datei .onnx in der Ultralytics Platform zur Verwaltung verwendet oder mit der ONNX Runtime direkt auf Edge-Geräten bereitgestellt werden. Dadurch wird leistungsstarke Computer Vision in praktisch jeder Umgebung zugänglich.









