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

问题描述 投票:3回答:2

在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我尝试加载,它总是抛出上面的例外。我在Mojave(10.14)上运行Swift 4.2。

有没有人尝试使用CoreImage和CoreML?

swift core-graphics core-image coreml
2个回答
1
投票

我在Mac OS 10.14上遇到这个错误 - 在iOS 12上没有错误的模型和早期版本的Mac OS - 10.13上工作正常。最初我认为这与浮点量化有关,但我已尝试在非量化浮点数32模型和不同设备上进行此操作,并将其用于以下模型:

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

我不确定这是否只是处理的一些内部异常 - 在AND上,我得到一个稍微不同的错误;

[Espresso:handle_ex_] exception=<private>

我开始认为这是无害的?


0
投票

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

WatchKit Extension [7896:536979] [espresso] [Espresso :: handle_ex_]异常=不支持的引擎类型

当我使用文本输入控制器时,我收到此消息。特别是presentTextInputController

enter image description here

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

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

没有办法禁用Scribble输入来实际测试这个理论。默认情况下启用听写和Scribble。你只能禁用emoji和/或animatedEmoji。但很明显,这就是正在发生的事情。

© www.soinside.com 2019 - 2024. All rights reserved.