首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CreateML MLModel在游乐场用户界面上工作,但在应用程序中不工作。

CreateML MLModel在游乐场用户界面上工作,但在应用程序中不工作。
EN

Stack Overflow用户
提问于 2019-03-20 01:45:16
回答 1查看 230关注 0票数 4

我正在开发一个机器学习应用程序,它可以对手绘的数字进行分类。我已经做了一个使用CreateML的模型,它的准确率被认为是100% (我承认我的样本数量只有50张左右)。然而,在我的应用程序上运行它时,它不起作用。为了查看我的应用程序是否出了问题,我下载了苹果Vision+CoreML实例 Xcode项目,并将MobileNet分类器替换为自己的分类器。我加载了从我自己的应用程序保存在手机上的图像,分类仍然不准确。有趣的是,我尝试在操场上的CreateML UI空间中测试完全相同的图像,在那里您可以测试图像和分类工作。

TL/DR:图像分类在操场上的CreateML直播视图上工作,但不对来自苹果的vision+coreML示例项目的确切副本进行分类。

这是一个我试图分类的图像的例子

以下是应用程序中显示的7下面是5的应用程序显示的内容

以下是7点在操场上出现的内容以下是5人在操场上出现的情况

EN

回答 1

Stack Overflow用户

发布于 2022-04-15 13:55:05

类似的问题我已经有好几天了,问题是CreateML可能会为BGR格式创建神经网络,而在Xcode项目中,colorSpace可以使用RGB创建神经网络。您可以使用coremltools和PIL库在Python上测试您的模型。

诊断问题

获取模型的元数据

代码语言:javascript
复制
import coremltools
from PIL import Image

#Import your model.
mlmodel = coremltools.models.MLModel('Path/To/Your/Model.mlmodel')
    
#print your metadata of your model, you will see input colorSpace.
print(mlmodel)

输入可能如下所示

代码语言:javascript
复制
input {
  name: "image"
  shortDescription: "Input image to be classified"
  type {
    imageType {
      width: 299
      height: 299
      colorSpace: BGR
      imageSizeRange {
        widthRange {
          lowerBound: 299
          upperBound: -1
        }
        heightRange {
          lowerBound: 299
          upperBound: -1
        }
      }
    }
  }
}

转换输入的颜色空间

代码语言:javascript
复制
img = Image.open("Path/To/Your/Image")
img = img.convert("RGBA").   
data = np.array(img) 
red, green, blue, alpha = data.T
data = np.array([blue, green, red, alpha])
data = data.transpose()
img = Image.fromarray(data)
PIL_image = Image.fromarray(np.array(image))

通过转换图像从模型中预测

代码语言:javascript
复制
print(str(mlmodel.predict({'image': PIL_image})) + '\n')

这次你的预测应该是正确的。

我的解决方案

不幸的是,我不得不放弃了CreateML,在应用程序方面,我尝试在PixelBuffer中转换颜色空间,甚至通过导入OpenCV库将颜色空间转换成cv::Mat和cv::Mat到UIImage,但它们都不适合我。我用苹果的另一个简单的ML创建平台https://github.com/apple/turicreate解决了我的问题。您必须使用python来与这个API交互,但是文档非常清楚,而ML模板与CreatML是一样的。这个API比CreateML更好,因为您可以在培训前后与您的模型进行交互,而CreateML可以非常封闭,即使使用coremltools,您也不能经常与它交互。这个API对每个人来说都是非常容易访问的,它的文档中确实有很好的代码示例和场景。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55252394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档