将Caffe MemNet模型转换为coreML

时间:2019-05-02 12:12:18

标签: objective-c machine-learning caffe coreml coremltools

我已经使用coremltools将这个Caffee模型转换为coreML模型。该模型可预测图像的视觉记忆力。

我使用的转换命令是:

coreml_model = coremltools.converters.caffe.convert(('memnet.caffemodel', 'deploy.prototxt', 'mean.binaryproto'), image_input_names='data')
coreml_model.save('MemNet.mlmodel')

在我的Objective-C项目中,我使用了以下代码:

 MemNet* memnet = [[MemNet alloc] init];

 VNCoreMLModel* memnetModel = [VNCoreMLModel modelForMLModel: memnet.model error:nil];

 VNCoreMLRequest* memnetRq = [[VNCoreMLRequest alloc] initWithModel: memnetModel completionHandler: (VNRequestCompletionHandler) ^(VNRequest *request, NSError *error){
    VNCoreMLFeatureValueObservation *result = ((VNCoreMLFeatureValueObservation *)request.results.firstObject);
    double prediction = result.featureValue.doubleValue;
  }];

  NSArray *a = @[memnetRq];
  NSDictionary *d = [[NSDictionary alloc] init];
  VNImageRequestHandler *handler = [[VNImageRequestHandler alloc] initWithCIImage:image options:d];
  NSError* error;
  [handler performRequests:a error:&error];

问题在于,在完成处理程序中,当我得到请求结果时,featureValue的类型为MLFeatureTypeMultiArray

  

双1 x 1 x 1 x 1 x 1阵列

,而不是预期的MLFeatureTypeDouble

我应该解决什么才能使功能值按预期增加一倍?

0 个答案:

没有答案