将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版权所有,允许转载,但转载请注明出处和原文链接: http://45.76.225.121/article/278