将TensorFlow应用部署到iPhone上,使用GPU和CoreML加速,最新版的TensorFlowLiteSwift将Metal加速和CoreML从TensorFlowLiteSwift中拆出来了,变成了两个子模块,因此要引入需要单独引入
之前0.0.1-nightly
的TensorFlowLiteSwift
是包含Metal
和CoreML
的,就在某个版本开始,我的项目突然跑不了了,告诉我找不到CoreMLDelegate
了,折腾了一番之后,最后去翻官网文档,发现文档偷偷改了,最新的方式是引入子模块
target 'YourProjectName'
# pod 'TensorFlowLiteSwift'
pod 'TensorFlowLiteSwift/CoreML', '~> 0.0.1-nightly'
OR
target 'YourProjectName'
# pod 'TensorFlowLiteSwift'
pod 'TensorFlowLiteSwift', '~> 0.0.1-nightly', :subspecs => ['CoreML']
改完之后,pod update
,pod cache clean TensorFlowLiteSwift
,然后运行,又告诉我找不到 MetalDelegate
,再去翻文档,发现也被拆出来了,所以,要同时使用MetalDelegate
和CoreMLDelegate
需要将两个子模块分别引入。
target 'YourProjectName'
# pod 'TensorFlowLiteSwift'
pod 'TensorFlowLiteSwift', '~> 0.0.1-nightly', :subspecs => ['CoreML', 'Metal']
改完之后,pod update
,pod cache clean TensorFlowLiteSwift
,终于,能运行了
再贴一下使用代码
var delegate = CoreMLDelegate()
if delegate == nil {
delegate = MetalDelegate() // Add Metal delegate options if necessary.
}
let interpreter = try Interpreter(modelPath: modelPath,
delegates: [delegate!])
上述代码,会先看是否支持CoreML代理加速,如果不支持,直接使用GPU代理加速。
viencoding.com版权所有,允许转载,但转载请注明出处和原文链接: https://viencoding.com/article/278