Ошибка использования модели CoreML для классификации изображения
Я пытаюсь использовать инструменты CoreML для преобразования модели Keras в coreml, и у меня возникла ошибка в прогнозировании. Сначала я преобразовал модель:
coreml_model = coremltools.converters.keras.convert(
model,
input_names='stampImage', # Inform CoreML the input name
image_input_names = 'stampImage', # Inform CoreML the input for images
output_names='prediction',
class_labels = class_labels, # From labels_dict
predicted_feature_name='predicted_feature_name',
is_bgr=True)
coreml_model.save('./trained_models_data/stamps' + version + '.mlmodel')
Преобразование работает нормально. Затем я загрузил модель:
model = coremltools.models.MLModel('./trained_models_data/stamps' + version + '.mlmodel')
И изображение:
from PIL import Image
image = Image.open('C1243_LND_899FA3F6-B703-4724-9701-F11DAD7CEDFE.jpg')
Но когда я попытался предсказать:
model.predict({'stampImage': image})
Я получил ошибку:
Error: value type not convertible:
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=714x714 at 0x1127425A8>
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-21-82fd85392a7f> in <module>()
----> 1 model.predict({'stampImage': image})
/anaconda/envs/coremltools_py2/lib/python2.7/site-packages/coremltools/models/model.pyc in predict(self, data, **kwargs)
236 """
237 if self.__proxy__:
--> 238 return self.__proxy__.predict(data)
239 else:
240 if _sys.platform != 'darwin' or float('.'.join(_platform.mac_ver()[0].split('.')[:2])) < 10.13:
RuntimeError: value type not convertible
Я пытался выполнить шаги из сеанса "Core ML in deep" в WWDC... Кто-нибудь знает, что не так?
1 ответ
Вы должны загрузить свою конвертированную модель с CoreML
на стороне iOS. За python
используйте модель перед конвертацией.