Yolo Vision Shenzhen
Shenzhen
Jetzt beitreten
Glossar

ONNX (Open Neural Network Exchange)

Entdecken Sie, wie ONNX die Übertragbarkeit und Interoperabilität von KI-Modellen verbessert und die nahtlose Bereitstellung von Ultralytics YOLO auf verschiedenen Plattformen ermöglicht.

Open Neural Network ExchangeONNX) ist ein Open-Source-Standard zur Darstellung von Modelle des maschinellen Lernens (ML) auf eine Weise Portabilität über verschiedene Frameworks und Hardware hinweg gewährleistet. Ursprünglich wurde er von Unternehmen wie Microsoft und Facebook entwickelt, dient ONNX als "Universalübersetzer" für KI. Er ermöglicht es Entwicklern, ein Modell in einem Ökosystem zu trainieren, wie zum Beispiel PyTorchtrainieren und es nahtlos in einem anderen einem anderen, wie TensorFlow oder einer spezialisierten Inferenzmaschine. Diese Interoperabilität eliminiert die Notwendigkeit, Netzwerke neu aufzubauen oder neu zu trainieren, wenn sie von Forschungsumgebungen zu Produktionsanwendungen wechseln, die Modellimplementierung Modellbereitstellungs-Pipeline.

Wie ONNX funktioniert

Im Kern definiert ONNX einen gemeinsamen Satz von Operatoren - die Bausteine von Modelle für Deep Learning (DL) und maschinelles Lernen sowie ein Standard-Dateiformat. Wenn ein Modell in ONNX konvertiert wird, wird seine Berechnungsstruktur auf einen statischen Berechnungsgraphen abgebildet. In diesem Graphen stellen die Knoten mathematische Knoten mathematische Operationen (wie Faltungen oder Aktivierungsfunktionen), und Kanten stellen den Fluss von Datentensoren zwischen ihnen dar.

Da diese Graphendarstellung standardisiert ist, können Hardwarehersteller optimierte Ausführungsanbieter für ONNX ERSTELLEN. Dies bedeutet, dass eine einzige .onnx Datei kann auf verschiedenen Geräten beschleunigt werden, darunter ein CPU, GPU (Graphics Processing Unit)oder spezialisiert TPU Tensor Processing Unit)oft unter Verwendung der leistungsstarken ONNX.

Modelle nach ONNX exportieren

Für Nutzer des ultralytics Paket ist die Konvertierung eines trainierten Modells in das ONNX ein unkomplizierter Prozess. Die Bibliothek erledigt die komplexe Zuordnung der Schichten zum ONNX automatisch. Der folgende Code Schnipsel demonstriert, wie man ein YOLO11 Modell und bereitet es für einen breiteren Einsatz vorbereitet.

from ultralytics import YOLO

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

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

Anwendungsfälle in der Praxis

Die Flexibilität von ONNX macht es zu einer entscheidenden Komponente in der modernen KI-Infrastruktur, insbesondere für Computer Vision (CV) Aufgaben.

  1. Plattformübergreifende Bereitstellung von Mobilgeräten: Ein Entwickler könnte ein Objekterkennungsmodell mit PyTorch auf einer leistungsstarken Arbeitsstation trainieren. Die endgültige Anwendung muss jedoch sowohl auf iOS als auch auf Android laufen. Durch das Exportieren des Modells nach ONNX kann der Entwickler dieselbe Modelldatei in mobile Anwendungen integrieren, indem er die ONNX Runtime for Mobile in mobile Anwendungen integrieren und so ein konsistentes Verhalten über verschiedene Betriebssysteme hinweg, ohne dass separate Codebases gepflegt werden müssen.
  2. Integration mit Altsystemen: Viele industrielle Anwendungen werden mit Sprachen wie C++ oder C# entwickelt, um Leistung und Stabilität zu gewährleisten. Python ist zwar der Standard für Schulungen, aber die Integration eines Python Modells in eine C++-Produktionsumgebung kann langsam und fehleranfällig sein. ONNX überbrückt diese Lücke. Eine Produktionsstätte, die Computer Vision in der Robotik kann ein Modell in Python trainieren, es in ONNX exportieren und dann direkt in seine C++-Steuerungssoftware laden, um Hochgeschwindigkeits-Echtzeit-Inferenz in der Fabrik Fabrikhalle.

ONNX vs. Verwandte Konzepte

Wenn Sie verstehen, wie ONNX mit anderen Tools interagiert, können Sie die richtige Implementierungsstrategie wählen.

  • ONNX vs. TensorRT: Während ONNX ein Dateiformat zur Darstellung von Modellen ist, TensorRT ist ein hochleistungsfähiges Optimierungs-SDK das von NVIDIA speziell für NVIDIA GPUs entwickelt wurde. Die beiden arbeiten oft zusammen; Entwickler exportieren Modelle in ONNX und und verwenden dann TensorRT , um diese ONNX einzulesen und aggressive Modelloptimierung Modelloptimierungstechniken wie Ebenenfusion und Kalibrierung für maximale Geschwindigkeit auf NVIDIA .
  • ONNX vs. Rahmenformate (z.B. .pt, .h5): Native Formate wie das von PyTorch .pt oder Keras' .h5 eignen sich hervorragend für die Ausbildung und das Sparen Modellgewichte innerhalb ihrer spezifischen Ökosysteme. Sie erfordern jedoch häufig, dass das ursprüngliche Framework installiert wird, um das Modell auszuführen. ONNX entkoppelt das Modell vom dem Trainingsframework, wodurch es einfacher wird, das KI Einsätze, bei denen die Installation einer vollständigen aufgrund von Speicherplatzmangel nicht praktikabel ist.
  • ONNX vs. Quantisierung: ONNX ist ein Format, während Modellquantisierung ist eine Technik zur Reduzierung der Modellgröße zu verringern und die Geschwindigkeit zu erhöhen, indem die Genauigkeit verringert wird (z. B. von float32 auf int8). Der ONNX unterstützt quantisierte Operatoren und ermöglicht Entwicklern das Speichern und Ausführen von quantisierte Modelle effizient zu speichern und auszuführen.

Werden Sie Mitglied der Ultralytics

Gestalten Sie die Zukunft der KI mit. Vernetzen Sie sich, arbeiten Sie zusammen und wachsen Sie mit globalen Innovatoren

Jetzt beitreten