初始化 CoreML 模型时,金属设备未 found/Error 声明网络
Metal device not found/Error in declaring network when initializing CoreML model
当尝试使用 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 上进行测试,并在 MacBook Air 运行 macOS 10.14 beta 2 和 Xcode 10.0 beta 2 上进行构建)
这似乎是一个错误。从表面上看,所有支持 iOS 11(包括 iPhone 5s)的设备都支持 Vision 和 CoreML 框架。当有人试图在不支持 MetalPerformanceShaders(如 iPhone 5s)的设备上加载 VNCoreMLModel
时,我希望 CoreML 回退到 BNNS 或其他代码路径。它至少应该产生一条错误消息,明确指出这是不受支持的,因为似乎没有功能键或免费功能可以让您确定这不受支持。
我鼓励您 file a bug report 了解以上所有详细信息。
当尝试使用 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 上进行测试,并在 MacBook Air 运行 macOS 10.14 beta 2 和 Xcode 10.0 beta 2 上进行构建)
这似乎是一个错误。从表面上看,所有支持 iOS 11(包括 iPhone 5s)的设备都支持 Vision 和 CoreML 框架。当有人试图在不支持 MetalPerformanceShaders(如 iPhone 5s)的设备上加载 VNCoreMLModel
时,我希望 CoreML 回退到 BNNS 或其他代码路径。它至少应该产生一条错误消息,明确指出这是不受支持的,因为似乎没有功能键或免费功能可以让您确定这不受支持。
我鼓励您 file a bug report 了解以上所有详细信息。