我已经使用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
。
我应该解决什么才能使功能值按预期增加一倍?