簡體   English   中英

初始化CoreML模型時崩潰:Error Domain = com.apple.CoreML Code = 0“聲明網絡時出錯。”

[英]Crash when initializing CoreML model: Error Domain=com.apple.CoreML Code=0 “Error in declaring network.”

我在App Store上有一個應用程序,我從Crashlytics獲取錯誤日志。 在我的項目中初始化CoreML模型時,會出現用戶獲得的最常見錯誤之一(以及難以重現的錯誤)。 以下是我初始化模型的方法:

class VisionManager: NSObject {
  /// Prediction model
  private static let model = MobileNet()

  ...

  override init() {
    super.init()

    guard let visionModel = try? VNCoreMLModel(for: VisionManager.model.model) else {
      // this case should never happen as we know for sure that the model we are using is an image classification model
      fatalError("The CoreML model being used is not compatible with the Vision framework.")
    }

    ...
  }

...
}

如Crashlytics所見,錯誤如下:

致命錯誤:'試試!' 表達式意外地引發了錯誤:錯誤Domain = com.apple.CoreML Code = 0“聲明網絡時出錯。” UserInfo = {NSLocalizedDescription =聲明網絡時出錯。}:file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-900.0.65.2/src/swift/stdlib/public/core/ErrorType.swift,第181行

堆棧跟蹤顯示執行guard塊時拋出錯誤。 實際上,它更深入並且表明在調用初始化程序時錯誤被拋入頂部的靜態初始化中。 初始化程序與整個MobileNet.swift類一起自動生成,如下所示:

init(contentsOf url: URL) throws {
  self.model = try MLModel(contentsOf: url)
}

/// Construct a model that automatically loads the model from the app's bundle
convenience init() {
  let bundle = Bundle(for: MobileNet.self)
  let assetPath = bundle.url(forResource: "MobileNet", withExtension:"mlmodelc")
  try! self.init(contentsOf: assetPath!)
}

很明顯,調用init(contentsOf url: URL)方法會拋出錯誤。 但是,由於這是一個生成的文件,我相信我無法解決這個錯誤。

一種可能性是編譯的.mlmodelc文件不會以某種方式復制到包中,並且當嘗試使用該URL初始化MobileNet對象時,我們會收到未被捕獲的錯誤。 這甚至可能嗎?

非常感謝有關此問題的任何想法或指示。

很明顯,調用init(contentsOf url:URL)方法會拋出錯誤。 但是,由於這是一個生成的文件,我相信我無法解決這個錯誤。

僅供參考,您可以將生成的文件復制到新文件中,然后使用它來初始化模型(只需重命名新文件中的類)。 然后,嘗試在新文件中更改此行:

let bundle = Bundle(for: MobileNet.self)

至:

let bundle = Bundle.main

我不確定這是否能解決您的特定問題,但是當我將生成的文件移動到Cocoapod時,它確實適用於我

最好在Xcode的輸出面板頂部讀取錯誤。 應該有一個像這樣的錯誤來顯示實際的錯誤:“Core ML自定義神經網絡層需要一個名為'scaling'的實現,這在全局命名空間中找不到。

在我的情況下,我在我使用的模型中有一個不受支持的層,所以我需要編寫MLCustomLayer。 https://developer.apple.com/documentation/coreml/core_ml_api/creating_a_custom_layer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM