CICoreMLModelFilter抛出“引擎类型不受支持”

时间:2018-09-30 09:51:52

标签: swift core-graphics core-image coreml

CoreImage中有一个新的但尚未记录的CICoreMLModelFilter。它带有两个参数:

  

inputImage -用作输入图像的图像。对于也使用背景图片的滤镜,这就是前景图片。

     

inputModel -用于在图像上施加效果的CoreML模型。

这个想法非常简单-拍摄图像,应用样式转换并吐出风格化的图像。

因此我将CoreML模型加载到测试应用程序中,并试图将此模型作为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,它总是抛出上述异常。我正在Mojave(10.14)上运行Swift 4.2。

有人尝试玩CoreImage和CoreML吗?

2 个答案:

答案 0 :(得分:0)

我在Mac OS 10.14上遇到此错误-在适用于iOS 12 sans错误的模型上以及在较早版本的Mac OS-10.13上都遇到问题。最初,我认为这与浮点量化有关,但是我在非量化的float 32模型和不同设备上进行了尝试,并将其用于以下模型:

  • 输出/运行推断很好
  • 使用标准的CoreML / Vision API
  • 在集成或谨慎的GPU上运行
  • 在iMac Pro AMD GPU上
  • 在MBP Nvidia GPU上

我不确定这是否只是内部处理的异常-在AMD上,我得到一个略有不同的错误;

[Espresso:handle_ex_] exception=<private>

我开始认为它是无害的吗?

答案 1 :(得分:0)

添加了一个有趣的答案/发现,因为错误消息是相同的,但是我没有使用与CoreML API相关的任何内容(或者我认为如此)。

  

WatchKit扩展[7896:536979] [espresso] [Espresso :: handle_ex_] exception =不支持的引擎类型

我在使用文本输入控制器时收到此消息。具体是presentTextInputController

enter image description here

我相信这只是因为CoreML引擎正在模拟器上运行而出现。 至少对于text input controller,这是此消息的明显原因。

我们免费获得的文本输入控制器,包括Scribble文本输入。显然,它是谨慎地搭载在相同的CoreML引擎上,否则它将无法识别涂鸦。

没有任何方法可以禁用涂鸦输入来实际测试该理论。默认情况下,听写和涂抹功能处于启用状态。您只能禁用emoji和/或animatedEmoji。但这很明显是事实。