如何为视觉框架创建 MLFeatureProvider class

How to create MLFeatureProvider class for vision framework

我是 CoreML 的新手,在将 MLMultiArray(名为 modelInput)转换为所需类型 MLFeatureProvider 以在使用 [=16 时作为参数提供时遇到困难=].错误内容为:

Argument type 'MLMultiArray' does not conform to expected type 'MLFeatureProvider'

根据我的阅读,我相信我必须创建一个 class 子 class 是 'MLFeatureProvider' 允许我将 modelInput 初始化为 'MLFeatureProvider'。但我对如何执行此操作感到困惑。

这些文件是否按照 this article 的建议由 Xcode 生成?还是我必须自己创建这些?

欢迎任何意见。

//function inside of Predictor class

func makePrediction(){

let model: MLModel = configureModel(url: url)

let poseMultiArrays = [MLMultiArray] = getPoseMultiArrays()


let modelInput = MLMultiArray(concatenating: poseMultiArrays, axis: 0, dataType: .float)


//Perform prediction

var prediction: MLFeatureProvider?

do{
   
   prediction = try? model.prediction(from: modelInput) //< The error occurs here

}catch{print(error)}

}

您当然可以制作一个 MLFeatureProvider 子class,但您不需要。

首先,您的代码片段没有使用 Vision 框架,而是使用了 Core ML。 Xcode 自动为您生成一个 class 来创建 MLFeatureProvider。使用 class 而不是直接使用 MLModel 是个好主意,因为自动生成的 class 对您隐藏了所有样板文件。

如果您仍想创建自己的 MLFeatureProvider,最简单的解决方案是首先创建一个包含 MLMultiArray 的 MLFeatureValue 对象,然后将其传递给 MLDictionaryFeatureProvider。