[PYTHON] Bibliothèque de conversion / confirmation ONNX, résumé de l'application

TL;DR

table des matières

supposition

――En gros, procédez au travail après avoir créé un environnement virtuel

Un exemple chez Anaconda


conda create -n mmdnn python=3.6

1. Version ONNX et Opset

1.1. Version

(enquête ...)

1.2. Opset

(enquête ...)

1.3. Référence

ONNX versioning https://github.com/onnx/onnx/blob/master/docs/Versioning.md ONNX Version Converter https://github.com/onnx/onnx/blob/master/docs/VersionConverter.md Documentation sur la compatibilité de la version ONNX Runtime https://github.com/microsoft/onnxruntime/blob/master/docs/Versioning.md Version ONNX et version Windows https://docs.microsoft.com/ja-jp/windows/ai/windows-ml/onnx-versions

2. Conversion entre les frameworks d'apprentissage automatique

2.1. MMdnn

2.1.1. Site officiel

https://github.com/Microsoft/MMdnn

2.1.2. Aperçu

MMdnn est un outil cross-framework complet pour la transformation, la visualisation et le diagnostic de modèles d'apprentissage profond (DL). "MM" est une abréviation pour la gestion de modèle et "dnn" est un acronyme pour Deep Neural Network.

Référence: https://github.com/Microsoft/MMdnn

2.1.3. Cadre d'apprentissage automatique correspondant

Réimprimé à partir du (à partir du 7 juillet 2020): https://github.com/Microsoft/MMdnn

2.1.4. Installation

pip install mmdnn

2.1.5. Comment utiliser

mmconvert -sf keras -iw <fichier keras HDF5(*.h5)> -df onnx -om <Fichier ONNX de sortie(*.onnx)>

Référence: https://arakan-pgm-ai.hatenablog.com/entry/2019/03/01/090000

2.1.6. Tips

Il semble s'afficher lorsque le format de keras enregistré ne fait que pondérer.

Il y a des informations que la solution de contournement a été améliorée en utilisant model.save () au lieu de model.save_weights () lors de l'enregistrement.

référence: - AssertionError · Issue #324 · microsoft/MMdnn

2.2. ONNXMLTools

2.2.1. Site officiel

https://github.com/onnx/onnxmltools https://pypi.org/project/onnxmltools/

2.2.2. Aperçu

ONNXMLTools vous permet de convertir des modèles de diverses boîtes à outils d'apprentissage automatique vers ONNX.

Source: https://github.com/onnx/onnxmltools

2.2.3. Cadre d'apprentissage automatique compatible

--Keras (wrapper du convertisseur keras2onnx) --Tensorflow (wrapper du convertisseur tf2onnx) --scikit-learn (enveloppe du convertisseur skl2onnx)

Réimprimé à partir du (à partir du 7 juillet 2020): https://github.com/onnx/onnxmltools

2.3. keras2onnx

2.3.1. Site officiel

https://github.com/onnx/keras-onnx

2.3.2. Aperçu

Le convertisseur de modèle keras2onnx vous permet de convertir votre modèle Keras au format de modèle ONNX. Au départ, le convertisseur Keras a été développé dans le projet onnxmltools, mais le développement du convertisseur Keras2onnx a été déplacé vers un référentiel distinct pour prendre en charge plus de types de modèles Keras et réduire la complexité du mélange de plusieurs convertisseurs. ..

Source: https://github.com/onnx/keras-onnx

De plus, [WinMLTool](# 12-winmltools) encapsule l'appel à keras2onnx.

2.4. WinMLTools

Convertissez divers modèles d'apprentissage automatique en ONNX et utilisez-les dans Windows ML (environnement d'inférence rapide pour Windows) Un outil pour vous permettre.

2.4.1. Site officiel

https://docs.microsoft.com/ja-jp/windows/ai/windows-ml/convert-model-winmltools

2.4.2. Aperçu

WinMLTools vous permet de convertir des modèles d'apprentissage automatique créés par divers frameworks de formation vers ONNX. Il s'agit d'une extension d'ONNXMLTools et de TF2ONNX pour convertir un modèle en ONNX pour une utilisation dans Windows ML.

Source: https://docs.microsoft.com/ja-jp/windows/ai/windows-ml/convert-model-winmltools

2.4.3. Cadre d'apprentissage automatique compatible

Réimprimé à partir du (à partir du 7 juillet 2020): https://docs.microsoft.com/ja-jp/windows/ai/windows-ml/convert-model-winmltools

3. Conversion de version ONNX

3.1. ONNX Version Converter

3.1.1. Site officiel

https://github.com/onnx/onnx/blob/master/docs/VersionConverter.md

Un tutoriel montrant un exemple de mise à niveau et de rétrogradation d'un modèle ONNX vers un nouvel opset cible https://github.com/onnx/tutorials/blob/master/tutorials/ExportModelFromPyTorchForWinML.md

3.1.2. Aperçu

L'API ONNX fournit une bibliothèque pour convertir les modèles ONNX entre différentes versions d'opset. Cela permet aux développeurs et aux scientifiques des données de mettre à niveau leurs modèles ONNX existants vers des versions plus récentes ou de rétrograder leurs modèles vers des versions plus anciennes des spécifications ONNX. Les convertisseurs de version peuvent être appelés à l'aide des API C ++ ou Python. Un didacticiel est également fourni qui montre un exemple de mise à niveau et de rétrogradation d'un modèle ONNX vers un nouvel opset cible.

Source: https://docs.microsoft.com/ja-jp/windows/ai/windows-ml/onnx-versions

4. Confirmation

4.1. Netron

4.1.1. Site officiel

https://github.com/lutzroeder/netron

4.1.2. Installation

Installer avec Winget

winget install -e --id LutzRoeder.Netron

4.1.3. Confirmation des informations

Vous pouvez vérifier la version ONNX à partir du bouton Propriétés du modèle en haut à gauche.

image.png

** Exemple de confirmation 1 **

image.png

La version du format de fichier -ONNX est v6 --Deux entrées, trois sorties

** Exemple de confirmation 2 **

image.png

La version du format de fichier -ONNX est v7 --Deux ENTRÉES et trois SORTIES (aucune différence par rapport à l'exemple de confirmation 1)

Recommended Posts

Bibliothèque de conversion / confirmation ONNX, résumé de l'application
Résumé de la bibliothèque LINQ