如何解决mlmodel NNClassifier的输出形状是Multiarray,VNClassificationObservation无法正常工作吗?
需要帮助部署要从GCP生成的coreML模型,并将其部署在Xcode上吗?
iPhone上的应用程序打开,我可以拍照,但是模型卡在了“分类中...”
这最初是由于输入图像的大小(我将其更改为224 * 224),我可以使用coremltools进行修复,但是对于输出,当我拥有.mlmodel时,看起来需要输出字典一个multiarray(float32)输出。此外,GCP coreML提供了两个文件,即label.txt文件和.mlmodel。
所以,我有两个问题:
- 在分类/ Xcode构建过程中如何利用label.text文件?
- 我的错误发生在
{ guard let results = request.results as? [VNClassificationObservation] else {
fatalError("Model failed to load image")
}
我可以将我的mlmodel输出从多数组更改为带有标签的字典以适合VNClassificationObservation或VNCoreMLFeatureValueObservation可以与多数组输出一起使用吗?我尝试过,但是iPhone上的应用卡住了。
不确定如何在Xcode中使用标签文件。任何帮助深表感谢。我花了一天的时间在网上进行研究。
解决方法
仅当模型为分类器时,您才会获得VNClassificationObservation。如果要获取MLMultiArray作为输出,那么根据Core ML,您的模型不是分类器。
可以使用coremltools将模型更改为分类器。您需要编写一个Python脚本:
- 加载mlmodel
- 从
model._spec.neuralNetwork
到model._spec.neuralNetworkClassifier
分配层 - 添加两个输出,一个用于获胜的班级标签,另一个用于具有所有班级标签概率的字典
- 填写课程标签
- 保存mlmodel
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。