一、概述
如果您的模型是被支持的第三方机器学习框架创建和训练的,您可以通过Core ML 的工具或者第三方的转换工具,比如MXNet Converter或者TensorFlow converter,使用这些工具来转换您的模型为Core ML格式。否则,您需要创建您自己的转换工具。
二、使用Core ML工具
Core ML Tools是一个Python包,它可以将不同类型的Model转换为Core ML格式的模型。下表列出了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转换器来转换您的模型。调用转换器的转换方法并保存转换完成的Model保存为Core ML模型格式(.mlmodel)。
比如,如果您的模型是使用Caffe创建的,那么将Caffe model (.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更多的信息,请参阅Package Documentation。
四、编写自己的转换工具
当您需要转换一个不包含在上边列表中的支持的格式类型时,可以创建自己的转换工具。
编写您自己的转换工具涉及到将您的模型的输入、输出和体系结构的表示转换为Core ML模型格式。您可以通过定义模型架构的每一层及它与其他层的连接来实现这一点。以Core ML Tools提供的转换工具为例,他们演示了如何将从第三方框架创建的各种模型类型转换为Core ML模型格式。
注:
Core ML 模型类型是由一组协议缓冲区文件定义,并在Core ML Model Specification中有详细描述。