这里写自定义目录标题
MLCore 端上推理全流程
1. 问题描述
目前,我们在做一项端上的增强项目,需要用到相关平台的推理框架。现在有一个这样的问题:存在已有的onnx模型,可否转化成mlmodel模型,以供iOS端上使用。听上去挺简单的,安排☑️。
对于端上推理框架的套路如下几点:
- 如何转化模型
- 如何转化模型输入
- 如何推理
- 如何转化模型输出
在实际生产中,我们最难做的就是如何转化模型输入,所以,只要能做到模型输入的转化,我们即可完成任务。当然,后面还有需要需要注意的。
2. 如何转化模型
我们参考coremltools官网相关api。安装
sudo pip3 install coremltools==5.0b2
相关转化代码
import coremltools
import coremltools.proto.FeatureTypes_pb2 as ft
## onnx模型转换为mlmodel模型
mlmodel = coremltools.converters.onnx.convert(model=‘xxx’)
## 设置描述,作者,版本号
mlmodel.description = ‘xxx’
mlmodel.author = ‘xxx’
mlmodel.version = ‘xxx’
## 保存模型
mlmodel.save(‘xxx')
## 可处理输入和输出,将输出和输出转化为Image输入
spec = mlmodel.get_spec()
input_ = spec.description.input[0]
## ft.ImageFeatureType.BGR or ft.ImageFeatureType.RGB
input.type.imageType.colorSpace = ft.ImageFeatureType.GRAYSCALE
input.type.imageType.width = xxx
input.type.imageType.height = xxx
## 将新生成的配置保存到模型中
coremltools.utils.save_spec(spec, mlmodel)
以上代码的注释也解释清楚了。这里需要明确的问题是:
- 转换的模型路径。
- 转换的模型输入,类似指定为iOS的CVPixelBufferRef,否则&#x