使用 Create ML 创建模型并在元数据中找到 类
Create a model using Create ML and find classes in metaData
我正在使用 Create ML 通过图像分类器项目创建 .mlmodel
文件。
创建 ML,为 2 classes 创建此文件。
将创建的ML模型文件拖入编译源后,下面的代码可以找到该文件并创建模型。
但是元数据没有显示 classes,有什么原因吗?我如何知道 mlmodel 文件中的 classes?
let error: NSError! = nil
guard let modelURL = Bundle.main.url(forResource: "ObjectDetector", withExtension: "mlmodelc") else {
return
}
do {
let model = try MLModel(contentsOf: modelURL)
let visionModel = try VNCoreMLModel(for: model)
let metaData = model.modelDescription.metadata[.creatorDefinedKey] as! [String:String]
// ERROR: It could not find metaData["classes"]
let allClasses = metaData["classes"]!.components(separatedBy: ",")
let objectRecognition = VNCoreMLRequest(model: visionModel, completionHandler: { (request, error) in
DispatchQueue.main.async(execute: {
// perform all the UI updates on the main queue
if let results = request.results {
self.drawVisionRequestResults(results)
}
})
})
self.requests = [objectRecognition]
} catch let error as NSError {
print("Model loading went wrong: \(error)")
}
请注意我没有收到“模型 class 尚未生成。”。
单击 ML 模型文件显示自动生成的 Swift 模型 class。
class 数据是 mlmodel 文件的一部分,但不在元数据中。如果需要,您可以将其添加到元数据中,但您必须为此编写一个简短的 Python 脚本。
自 iOS 14 起,MLModelDescription.classLabels
还允许您访问 class 姓名列表。
我正在使用 Create ML 通过图像分类器项目创建 .mlmodel
文件。
创建 ML,为 2 classes 创建此文件。
将创建的ML模型文件拖入编译源后,下面的代码可以找到该文件并创建模型。
但是元数据没有显示 classes,有什么原因吗?我如何知道 mlmodel 文件中的 classes?
let error: NSError! = nil
guard let modelURL = Bundle.main.url(forResource: "ObjectDetector", withExtension: "mlmodelc") else {
return
}
do {
let model = try MLModel(contentsOf: modelURL)
let visionModel = try VNCoreMLModel(for: model)
let metaData = model.modelDescription.metadata[.creatorDefinedKey] as! [String:String]
// ERROR: It could not find metaData["classes"]
let allClasses = metaData["classes"]!.components(separatedBy: ",")
let objectRecognition = VNCoreMLRequest(model: visionModel, completionHandler: { (request, error) in
DispatchQueue.main.async(execute: {
// perform all the UI updates on the main queue
if let results = request.results {
self.drawVisionRequestResults(results)
}
})
})
self.requests = [objectRecognition]
} catch let error as NSError {
print("Model loading went wrong: \(error)")
}
请注意我没有收到“模型 class 尚未生成。”。
单击 ML 模型文件显示自动生成的 Swift 模型 class。
class 数据是 mlmodel 文件的一部分,但不在元数据中。如果需要,您可以将其添加到元数据中,但您必须为此编写一个简短的 Python 脚本。
自 iOS 14 起,MLModelDescription.classLabels
还允许您访问 class 姓名列表。