en / de
AI
Expertisen
Methoden
Dienstleistungen
Referenzen
Jobs & Karriere
Firma
Technologie-Trends TechCast WebCast TechBlog News Events Academy

ONNX – Ein universelles Format für KI-Modelle

In den letzten Jahren hat sich die Welt der künstlichen Intelligenz rasant weiterentwickelt. Frameworks wie PyTorch, TensorFlow, Keras und scikit-learn bieten leistungsstarke Werkzeuge zum Trainieren von KI-Modellen. Doch ein Problem bleibt: Modelle sind häufig an das Framework gebunden, in dem sie erstellt wurden.

Genau hier kommt ONNX ins Spiel. In den folgenden Abschnitten wird genauer auf ONNX eingegangen und anhand eines konkreten Beispiels gezeigt, wie man mit Hilfe der ONNX-Runtime ein KI- Modell in eine .NET-MAUI-App einbindet und offline nutzen kann.

Was ist ONNX

ONNX (Open Neural Network Exchange) ist ein offenes Format für KI-Modelle, welches bereits seit 2017 besteht. Im Jahr 2019 wurde das Projekt zudem in die Linux Foundation AI aufgenommen.

Bei der Entwicklung des Formates wurden zwei zentrale Ziele verfolgt:

ONNX-Runtime

Um KI-Modelle im ONNX-Format anwenden zu können, wird die ONNX-Runtime benötigt. Mit dieser kann man Modelle unabhängig vom ursprünglichen Trainingsframework deployen — ganz nach dem Motto train your model once, run it anywhere.

Multi-Plattform-Support

Die Runtime kann mit diversen Programmiersprachen eingebunden werden (C, C++, Python, C#, JavaScript, Rust, etc.) und  ist für verschiedenste Plattformen verfügbar:

Hohe Performance

ONNX-Runtime unterstützt unterschiedliche Hardware-Beschleunigungen wie CUDA, TensorRT oder DirectML. Dabei ist sie nicht nur für leistungsstarke Systeme interessant, sondern auch für kleiner KI-Modelle auf Edge-Devices und Smartphones.

Einen guten Überblick bietet unten stehende Grafik:

(Quelle: https://onnxruntime.ai/getting-started)

ONNX-Runtime verwenden

Folgendes Beispiel zeigt, wie die ONNX-Runtime in eine .NET-MAUI-App eingebunden und genutzt werden kann um Simpson-Charakteren auf Bildern zu erkennen. Das Modell wurde mit TensorFlow trainiert und ist relativ trivial (12’288 Parameter und ca. 40MB gross). Es soll nur die Verwendung der Runtime demonstrieren. Der komplette Source Code kann hier eingesehen werden.

Die Einbindung ist mit wenigen Schritten möglich:

Etwas aufwändiger ist die Aufbereitung der Eingangsdaten. Diese müssen das gleiche Format wie die Trainingsdaten haben. In diesem Beispiel handelt es sich um ein Float-Array, das drei Farbkanalwerte pro Pixel enthält. Die Werte müssen normalisiert (0 bis 1) und in der richtigen Reihenfolge vorliegen. Da die Bilder beim Training im BGR-Farbraum verarbeitet wurden, muss die Reihenfolge der Farbkanäle auch bei der Klassifzierung neuer Bilder eingehalten werden (siehe NormalizeImage-Methode). Andernfalls funktioniert die Klassifizierung nicht richtig.

Das resultierende Array kann anschliessend genutzt werden, um einen Tensor zu erzeugen und die Inferenz-Session aufzurufen:

private List<float> Predict(float[] image)
{
    if (_session is null) return [];

    var input = new DenseTensor<float>(image, [DimBatchSize, ImageSizeX, ImageSizeY, DimNumberOfChannels]);
    using var results = _session.Run([NamedOnnxValue.CreateFromTensor(ModelInputName, input)]);
    var output = results.First(i => i.Name == ModelOutputName);
    var scores = output.AsTensor<float>().ToList();
    return scores;
}

Der Rückgabewert ist ebenfalls ein Float-Array, welches die Wahrscheinlichkeit für die verschiedenen Simpson-Charakteren enthält.

Fazit

ONNX erleichtert den Einsatz von KI-Modellen über verschiedene Frameworks und Plattformen hinweg. Durch das offene Modellformat und die breite Unterstützung unterschiedlicher Umgebungen können Modelle flexibel integriert werden, ohne an das Trainingsframework gebunden zu sein.

Ein wichtiger Anwendungsbereich ist das Edge-Computing: Da ONNX-Modelle auf mobilen Geräten und Edge-Hardware lokal ausgeführt werden können, sind KI-Funktionen auch ohne Cloud-Anbindung möglich — ideal für Anwendungen mit geringen Latenzanforderungen oder zur lokalen Datenverarbeitung.

Das Beispiel mit einer .NET-MAUI-App zeigt, wie ein trainiertes Modell eingebunden und offline genutzt werden kann. Damit wird deutlich, wie sich ONNX in reale Anwendungen integrieren lässt und welche Schritte dafür notwendig sind.

Insgesamt bietet ONNX eine technische Grundlage, um KI-Modelle plattformübergreifend und auch auf Edge-Geräten einzusetzen, ohne dass dafür grosse Anpassungen am Modell selbst erforderlich sind.

Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Newsletter - aktuelle Angebote, exklusive Tipps und spannende Neuigkeiten

 Jetzt anmelden

Copyright © 2025 Noser Engineering AG – Alle Rechte vorbehalten.

NACH OBEN
Privacy Policy Cookie Policy
Zur Webcast Übersicht