CICoreMLModelFilter выбрасывает «Неподдерживаемый тип двигателя» - PullRequest
0 голосов
/ 30 сентября 2018

В CoreImage есть этот новый и все еще недокументированный CICoreMLModelFilter.Он принимает два параметра:

inputImage - изображение для использования в качестве входного изображения.Для фильтров, которые также используют фоновое изображение, это изображение на переднем плане.

inputModel - модель CoreML, которая будет использоваться для применения эффекта к изображению.

Идея довольно проста - взять изображение, применить передачу стиля и выложить стилизованное изображение.

Поэтому я загрузил CoreML Model в свое тестовое приложение и попытался передать эту модель как ключ inputModel:

guard
    let mlFilter = CIFilter(name: "CICoreMLModelFilter")
else {
    return nil
}

let model = StarryStyle().model

mlFilter.setValue(workingImage, forKey: "inputImage")
mlFilter.setValue(model, forKey: "inputModel")

guard
    let mlResult = mlFilter.outputImage
else {
    return nil
}

Всякий раз, когда я пытаюсь запустить этот очень простой код, я получаю следующее исключение:

[Espresso::handle_ex_] exception=Unsupported engine type

Независимо от MLModel, который я пытаюсь загрузить, он всегда выдает исключение выше.Я использую Swift 4.2 на Mojave (10.14).

Кто-нибудь пробовал играть с CoreImage и CoreML?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Добавление интересного ответа / открытия, потому что сообщение об ошибке то же самое, но я не использую ничего, связанного с CoreML API (или так я думал).

Расширение WatchKit [7896: 536979] [espresso] [Espresso :: handle_ex_] exception = Неподдерживаемый тип движка

Я получаю это сообщение, когда использую контроллер ввода текста.В частности, presentTextInputController.

enter image description here

Я считаю, что это просто появляется, потому что на симуляторе работает движок CoreML. По крайней мере, в случае text input controller это очевидная причина этого сообщения.

Контроллер ввода текста, который мы получаем бесплатно, включает в себя ввод текста Scribble.Он явно скрытно работает на том же движке CoreML, иначе не сможет распознать каракули.

Нет способа отключить ввод Scribble, чтобы проверить эту теорию.Диктовка и Scribble включены по умолчанию.Вы можете отключить только emoji и / или animatedEmoji.Но совершенно очевидно, что это то, что происходит.

0 голосов
/ 19 октября 2018

Я сталкиваюсь с этой ошибкой в ​​Mac OS 10.14 - на модели, которая прекрасно работает на iOS 12 без ошибок, и на более ранних версиях Mac OS - 10.13.Первоначально я думал, что это связано с квантованием с плавающей запятой, но я попробовал это на не квантованных моделях с плавающей запятой 32 и на разных устройствах, и получил его для моделей, которые:

  • нормально вывод / запуск отлично
  • Использование стандартных API CoreML / Vision
  • Запуск на интегрированных или дискретных графических процессорах
  • на графических процессорах iMac Pro AMD
  • на графических процессорах MBP Nvidia

Я не уверен, что это только какое-то внутреннее исключение, которое обрабатывается - на AMD я получаю немного другую ошибку;

[Espresso:handle_ex_] exception=<private>

Я начинаю думать, что это безобидно?

...