Модель CoreML: преобразование входных данных модели imageType в несколько массивов - PullRequest
0 голосов
/ 16 января 2020

Используя PyTorch, я обучил простой мультиклассовый классификатор и хочу преобразовать его в CoreML формат модели. Это преобразовано, но есть проблема.

Я искал достаточно исчерпывающе, но наиболее частые вопросы, касающиеся входных данных mlmodel, касаются только того, как изменить формат ввода mlmodel с MLMultiArray на UIImage , потому что они должны работать с изображениями. Но если моя модель ожидает UIImage в качестве входных данных, в то время как у меня есть данные типа нескольких массивов, как я могу изменить вход модели, чтобы она ожидала данных из нескольких массивов?

Модель ввода spe c Я получаю после преобразования:

input {
  name: "input"
  type {
    imageType {
      width: 3
      height: 150
      colorSpace: GRAYSCALE
    }
  }
}

Модель ввода spe c Я хочу иметь:

input {
  name: "input"
  type {
      multiArrayType {
        shape: 3
        shape: 1
        shape: 150
        dataType: DOUBLE
    }
  }
}

Любая помощь будет по достоинству оценена. Спасибо!

1 Ответ

2 голосов
/ 16 января 2020

Обычно, когда вы конвертируете модель, вы получаете MLMultiArray , если не указано, что вы хотите, чтобы это было изображение. Не уверен, как вы конвертировали модель, но вы, вероятно, можете сказать, что не хотите, чтобы ввод был изображением (т.е. не указывайте image_input_names аргумент для конвертера).

На случай, если вы не наденете У вас нет доступа к исходной модели, вы можете изменить файл mlmodel следующим образом (могут быть опечатки):

import coremltools
mlmodel = coremltools.models.MLModel("YourModel.mlmodel")
spec = mlmodel._spec
spec.description.input[0].type.multiArrayType.shape.extend([3, 1, 150])
coremltools.util.save_spec(spec, "YourNewModel.mlmodel")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...