将由第三方机器学习工具所创建的已训练模型,转换为 Core ML 模型格式。
概述
如果您已经使用了第三方机器学习工具来创建和训练模型,只要这个工具是受支持的,那么就 可以使用 Core ML Tools 或者第三方工具(如: MXNet converter 或者 TensorFlow converter)来将这些模型转换为 Core ML 模型格式。否则你只能自己创建转换工具。
使用Core ML Tools
Core ML Tools 是⼀一个 Python 包 (coremltools),并挂载在 Python Package Index (PyPI) 上。 要了了解关于 Python 包的更更多信息,请参阅 Python Packaging User Guide。
表 1 列出了我们支持的模型和第三方工具。
Table 1
Models and third-party frameworks supported by Core ML Tools
Model type | Supported models | Supported frameworks |
---|---|---|
Neural networks | Feedforward, convolutional, recurrent | Caffe v1 Keras 1.2.2+ |
Tree ensembles | Random forests, boosted trees, decision trees | scikit-learn 0.18 XGBoost 0.6 |
Support vector machines | Scalar regression, multiclass classification | scikit-learn 0.18 LIBSVM 3.22 |
Generalized linear models | Linear regression, logistic regression | scikit-learn 0.18 |
Feature engineering | Sparse vectorization, dense vectorization, categorical processing | scikit-learn 0.18 |
Pipeline models | Sequentially chained models | scikit-learn 0.18 |
模型转换
您可以使用 Core ML 转换器,并根据对应的模型第三方工具,来对模型进⾏转换。通过调⽤转换器的 convert 方法,然后再将结果保存为 Core ML 模型格式 (.mlmodel)。 例如,如果您的模型是使⽤Caffe 来创建的,您可以将 Caffe 模型 (.caffemodel) 传递给coremltools.converters.caffe.convert ⽅法。
import coremltools
coreml_model = coremltools.converters.caffe.convert('my_caffe_model.caffemodel')
然后将结果保存为 Core ML 模型格式。
coremltools.utils.save_spec(coreml_model, 'my_model.mlmodel')
根据您模型的不同,您可能会需要更新输入、输出以及相关的参数标签,或者您还可能会需要声明图片名称、类型以及格式。转换⼯具内置更详细的文档,因为可用的选项因工具而异。更详细的Core ML Tools参考:
https://apple.github.io/coremltools/
或者,还可以编写自定义的转换工具
如果您需要转换的格式不在表 1 当中,那么您可以创建自己的转换工具。
编写自定义的转换工具,包括了将模型的输入、输出和架构表示转换为 Core ML 模型格式。 您可以通过将每一层模型架构,以及层之间的连接关系进⾏定义,来实现这个操作。您可以通 过 Core ML Tools 所提供的转换⼯工具作为参考;它们演⽰了如何将各种第三⽅工具创建的模型类型,转换为 Core ML 模型格式。
注意
Core ML 模型格式由一系列 Protocol Buffer文件所定义,具体信息请参见 Core ML Model Specification。