Преобразование модели Caffe MemNet в coreML - PullRequest
1 голос
/ 02 мая 2019

Я преобразовал эту модель Caffee в модель coreML с помощью coremltools.Эта модель предсказывает визуальную запоминаемость изображения.

Я использовал команду преобразования:

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

Double 1 x 1 x 1 x 1 x 1массив

, а не MLFeatureTypeDouble, как ожидалось.

Что я должен исправить, чтобы получить значение функции в двойных числах, как и ожидалось?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...