[英]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.