ios - CoreML 模型 : Convert imageType model input to multiArray

标签 ios swift multidimensional-array coreml coremltools

我使用 PyTorch 训练了一个简单的多类分类器,我想将其转换为 CoreML 模型格式。它已转换,但有一个问题。

我已经进行了非常详尽的搜索,但最常见的问题与 mlmodel 的输入有关,只是关于如何将 mlmodel 的输入格式从 MLMultiArray 更改为 UIImage 因为它们必须处理图像.但是,如果我的模型需要一个 UIImage 作为输入,而我有多数组类型的数据,我该如何更改模型的输入以使其需要多数组数据?

转换后得到的模型输入规范:

input {
  name: "input"
  type {
    imageType {
      width: 3
      height: 150
      colorSpace: GRAYSCALE
    }
  }
}

我想要的模型输入规范:

input {
  name: "input"
  type {
      multiArrayType {
        shape: 3
        shape: 1
        shape: 150
        dataType: DOUBLE
    }
  }
}

任何帮助将不胜感激。谢谢!

最佳答案

通常当您转换模型时,您会得到一个 MLMultiArray 除非您指定您希望它是一个图像。不确定你是如何转换模型的,但你可能会说你不希望输入是图像(即不要为转换器指定 image_input_names 参数)。

如果您无法访问原始模型,您可以像这样更改 mlmodel 文件(可能有拼写错误):

import coremltools
mlmodel = coremltools.models.MLModel("YourModel.mlmodel")
spec = mlmodel._spec
spec.description.input[0].type.multiArrayType.shape.extend([3, 1, 150])
coremltools.util.save_spec(spec, "YourNewModel.mlmodel")

关于ios - CoreML 模型 : Convert imageType model input to multiArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59765376/

相关文章:

ios - UIViewController 不会转到另一个 UIViewController 吗?

ios - Strideable.distance(to : A) -> A. Stride in conformance Int64 + 124) 的协议(protocol)见证 - 此错误消息是什么意思?

java - 如何使用随机对象将随机生成的字母打印到二维数组中

ios - 如何在 uibezierpath 周围获得缓冲区

ios - 当手指沿着 View 移动时,如何跟踪 UIView 中触摸输入的 CGPoint?

ios - 我怎样才能重绘 UIView 的形状并同时给它一个阴影?

php - 使用 PHP/MySQL 的多级菜单

c# - 将字符串拆分为二维数组

php - 无法读取 POST 参数

objective-c - App 日历功能不再适用于 ios 6