【问题标题】:Download Custom CoreML Model and Load for Usage [Swift]下载自定义 CoreML 模型并加载以供使用 [Swift]
【发布时间】:2019-02-20 04:52:06
【问题描述】:

我正在创建一个基于神经网络的应用程序,CoreML 模型大小约为 150MB。所以,很明显,我不能在应用程序中发布它。

为了克服这个问题,我知道了这个article,提到你可以在设备上下载和编译CoreML模型。

我做了并在我的设备上下载,但问题是我无法像原始模型一样进行预测。就像,原始模型将UIImage 作为输入,但MLModelMLFeatureProvider,任何人都可以解决如何对我的模型进行类型转换并将其用作原始模型?

do {
    let compiledUrl = try MLModel.compileModel(at: modelUrl)
    let model = try MLModel(contentsOf: compiledUrl)
    debugPrint("Model compiled \(model.modelDescription)")
    //model.prediction(from: MLFeatureProvider) //Problem
    //It should be like this
    //guard let prediction = try? model.prediction(image: pixelBuffer!) else {
    //    return
    //}
} catch {
    debugPrint("Error while compiling \(error.localizedDescription)")
}

【问题讨论】:

  • 嗨,我也在研究同样的概念。我想知道你是如何制作 CoreML 模型的。我已经用 Python Turicreate 做到了。
  • CoreModel 由我的团队成员创建!我只是在我的项目中使用它! @NeerajKumar
  • 您可以使用 CoreML2 压缩您的模型。这是链接appcoda.com/coreml2@Sohil

标签: swift machine-learning coreml mlmodel


【解决方案1】:

当您将 mlmodel 文件添加到项目中时,Xcode 会自动为您生成一个源文件。这就是为什么你之前可以写model.prediction(image: ...)

如果您在运行时编译您的 mlmodel,那么您没有那个特殊的源文件,您需要自己调用 MLModel API。

这里最简单的解决方案是将 mlmodel 文件添加到您的项目中,将自动生成的源文件复制粘贴到新的源文件中,然后将其与您在运行时编译的 mlmodel 一起使用。 (复制生成的源代码后,您可以再次从 Xcode 项目中删除 mlmodel。)

另外,如果您的模型是 150MB,您可能需要考虑通过选择更适合移动设备的架构来制作它的小版本。 (不是 VGG16,您目前正在使用它。)

【讨论】:

    【解决方案2】:
        guard let raterOutput = try? regressionModel.prediction(from: RegressorFeatureProviderInput(
            feature1: 3.4,
            feature2: 4.5))
            else {return 0}
        return Double(truncating: NSNumber(value:RegressorFeatureProviderOutput.init(features: raterOutput).isSaved))
    

    补充@Matthjis Hollemans 所说的

    【讨论】:

      【解决方案3】:
          let url = try! MLModel.compileModel(at: URL(fileURLWithPath: model))
          visionModel = try! VNCoreMLModel(for: MLModel(contentsOf: url))
      

      【讨论】:

      • 虽然这段代码可能会回答这个问题,但包含对它的作用的解释通常会有所帮助。否则您的答案可能会被删除。
      猜你喜欢
      • 2019-11-15
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 2021-08-15
      • 1970-01-01
      • 2023-03-14
      相关资源
      最近更新 更多