未找到金属设备/初始化CoreML模型时声明网络错误

时间:2018-06-23 22:57:13

标签: ios swift metal coreml

当尝试使用Apple的任何CoreML教程(例如this one)时,代码都将模型初始化为:

let model = try VNCoreMLModel(for: MobileNet().model)

在该段的最后一行,我在模型的自动生成的代码(MobileNet.swift)中收到以下错误:

let bundle = Bundle.main
let assetPath = bundle.url(forResource: "MobileNet", withExtension:"mlmodelc")
try! self.init(contentsOf: assetPath!)

错误:Thread 5: Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=com.apple.CoreML Code=0 "Error in declaring network." UserInfo={NSLocalizedDescription=Error in declaring network.}

此外,我在控制台中获得以下输出:

2018-06-23 15:46:27.216514-0700 Vision+ML Example[375:20287] [espresso] [Espresso::handle_ex_] exception=Metal device not found.
2018-06-23 15:46:27.328956-0700 Vision+ML Example[375:20287] [espresso] [Espresso::handle_ex_plan] exception=Error creating mps kernel
2018-06-23 15:46:27.329321-0700 Vision+ML Example[375:20287] [coreml] Error in adding network -1.
2018-06-23 15:46:27.347582-0700 Vision+ML Example[375:20287] [coreml] MLModelAsset: load failed with error Error Domain=com.apple.CoreML Code=0 "Error in declaring network." UserInfo={NSLocalizedDescription=Error in declaring network.}
2018-06-23 15:46:27.347759-0700 Vision+ML Example[375:20287] [coreml] MLModelAsset: modelWithError: load failed with error Error Domain=com.apple.CoreML Code=0 "Error in declaring network." UserInfo={NSLocalizedDescription=Error in declaring network.}

...然后应用程序崩溃。

这是怎么回事?我只是从Apple的开发站点运行一个教程,仅此而已! (我正在iPhone 5s,iOS 12 beta 2上进行测试,并在运行macOS 10.14 beta 2和Xcode 10.0 beta 2的MacBook Air上进行构建)

1 个答案:

答案 0 :(得分:3)

这似乎是一个错误。从表面上看,在所有支持iOS 11的设备(包括iPhone 5s)上都支持Vision和CoreML框架。我希望当人们尝试在不支持MetalPerformanceShaders(例如iPhone 5s)的设备上加载VNCoreMLModel时,CoreML会退回到BNNS或其他代码路径。它至少应该产生一条错误消息,明确指出不支持此操作,因为似乎没有功能键或免费功能可以让您确定不支持此功能。

我建议您使用以上所有详细信息file a bug report