CoreML输出类型

问题描述 投票:0回答:1

是否可以更改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类型,我该如何更改它?

python keras coreml
1个回答
0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.