ONNX
ONNX Open Neural Network eXchange is a file format shared across many neural network training frameworks.
Not recommended for PyTorch conversion
Use the PyTorch converter for PyTorch models. Although the ONNX to Core ML converter was used in previous versions of coremltools, new features will not be added to it.
You can convert a model from ONNX to Core ML using the following code:
import coremltools as ct
# Convert from ONNX to Core ML
model = ct.converters.onnx.convert(model='my_model.onnx')
Minimum target
The argument minimum_ios_deployment_target
controls the set of Core ML layers used by the converter. When you set its value to 12
, the converter uses only the set of layers that were shipped in Core ML during the iOS 12 and macOS 14 release cycles. Use this setting to produce a Core ML model that can be deployed to iOS 12 and higher.
If this setting results in an error due to an unsupported operator or parameter, set the target to 13
so that the converter can utilize all the layers (including control flow and recurrent layers) that were shipped in Core ML in iOS 13.
Operators
ONNX version support
ONNX to Core ML supports ONNX Opset version 10 and older.
The following are the supported operators:
- ONNX operators supported in Core ML 2.0 via the converter
- ONNX operators supported in Core ML 3.0 via the converter
Some of the operators are partially compatible with Core ML. For example:
gemm
with more than one non-constant input is not supported in Core ML 2.- Scale as an input for upsample layer is not supported in Core ML 3.
For unsupported ops or unsupported attributes within supported ops, use Core ML custom layers or custom functions. For details on producing Core ML models with custom layers and custom functions, see the testing script tests/custom_layers_test.py
.
Supported models
The following models in the ONNX repository have been tested to work with this converter:
- BVLC Alexnet
- BVLC Caffenet
- BVLC Googlenet
- BVLC reference_rcnn_ilsvrc13
- Densenet
- Emotion-FERPlus
- Inception V1
- Inception V2
- MNIST
- Resnet50
- Shufflenet
- SqueezeNet
- VGG
- ZFNet
Examples
For PyTorch models, see the direct PyTorch to Core ML converter.
For ONNX models, see the Jupyter notebooks in the coremltools v3.4 neural network examples.
Conversion API parameters
The following is a list of parameters supported by the ONNX to Core ML conversion API. For definitions, see the API Reference.
from coremltools.converters.onnx import convert
def convert(model,
mode=None,
image_input_names=[],
preprocessing_args={},
image_output_names=[],
deprocessing_args={},
class_labels=None,
predicted_feature_name='classLabel',
add_custom_layers=False,
custom_conversion_functions={},
minimum_ios_deployment_target='13')
Updated almost 4 years ago