我正在使用预先训练的mlmodel进行图像分类。该模型将3 x 224 x 224 MultiArray作为图像格式输入。对于当前的应用程序,我正在使用UIImage。有没有一种方法可以将UIImage转换为MLMultiArray?
我已经看到了从Keras模型转换为CoreML模型的一些答案,但是我的模型已经是mlmodel格式,无法访问数据。
答案 0 :(得分:1)
最简单的解决方案是更改mlmodel文件中输入的格式。即使您没有原始的Keras模型,也可以执行此操作。
在Python脚本中执行以下操作:
import coremltools
import coremltools.proto.FeatureTypes_pb2 as ft
spec = coremltools.utils.load_spec("YourModel.mlmodel")
input = spec.description.input[0]
input.type.imageType.colorSpace = ft.ImageFeatureType.RGB
input.type.imageType.height = 224
input.type.imageType.width = 224
coremltools.utils.save_spec(spec, "YourNewModel.mlmodel")
也可以将UIImage转换为MLMultiArray,但是如果您的模型仍然可以在图像上正常工作,则最好将输入类型更改为图像。
顺便说一句,如果您仍然拥有原始Keras模型,则可以通过向coremltools Keras转换器提供image_input_names="your_input"
来自动执行此操作。在这种情况下,无需编写新的Python脚本。