Преобразование из UIImage в MLMultiArray - PullRequest
1 голос
/ 12 мая 2019

Я использую предварительно обученную mlmodel для классификации изображений. Модель принимает в качестве входных данных 3 x 224 x 224 MultiArray в качестве формата для изображения. Для моего текущего приложения я работаю с UIImage. Есть ли способ конвертировать UIImage в MLMultiArray?

Я видел некоторые ответы, касающиеся преобразования из модели Keras в модель CoreML, но моя модель уже находится в формате mlmodel и не имеет доступа к данным.

1 Ответ

1 голос
/ 13 мая 2019

Самое простое решение - изменить формат ввода в файле mlmodel. Вы можете сделать это, даже если у вас нет оригинальной модели Keras.

Выполните следующие действия в скрипте Python:

import coremltools
import coremltools.proto.FeatureTypes_pb2 as ft 

spec = coremltools.utils.load_spec("YourModel.mlmodel")

input = spec.description.input[0]
input.type.imageType.colorSpace = ft.ImageFeatureType.RGB
input.type.imageType.height = 224 
input.type.imageType.width = 224

coremltools.utils.save_spec(spec, "YourNewModel.mlmodel")

Также возможно преобразовать UIImage в MLMultiArray, но если ваша модель действительно работает с изображениями, лучше всего изменить тип ввода на изображение.

Кстати, если у вас все еще есть оригинальная модель Keras, вы можете автоматически сделать это, предоставив image_input_names="your_input" для конвертера coremltools Keras. В этом случае не нужно писать новый скрипт Python.

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