【问题标题】:CoreML output typeCoreML 输出类型
【发布时间】:2018-02-16 00:59:33
【问题描述】:

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

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')

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

【问题讨论】:

  • 我认为目前 Core ML 不支持图像作为可能的输出类型(尽管这在最新的 beta 版本中可能已经改变)。我发布了一些可以将 MLMultiArray 转换回图像的代码:github.com/hollance/CoreMLHelpers(尽管您的图像看起来是灰度的,所以您必须稍微调整一下代码,因为它目前只支持 RGB 图像)。跨度>
  • 谢谢,我去看看!希望 CoreML 在下一个版本中支持图像
  • 我刚刚推送了一个也可以处理灰度图像的更新。
  • 顺便说一下,还可以查看 Apple Dev Forums 上的这个帖子,它展示了如何修改 mlmodel 以便输出图像而不是多数组:forums.developer.apple.com/thread/81571
  • @NathanHubens 我正在使用 python 开发一个 .mlmodel 文件我正在使用线性回归 我想要什么,我想使用 xls 文件(或它的原始数据)作为 .mlmodel 的输入并想要要在 py 文件中使用此数据,它应该返回一个数组,即(1)如何传递 xlx 或 csv 或其原始数据作为 .mlmodel 中的输入(2)如何在 py 文件中使用此输入数据并进行计算(3) mlmodel 应该返回数组我如何实现这种类型的 mlmodel?

标签: python keras coreml


【解决方案1】:

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

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

  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的帖子。

【讨论】:

    猜你喜欢
    • 2017-12-10
    • 2021-04-16
    • 2021-01-06
    • 2019-02-14
    • 2020-06-26
    • 2019-06-14
    • 2019-08-30
    • 2019-02-09
    • 2020-10-09
    相关资源
    最近更新 更多