Skip to main content

Convert ONNX (Open Neural Network Exchange)models into Apple CoreML format.

Project description

This tool converts ONNX models to Apple CoreML format.

Installation

pip install -U onnx-coreml

Dependencies

  • click

  • numpy

  • coremltools (0.6.3+)

  • onnx (0.2.1+)

How to use

Using this library you can implement converter for your models. To implement converters you should use single function “convert” from onnx_coreml:

from onnx_coreml import convert

This function is simple enough to be self-describing:

def convert(model,
            mode=None,
            image_input_names=[],
            preprocessing_args={},
            image_output_names=[],
            deprocessing_args={},
            class_labels=None,
            predicted_feature_name='classLabel')

Parameters

model: ONNX model | str
An ONNX model with parameters loaded in onnx package or path to file
with models.
mode: str (‘classifier’, ‘regressor’ or None)
Mode of the converted coreml model:
‘classifier’, a NeuralNetworkClassifier spec will be constructed.
‘regressor’, a NeuralNetworkRegressor spec will be constructed.
preprocessing_args: dict
‘is_bgr’, ‘red_bias’, ‘green_bias’, ‘blue_bias’, ‘gray_bias’,
‘image_scale’ keys with the same meaning as

https://apple.github.io/coremltools/generated/coremltools.models.neural_network.html#coremltools.models.neural_network.NeuralNetworkBuilder.set_pre_processing_parameters

deprocessing_args: dict
Same as ‘preprocessing_args’ but for deprocessing.
class_labels: A string or list of strings.
As a string it represents the name of the file which contains
the classification labels (one per line).
As a list of strings it represents a list of categories that map
the index of the output of a neural network to labels in a classifier.
predicted_feature_name: str
Name of the output feature for the class labels exposed in the Core ML
model (applies to classifiers only). Defaults to ‘classLabel’

Returns

model: A coreml model.

CLI

Also you can use command-line script for simplicity:

convert-onnx-to-coreml [OPTIONS] ONNX_MODEL

Currently supported

Models

Models from https://github.com/onnx/models are supported and tested.

Operators

List of ONNX operators that can be converted into their CoreML equivalent:

  • Conv

  • Relu

  • Reshape

  • Transpose

  • MaxPool

  • AveragePool

  • FC

  • BatchNormalization

  • Add

  • Sum

  • Mul

  • LeakyRelu

  • Concat

  • GlobalAveragePool

  • GlobalMaxPool

  • Softmax

  • Gemm

  • LRN

Some of operators are partially compatible because CoreML doesn’t support broadcasting, gemm for arbitrary tensors, etc.

License

Copyright (c) 2017 Prisma Labs, Inc. All rights reserved.

Use of this source code is governed by the MIT License that can be found in the LICENSE.txt file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

onnx_coreml-0.0.2-py2.py3-none-any.whl (14.3 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page