我有一个模型,它将图像作为输入,并在keras中进行过训练 . 通过coremltools转换后,我看到模型需要图像作为输入(在xcode中我看到,输入:(color widthxheight)) .

现在我需要将此 model1 放入coremltools管道中以与另一个 model2 (使用model1输出作为其输入)组合并运行模型 . 我使用coremltools管道来做到这一点并创建一个管道对象 .

我在保存之前将管道转换为MLModel

img_dim = (3,640,480)

input_image = [('image', datatypes.Array( *img_dim ))]

pipeline1 = Pipeline(input_image , output_features)

pipeline1.add_model(model_keras)
pipeline1.add_model(model_postprocess)

finalmodelfile='FINALMODEL.mlmodel'
finalmodel=coremltools.models.MLModel(pipeline1.spec)
finalmodel.save(finalmodelfile)

当我将FINALMODEL.mlmodel加载到xcode时,它给了我一个错误

验证器错误:管道:模型“CoreML.Specification.ModelDescription”的输入“图像”与先前由管道输入或先前模型的输出指定的类型不匹配 .

这告诉上面的管道输入是接受MLMultiArray作为输入而不是图像 .

我想使用iphone中的相机作为输入,因此想要使用Image(UIImage或CVPixelBuffer)作为输入 . 转换为MLMultiArray是一个非常慢的操作,不适合 .

So the question is, How do I input an image datatype into a pipeline object ?