如何为视觉框架创建 MLFeatureProvider 类

Posted

技术标签:

【中文标题】如何为视觉框架创建 MLFeatureProvider 类【英文标题】:How to create MLFeatureProvider class for vision framework 【发布时间】:2021-07-13 10:30:48 【问题描述】:

我是 CoreML 的新手,在使用 myMLModel.prediction(from: modelInput) 时难以将 MLMultiArray(名为 modelInput)转换为所需的类型 MLFeatureProvider 以作为参数提供。错误显示:

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

根据我的阅读,我相信我必须创建一个子类“MLFeatureProvider”的类,它允许我将modelInput 初始化为“MLFeatureProvider”。但我不知道该怎么做。

这些文件是由 Xcode 生成的,正如this article 所建议的那样吗?还是我必须自己创建这些?

感谢任何输入。

//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

catchprint(error)


【问题讨论】:

【参考方案1】:

你当然可以创建一个 MLFeatureProvider 子类,但你不需要。

首先,您的代码 sn-p 不是使用 Vision 框架,而是使用 Core ML。 Xcode 会自动为您生成一个创建 MLFeatureProvider 的类。使用该类而不是直接使用 MLModel 是个好主意,因为自动生成的类对您隐藏了所有样板。

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

【讨论】:

以上是关于如何为视觉框架创建 MLFeatureProvider 类的主要内容,如果未能解决你的问题,请参考以下文章

如何为机器人框架创建自定义 Python 代码库

ASP.NET:如何为 GridView 创建自定义分页器?

Python sklearn 逻辑回归 K-hold 交叉验证:如何为 coef_ 创建一个框架

如何为 iPhone 集成 XMPP 框架? [复制]

使用 django rest 框架,如何为现有父对象添加新的嵌套子对象

如何为 onclick 事件选择 Delphi 框架而不是其组件?