ONNX (Open Neural Network Exchange)
Erkunde das Open Neural Network Exchange (ONNX)-Format. Lerne, wie du Ultralytics YOLO26 nach ONNX für schnelle, plattformübergreifende Bereitstellung und Hardwareoptimierung exportierst.
ONNX (Open Neural Network Exchange) ist ein Open-Source-Format, das entwickelt wurde, um Machine-Learning-Modelle darzustellen und die Interoperabilität zwischen verschiedenen KI-Frameworks und Tools zu ermöglichen. Es dient als universeller Übersetzer für Deep Learning und ermöglicht es Entwicklern, Modelle in einem Framework – wie PyTorch, TensorFlow oder Scikit-learn – zu erstellen und nahtlos in einer anderen Umgebung bereitzustellen, die für die Inferenz optimiert ist. Durch die Definition eines gemeinsamen Satzes von Operatoren und eines Standard-Dateiformats eliminiert ONNX die Notwendigkeit für komplexe, benutzerdefinierte Konvertierungsskripte, die früher erforderlich waren, um Modelle von der Forschung in die Produktion zu überführen. Diese Flexibilität ist entscheidend für moderne KI-Workflows, bei denen das Training auf leistungsstarken Cloud-GPUs stattfinden kann, während die Bereitstellung auf diverse Hardware wie Edge-Geräte, Mobiltelefone oder Webbrowser abzielt.
Link to this sectionDie Rolle von ONNX in der modernen KI#
In der sich schnell entwickelnden Landschaft der künstlichen Intelligenz verwenden Forscher und Ingenieure oft unterschiedliche Tools für verschiedene Phasen des Entwicklungslebenszyklus. Ein Data Scientist bevorzugt möglicherweise die Flexibilität von PyTorch für Experimente und Training, während ein Production Engineer die optimierte Leistung von TensorRT oder OpenVINO für die Bereitstellung benötigt. Ohne ein Standard-Austauschformat ist das Verschieben eines Modells zwischen diesen Ökosystemen schwierig und fehleranfällig.
ONNX überbrückt diese Lücke, indem es eine gemeinsame Definition des Berechnungsgraphen bereitstellt. Wenn ein Modell in ONNX exportiert wird, wird es in ein Format serialisiert, das die Netzwerkstruktur (Layer, Verbindungen) und Parameter (Gewichte, Biases) auf framework-agnostische Weise erfasst. Dies ermöglicht Inferenz-Engines, die speziell auf Hardwarebeschleunigung abgestimmt sind – wie die ONNX Runtime –, das Modell effizient auf mehreren Plattformen auszuführen, einschließlich Linux, Windows, macOS, Android und iOS.
Link to this sectionHauptvorteile der Verwendung von ONNX#
Die Einführung des Open Neural Network Exchange Formats bietet mehrere strategische Vorteile für KI-Projekte:
- Framework-Interoperabilität: Entwickler können zwischen Frameworks wechseln, ohne in einem einzigen Ökosystem gefangen 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.
- Hardware-Optimierung: Viele Hardwarehersteller bieten spezialisierte Ausführungsprovider an, die mit ONNX interagieren. Das bedeutet, dass eine einzelne
.onnx-Datei auf NVIDIA GPUs, Intel CPUs oder mobilen NPUs (Neural Processing Units) unter Verwendung von Tools wie OpenVINO oder CoreML beschleunigt werden kann. - Schnellere Inferenz: Die ONNX Runtime wendet Graph-Optimierungen an – wie Node-Fusion und Constant Folding –, die die Inferenz-Latenz erheblich reduzieren können. Dies ist unerlässlich für Echtzeitanwendungen wie autonome Fahrzeuge oder Hochgeschwindigkeits-Fertigungslinien.
- Vereinfachte Bereitstellung: Anstatt separate Bereitstellungspipelines für jedes Trainingsframework zu pflegen, können Ingenieurteams ONNX als Standard-Bereitstellungsformat verwenden und so ModelOps-Prozesse rationalisieren.
Link to this sectionPraxisanwendungen#
Die Vielseitigkeit von ONNX macht es zu einem festen Bestandteil in verschiedenen Branchen. Hier sind zwei konkrete Beispiele für seine Anwendung:
Link to this sectionEdge AI auf mobilen Geräten#
Consider a mobile application designed for real-time crop health monitoring. The model might be trained on a powerful cloud server using a large dataset of plant images. However, the app needs to run offline on a farmer's smartphone. By exporting the trained model to ONNX, developers can integrate it into the mobile app using ONNX Runtime Mobile. This allows the phone's processor to run object detection locally, identifying pests or diseases instantly without needing an internet connection.
Link to this sectionPlattformübergreifende Web-Inferenz#
In e-commerce, a "virtual try-on" feature might use pose estimation to overlay clothing on a user's webcam feed. Training this model might happen in Python, but the deployment target is a web browser. Using ONNX, the model can be converted and run directly in the user's browser via ONNX Runtime Web. This utilizes the client's device capabilities (WebGL or WebAssembly) to perform computer vision tasks, ensuring a smooth, privacy-preserving experience since video data never leaves the user's computer.
Link to this sectionVergleich mit verwandten Begriffen#
Es ist hilfreich, ONNX von anderen Modellformaten und Tools zu unterscheiden:
- vs. TensorRT: Während ONNX ein Austauschformat ist, ist TensorRT eine Inferenz-Engine und ein Optimierer speziell für NVIDIA GPUs. Ein gängiger Workflow beinhaltet das Exportieren eines Modells nach ONNX und das anschließende Parsen dieser ONNX-Datei in TensorRT, um einen maximalen Durchsatz auf NVIDIA-Hardware 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. Es existieren oft Tools, um SavedModels in ONNX zu konvertieren, um eine breitere Plattformunterstützung zu erhalten.
- vs. CoreML: CoreML ist Apples Framework für On-Device Machine Learning. Obwohl beide unterschiedlich sind, werden Modelle häufig von PyTorch nach ONNX und dann von ONNX nach CoreML konvertiert (oder direkt), um effizient auf iPhones und iPads zu laufen.
Link to this sectionExport nach ONNX mit Ultralytics#
Das Ultralytics-Ökosystem vereinfacht den Prozess der Konvertierung modernster Modelle wie YOLO26 in das ONNX-Format. Die Exportfunktionalität ist direkt in die Bibliothek integriert und übernimmt automatisch die komplexe Graph-Traversierung sowie das Operator-Mapping.
Das folgende Beispiel zeigt, wie ein vortrainiertes YOLO26-Modell für die Bereitstellung in das ONNX-Format exportiert wird:
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 .onnx-Datei in der Ultralytics Platform zur Verwaltung genutzt oder direkt mithilfe der ONNX Runtime auf Edge-Geräten bereitgestellt werden, wodurch leistungsstarke Computer-Vision praktisch in jeder Umgebung zugänglich wird.






