CoreML输出类型

时间:2017-09-07 10:15:52

标签: python keras coreml

是否可以更改CoreML模型的输出类型?我的模型将图像作为输入和图像作为输出,但当我将我的Keras模型转换为ml模型时,我得到:

coreml_model = coremltools.converters.keras.convert('/Users/user/Desktop/model.h5',input_names='input_img',image_input_names='input_img',output_names='image')
coreml_model.save('/Users/user/Desktop/model.mlmodel')

enter image description here

输出是MultiArray类型,但我想要一个Image类型,我该如何更改?

1 个答案:

答案 0 :(得分:0)

是的,有可能。但是,您之后需要手动更改转换后的Core ML模型,因为自{2.1版开始,coremltools对此不提供任何转换选项。

简而言之,将模型转换为Core ML格式后,您需要执行以下操作。这些应该在Python端通过调用coremltools的较低级API来完成。

  1. 使用coremltools
  2. 将转换后的CoreML模型加载到Python中
  3. 在链的末尾,在原始模型的输出层之后,添加一个新的ActivationLinear层。您还可以使用此层执行线性变换,例如将范围从0..1转换为0..255和/或添加偏差。
  4. 通过设置新图层的type属性,将该新图层配置为图像输出图层
  5. 将更新后的模型保存到新的Core ML模型中。
  6. 重新加载并使用训练数据集中的样本进行测试,以进行健全性检查。

要使第5步正常工作,您需要在Mac上运行Python脚本,因为它使用本机Core ML库来运行模型。

有关详细信息,您可以阅读我在getting Core ML to produce images as output上的帖子。