CoreML 模型:将 imageType 模型输入转换为 multiArray
CoreML model: Convert imageType model input to multiArray
我使用 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")
我使用 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")