Blog

FIS-SST

Ein Python-Modell zu .Net exportieren

Michał Koźlik

Einführung

Wenn Sie Ihr Modell in einer Python-Umgebung trainiert haben und es zufriedenstellende Ergebnisse liefert – Glückwunsch! Was aber, wenn Sie es einer .NET-Anwendung zur Verfügung stellen müssen? Nehmen wir an, eine bestehende .NET-Anwendung soll um eine KI-Funktionalität erweitert werden, die Sie in Python erstellt haben.

Die Lösung, die wir für das mit Pytorch (Resnet34) trainierte Modell verwendet haben, besteht darin, es in ein ONNX-Format zu exportieren. ONNX kommt von Open Neural Network Exchange.

Python-Seite

Der folgende Python-Code speichert das trainierte Modell als .PT-Datei (die später in Python wieder geladen werden kann) und als ONNX-Format (das exportiert und in .NET verwendet werden kann):

Wenn Sie zuvor ein Modell trainiert und in einer .PT-Datei gespeichert haben, können Sie folgenden Code verwenden:

.NET-Seite

Auf der .NET-Seite bietet Microsoft eine ML-Bibliothek zur Verarbeitung von ONNX-Modellen an, also installieren Sie Microsoft.ML.OnnxRuntime über Nuget. Verwenden Sie als Ziel-Framework für das Projekt mindestens .NET Standard 2.0.

Der Code in C# sieht wie folgt aus:

1. Aus Sicht der Leistung ist es eine gute Idee, das trainierte Modell einmal zu laden und es so lange zu behalten, wie wir es verwenden wollen, da seine Initialisierung ein langer Prozess ist:

2. Unter der Annahme, dass wir einen Eingabetensor vorbereitet haben, der in einer Variable namens input erkannt werden soll, können wir nun die Inferenz ausführen (in unserem Fall das trainierte Modell dazu bringen, das Bild zu erkennen):

Achten Sie darauf, den Input richtig zu benennen. Es sollte derselbe Name sein, der beim Exportieren aus Python im Parameter input_names angegeben wurde. Sie können dies auch mit https://netron.app/ für Ihr gespeichertes Modell überprüfen; Sie werden es gleich am Anfang sehen:


Bei anderen Modellen könnte es anders aussehen, zum Beispiel so:

Obrazek posiada pusty atrybut alt; plik o nazwie image-3.png

Schlussfolgerung

Sie können 2 Umgebungen verwenden: Python – was für das Trainieren eines Modells am praktischsten sein könnte, und .NET – was wünschenswert sein könnte, wenn Sie ein bestehendes System haben, in dem Sie ein solches Modell für Vorhersagen unter Verwendung des ONNX-Formats verwenden möchten.

Links

https://pytorch.org/tutorials/advanced/super_resolution_with_onnxruntime.html

https://docs.microsoft.com/en-us/azure/machine-learning/concept-onnx

https://youtube.com/watch?v=Yf7VXj1etdw

Obrazek posiada pusty atrybut alt; plik o nazwie Obraz3-1024x306.png

Kontaktformular

Lukas Schikora

Project & Operations Manager

Bitte zögern Sie nicht, mich telefonisch oder per E-Mail zu kontaktieren

Download

Damit der Download erfolgen kann, geben Sie bitte hier Ihren Namen und Ihre E-Mail Adresse ein.

Unternehmensinformationen herunterladen (PDF)

Damit der Download erfolgen kann, geben Sie bitte hier Ihren Namen und Ihre E-Mail Adresse ein.

Grenzüberschreitendes Unterstützungskonzept

Damit der Download erfolgen kann, geben Sie bitte hier Ihren Namen und Ihre E-Mail Adresse ein