簡體   English   中英

如何與擴展共享CoreML模型?

[英]How to share CoreML model with extension?

我正在與應用程序擴展共享CoreML模型。 Xcode為模型生成快速代碼。 為了在擴展中使用該代碼,我還必須在應用程序擴展中包括相同的模型。 有沒有一種方法可以在應用程序中僅包含一次模型,並在應用程序和擴展程序中同時使用?

您必須在項目中創建一個共享框架,該共享框架也包含在應用程序和擴展中。 將模型放在框架的資源文件夾中,然后可以在框架的捆綁包上創建模型的路徑或url。

編輯:如果將生成的模型類也放置在框架中,則生成的模型應自動找到模型數據。 它從類的捆綁包創建模型url(請參閱生成的init方法):

init(contentsOf url: URL) throws {
    self.model = try MLModel(contentsOf: url)
}
convenience override init() {
    let bundle = Bundle(for: MyModel.self)
    let assetPath = bundle.url(forResource: "MyModel", withExtension:"mlmodelc")
    try! self.init(contentsOf: assetPath!)
}

對於框架中的類, Bundle(for: MarsHabitatPricer.self)是框架的捆綁。 您的框架僅需要導出模型的類,因此您可以在應用程序和擴展中使用它。

還要注意,使用同樣生成的init(contentsOf:) ,您可以從任何喜歡的人中加載模型。

暫無
暫無

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

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