在coreimage中有一个新的和未记录的CICoreMLModelFilter它需要两个参数:
输入图像-用作输入图像的图像。对于也使用背景图像的过滤器,这是前景图像。
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吗?

最佳答案

我在Mac OS 10.14上遇到了这个错误-在iOS 12 SAN错误和较早版本的Mac OS 10.13上运行良好的模型上。最初我认为这与浮点量化有关,但我在非量化浮点32模型和不同的设备上尝试了这一点,并得到以下模型的结果:
输出/运行推理良好
使用标准coreml/vision API
在集成或谨慎的GPU上运行
在iMac Pro和GPU上
在MBP Nvidia GPU上
我不确定这是否只是处理了一些内部异常——在AMD上,我得到了一个稍微不同的错误;
[Espresso:handle_ex_] exception=<private>
我开始觉得这是无害的?

10-08 17:48