CoreMLTools转换的Keras模型在VNCoreMLTransform失败

时间:2017-07-29 18:12:22

标签: ios keras coreml apple-vision

因为我正在学习Apple的Vision和CoreML框架,但却陷入了如何使用我自己的重新训练模型的困境。我尝试使用基于this tutorial的Keras训练VG16模型。除了一些Keras版本的警告外,一切看起来都不错。然后我尝试使用以下代码

将结果模型转换为CoreMLTools
coremlModel = coremltools.converters.keras.convert(
    kmodel,
    input_names = 'image',
    image_input_names = 'image',
    output_names = 'classLabelProbs',
    class_labels = ['cats', 'dogs'],
)

在转换过程中,它给了我一些版本兼容的警告但是否则成功了:

WARNING:root:Keras version 2.0.6 detected. Last version known to be fully compatible of Keras is 2.0.4 .
WARNING:root:TensorFlow version 1.2.1 detected. Last version known to be fully compatible is 1.1.1 .

所以我将这个模型加载到Apple的Vision + ML示例代码中,但每次我尝试对图像进行分类时都会失败并出现错误

Vision+ML Example[2090:2012481] Error: The VNCoreMLTransform request failed
Vision+ML Example[2090:2012481] Didn't get VNClassificationObservations 
Error Domain=com.apple.vis Code=3 "The VNCoreMLTransform request failed" UserInfo={NSLocalizedDescription=The VNCoreMLTransform request failed, NSUnderlyingError=0x1c025d130 {Error Domain=com.apple.CoreML Code=0 "Dimensions of layer 'classLabelProbs' is not the same size as the number of class labels." UserInfo={NSLocalizedDescription=Dimensions of layer 'classLabelProbs' is not the same size as the number of class labels.}}}

我猜这是因为预训练的VGG16模型已经有1000个类别,所以我尝试了1000个类别和1000 + 2(猫和狗)类别,但仍然遇到了同样的问题。

我错过了什么吗?我非常感谢任何线索和帮助。

0 个答案:

没有答案