将UIImage转换为适用于Keras模型的MLMultiArray

Pau*_*Lim 3 xcode uiimage ios keras coreml

在Python中,我使用keras训练了一个图像分类模型,以接收作为[224,224,3]数组的输入并输出预测(1或0).当我加载保存模型并将其加载到xcode时,它声明输入必须是MLMultiArray格式.

有没有办法让我将UIImage转换为MLMultiArray格式?或者有没有办法让我改变我的keras模型接受CVPixelBuffer类型对象作为输入.

Mat*_*ans 10

在Core ML转换脚本中,您可以提供参数image_input_names='data'where data输入名称.

现在Core ML将此输入视为image(CVPixelBuffer)而不是多数组.

  • 一旦您将模型配置为接受图像,您就不需要重新格式化图像并手动将它们转换为CVPixelBuffer - 新的Vision框架[为您做到](/sf/ask/3108051901/ 957768). (2认同)

小智 5

将caffe模型转换为时MLModel,您需要添加以下行:

image_input_names = 'data'
Run Code Online (Sandbox Code Playgroud)

以我自己的传输脚本为例,该脚本应如下所示:

import coremltools
coreml_model = coremltools.converters.caffe.convert(('gender_net.caffemodel', 
'deploy_gender.prototxt'),
image_input_names = 'data',
class_labels = 'genderLabel.txt')
coreml_model.save('GenderMLModel.mlmodel')
Run Code Online (Sandbox Code Playgroud)

然后您MLModel的输入数据将CVPixelBufferRef代替MLMultiArray。转移UIImageCVPixelBufferRef将是一件容易的事。