在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?
我在Mac OS 10.14上遇到这个错误 - 在iOS 12上没有错误的模型和早期版本的Mac OS - 10.13上工作正常。最初我认为这与浮点量化有关,但我已尝试在非量化浮点数32模型和不同设备上进行此操作,并将其用于以下模型:
我不确定这是否只是处理的一些内部异常 - 在AND上,我得到一个稍微不同的错误;
[Espresso:handle_ex_] exception=<private>
我开始认为这是无害的?
添加一个有趣的答案/发现,因为错误消息是相同的,但我没有使用任何与CoreML
API相关的东西(或者我认为)。
WatchKit Extension [7896:536979] [espresso] [Espresso :: handle_ex_]异常=不支持的引擎类型
当我使用文本输入控制器时,我收到此消息。特别是presentTextInputController
。
我相信这只是出现,因为CoreML引擎正在模拟器上运行。至少在text input controller
的情况下,这是这个消息的明显原因。
文本输入控制器是我们免费获得的控制器,包括Scribble文本输入。它显然谨慎地搭载在相同的CoreML引擎上,否则它将无法识别涂鸦。
没有办法禁用Scribble输入来实际测试这个理论。默认情况下启用听写和Scribble。你只能禁用emoji
和/或animatedEmoji
。但很明显,这就是正在发生的事情。